Texture compression unaligned#4676
Conversation
… texture-compression-unaligned, but succeeds otherwise.
…mpressed textures with unaligned sizes.
…igned dimensions.
| usage: GPUTextureUsage.TEXTURE_BINDING, | ||
| }; | ||
|
|
||
| // With 'texture-compression-unaligned', mip level 0 is no longer required to be a multiple of |
There was a problem hiding this comment.
I tried this locally and the test fails somehow then 'texture-compression-unaligned' is available. I think we should have the test parametrized on requesting the feature (if present) vs not.
I tested on macOS with this WIP Dawn patch using dawn.node to run the CTS.
Here's the text of one failure:
webgpu:api,validation,createTexture:texture_size,3d_texture,compressed_format:format="bc1-rgba-unorm" - fail:
- (in subcase: sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at AllFeaturesMaxLimitsGPUTest.eventualAsyncExpectation (/Users/cwallez/dev/cts/out-node/common/framework/fixture.js:217:28)
at AllFeaturesMaxLimitsGPUTest.expectValidationError (/Users/cwallez/dev/cts/out-node/webgpu/gpu_test.js:839:18)
at RunCaseSpecific.fn (/Users/cwallez/dev/cts/out-node/webgpu/api/validation/createTexture.spec.js:839:7)
- (in subcase: sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at AllFeaturesMaxLimitsGPUTest.eventualAsyncExpectation (/Users/cwallez/dev/cts/out-node/common/framework/fixture.js:217:28)
at AllFeaturesMaxLimitsGPUTest.expectValidationError (/Users/cwallez/dev/cts/out-node/webgpu/gpu_test.js:839:18)
at RunCaseSpecific.fn (/Users/cwallez/dev/cts/out-node/webgpu/api/validation/createTexture.spec.js:839:7)
- (in subcase: sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}]) VALIDATION FAILED: Validation succeeded unexpectedly.
at (elided: only 2 shown)
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}]) INFO: subcase ran
- (in subcase: sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}]) INFO: subcase ran
There was a problem hiding this comment.
Thanks for testing this!
I think the fix is simply the same I used for the texture_size,2d_texture,compressed_format and texture_size,default_value_and_smallest_size,compressed_format tests, to change the expected result based on the presence of the extension. I'll apply the same fix to texture_size,3d_texture,compressed_format.
These tests run with AllFeaturesMaxLimitsGPUTest which always enables the unaligned feature (if available). That relaxes the constrain and changes the expected result of the tests.
This is why I added a dedicated test createTexture,unaligned_size that tests texture creation with texture-compression-unaligned enabled and disabled.
There was a problem hiding this comment.
Fix is checked in. Let me know if you run into any other issues!
Issue: #2006
Add tests to support the proposed 'texture-compression-unaligned' feature. gpuweb/gpuweb#6312
Requirements for PR author:
.unimplemented()./** documented */and new helper files are found inhelper_index.txt.Requirements for reviewer sign-off:
When landing this PR, be sure to make any necessary issue status updates.