summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar bunnei2021-12-22 00:19:23 -0800
committerGravatar GitHub2021-12-22 00:19:23 -0800
commit36df305b13afc3d91bb7f9694dedab9a84a94130 (patch)
tree3e7f617dcdc5b819ab2e7da9749875f948b0d773 /src/video_core/renderer_vulkan
parentMerge pull request #7602 from jbeich/freebsd-vaapi (diff)
parentVulkan: Fix the checks for primitive restart extension. (diff)
downloadyuzu-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.cpp11
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 = {},