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

[pull] main from gpuweb:main #13

Merged
merged 652 commits into from
Aug 7, 2024
Merged

[pull] main from gpuweb:main #13

merged 652 commits into from
Aug 7, 2024

Conversation

pull[bot]
Copy link

@pull pull bot commented Nov 2, 2023

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Nov 2, 2023
kainino0x and others added 29 commits April 3, 2024 20:52
* Add a test which prints what environment it runs in

This is very useful for making sure tests are running in the environment
(main thread vs various worker types) that we expect them to be.

Issue: https://crbug.com/330573129

* Print a bunch more info and print it to console.log

* nits

* hashes

* second try at evading wpt lint

* Simplify printing by printing everything as JSON
* Tests that function calls evaluate arguments left to right
  * Includes && and || operators
  * Includes updates through pointers
These tests were either not skipping themselves when running in workers
(where the DOM is not available), or they were unnecessarily using DOM
features where they didn't intend to.

This makes these two tests pass or skip correctly in workers (at least,
pass as much as the non-worker versions do).

Issue: https://crbug.com/331351978
We were relying on postMessage to turn LogMessageWithStack objects into
Error objects, but this was kind of magic, and didn't work well - in
particular, the name was lost.

Flattening this into a plain object before postMessage makes it much
less magic. Now logs sent from workers print correctly, showing for
example "DEBUG:" instead of "Error:".

Issue: none
Checks the following context dependent names:
 * Attribute names
 * Built-in value names
 * Diagnostic severity control
 * Diagnostic triggering rules
 * Enable extensions
 * Language extensions
 * Swizzles
 * Interpolation type
 * Interpolation sampling

Built-in value names and interpolation type and sampling are made
context dependent in gpuweb/gpuweb#4559.
* WGSL validation test for textureGather/compare
This fixes issues finding the service worker files both on
gpuweb.github.io and in Chromium's automated testing setup.

Also:
- Add the base resource path to print_environment
- some tangentially-related comment cleanup.

Issue: #3583, https://crbug.com/330596242
* wgsl: Add tests for operator precedence

Includes execution and validation tests.

* Add literal and no-whitespace parameterizations
Rather than just throwing an error and letting the runtime break down
when this happens (which in Chromium's testing causes timeouts).

I decided to fail instead of skip for now because probably nothing
should actually rely on the skip - and failing loudly is less error-prone.


Issue: #3591
* Fix wrong metadata in video resource meta lists

H264 HFlip/VFlip marked metadata as vp9 wrongly. Fixed this issue
by this PR.

* Also fix some typo in README
* Uses const_assert to test correct overloads
* wgsl: Add execution tests for derivative builtins

* wgsl: Add non-uniform discards to derivative tests

* Address review comments

- Remove unncessary subtraction of 0.5 from position
- Cover viewport with a single triangle instead of a quad
Shared/service workers don't have requestAnimationFrame.

- Update webgpu:web_platform,canvas,getCurrentTexture:expiry:* to skip
  the requestAnimationFrame cases.
- Update webgpu:web_platform,canvas,getCurrentTexture:multiple_frames:*
  to not use requestAnimationFrame unnecessarily.
There's no reason to iterate the subcases if the test is unimplemented.

When someone goes and implements the test, they can deal with any
overparameterization problems.

This cuts log spew from tests like
`webgpu:shader,execution,expression,call,builtin,textureSampleBias:arrayed_2d_coords:`
* WGSL execution tests for textureSample
* Initial change

* Validation tests for insertBits. (Some minor updates on utils)

* Address comments

* Update tests a bit to use subcases and prune some combinations
greggman and others added 29 commits July 13, 2024 05:39
* WGSL builtin textureLoad for texture_2d tests
* Add CTS test for new depthBias validation

* Lint

* Apply Kai's suggestsions

* Fix TS error
Signed-off-by: sagudev <[email protected]>
Co-authored-by: Brandon Jones <[email protected]>
It is a shader/pipeline-creation error if the number of bits to shift is greater than *or equal* to the bit width of the value to shift. This change corrects the expectations for the equals case, and adds a function reference to the pipeline subcase so it isn't stripped out.

These tests will pass in Dawn following: https://dawn-review.googlesource.com/c/dawn/+/199075
When testing accesses into uniform address space, the array
tests pack scalars into a 4-element vector.  This is a big hack,
to accommodate the 16byte alignment requirement for uniform address
space. Previously the robust access tests had a subtle tight coupling
to this decision.

This change adds a 'accessSuffixes' field to the array type info
to indicate how to access individual scalar elements under test.
So in the uniform case, when a vec4 is artificially created, return
a list of the .x .y .z .w components to get the original scalar
values back.  This allows client tests to smoothly generalize.

Update the robust access tests to this change. It's the only affected test.

Issue: #3405
This is the last step in the code cleanup for adding f16
to generateTypes

Fixed: #3405
According to the spec, division by zero is invalid even if only the rhs
can be constant evaluated for integral types. However, for FP types, it
is only an error if the whole expression can be const-evaled.
* wgsl: Add coverage for swizzle on a pointer

In addition to a new execution test, also add coverage to the alias
analysis and uniformity analysis tests. Both of these new tests failed
prior to a recent Tint change that fixed a bug with these swizzles.

* Change for review

* Use skipIf for execution test
* Add uniform version of swizzle uniformity test
)

