commit | c6537516d2ffb6ada1adb0629b7f2ba1cddd5e50 | [log] [tgz] |
---|---|---|
author | Albin Bernhardsson <albin.bernhardsson@arm.com> | Fri Jan 26 14:16:01 2024 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri Jan 26 14:16:01 2024 +0000 |
tree | dff8c06bb02d495e0206e2884ea7014a02c553a6 | |
parent | 4625676a9344b50be601df6e9e3f7a05ef07980e [diff] |
Vulkan: Fix synchronization bug When binding a texture using a bind group layout entry with an empty visibility mask we will skip shader usages of the texture when setting the pipeline stages of the barrier. However, the subresource state will still be updated as if we didn't skip shader usages. This leads to incorrect synchronization and triggers an assertion in some cases. For example, the following case will lead to an incorrect pipeline barrier: 1. Create a texture and use it in some way (zero initialization is enough). 2. A render pass binds that texture as a TextureBinding with no shader stages (pointless but legal). The render pass contains no other resources (other than the color attachment it is rendering to). Before the render pass we will insert an image memory barrier with a dstAccessMask of VK_ACCESS_SHADER_READ_BIT. However, the dstStages of the pipeline barrier does not contain a corresponding pipeline stage (VK_PIPELINE_STAGE_VERTEX_SHADER_BIT or VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT). To solve this, remove shader usages when no shader stages are present before updating each subresource's state, instead of after. Change-Id: I969ebe30dc4f4c613bdc2b0261c3b1197c0cda71 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/171441 Commit-Queue: Albin Bernhardsson <albin.bernhardsson@arm.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com>
Dawn is an open-source and cross-platform implementation of the WebGPU standard. More precisely it implements webgpu.h
that is a one-to-one mapping with the WebGPU IDL. Dawn is meant to be integrated as part of a larger system and is the underlying implementation of WebGPU in Chromium.
Dawn provides several WebGPU building blocks:
webgpu.h
version that Dawn implements.webgpu.h
.Helpful links:
Developer documentation:
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
BSD 3-Clause License, please see LICENSE.
This is not an officially supported Google product.