Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • mesa mesa
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2,865
    • Issues 2,865
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 898
    • Merge requests 898
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Mesa
  • mesamesa
  • Merge requests
  • !12270

Closed
Created Aug 08, 2021 by Icecream95@icecream95Developer
  • Report abuse
Report abuse

panfrost: Preperation for sysval upload rewrite

  • Overview 2
  • Commits 5
  • Pipelines 2
  • Changes 4

A few patches from !10197 (closed) to try and shrink it slightly.

This MR is mainly about making sure all of the sysvals are in a single "range" (though the concept of ranges hasn't been introduced yet).

This simplifies sysval upload, as it means that all of the pushed sysvals can be uploaded in a single loop, without having to search through the ranges or jump randomly about the list of sysvals.

For Midgard this mostly just involves making sure all sysvals can be pushed, as otherwise a single sysval could both be in a UBO and pushed, which complicates upload. Do this by allowing unaligned loads to be pushed, because using the same solution as Bifrost would require using the Midgard IR too much…

For Bifrost we make all sysval loads count as loads of four words, to make sure there is a single contiguous range of words to upload with no gaps in it. However, if there is a load at an offset within a quadword, then that will be counted twice. In this example, the range 8-16 gets counted twice:

load_sysval(b, dest, SYSVAL_FOO, 2, 0) counts as [0, 16) because of forcing `range` to 4
load_sysval(b, dest, SYSVAL_FOO, 2, 8) counts as [8, 16? 24?)

To avoid this, we make all sysval loads quadword aligned, so the second load would be effectively load_sysval(b, dest, SYSVAL_FOO, 4, 0).zw.

Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: sysval-prep