summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-06-23 00:07:04 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-06-27 01:57:22 +0200
commit8584a77eb2e51e702d4c941e0fca07aafc47f29b (patch)
tree0a6929b316f2d92dc04b898053a3da09401844c9 /src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
parentvulkan/fixed_pipeline_state: Move state out of individual structures (diff)
downloadyuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.tar
yuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.tar.gz
yuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.tar.bz2
yuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.tar.lz
yuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.tar.xz
yuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.tar.zst
yuzu-8584a77eb2e51e702d4c941e0fca07aafc47f29b.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
index 15d9ac3b0..844445105 100644
--- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
+++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
@@ -177,8 +177,22 @@ std::vector<vk::ShaderModule> VKGraphicsPipeline::CreateShaderModules(
vk::Pipeline VKGraphicsPipeline::CreatePipeline(const RenderPassParams& renderpass_params,
const SPIRVProgram& program) const {
const auto& state = fixed_state;
- const auto& dynamic = fixed_state.dynamic_state;
- const auto& viewport_swizzles = fixed_state.viewport_swizzles;
+ const auto& viewport_swizzles = state.viewport_swizzles;
+
+ FixedPipelineState::DynamicState dynamic;
+ if (device.IsExtExtendedDynamicStateSupported()) {
+ // Insert dummy values, as long as they are valid they don't matter as extended dynamic
+ // state is ignored
+ dynamic.raw1 = 0;
+ dynamic.raw2 = 0;
+ for (FixedPipelineState::VertexBinding& binding : dynamic.vertex_bindings) {
+ // Enable all vertex bindings
+ binding.raw = 0;
+ binding.enabled.Assign(1);
+ }
+ } else {
+ dynamic = state.dynamic_state;
+ }
std::vector<VkVertexInputBindingDescription> vertex_bindings;
std::vector<VkVertexInputBindingDivisorDescriptionEXT> vertex_binding_divisors;