-
Notifications
You must be signed in to change notification settings - Fork 310
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for attach-less render passes #503
Comments
Pinging @RafaelCintron and @litherum for whether it's even a good idea in Metal to have no targets/attachments in a render pass. |
Looking at the Vulkan spec, this seems to be a supported usecase in vanilla Vulkan (I said the contrary in some other conversation but was wrong) |
Moving to V1.0 to quickly mention in a discussion time slot. It may fall under the category of "allowed by all the native APIs", in which case we need to expose it. |
I gave it a try in Dawn https://dawn-review.googlesource.com/c/dawn/+/63140 and even if I wasn't able to get the shader to write to an SSBO, I found interesting data. On Metal, using attachment-less render passes requires setting the |
Maybe we can create a dummy color attachment with the given |
That would work, but I don't think it qualifies as "all APIs support it" since we need emulation on Metal, and most likely on D3D12 when using D3D12 render passes. IMHO we should have a later extension for a bunch of nice to use feature that improve flexibility but might require emulation. |
Thanks @Kangz ! That is a good argument to postponing this. |
Funny, this is exactly what we found we would need to do in order to support this feature. I suppose Metal must have added those for the same reason. |
* add tools/deno runner This commit adds a `./tools/deno` runner for running CTS in Deno. It is essentially a JS copy of the node runner, using Deno syscalls instead. It requires you to have run `npm run standalone` before invoking. * fix * add trace support * add --ignore * docs
Now that we mandate support for OS 15+, could we revisit this and see if we can add it? |
Evidently Chromium is/was already out of spec here, and somehow we accidentally allowed render passes with no attachments: It would be really nice if we could lift that restriction! |
There is a use case of doing a render pass with no attachments. For example, when the pixel shader does some work with storage buffers, and we still want rasterization to happen, just without rendering per se.
Currently what happens is - we don't know the rasterization area when the render pass is started, and our implementation panics. It has no way to know this today.
Possible solutions:
RenderPassDescriptor
with the rasterization area. When not set, it's automatically derived from the attachments, which are expected to be of the same size.The text was updated successfully, but these errors were encountered: