Open Bug 2006720 Opened 7 months ago Updated 6 days ago

WebGPU: `GPUSupportedLimits.maxStorage{Buffers,Textures}In{Vertex,Fragment}Stage` are unrecognized

Categories

(Core :: Graphics: WebGPU, defect, P3)

defect

Tracking

()

ASSIGNED

People

(Reporter: ErichDonGubler, Assigned: ErichDonGubler)

References

Details

(Keywords: dev-doc-complete, leave-open)

Attachments

(2 files)

See upstream tracking: wgpu#8748

Severity: -- → S3
Priority: -- → P3
Assignee: nobody → aleiserson
Status: NEW → ASSIGNED
Keywords: dev-doc-needed
No longer blocks: 2026573
See Also: → 2026573

Are there any parts missing, or should this be marked as fixed in 151?

(Context: https://github.com/mdn/browser-compat-data/pull/29530)

With the linked patch these limits are now present in the limits struct, but the reported values are cloned from the maxStorageBuffersPerShaderStage and maxStorageTexturesPerShaderStage limits, and attempts to set the In*Stage limits are ignored.

i.e. there's still more to do, this isn't fixed in 151. The change that landed just allows us to support some sites on a best-effort basis.

FF151 MDN docs work for this can be tracked in https://github.com/mdn/content/issues/43966

For the MDN release note I've indicated support:

The maxStorageBuffersInFragmentStage, maxStorageBuffersInVertexStage, maxStorageTexturesInFragmentStage, and maxStorageTexturesInVertexStage properties are now supported on {{domxref("GPUSupportedLimits")}}, defining the maximum number of storage buffers and textures allowed in the fragment and vertex shader stages.

It sounds like it isn't that clear cut. Are you OK with the above, or can you suggest a more nuanced wording?

Flags: needinfo?(aleiserson)

How about:

The maxStorageBuffersInFragmentStage, maxStorageBuffersInVertexStage, maxStorageTexturesInFragmentStage, and maxStorageTexturesInVertexStage properties on {{domxref("GPUSupportedLimits")}} are now partially supported. These properties report the value of the maxStorageBuffersPerShaderStage and maxStorageTexturesPerShaderStage limits. When creating a device, requested values for the *In*Stage limits are ignored.

https://github.com/mdn/browser-compat-data/pull/29531 had the follow-up change to BCD to indicate partial instead of full support.

Flags: needinfo?(aleiserson)

Removing my assignment, the partial support here was incidental to other work I was doing, I am not actively working on completing the support.

Assignee: aleiserson → nobody
Status: ASSIGNED → NEW
Assignee: nobody → egubler
Status: NEW → ASSIGNED

Erich, on Monday we discussed the way "create a new device" raises maxStorage{Buffers,Textures}In{Vertex,Fragment}Stage to maxStorage{Buffers,Textures}PerShaderStage, and we thought it was unusual that an implementation would not respect the limits requested by the user in the GPUDeviceDescriptor. I asked Kai Ninomiya about this, and he reminded me that "create new device" always raises every limit to at least its default value (for the requested feature level, which is always "core" for us). So raising limit values per se is not unusual.

What is unusual is that requesting an above-default value for ...In{Vertex,Fragment}Stage at the "core" feature level actually raises all three limits for the given type. But the intent is that, in "core", the only limit that actually matters, and the only limit users should be setting, is the unified ...PerShaderStage. Once the normalization steps in "create a new device" have been carried out, Firefox should be able to behave as if that's the only limit that matters.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: