From 01f8699ce07060bb515e02611772f7d5bfbf60fb Mon Sep 17 00:00:00 2001 From: assiduous Date: Sun, 2 Feb 2025 11:20:48 -0800 Subject: [PATCH] Updated ComputeRenderTargetFormatsHash to return 0 hash for no render targets and DSV --- Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp | 3 +++ .../src/GraphicsAccessories/GraphicsAccessoriesTest.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp b/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp index 7e7f25788..6665cc5fd 100644 --- a/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp +++ b/Graphics/GraphicsAccessories/src/GraphicsAccessories.cpp @@ -3004,6 +3004,9 @@ std::vector ResolveInputLayoutAutoOffsetsAndStrides(LayoutElement* pLayo size_t ComputeRenderTargetFormatsHash(Uint32 NumRenderTargets, const TEXTURE_FORMAT RTVFormats[], TEXTURE_FORMAT DSVFormat) { + if (NumRenderTargets == 0 && DSVFormat == TEX_FORMAT_UNKNOWN) + return 0; + size_t Hash = ComputeHash(NumRenderTargets); for (Uint32 rt = 0; rt < NumRenderTargets; ++rt) HashCombine(Hash, RTVFormats[rt]); diff --git a/Tests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp b/Tests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp index 3a7d58640..1cf0238d7 100644 --- a/Tests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp +++ b/Tests/DiligentCoreTest/src/GraphicsAccessories/GraphicsAccessoriesTest.cpp @@ -1537,7 +1537,14 @@ TEST(GraphicsAccessories_GraphicsAccessories, ComputeRenderTargetFormatsHash) auto Test = [&Hashes](Uint32 NumRenderTargets, const TEXTURE_FORMAT RTVFormats[], TEXTURE_FORMAT DepthFormat) { size_t Hash = ComputeRenderTargetFormatsHash(NumRenderTargets, RTVFormats, DepthFormat); - EXPECT_NE(Hash, size_t{0}); + if (NumRenderTargets == 0 && DepthFormat == TEX_FORMAT_UNKNOWN) + { + EXPECT_EQ(Hash, size_t{0}); + } + else + { + EXPECT_NE(Hash, size_t{0}); + } EXPECT_TRUE(Hashes.insert(Hash).second); };