summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-11-18 02:01:18 +0000
committerazhirnov <zh1dron@gmail.com>2020-11-18 02:01:18 +0000
commita8d6acd496404dc5b01df997ad9d07504d6ccf1b (patch)
tree47bde1f0dad761bc82299fb7d3dee6c5a6af5e8b /Graphics/GraphicsEngineVulkan
parentMerge branch 'master' into ray_tracing_2 (diff)
downloadDiligentCore-a8d6acd496404dc5b01df997ad9d07504d6ccf1b.tar.gz
DiligentCore-a8d6acd496404dc5b01df997ad9d07504d6ccf1b.zip
Removed SWAP_CHAIN_USAGE_UNORDERED_ACCESS, fixed shader group checks
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp18
-rw-r--r--Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp27
2 files changed, 19 insertions, 26 deletions
diff --git a/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
index fe7aa4c6..2949c928 100644
--- a/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/PipelineStateVkImpl.cpp
@@ -428,8 +428,10 @@ void BuildRTPipelineDescription(const RayTracingPipelineStateCreateInfo&
#ifdef DILIGENT_DEVELOPMENT
auto Iter = NameToGroupIndex.find(GeneralShader.Name);
- LOG_PSO_ERROR_AND_THROW(Iter != NameToGroupIndex.end(), "Can't find general shader '", GeneralShader.Name, "'");
- LOG_PSO_ERROR_AND_THROW(Iter->second == ShaderGroups.size(), "General shader group '", GeneralShader.Name, "' index mismatch: (", Iter->second, ") != (", ShaderGroups.size(), ")");
+ if (Iter == NameToGroupIndex.end())
+ LOG_PSO_ERROR_AND_THROW("Can't find general shader '", GeneralShader.Name, "'");
+ if (Iter->second != ShaderGroups.size())
+ LOG_PSO_ERROR_AND_THROW("General shader group '", GeneralShader.Name, "' index mismatch: (", Iter->second, ") != (", ShaderGroups.size(), ")");
#endif
ShaderGroups.push_back(Group);
@@ -450,8 +452,10 @@ void BuildRTPipelineDescription(const RayTracingPipelineStateCreateInfo&
#ifdef DILIGENT_DEVELOPMENT
auto Iter = NameToGroupIndex.find(TriHitShader.Name);
- LOG_PSO_ERROR_AND_THROW(Iter != NameToGroupIndex.end(), "Can't find triangle hit group '", TriHitShader.Name, "'");
- LOG_PSO_ERROR_AND_THROW(Iter->second == ShaderGroups.size(), "Triangle hit group '", TriHitShader.Name, "' index mismatch: (", Iter->second, ") != (", ShaderGroups.size(), ")");
+ if (Iter == NameToGroupIndex.end())
+ LOG_PSO_ERROR_AND_THROW("Can't find triangle hit group '", TriHitShader.Name, "'");
+ if (Iter->second != ShaderGroups.size())
+ LOG_PSO_ERROR_AND_THROW("Triangle hit group '", TriHitShader.Name, "' index mismatch: (", Iter->second, ") != (", ShaderGroups.size(), ")");
#endif
ShaderGroups.push_back(Group);
@@ -472,8 +476,10 @@ void BuildRTPipelineDescription(const RayTracingPipelineStateCreateInfo&
#ifdef DILIGENT_DEVELOPMENT
auto Iter = NameToGroupIndex.find(ProcHitShader.Name);
- LOG_PSO_ERROR_AND_THROW(Iter != NameToGroupIndex.end(), "Can't find procedural hit group '", ProcHitShader.Name, "'");
- LOG_PSO_ERROR_AND_THROW(Iter->second == ShaderGroups.size(), "Procedural hit group '", ProcHitShader.Name, "' index mismatch: (", Iter->second, ") != (", ShaderGroups.size(), ")");
+ if (Iter == NameToGroupIndex.end())
+ LOG_PSO_ERROR_AND_THROW("Can't find procedural hit group '", ProcHitShader.Name, "'");
+ if (Iter->second != ShaderGroups.size())
+ LOG_PSO_ERROR_AND_THROW("Procedural hit group '", ProcHitShader.Name, "' index mismatch: (", Iter->second, ") != (", ShaderGroups.size(), ")");
#endif
ShaderGroups.push_back(Group);
diff --git a/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp
index d32f9788..7fbe6265 100644
--- a/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/SwapChainVkImpl.cpp
@@ -423,26 +423,13 @@ void SwapChainVkImpl::CreateVulkanSwapChain()
swapchain_ci.imageColorSpace = ColorSpace;
DEV_CHECK_ERR(m_SwapChainDesc.Usage != 0, "No swap chain usage flags defined");
- static_assert(SWAP_CHAIN_USAGE_LAST == SWAP_CHAIN_USAGE_UNORDERED_ACCESS, "Please update this function to handle the new swapchain usage");
-
- {
- auto SCUsage = m_SwapChainDesc.Usage;
- while (SCUsage != SWAP_CHAIN_USAGE_NONE)
- {
- auto UsageBit = static_cast<SWAP_CHAIN_USAGE_FLAGS>(1 << PlatformMisc::GetLSB(Uint32{SCUsage}));
- switch (UsageBit)
- {
- // clang-format off
- case SWAP_CHAIN_USAGE_RENDER_TARGET: swapchain_ci.imageUsage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT; break;
- case SWAP_CHAIN_USAGE_SHADER_INPUT: swapchain_ci.imageUsage |= VK_IMAGE_USAGE_SAMPLED_BIT; break;
- case SWAP_CHAIN_USAGE_COPY_SOURCE: swapchain_ci.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT; break;
- case SWAP_CHAIN_USAGE_UNORDERED_ACCESS: swapchain_ci.imageUsage |= VK_IMAGE_USAGE_STORAGE_BIT; break;
- // clang-format on
- default: UNEXPECTED("unknown swapchain usage flag");
- }
- SCUsage &= ~UsageBit;
- }
- }
+ static_assert(SWAP_CHAIN_USAGE_LAST == SWAP_CHAIN_USAGE_COPY_SOURCE, "Please update this function to handle the new swapchain usage");
+ if (m_SwapChainDesc.Usage & SWAP_CHAIN_USAGE_RENDER_TARGET)
+ swapchain_ci.imageUsage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+ if (m_SwapChainDesc.Usage & SWAP_CHAIN_USAGE_SHADER_INPUT)
+ swapchain_ci.imageUsage |= VK_IMAGE_USAGE_SAMPLED_BIT;
+ if (m_SwapChainDesc.Usage & SWAP_CHAIN_USAGE_COPY_SOURCE)
+ swapchain_ci.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
// vkCmdClearColorImage() command requires the image to use VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL layout
// that requires VK_IMAGE_USAGE_TRANSFER_DST_BIT to be set