Skip to content

Undefined behavior tested by quadBroadcast/quadSwap split test cases #4650

@jenatali

Description

@jenatali

Running the WebGPU CTS against WARP, I see failures in:

  • webgpu:shader,execution,expression,call,builtin,quadSwap:compute,split:predicate="lower_half";wgSize=[4,1,1]
  • webgpu:shader,execution,expression,call,builtin,quadSwap:compute,split:predicate="lower_half";wgSize=[1,4,1]
  • webgpu:shader,execution,expression,call,builtin,quadSwap:compute,split:predicate="lower_half";wgSize=[1,1,4]
  • webgpu:shader,execution,expression,call,builtin,quadSwap:compute,split:predicate="upper_half";wgSize=[4,1,1]
  • webgpu:shader,execution,expression,call,builtin,quadSwap:compute,split:predicate="upper_half";wgSize=[1,4,1]
  • webgpu:shader,execution,expression,call,builtin,quadSwap:compute,split:predicate="upper_half";wgSize=[1,1,4]
  • webgpu:shader,execution,expression,call,builtin,quadBroadcast:compute,split:predicate="lower_half";wgSize=[4,1,1]
  • webgpu:shader,execution,expression,call,builtin,quadBroadcast:compute,split:predicate="lower_half";wgSize=[1,4,1]
  • webgpu:shader,execution,expression,call,builtin,quadBroadcast:compute,split:predicate="lower_half";wgSize=[1,1,4]
  • webgpu:shader,execution,expression,call,builtin,quadBroadcast:compute,split:predicate="upper_half";wgSize=[4,1,1]
  • webgpu:shader,execution,expression,call,builtin,quadBroadcast:compute,split:predicate="upper_half";wgSize=[1,4,1]
  • webgpu:shader,execution,expression,call,builtin,quadBroadcast:compute,split:predicate="upper_half";wgSize=[1,1,4]

As far as I can tell, these test cases split the work group in half, with half of the lanes active, and half inactive. The description of the quad tests includes the wording:

Quad operations require a fully active quad to operate correctly so several of the predication filters are skipped.

But the test cases that WARP fails clearly fall into a not-fully-active quad, since it's a group size of 4 (one quad) which is half active. I believe these are test bugs and these cases should be skipped.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions