diff options
author | bunnei <bunneidev@gmail.com> | 2021-12-22 09:19:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-22 09:19:23 +0100 |
commit | 36df305b13afc3d91bb7f9694dedab9a84a94130 (patch) | |
tree | 3e7f617dcdc5b819ab2e7da9749875f948b0d773 /src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | |
parent | Merge pull request #7602 from jbeich/freebsd-vaapi (diff) | |
parent | Vulkan: Fix the checks for primitive restart extension. (diff) | |
download | yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.gz yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.bz2 yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.lz yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.xz yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.zst yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.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 | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 616a7b457..d514b71d0 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -605,7 +605,11 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { .flags = 0, .topology = input_assembly_topology, .primitiveRestartEnable = key.state.primitive_restart_enable != 0 && - SupportsPrimitiveRestart(input_assembly_topology), + ((input_assembly_topology != VK_PRIMITIVE_TOPOLOGY_PATCH_LIST && + device.IsTopologyListPrimitiveRestartSupported()) || + SupportsPrimitiveRestart(input_assembly_topology) || + (input_assembly_topology == VK_PRIMITIVE_TOPOLOGY_PATCH_LIST && + device.IsPatchListPrimitiveRestartSupported())), }; const VkPipelineTessellationStateCreateInfo tessellation_ci{ .sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, @@ -613,7 +617,6 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { .flags = 0, .patchControlPoints = key.state.patch_control_points_minus_one.Value() + 1, }; - std::array<VkViewportSwizzleNV, Maxwell::NumViewports> swizzles; std::ranges::transform(key.state.viewport_swizzles, swizzles.begin(), UnpackViewportSwizzle); const VkPipelineViewportSwizzleStateCreateInfoNV swizzle_ci{ @@ -748,8 +751,8 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, .pNext = nullptr, .flags = 0, - .logicOpEnable = VK_FALSE, - .logicOp = VK_LOGIC_OP_COPY, + .logicOpEnable = key.state.logic_op_enable != 0, + .logicOp = static_cast<VkLogicOp>(key.state.logic_op.Value()), .attachmentCount = static_cast<u32>(cb_attachments.size()), .pAttachments = cb_attachments.data(), .blendConstants = {}, |