diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-06-23 00:07:04 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-06-27 01:57:22 +0200 |
commit | 8584a77eb2e51e702d4c941e0fca07aafc47f29b (patch) | |
tree | 0a6929b316f2d92dc04b898053a3da09401844c9 /src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | |
parent | vulkan/fixed_pipeline_state: Move state out of individual structures (diff) | |
download | yuzu-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 'src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 18 |
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; |