* Add API validation tests about dual source blending and color attachments

This patch adds validation tests about using dual source blending and
color attachments. When dual source blending is used, there can only be
exactly one color attachment, whether its write mask is 0 or not, which is
required by Metal.

* Fix assignment to vector elements
This CL tests 50 texels per subcase where as before
it was testing 1 texel per subcase. This is more inline
with the original design for texture_utils.ts doTextureCalls
and checkCallResults and means more tests but less subcases
which is usually faster.

#3871
* Cover GPUExternalTexture with WebCam Cases

Add utils to capture frame from camera if env supported.
And compared the rendering result with 2d context draw image to cover
uploading webcam frames.

* Update src/webgpu/web_platform/external_texture/video.spec.ts

Co-authored-by: Corentin Wallez <[email protected]>

* Remove extra type declaration.

---------

Co-authored-by: Corentin Wallez <[email protected]>
* Add validation tests on blend factors with Src1 and @blend_src

This patch adds the validation tests on the use of blend factors
with `Src1` and `@blend_src` in the fragment shader. When the blend
factor uses `Src1`, `@blend_src` must be used in the fragment shader
whether the corresponding colorWriteMask is 0 or not, as is required
by Metal.

* Small fix
…src1 (#3879)

* Add validation tests on the blend factors using the alpha channel of src1

* For merge
This patch adds the operation tests on all blend factors using
`Src1` in rendering,color_target_state:blending,GPUBlendComponent:*
tests.
* Add dual source blending blend factors to `kBlendFactors`

This patch adds all the blend factors defined in the extension
"dual-source-blending" to `kBlendFactors` in capability_info.ts so
that all the tests about blend factors can test these newly added
blend factors.

This patch also removes the validation tests about using the alpha
channel of `Src1` because it doesn't follow the latest SPEC: only when
the color blend factor uses the alpha channel of `Src` must the fragment
output be `vec4`. When the color target doesn't have the alpha channel,
the alpha blend factor is ignored so it is OK to set it as if it "uses"
the alpha channel of `Src`.

Note that the new validation test against `Src1-alpha` will be added into
'pipeline_output_targets,blend' after the fix is landed in the browser.

* Improve the test descriptions and messages in `TODO`
* Validation
  * enables
  * built-in values
  * built-in functions: broadcast and ballot
* Execution
  * built-in values
  * built-in functions: broadcast and ballot
…sh:* (#3887)

Fix the case error which set the expired/destroyed external texture wrongly.
* Add validation tests on the access of the alpha channel of Src1

This patch adds validation tests on the use of `src1-alpha` in the
blend factor. When the blend factor uses the alpha channel of src1,
the fragment output must be vec4.

This patch also implements function `IsDualSourceBlendingFactor()`
to check if a blend factor needs the extension "dual-source-blending".

This patch also adds the support of dual source blending in the helper
function `getFragmentShaderCodeWithOutput()` to simplify the shaders
used in dual source blending tests.

* Fix `IsDualSourceBlendingFactor()`

* Allow `IsDualSourceBlendingFactor()` accepts null value as parameter

* More fixes
Cube and cube-arrays are not thoroughly tested at the moment.
See TODO in comments.
@pull pull bot merged commit 550b446 into mozilla:main Aug 7, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.