summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
diff options
context:
space:
mode:
authorJonathan Marek <jonathan@marek.ca>2020-10-04 18:09:30 -0400
committerLéo Lam <leo@leolam.fr>2020-11-20 12:23:34 +0100
commita20e69ff5173ee171b57bcc4dce071cef4459512 (patch)
tree57170a99702091bd2b8881fe603a3323ca3515ee /Source/Core/VideoBackends/Vulkan/StateTracker.cpp
parentc580a70a1245945a47df14b28c7b8741646fddc7 (diff)
Vulkan: fix validation error in bSupportsGeometryShaders=false case
In CreateDescriptorSetLayouts(), one less dynamic binding is created when bSupportsGeometryShaders=false. Reduce the dynamicOffsetCount argument by one in that case. Avoids this validation error: Attempting to bind 3 descriptorSets with 2 dynamic descriptors, but dynamicOffsetCount is 3. It should exactly match the number of dynamic descriptors. The Vulkan spec states: dynamicOffsetCount must be equal to the total number of dynamic descriptors in pDescriptorSets Signed-off-by: Jonathan Marek <jonathan@marek.ca> [Applied clang-format] Signed-off-by: Léo Lam <leo@leolam.fr>
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/StateTracker.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/StateTracker.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/StateTracker.cpp b/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
index 50ea9d61d6..53081c4be2 100644
--- a/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
+++ b/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
@@ -542,7 +542,10 @@ bool StateTracker::UpdateGXDescriptorSet()
g_ActiveConfig.backend_info.bSupportsBBox ?
NUM_GX_DESCRIPTOR_SETS :
(NUM_GX_DESCRIPTOR_SETS - 1),
- m_gx_descriptor_sets.data(), NUM_UBO_DESCRIPTOR_SET_BINDINGS,
+ m_gx_descriptor_sets.data(),
+ g_ActiveConfig.backend_info.bSupportsGeometryShaders ?
+ NUM_UBO_DESCRIPTOR_SET_BINDINGS :
+ (NUM_UBO_DESCRIPTOR_SET_BINDINGS - 1),
m_bindings.gx_ubo_offsets.data());
m_dirty_flags &= ~(DIRTY_FLAG_DESCRIPTOR_SETS | DIRTY_FLAG_GX_UBO_OFFSETS);
}
@@ -550,7 +553,10 @@ bool StateTracker::UpdateGXDescriptorSet()
{
vkCmdBindDescriptorSets(g_command_buffer_mgr->GetCurrentCommandBuffer(),
VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipeline->GetVkPipelineLayout(), 0,
- 1, m_gx_descriptor_sets.data(), NUM_UBO_DESCRIPTOR_SET_BINDINGS,
+ 1, m_gx_descriptor_sets.data(),
+ g_ActiveConfig.backend_info.bSupportsGeometryShaders ?
+ NUM_UBO_DESCRIPTOR_SET_BINDINGS :
+ (NUM_UBO_DESCRIPTOR_SET_BINDINGS - 1),
m_bindings.gx_ubo_offsets.data());
m_dirty_flags &= ~DIRTY_FLAG_GX_UBO_OFFSETS;
}