summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2019-01-23 00:36:46 +1000
committerStenzek <stenzek@gmail.com>2019-01-25 11:15:57 +1000
commitee0fa548bc60b6f2abc9a2122c6d7debc1e9b576 (patch)
treee085f8f16ffb0f81c0d24c6e5dcd4f5da7e3a822 /Source/Core/VideoBackends
parentc6f151c4e10d08108316ae235f8463e88364d2e1 (diff)
Vulkan: Don't bind last descriptor set if bounding box is unsupported
Fixes crash on a4xx/Vulkan.
Diffstat (limited to 'Source/Core/VideoBackends')
-rw-r--r--Source/Core/VideoBackends/Vulkan/StateTracker.cpp4
-rw-r--r--Source/Core/VideoBackends/Vulkan/StateTracker.h5
2 files changed, 6 insertions, 3 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/StateTracker.cpp b/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
index 471a8b12f5..089b385ffe 100644
--- a/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
+++ b/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
@@ -767,7 +767,9 @@ bool StateTracker::UpdateGXDescriptorSet()
if (num_writes > 0)
vkUpdateDescriptorSets(g_vulkan_context->GetDevice(), num_writes, writes.data(), 0, nullptr);
- m_num_active_descriptor_sets = NUM_GX_DRAW_DESCRIPTOR_SETS;
+ m_num_active_descriptor_sets = g_vulkan_context->SupportsBoundingBox() ?
+ NUM_GX_DRAW_DESCRIPTOR_SETS_SSBO :
+ NUM_GX_DRAW_DESCRIPTOR_SETS;
m_num_dynamic_offsets = NUM_UBO_DESCRIPTOR_SET_BINDINGS;
return true;
}
diff --git a/Source/Core/VideoBackends/Vulkan/StateTracker.h b/Source/Core/VideoBackends/Vulkan/StateTracker.h
index a3d7a365ae..f4cbc8e180 100644
--- a/Source/Core/VideoBackends/Vulkan/StateTracker.h
+++ b/Source/Core/VideoBackends/Vulkan/StateTracker.h
@@ -103,7 +103,8 @@ private:
// Number of descriptor sets for game draws.
enum
{
- NUM_GX_DRAW_DESCRIPTOR_SETS = DESCRIPTOR_SET_BIND_POINT_STORAGE_OR_TEXEL_BUFFER + 1,
+ NUM_GX_DRAW_DESCRIPTOR_SETS = DESCRIPTOR_SET_BIND_POINT_PIXEL_SHADER_SAMPLERS + 1,
+ NUM_GX_DRAW_DESCRIPTOR_SETS_SSBO = DESCRIPTOR_SET_BIND_POINT_STORAGE_OR_TEXEL_BUFFER + 1,
NUM_UTILITY_DRAW_DESCRIPTOR_SETS = 2
};
@@ -192,4 +193,4 @@ private:
std::vector<u32> m_scheduled_command_buffer_kicks;
bool m_allow_background_execution = true;
};
-}
+} // namespace Vulkan