| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
…ck alignment requirement.
|
Marking non-substantative for IPR as it lifts a restriction and was contributed in discussions many times previously. |
Sorry, something went wrong.
|
Previews, as seen when this build job started (aec2074): |
Sorry, something went wrong.
There was a problem hiding this comment.
Hard to disagree with the spec change, as long as it's implementable.
Sorry, something went wrong.
There was a problem hiding this comment.
Can @RafaelCintron please confirm if this is needed as a feature extension?
Based on https://github.com/gpuweb/gpuweb/wiki/System-Requirements and #2006 (comment) I think the answer is yes, since D3D12 on versions prior to 1909 would require this, but would be good to get confirmation from Microsoft.
Sorry, something went wrong.
|
@mwyrzykowski I think that comment is pretty unambiguous:
(https://github.com/gpuweb/gpuweb/wiki/System-Requirements and AFAICT Chrome still supports Windows 1507) Did you have a specific concern about it? IIUC it's not possible to query UnalignedBlockTexturesSupported at all on those older OSes so the only other option would be to drop Core WebGPU support on older OSes. |
Sorry, something went wrong.
It’s unfortunate to introduce fragmentation for such a small feature but given the value, I am fine with it :) |
Sorry, something went wrong.
An interesting observation is that the alignment requirements only apply to the BC formats. These are the only formats that are supported under D3D11 & D3D12, so they are the only formats that can be subject to that constraint in practice. A potential simplification would be to only require alignment of BC formats, and to expose the "texture-compression-bc-unaligned" extension to relax that requirement. Applications that target ASTC or ETC formats then do not have to worry about querying and enabling the extension, since they are unaffected. If this seems like a good idea I'd be happy to do the necessary work to update the spec and the test suite. |
Sorry, something went wrong.
|
Oh, that's a good point. Yes, that seems preferable! It would mean we're adding unaligned ASTC/ETC2 textures to core, which is great but means we need some feature detection. This came up elsewhere recently so I've filed #6337 about it. |
Sorry, something went wrong.
|
@castano We discussed this in the working group meeting and there's a concern that it'll be more complicated to do it that way because, if this is also disallowed by OpenGL ES 3.1, then the validation will be affected by TWO features, texture-compression-bc-unaligned and core-features-and-limits. We'll want more info on whether GLES3.1 disallows this before deciding which path to take. |
Sorry, something went wrong.
From the developer point of view it's certainly simpler to just consider one feature. It would have been nice if the constrain in WebGPU only existed for BC formats, but relaxing it now depending on format and OS/version adds unnecessary complexity. A single feature would serve developers better.
I believe GLES never imposed this constraint. However, WebGL did have that requirement for the BC formats:
Note that this language is not present in the ASTC and ETC WebGL extensions. |
Sorry, something went wrong.
GPU Web WG 2026-07-15 Atlantic-time
|
Sorry, something went wrong.
|
Testing on OpenGL with this WIP CL, the tests seem to pass on the Pixel 10 GLES driver, but not the Pixel 6 one with failures like below. [37/7924] webgpu:api,operation,command_buffer,image_copy:compressed_textures,unaligned_mip_level_0:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="astc-5x5-unorm" failed unexpectedly 16.5731s (worker 1):
- (in subcase: copyCase={"originInBlocks":{"x":0,"y":0},"copySizeInBlocks":{"width":4,"height":4}}) INFO: subcase ran
--> (in subcase: copyCase={"originInBlocks":{"x":3,"y":0},"copySizeInBlocks":{"width":1,"height":4}}) EXPECTATION FAILED: array is entirely 0 so likely nothing was tested: actualTexture
at arrayNotAllTheSameValue (http://127.0.0.1:40969/third_party/webgpu-cts/src/webgpu/texture_test_utils.js:238:19)
at http://127.0.0.1:40969/third_party/webgpu-cts/src/webgpu/texture_test_utils.js:249:45
at async ImageCopyTest.finalize (http://127.0.0.1:40969/third_party/webgpu-cts/src/common/framework/fixture.js:92:17)
at async RunCaseSpecific.runTest (http://127.0.0.1:40969/third_party/webgpu-cts/src/common/internal/test_group.js:263:17)
- (in subcase: copyCase={"originInBlocks":{"x":3,"y":0},"copySizeInBlocks":{"width":1,"height":4}}) EXPECTATION FAILED: array is entirely 0 so likely nothing was tested: expectedTexture
at arrayNotAllTheSameValue (http://127.0.0.1:40969/third_party/webgpu-cts/src/webgpu/texture_test_utils.js:238:19)
at http://127.0.0.1:40969/third_party/webgpu-cts/src/webgpu/texture_test_utils.js:250:45
at async ImageCopyTest.finalize (http://127.0.0.1:40969/third_party/webgpu-cts/src/common/framework/fixture.js:92:17)
at async RunCaseSpecific.runTest (http://127.0.0.1:40969/third_party/webgpu-cts/src/common/internal/test_group.js:263:17)
- (in subcase: copyCase={"originInBlocks":{"x":3,"y":0},"copySizeInBlocks":{"width":1,"height":4}}) INFO: subcase ran
- (in subcase: copyCase={"originInBlocks":{"x":0,"y":3},"copySizeInBlocks":{"width":4,"height":1}}) INFO: subcase ran
- (in subcase: copyCase={"originInBlocks":{"x":3,"y":3},"copySizeInBlocks":{"width":1,"height":1}}) EXPECTATION FAILED: array is entirely 0 so likely nothing was tested: actualTexture
at (elided: only 2 shown)
- (in subcase: copyCase={"originInBlocks":{"x":3,"y":3},"copySizeInBlocks":{"width":1,"height":1}}) EXPECTATION FAILED: array is entirely 0 so likely nothing was tested: expectedTexture
at (elided: only 2 shown)
- (in subcase: copyCase={"originInBlocks":{"x":3,"y":3},"copySizeInBlocks":{"width":1,"height":1}}) INFO: subcase ran
- (in subcase: copyCase={"originInBlocks":{"x":0,"y":0},"copySizeInBlocks":{"width":1,"height":1}}) EXPECTATION FAILED: array is entirely 0 so likely nothing was tested: actualTexture
at (elided: only 2 shown)
- (in subcase: copyCase={"originInBlocks":{"x":0,"y":0},"copySizeInBlocks":{"width":1,"height":1}}) EXPECTATION FAILED: array is entirely 0 so likely nothing was tested: expectedTexture
at (elided: only 2 shown)
- (in subcase: copyCase={"originInBlocks":{"x":0,"y":0},"copySizeInBlocks":{"width":1,"height":1}}) INFO: subcase ran
Given this I'd feel more comfortable if we could enable / disable the feature based on drivers as well to avoid exposing the buggy feature (so that would mean texture-compression-unaligned instead of texture-compression-bc-unaligned). I also think that having texture-compression-unaligned is simpler for developers because they have one thing to check for to know if they can use unaligned compressed textures, instead of having to do !BC || texture-compression-bc-unaligned which they'll likely forget to do. |
Sorry, something went wrong.
|
kainino0x marked as non substantive for IPR from ash-nazg. |
Sorry, something went wrong.
|
I can't find anything about restrictions in OpenGL or OpenGL ES on the size of the texture (at base mip level) being a multiple of the block size, not even in EXT_texture_compression_s3tc. Just a note: To reduce the illusion of fragmentation a bit, we could make it so that you can't create a device with ASTC or ETC2 without texture-compression-unaligned, since it seems no such devices exist. That is, for a device request with texture-compression-astc or texture-compression-etc2, texture-compression-unaligned gets enabled automatically. If needed this could also require core-features-and-limits to be requested (implicitly or explicitly) as well. This doesn't have to be done now, it can wait until we have clearer results. It would just have a minor temporary impact on cross-browser compatibility if it comes after multiple browsers ship texture-compression-unaligned. |
Sorry, something went wrong.
There was a problem hiding this comment.
This should get one more stamp from the WG after the GLES discussions but otherwise I think this will be ready to land.
Sorry, something went wrong.
|
Is there enough alignment on having the feature be texture-compression-unaligned and an optional feature such that we can resolve to land this PR offline? @jimblandy @mwyrzykowski @kainino0x ? |
Sorry, something went wrong.
|
I'm happy with it, and it hasn't changed since last approvals, but mainly want to get a stamp from @jimblandy now that there is an answer to the OpenGL question. I'll fix the merge conflict to make this landable. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
This PR updates the spec with the feature discussed in #2006
Update to the validation test suite is in the following PR: gpuweb/cts#4676