diff options
| author | 2021-12-22 00:19:23 -0800 | |
|---|---|---|
| committer | 2021-12-22 00:19:23 -0800 | |
| commit | 36df305b13afc3d91bb7f9694dedab9a84a94130 (patch) | |
| tree | 3e7f617dcdc5b819ab2e7da9749875f948b0d773 /src/video_core/renderer_vulkan | |
| parent | Merge pull request #7602 from jbeich/freebsd-vaapi (diff) | |
| parent | Vulkan: Fix the checks for primitive restart extension. (diff) | |
| download | yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.gz yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.tar.xz yuzu-36df305b13afc3d91bb7f9694dedab9a84a94130.zip | |
Merge pull request #7599 from FernandoS27/primrestart-vulkan
Vulkan: Fix Primitive Restart and implement Logical Operations
Diffstat (limited to 'src/video_core/renderer_vulkan')
| -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) { | |||
| 605 | .flags = 0, | 605 | .flags = 0, |
| 606 | .topology = input_assembly_topology, | 606 | .topology = input_assembly_topology, |
| 607 | .primitiveRestartEnable = key.state.primitive_restart_enable != 0 && | 607 | .primitiveRestartEnable = key.state.primitive_restart_enable != 0 && |
| 608 | SupportsPrimitiveRestart(input_assembly_topology), | 608 | ((input_assembly_topology != VK_PRIMITIVE_TOPOLOGY_PATCH_LIST && |
| 609 | device.IsTopologyListPrimitiveRestartSupported()) || | ||
| 610 | SupportsPrimitiveRestart(input_assembly_topology) || | ||
| 611 | (input_assembly_topology == VK_PRIMITIVE_TOPOLOGY_PATCH_LIST && | ||
| 612 | device.IsPatchListPrimitiveRestartSupported())), | ||
| 609 | }; | 613 | }; |
| 610 | const VkPipelineTessellationStateCreateInfo tessellation_ci{ | 614 | const VkPipelineTessellationStateCreateInfo tessellation_ci{ |
| 611 | .sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, | 615 | .sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, |
| @@ -613,7 +617,6 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { | |||
| 613 | .flags = 0, | 617 | .flags = 0, |
| 614 | .patchControlPoints = key.state.patch_control_points_minus_one.Value() + 1, | 618 | .patchControlPoints = key.state.patch_control_points_minus_one.Value() + 1, |
| 615 | }; | 619 | }; |
| 616 | |||
| 617 | std::array<VkViewportSwizzleNV, Maxwell::NumViewports> swizzles; | 620 | std::array<VkViewportSwizzleNV, Maxwell::NumViewports> swizzles; |
| 618 | std::ranges::transform(key.state.viewport_swizzles, swizzles.begin(), UnpackViewportSwizzle); | 621 | std::ranges::transform(key.state.viewport_swizzles, swizzles.begin(), UnpackViewportSwizzle); |
| 619 | const VkPipelineViewportSwizzleStateCreateInfoNV swizzle_ci{ | 622 | const VkPipelineViewportSwizzleStateCreateInfoNV swizzle_ci{ |
| @@ -748,8 +751,8 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { | |||
| 748 | .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, | 751 | .sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, |
| 749 | .pNext = nullptr, | 752 | .pNext = nullptr, |
| 750 | .flags = 0, | 753 | .flags = 0, |
| 751 | .logicOpEnable = VK_FALSE, | 754 | .logicOpEnable = key.state.logic_op_enable != 0, |
| 752 | .logicOp = VK_LOGIC_OP_COPY, | 755 | .logicOp = static_cast<VkLogicOp>(key.state.logic_op.Value()), |
| 753 | .attachmentCount = static_cast<u32>(cb_attachments.size()), | 756 | .attachmentCount = static_cast<u32>(cb_attachments.size()), |
| 754 | .pAttachments = cb_attachments.data(), | 757 | .pAttachments = cb_attachments.data(), |
| 755 | .blendConstants = {}, | 758 | .blendConstants = {}, |