Skip to content

[SPIR-V] Honor inline spir-v attributes on functions#8616

Open
mmoult wants to merge 1 commit into
microsoft:mainfrom
mmoult:inline
Open

[SPIR-V] Honor inline spir-v attributes on functions#8616
mmoult wants to merge 1 commit into
microsoft:mainfrom
mmoult:inline

Conversation

@mmoult

@mmoult mmoult commented Jul 11, 2026

Copy link
Copy Markdown

The [[vk::ext_decorate]], [[vk::ext_capability]], and [[vk::ext_extension]] attributes were only applied to variables, parameters, stage variables, entry-point functions, and functions carrying [[vk::ext_instruction]]. A plain function that carried them was skipped, so the attributes were silently dropped: no OpDecorate was emitted for its OpFunction, and no OpCapability / OpExtension was added to the module.

Apply them when the function is registered (getOrRegisterFn), next to the existing linkage decoration. This reuses the same helpers as the variable and parameter paths:

  • the decoration goes through a new SpirvFunction overload of decorateWithIntrinsicAttrs, and
  • the capability/extension loops are factored into registerCapabilitiesAndExtensionsForDecl, now shared with the variable path.

Only the literal form of ext_decorate is supported on functions; the id and string variants have no SpirvFunction-target decoration and are now diagnosed rather than silently dropped.

The [[vk::ext_decorate]], [[vk::ext_capability]], and [[vk::ext_extension]]
attributes were only applied to variables, parameters, stage variables,
entry-point functions, and functions carrying [[vk::ext_instruction]]. A
plain function that carried them was skipped, so the attributes were
silently dropped: no OpDecorate was emitted for its OpFunction, and no
OpCapability / OpExtension was added to the module.

Apply them when the function is registered (getOrRegisterFn), next to the
existing linkage decoration. This reuses the same helpers as the variable
and parameter paths:
 - the decoration goes through a new SpirvFunction overload of
   decorateWithIntrinsicAttrs, and
 - the capability/extension loops are factored into
   registerCapabilitiesAndExtensionsForDecl, now shared with the variable
   path.

Only the literal form of ext_decorate is supported on functions; the id and
string variants have no SpirvFunction-target decoration and are now
diagnosed rather than silently dropped.
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@mmoult

mmoult commented Jul 11, 2026

Copy link
Copy Markdown
Author

@s-perron I don't know how reviews work, but I see you reviewed #8333, which is very similar. Would you please take a look at this one, too?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: New

Development

Successfully merging this pull request may close these issues.

1 participant