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 <[email protected]>
>> 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 [email protected]
>>>>
>>>> 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 [email protected].
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8b82824c-370c-4b93-a2ff-c0ba2fd2cab5n%40chromium.org.