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

subgroupBallot tests in fragment shaders #4068

Merged
merged 1 commit into from
Nov 29, 2024

Conversation

alan-baker
Copy link
Contributor

@alan-baker alan-baker commented Nov 28, 2024

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 in the test tree.
  • Test descriptions allow a reader to "read only the test plans and evaluate coverage completeness", and accurately reflect the test code.
  • Tests provide complete coverage (including validation control cases). Missing coverage MUST be covered by TODOs.
  • Helpers and types promote readability and maintainability.

When landing this PR, be sure to make any necessary issue status updates.

@alan-baker alan-baker requested a review from dneto0 November 28, 2024 18:16
@alan-baker alan-baker changed the title Subgroup ballot fragment subgroupBallot tests in fragment shaders Nov 28, 2024
@alan-baker alan-baker force-pushed the subgroup-ballot-fragment branch from 9a5f143 to e1dd2f6 Compare November 29, 2024 14:25
Copy link
Contributor

@dneto0 dneto0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very nice one!

@@ -344,4 +348,315 @@ fn main(@builtin(subgroup_size) subgroupSize : u32,
await runTest(t, wgsl, testcase.filter, testcase.expect, false);
});

g.test('fragment').unimplemented();
// Filters should always skip the last row and column.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: recommend saying why: To avoid potential interference from helper invocations.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and now I see it's commented on below too. Nice.


const mapping = new Map<number, bigint>();

// Iteration skips last row and column to avoid helper invocations because it is not
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice


// Iteration skips last row and column to avoid helper invocations because it is not
// guaranteed whether or not they participate in the subgroup operation.
for (let row = 0; row < height - 1; row++) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is all very clean. Nice.

* Tests subgroupBallot in fragment shaders
@alan-baker alan-baker force-pushed the subgroup-ballot-fragment branch from e1dd2f6 to ce2b8d9 Compare November 29, 2024 19:20
@alan-baker alan-baker enabled auto-merge (squash) November 29, 2024 19:20
@alan-baker alan-baker merged commit 5fd787c into gpuweb:main Nov 29, 2024
1 check passed
@alan-baker alan-baker deleted the subgroup-ballot-fragment branch November 29, 2024 20:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

Successfully merging this pull request may close these issues.

2 participants