summaryrefslogtreecommitdiff
path: root/src/video_core/vulkan_common
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2022-12-05 17:14:34 +0100
committerGravatar Fernando Sahmkow2023-01-01 16:43:58 -0500
commitf800e485c9bcd98e08128db974540e7ba0324128 (patch)
treec931bf1f7e8aa04d6f0ea6c110dedc1c10642cab /src/video_core/vulkan_common
parentVulkan: Implement Dynamic States 2 (diff)
downloadyuzu-f800e485c9bcd98e08128db974540e7ba0324128.tar.gz
yuzu-f800e485c9bcd98e08128db974540e7ba0324128.tar.xz
yuzu-f800e485c9bcd98e08128db974540e7ba0324128.zip
Vulkan Implement Dynamic State 2 LogicOp and PatchVertices
Diffstat (limited to 'src/video_core/vulkan_common')
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp5
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.h10
3 files changed, 13 insertions, 4 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 9a420a293..7294fcfe3 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -576,8 +576,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
576 .pNext = nullptr, 576 .pNext = nullptr,
577 .extendedDynamicState2 = VK_TRUE, 577 .extendedDynamicState2 = VK_TRUE,
578 .extendedDynamicState2LogicOp = ext_extended_dynamic_state2_extra ? VK_TRUE : VK_FALSE, 578 .extendedDynamicState2LogicOp = ext_extended_dynamic_state2_extra ? VK_TRUE : VK_FALSE,
579 .extendedDynamicState2PatchControlPoints =
580 ext_extended_dynamic_state2_extra ? VK_TRUE : VK_FALSE,
581 }; 579 };
582 SetNext(next, dynamic_state2); 580 SetNext(next, dynamic_state2);
583 } else { 581 } else {
@@ -1330,8 +1328,7 @@ std::vector<const char*> Device::LoadExtensions(bool requires_surface) {
1330 extensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); 1328 extensions.push_back(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
1331 ext_extended_dynamic_state2 = true; 1329 ext_extended_dynamic_state2 = true;
1332 ext_extended_dynamic_state2_extra = 1330 ext_extended_dynamic_state2_extra =
1333 extended_dynamic_state2.extendedDynamicState2LogicOp && 1331 extended_dynamic_state2.extendedDynamicState2LogicOp;
1334 extended_dynamic_state2.extendedDynamicState2PatchControlPoints;
1335 } 1332 }
1336 } 1333 }
1337 if (has_ext_extended_dynamic_state3) { 1334 if (has_ext_extended_dynamic_state3) {
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp
index 4dde325ff..8745cf80f 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.cpp
+++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp
@@ -126,6 +126,8 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
126 X(vkCmdSetRasterizerDiscardEnableEXT); 126 X(vkCmdSetRasterizerDiscardEnableEXT);
127 X(vkCmdSetDepthBiasEnableEXT); 127 X(vkCmdSetDepthBiasEnableEXT);
128 X(vkCmdSetFrontFaceEXT); 128 X(vkCmdSetFrontFaceEXT);
129 X(vkCmdSetLogicOpEXT);
130 X(vkCmdSetPatchControlPointsEXT);
129 X(vkCmdSetLineWidth); 131 X(vkCmdSetLineWidth);
130 X(vkCmdSetPrimitiveTopologyEXT); 132 X(vkCmdSetPrimitiveTopologyEXT);
131 X(vkCmdSetStencilOpEXT); 133 X(vkCmdSetStencilOpEXT);
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h
index 0d3f71460..c4b7051fc 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.h
+++ b/src/video_core/vulkan_common/vulkan_wrapper.h
@@ -239,6 +239,8 @@ struct DeviceDispatch : InstanceDispatch {
239 PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT{}; 239 PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT{};
240 PFN_vkCmdSetEvent vkCmdSetEvent{}; 240 PFN_vkCmdSetEvent vkCmdSetEvent{};
241 PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT{}; 241 PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT{};
242 PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT{};
243 PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT{};
242 PFN_vkCmdSetLineWidth vkCmdSetLineWidth{}; 244 PFN_vkCmdSetLineWidth vkCmdSetLineWidth{};
243 PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT{}; 245 PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT{};
244 PFN_vkCmdSetScissor vkCmdSetScissor{}; 246 PFN_vkCmdSetScissor vkCmdSetScissor{};
@@ -1238,6 +1240,14 @@ public:
1238 dld->vkCmdSetFrontFaceEXT(handle, front_face); 1240 dld->vkCmdSetFrontFaceEXT(handle, front_face);
1239 } 1241 }
1240 1242
1243 void SetLogicOpEXT(VkLogicOp logic_op) const noexcept {
1244 dld->vkCmdSetLogicOpEXT(handle, logic_op);
1245 }
1246
1247 void SetPatchControlPointsEXT(uint32_t patch_control_points) const noexcept {
1248 dld->vkCmdSetPatchControlPointsEXT(handle, patch_control_points);
1249 }
1250
1241 void SetLineWidth(float line_width) const noexcept { 1251 void SetLineWidth(float line_width) const noexcept {
1242 dld->vkCmdSetLineWidth(handle, line_width); 1252 dld->vkCmdSetLineWidth(handle, line_width);
1243 } 1253 }