Thanks for the explanation, Geoff. We discussed at today's OWNERS meeting, and with that conversation I'm comfortable with the change. LGTM1
On Wednesday, October 23, 2024 at 8:21:22 AM UTC-7 Yoav Weiss wrote: > Can y'all flip the review bits for > privacy/security/enterprise/testing/debuggability? > > On Thursday, October 17, 2024 at 12:05:03 PM UTC-7 Geoff Lang wrote: > >> I'll describe a use case that become better/possible: >> >> The user creates a texture with the 'bgra8unorm' format but as an >> additional view format of 'rgba8unorm-srgb': >> >> const texture = device.createTexture({ >> size: [4, 4], >> format: 'rgba8unorm', >> usage: GPUTextureUsage.RENDER_ATTACHMENT | >> GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.STORAGE_BINDING, >> viewFormats: ['rgba8unorm-srgb'], >> }); >> >> const view = texture.createView({ >> format: 'rgba8unorm-srgb', >> }); >> >> >> If the user creates this view of this texture using the 'rgba8unorm-srgb' >> format, it won't be usable as a storage texture despite requesting the >> texture having STORAGE_BINDING usage because 'rgba8unorm-srgb' does not >> support this usage. By adding a usage field to view creation, the browser >> can do validation up-front that the usage is compatible and allow users to >> specify even smaller subsets of usage that are specific to how the view >> will be used: >> >> const view = texture.createView({ >> format: 'rgba8unorm-srgb', >> usage: GPUTextureUsage.RENDER_ATTACHMENT, >> }); >> >> This also mirrors how other graphics APIs work, usage flags are also >> creation parameters to view creation. It allows more optimizations at the >> graphics driver level. >> >> There's some more discussion in this github issue: >> https://github.com/gpuweb/gpuweb/issues/4426 >> >> Let me know if there's anything else you want to know or if I should >> write this up somewhere else. >> >> Thanks, >> Geoff >> >> On Thu, Oct 17, 2024 at 6:20 AM Alex Russell <slightly...@chromium.org> >> wrote: >> >>> Is there a description somewhere of what problem this solves? I'm having >>> trouble grokking why this is useful. >>> >>> Best, >>> >>> Alex >>> >>> On Thursday, October 17, 2024 at 12:54:20 AM UTC+5:30 Chromestatus wrote: >>> >>>> Contact emails geoffl...@google.com >>>> >>>> Explainer None >>>> >>>> Specification >>>> https://github.com/gpuweb/gpuweb/commit/b39d86d356eb759d7564bc7c808ca62fce8bbf3e >>>> >>>> >>>> Summary >>>> >>>> Adds an optional field to WebGPU texture view creation to request a >>>> subset of the usage flags from the source texture. By default, texture >>>> view >>>> usage inherits from the source texture but there are view formats which >>>> can >>>> be incompatible with the full set of inherited usages. Adding a usage >>>> field >>>> to texture view creation allows the user request a subset of the source >>>> texture's usages that are valid with the view format and specific to their >>>> intended usage of the texture view. WebGPU implementations can also >>>> optimize the creation of low level resources and improve performance when >>>> using views with more specialized usage flags. >>>> >>>> >>>> Blink component Blink>WebGPU >>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EWebGPU> >>>> >>>> >>>> TAG review None >>>> >>>> TAG review status Not applicable >>>> >>>> Risks >>>> >>>> >>>> Interoperability and Compatibility >>>> >>>> This feature has been approved in W3C GPU for the Web WG meetings >>>> including participants from Safari and Firefox: >>>> https://github.com/gpuweb/gpuweb/wiki/GPU-Web-2024-07-24#createtexture-does-not-validate-viewformats-against-usage-4426 >>>> >>>> >>>> *Gecko*: No signal >>>> >>>> *WebKit*: Closed Without a Position ( >>>> https://github.com/WebKit/standards-positions/issues/294#issuecomment-1877411933) >>>> >>>> >>>> >>>> *Web developers*: No signals >>>> >>>> *Other signals*: >>>> >>>> WebView application risks >>>> >>>> Does this intent deprecate or change behavior of existing APIs, such >>>> that it has potentially high risk for Android WebView-based applications? >>>> >>>> None >>>> >>>> >>>> Debuggability >>>> >>>> None >>>> >>>> >>>> Will this feature be supported on all six Blink platforms (Windows, >>>> Mac, Linux, ChromeOS, Android, and Android WebView)? No >>>> >>>> All platforms will eventually have support. Will immediately be >>>> available on Android, Android WebView, ChromeOS, Mac, and Windows, where >>>> hardware support is available. Linux is planned to have WebGPU support in >>>> the future, so this feature will become available when WebGPU does. >>>> >>>> >>>> Is this feature fully tested by web-platform-tests >>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>> ? Yes >>>> >>>> WebGPU/WGSL have a conformance test suite ( >>>> https://github.com/gpuweb/cts) that is regularly pulled into Chromium >>>> and part of the testing of Dawn/Tint in Chromium. While the CTS can be >>>> embedded in WPT, the WebGPU team opted to keep it separate in Chromium >>>> testing to use a customized harness for robustness and performance. Tests >>>> were added in this PR: >>>> https://github.com/gpuweb/cts/commit/1746bcbc10a809cbadb3b131675b885ed08d9da5 >>>> >>>> >>>> Flag name on chrome://flags None >>>> >>>> Finch feature name WebGPU.Enabled:UnsafeFeatures >>>> >>>> Requires code in //chrome? False >>>> >>>> Tracking bug https://bugs.chromium.org/363903526 >>>> >>>> Estimated milestones >>>> >>>> No milestones specified >>>> >>>> >>>> Anticipated spec changes >>>> >>>> Open questions about a feature may be a source of future web compat or >>>> interop issues. Please list open issues (e.g. links to known github issues >>>> in the project for the feature specification) whose resolution may >>>> introduce web compat/interop risk (e.g., changing to naming or structure >>>> of >>>> the API in a non-backward-compatible way). >>>> None >>>> >>>> Link to entry on the Chrome Platform Status >>>> https://chromestatus.com/feature/5155252832305152?gate=5152335609987072 >>>> >>>> This intent message was generated by Chrome Platform Status >>>> <https://chromestatus.com>. >>>> >>> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8b82824c-370c-4b93-a2ff-c0ba2fd2cab5n%40chromium.org.