From 7266a602471e64002761964b816cf19b785deca4 Mon Sep 17 00:00:00 2001 From: assiduous Date: Sun, 8 Dec 2024 15:40:18 -0800 Subject: [PATCH] OpenXRUtilities: properly set swap chain image state --- Graphics/GraphicsTools/src/OpenXRUtilities.cpp | 7 +++++++ Graphics/GraphicsTools/src/OpenXRUtilitiesD3D11.cpp | 2 +- Graphics/GraphicsTools/src/OpenXRUtilitiesD3D12.cpp | 2 +- Graphics/GraphicsTools/src/OpenXRUtilitiesVk.cpp | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Graphics/GraphicsTools/src/OpenXRUtilities.cpp b/Graphics/GraphicsTools/src/OpenXRUtilities.cpp index 477d42661..9b9b19c12 100644 --- a/Graphics/GraphicsTools/src/OpenXRUtilities.cpp +++ b/Graphics/GraphicsTools/src/OpenXRUtilities.cpp @@ -27,6 +27,7 @@ #include "OpenXRUtilities.h" #include "DebugUtilities.hpp" +#include "GraphicsAccessories.hpp" namespace Diligent { @@ -241,6 +242,12 @@ void GetOpenXRSwapchainImage(IRenderDevice* pDevice, default: UNSUPPORTED("Unsupported device type"); } + + if (*ppImage) + { + const TextureFormatAttribs& FmtAttribs = GetTextureFormatAttribs((*ppImage)->GetDesc().Format); + (*ppImage)->SetState(FmtAttribs.IsDepthStencil() ? RESOURCE_STATE_DEPTH_WRITE : RESOURCE_STATE_RENDER_TARGET); + } } static XrBool32 OpenXRMessageCallbackFunction(XrDebugUtilsMessageSeverityFlagsEXT xrMessageSeverity, diff --git a/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D11.cpp b/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D11.cpp index a0b758b3f..1d492371a 100644 --- a/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D11.cpp +++ b/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D11.cpp @@ -96,7 +96,7 @@ void GetOpenXRSwapchainImageD3D11(IRenderDevice* pDevice, RefCntAutoPtr pDeviceD3D11{pDevice, IID_RenderDeviceD3D11}; VERIFY_EXPR(pDeviceD3D11 != nullptr); - pDeviceD3D11->CreateTexture2DFromD3DResource(texture, RESOURCE_STATE_RENDER_TARGET, ppImage); + pDeviceD3D11->CreateTexture2DFromD3DResource(texture, RESOURCE_STATE_UNDEFINED, ppImage); } } // namespace Diligent diff --git a/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D12.cpp b/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D12.cpp index a15132e96..9058f7438 100644 --- a/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D12.cpp +++ b/Graphics/GraphicsTools/src/OpenXRUtilitiesD3D12.cpp @@ -115,7 +115,7 @@ void GetOpenXRSwapchainImageD3D12(IRenderDevice* pDevice, RefCntAutoPtr pDeviceD3D12{pDevice, IID_RenderDeviceD3D12}; VERIFY_EXPR(pDeviceD3D12 != nullptr); - pDeviceD3D12->CreateTextureFromD3DResource(texture, RESOURCE_STATE_RENDER_TARGET, ppImage); + pDeviceD3D12->CreateTextureFromD3DResource(texture, RESOURCE_STATE_UNDEFINED, ppImage); } diff --git a/Graphics/GraphicsTools/src/OpenXRUtilitiesVk.cpp b/Graphics/GraphicsTools/src/OpenXRUtilitiesVk.cpp index 6498cd829..119260e9c 100644 --- a/Graphics/GraphicsTools/src/OpenXRUtilitiesVk.cpp +++ b/Graphics/GraphicsTools/src/OpenXRUtilitiesVk.cpp @@ -114,7 +114,7 @@ void GetOpenXRSwapchainImageVk(IRenderDevice* pDevice, RefCntAutoPtr pDeviceVk{pDevice, IID_RenderDeviceVk}; VERIFY_EXPR(pDeviceVk != nullptr); - pDeviceVk->CreateTextureFromVulkanImage(image, TexDesc, RESOURCE_STATE_RENDER_TARGET, ppImage); + pDeviceVk->CreateTextureFromVulkanImage(image, TexDesc, RESOURCE_STATE_UNDEFINED, ppImage); } } // namespace Diligent