Skip to content

[opt] Pass to convert to untyped pointers#6714

Open
alan-baker wants to merge 7 commits into
KhronosGroup:mainfrom
alan-baker:convert-to-untyped
Open

[opt] Pass to convert to untyped pointers#6714
alan-baker wants to merge 7 commits into
KhronosGroup:mainfrom
alan-baker:convert-to-untyped

Conversation

@alan-baker
Copy link
Copy Markdown
Contributor

Converts typed pointers instructions to their untyped versions:

  • OpTypePointer -> OpTypeUntypedPointerKHR
  • OpVariable -> OpUntypedVariableKHR
  • OpAccessChain -> OpUntypedAccessChainKHR
  • OpInBoundsAccessChain -> OpUntypedInBoundsAccessChainKHR
  • OpPtrAccessChain -> OpUntypedPtrAccessChainKHR
  • OpInBoundsPtrAccessChain -> OpUntypedInBoundsPtrAccessChainKHR
  • OpCopyMemory
    • this is decomposed into loads and stores
  • Updates stride in cooperative matrix load/store

Supported storage classes:

  • StorageBuffer
  • Uniform
  • PushConstant
  • PhysicalStorageBuffer
  • Workgroup (if workgroup memory explicit layout is enabled)

Future work:

  • Add an option to convert to workgroup memory explicit layout
  • Support UniformConstant for OpUntypedImageTexelPointerEXT

Converts typed pointers instructions to their untyped versions:
* OpTypePointer -> OpTypeUntypedPointerKHR
* OpVariable -> OpUntypedVariableKHR
* OpAccessChain -> OpUntypedAccessChainKHR
* OpInBoundsAccessChain -> OpUntypedInBoundsAccessChainKHR
* OpCopyMemory
  * this is decomposed into loads and stores
* Updates stride in cooperative matrix load/store

Initial support:
* StorageBuffer
* Uniform

Future work:
* support workgroup memory explicit layout
* add an option to enable workgroup memory explicit layout
* support uniform constant for OpUntypedImageTexelPointerEXT
* support PhysicalStorageBuffer
* support variable pointers
* Fix instruction conversion to avoid bad def/use chains
  * do in place replacement as much as possible
* Requires all variables to be block-decorated (not just per entry
  point)
* Fix a bug for adding pre-existing base pointers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant