mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 15:46:28 +00:00
Track depth/stencil aspects independently
This enables depth-stencil textures to track per aspect state independently. It lifts the restriction that depth and stencil store ops must be the same as they now have independent clear states. It will also enable correct barriers on Vulkan and D3D12. Bug: dawn:439 Change-Id: I8a73187df57a1d7eee6790cb4395bdecf42b63aa Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/26127 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
fa4b74d479
commit
2cf5a08cfc
@@ -198,7 +198,7 @@ namespace {
|
||||
}
|
||||
}
|
||||
|
||||
// Depth and stencil storeOps must match
|
||||
// Depth and stencil storeOps can be different
|
||||
TEST_F(RenderPassDescriptorValidationTest, DepthStencilStoreOpMismatch) {
|
||||
constexpr uint32_t kArrayLayers = 1;
|
||||
constexpr uint32_t kLevelCount = 1;
|
||||
@@ -223,15 +223,7 @@ namespace {
|
||||
wgpu::TextureView colorTextureView = colorTexture.CreateView(&descriptor);
|
||||
wgpu::TextureView depthStencilView = depthStencilTexture.CreateView(&descriptor);
|
||||
|
||||
// StoreOps mismatch causing the render pass to error
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({}, depthStencilView);
|
||||
renderPass.cDepthStencilAttachmentInfo.stencilStoreOp = wgpu::StoreOp::Store;
|
||||
renderPass.cDepthStencilAttachmentInfo.depthStoreOp = wgpu::StoreOp::Clear;
|
||||
AssertBeginRenderPassError(&renderPass);
|
||||
}
|
||||
|
||||
// StoreOps match so render pass is a success
|
||||
// Base case: StoreOps match so render pass is a success
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({}, depthStencilView);
|
||||
renderPass.cDepthStencilAttachmentInfo.stencilStoreOp = wgpu::StoreOp::Store;
|
||||
@@ -239,13 +231,21 @@ namespace {
|
||||
AssertBeginRenderPassSuccess(&renderPass);
|
||||
}
|
||||
|
||||
// StoreOps match so render pass is a success
|
||||
// Base case: StoreOps match so render pass is a success
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({}, depthStencilView);
|
||||
renderPass.cDepthStencilAttachmentInfo.stencilStoreOp = wgpu::StoreOp::Clear;
|
||||
renderPass.cDepthStencilAttachmentInfo.depthStoreOp = wgpu::StoreOp::Clear;
|
||||
AssertBeginRenderPassSuccess(&renderPass);
|
||||
}
|
||||
|
||||
// StoreOps mismatch still is a success
|
||||
{
|
||||
utils::ComboRenderPassDescriptor renderPass({}, depthStencilView);
|
||||
renderPass.cDepthStencilAttachmentInfo.stencilStoreOp = wgpu::StoreOp::Store;
|
||||
renderPass.cDepthStencilAttachmentInfo.depthStoreOp = wgpu::StoreOp::Clear;
|
||||
AssertBeginRenderPassSuccess(&renderPass);
|
||||
}
|
||||
}
|
||||
|
||||
// Currently only texture views with arrayLayerCount == 1 are allowed to be color and depth
|
||||
|
||||
Reference in New Issue
Block a user