summaryrefslogtreecommitdiff
path: root/src/microsoft/vulkan/dzn_image.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/microsoft/vulkan/dzn_image.cpp')
-rw-r--r--src/microsoft/vulkan/dzn_image.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/microsoft/vulkan/dzn_image.cpp b/src/microsoft/vulkan/dzn_image.cpp
index 79650b094e7..f2b1d9f0092 100644
--- a/src/microsoft/vulkan/dzn_image.cpp
+++ b/src/microsoft/vulkan/dzn_image.cpp
@@ -509,7 +509,7 @@ dzn_image_get_rtv_desc(const dzn_image *image,
}
D3D12_RESOURCE_STATES
-dzn_image_layout_to_state(VkImageLayout layout)
+dzn_image_layout_to_state(VkImageLayout layout, VkImageAspectFlagBits aspect)
{
switch (layout) {
case VK_IMAGE_LAYOUT_PREINITIALIZED:
@@ -536,6 +536,16 @@ dzn_image_layout_to_state(VkImageLayout layout)
case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL:
return D3D12_RESOURCE_STATE_DEPTH_READ;
+ case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:
+ return aspect == VK_IMAGE_ASPECT_STENCIL_BIT ?
+ D3D12_RESOURCE_STATE_DEPTH_WRITE :
+ D3D12_RESOURCE_STATE_DEPTH_READ;
+
+ case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:
+ return aspect == VK_IMAGE_ASPECT_STENCIL_BIT ?
+ D3D12_RESOURCE_STATE_DEPTH_READ :
+ D3D12_RESOURCE_STATE_DEPTH_WRITE;
+
case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
return D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE;