Skip to content

Add declaration tests for WGSL immediate variables#4661

Open
shaoboyan091 wants to merge 1 commit into
gpuweb:mainfrom
shaoboyan091:pr/immediate-declaration-validation
Open

Add declaration tests for WGSL immediate variables#4661
shaoboyan091 wants to merge 1 commit into
gpuweb:mainfrom
shaoboyan091:pr/immediate-declaration-validation

Conversation

@shaoboyan091

@shaoboyan091 shaoboyan091 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Adds a focused declaration suite for var<immediate>.

The new tests cover accepted scalar, vector, matrix, and struct store types, rejected store types, module-scope-only declarations, rejection of binding attributes, rejection of explicit access modes, and the one-immediate-variable-per-entry-point rule.

It also threads immediate through the existing declaration tests so the generic address space coverage checks the same declaration access rules as storage, uniform, private, workgroup, and function variables. The context-dependent resolution table now recognizes immediate_address_space as a language feature name.

Notes for reviewers:

  • Tests skip on the immediate_address_space WGSL language feature, so they run only where the requires immediate_address_space; shaders can compile (not merely where the immediate API surface is exposed).
  • f16/vec3h are treated as valid immediate store types (host-shareable and constructible, gated on shader-f16), consistent with how uniform accepts them.

Issue: #


Requirements for PR author:

  • All missing test coverage is tracked with "TODO" or .unimplemented().
  • New helpers are /** documented */ and new helper files are found in helper_index.txt.
  • Test behaves as expected in a WebGPU implementation. (If not passing, explain above.)
  • Test have be tested with compatibility mode validation enabled and behave as expected. (If not passing, explain above.)

Requirements for reviewer sign-off:

  • Tests are properly located.
  • Test descriptions are accurate and complete.
  • Tests provide complete coverage (including validation control cases). Missing coverage MUST be covered by TODOs.
  • Tests avoid over-parameterization (see case count report).

@shaoboyan091 shaoboyan091 force-pushed the pr/immediate-declaration-validation branch from 7a7b534 to a466dea Compare June 11, 2026 04:40
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown

Results for build job (at a3c267f):

-webgpu:shader,validation,decl,context_dependent_resolution:language_names:* - 4 cases, 12 subcases (~3/case)
+webgpu:shader,validation,decl,context_dependent_resolution:language_names:* - 5 cases, 15 subcases (~3/case)
+webgpu:shader,validation,decl,immediate:store_type,valid:* - 10 cases, 10 subcases (~1/case)
+webgpu:shader,validation,decl,immediate:store_type,invalid:* - 11 cases, 11 subcases (~1/case)
+webgpu:shader,validation,decl,immediate:scope:* - 2 cases, 2 subcases (~1/case)
+webgpu:shader,validation,decl,immediate:binding_attributes:* - 4 cases, 4 subcases (~1/case)
+webgpu:shader,validation,decl,immediate:access_mode:* - 4 cases, 4 subcases (~1/case)
+webgpu:shader,validation,decl,immediate:entry_point_interface:* - 5 cases, 5 subcases (~1/case)
+webgpu:shader,validation,decl,immediate:pointers:* - 8 cases, 8 subcases (~1/case)
-webgpu:shader,validation,decl,var:module_scope_types:* - 406 cases, 406 subcases (~1/case)
+webgpu:shader,validation,decl,var:module_scope_types:* - 464 cases, 464 subcases (~1/case)
-webgpu:shader,validation,decl,var:binding_point_on_non_resources:* - 8 cases, 8 subcases (~1/case)
+webgpu:shader,validation,decl,var:binding_point_on_non_resources:* - 12 cases, 12 subcases (~1/case)
-webgpu:shader,validation,decl,var:address_space_access_mode:* - 40 cases, 40 subcases (~1/case)
+webgpu:shader,validation,decl,var:address_space_access_mode:* - 48 cases, 48 subcases (~1/case)
-TOTAL: 281385 cases, 2323156 subcases
+TOTAL: 281500 cases, 2323273 subcases

This patch adds a focused declaration suite for `var<immediate>`.

The new tests cover accepted scalar, vector, matrix, and struct store
types, rejected store types, module-scope-only declarations, rejection
of binding attributes, rejection of explicit access modes, and the
one-immediate-variable-per-entry-point rule.

It also threads `immediate` through the existing declaration tests so
the generic address space coverage checks the same declaration access
rules as storage, uniform, private, workgroup, and function variables.
The context-dependent resolution table now recognizes
`immediate_address_space` as a language feature name.
@shaoboyan091 shaoboyan091 force-pushed the pr/immediate-declaration-validation branch from a466dea to a3c267f Compare June 11, 2026 06:48
@shaoboyan091 shaoboyan091 requested a review from jrprice June 11, 2026 07:01
@shaoboyan091

Copy link
Copy Markdown
Contributor Author

@jrprice PTAL, catch a potential "issue" in chrome canary, it seems canary supported fixed array in immediate address space but the spec said it shouldn't.

Fixed array could be supported in implementation but it doesn't be discussed in community yet.

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