Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HLSL] Generate unique key object for resource handles #125126

Open
V-FEXrt opened this issue Jan 30, 2025 · 0 comments
Open

[HLSL] Generate unique key object for resource handles #125126

V-FEXrt opened this issue Jan 30, 2025 · 0 comments
Assignees
Labels
HLSL HLSL Language Support

Comments

@V-FEXrt
Copy link
Contributor

V-FEXrt commented Jan 30, 2025

Late stage analysis such as #114130 require the ability to decern if handles are referencing the same resource. Infrastructure should be added to generate a value/key that is unique per resource given a llvm::Value to the ident.

Tex's notes:

  • optionally drill through an AnnotateHandle (depending on shader target)
  • value should be a CreateHandle of one kind or another. There are four types, depending on target and whether it's a dynamic resource.
    • CreateHandle - bound resource on non-lib SM 6.5 and below:
      use resourceClass, rangeId (index into metadata for the resource range), and the index to uniquely identify as a bound resource.
    • CreateHandleFromBinding - bound resource on non-lib SM 6.6 and above:
      Use resbind and index to uniquely identify as a bound resource.
    • CreateHandleFromHeap - dynamic resource or sampler from heap (SM 6.6+):
      Use samplerHeap to determine whether sampler or other resource
      Use index value to uniquely identify resource.
    • CreateHandleForLib - create handle for library targets
      Use input obj loaded from global variable to uniquely identify resource (GV may be indexed with GEP)

In each case, index may be dynamic, in which case, if it's not the same Value*, you can't tell if it's the same resource as another value. For CreateHandleForLib the potential GEP from GV may have the dynamic index, so the combination of the GV and GEP indices are the key. There is also the nonUniformIndex flag which might require some special consideration.

AC:

  • Unit tests verify that same resource handles map to an identical key while different handles don't.
@V-FEXrt V-FEXrt self-assigned this Jan 30, 2025
@V-FEXrt V-FEXrt added HLSL HLSL Language Support and removed new issue labels Jan 30, 2025
@V-FEXrt V-FEXrt moved this to Planning in HLSL Support Jan 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
HLSL HLSL Language Support
Projects
Status: Planning
Development

No branches or pull requests

2 participants