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,770
    • Issues 2,770
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 929
    • Merge requests 929
  • 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
  • !13155

radv, ac: Clean up shader I/O intrinsics to use AC shader arguments directly.

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Timur Kristóf requested to merge Venemo/mesa:ac_radv_again into main Oct 01, 2021
  • Overview 39
  • Commits 7
  • Pipelines 28
  • Changes 16

This refactors the tessellation, ES-GS and NGG shader ABI to use NIR based intrinsics instead of hard-coding RADV specifics into ACO.

Depends on:

  • MR !12773 (merged) for the new NIR intrinsics
  • MR !15414 (merged) for optimizing some of the code generated by the current MR

Also, there is MR !16266 which mitigates the stats changes caused by this MR.

Concept

This continues the work by Connor and Rhys. We will now allow NIR shaders to access ac_args directly. This means that instead of introducing an AMD-specific NIR intrinsic to represent each shader argument, we only need an intrinsic for loading args, and then can use that and remove most of the old ones from the backend.

Implementation

In order to cater to the differences between the RadeonSI and RADV, a new NIR-based ABI is added which allows the drivers to customize how these intrinsics behave, eg. this will be easy to extend to support RadeonSI's more complicated tessellation I/O (I originally thought what we had previously will be adequate, but it wasn't) and the different way of how some details of NGG are handled.

Our goal with this is to enable sharing more NIR code between the drivers and eventually remove (or significantly reduce) the LLVM based shader ABI.

Notes

  • The new ABI isn't hooked up to RadeonSI yet, we will do that as follow-up.
Edited May 06, 2022 by Timur Kristóf
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: ac_radv_again