summaryrefslogtreecommitdiff
path: root/src/video_core/vulkan_common
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2022-02-09 15:00:05 +0100
committerGravatar Fernando Sahmkow2023-01-01 16:43:57 -0500
commita5a94f52ffcbf3119d272a9369021a213ea6dad2 (patch)
treeba6d42b142894d0f3f0ac34fb6ce491442bae8fd /src/video_core/vulkan_common
parentMerge pull request #9538 from merryhime/char-concat (diff)
downloadyuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.gz
yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.xz
yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.zip
MacroHLE: Add MultidrawIndirect HLE Macro.
Diffstat (limited to 'src/video_core/vulkan_common')
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.h15
3 files changed, 18 insertions, 1 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index c4d31681a..477fc428b 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -350,7 +350,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
350 .sampleRateShading = true, 350 .sampleRateShading = true,
351 .dualSrcBlend = true, 351 .dualSrcBlend = true,
352 .logicOp = true, 352 .logicOp = true,
353 .multiDrawIndirect = false, 353 .multiDrawIndirect = true,
354 .drawIndirectFirstInstance = false, 354 .drawIndirectFirstInstance = false,
355 .depthClamp = true, 355 .depthClamp = true,
356 .depthBiasClamp = true, 356 .depthBiasClamp = true,
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp
index 7dca7341c..c58c4c1c4 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.cpp
+++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp
@@ -94,6 +94,8 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
94 X(vkCmdDispatch); 94 X(vkCmdDispatch);
95 X(vkCmdDraw); 95 X(vkCmdDraw);
96 X(vkCmdDrawIndexed); 96 X(vkCmdDrawIndexed);
97 X(vkCmdDrawIndirectCount);
98 X(vkCmdDrawIndexedIndirectCount);
97 X(vkCmdEndQuery); 99 X(vkCmdEndQuery);
98 X(vkCmdEndRenderPass); 100 X(vkCmdEndRenderPass);
99 X(vkCmdEndTransformFeedbackEXT); 101 X(vkCmdEndTransformFeedbackEXT);
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h
index 8bd4fd4d9..9bd158dce 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.h
+++ b/src/video_core/vulkan_common/vulkan_wrapper.h
@@ -213,6 +213,8 @@ struct DeviceDispatch : InstanceDispatch {
213 PFN_vkCmdDispatch vkCmdDispatch{}; 213 PFN_vkCmdDispatch vkCmdDispatch{};
214 PFN_vkCmdDraw vkCmdDraw{}; 214 PFN_vkCmdDraw vkCmdDraw{};
215 PFN_vkCmdDrawIndexed vkCmdDrawIndexed{}; 215 PFN_vkCmdDrawIndexed vkCmdDrawIndexed{};
216 PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount{};
217 PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount{};
216 PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT{}; 218 PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT{};
217 PFN_vkCmdEndQuery vkCmdEndQuery{}; 219 PFN_vkCmdEndQuery vkCmdEndQuery{};
218 PFN_vkCmdEndRenderPass vkCmdEndRenderPass{}; 220 PFN_vkCmdEndRenderPass vkCmdEndRenderPass{};
@@ -1019,6 +1021,19 @@ public:
1019 first_instance); 1021 first_instance);
1020 } 1022 }
1021 1023
1024 void DrawIndirectCount(VkBuffer src_buffer, VkDeviceSize src_offset, VkBuffer count_buffer,
1025 VkDeviceSize count_offset, u32 draw_count, u32 stride) const noexcept {
1026 dld->vkCmdDrawIndirectCount(handle, src_buffer, src_offset, count_buffer, count_offset,
1027 draw_count, stride);
1028 }
1029
1030 void DrawIndexedIndirectCount(VkBuffer src_buffer, VkDeviceSize src_offset,
1031 VkBuffer count_buffer, VkDeviceSize count_offset, u32 draw_count,
1032 u32 stride) const noexcept {
1033 dld->vkCmdDrawIndexedIndirectCount(handle, src_buffer, src_offset, count_buffer,
1034 count_offset, draw_count, stride);
1035 }
1036
1022 void ClearAttachments(Span<VkClearAttachment> attachments, 1037 void ClearAttachments(Span<VkClearAttachment> attachments,
1023 Span<VkClearRect> rects) const noexcept { 1038 Span<VkClearRect> rects) const noexcept {
1024 dld->vkCmdClearAttachments(handle, attachments.size(), attachments.data(), rects.size(), 1039 dld->vkCmdClearAttachments(handle, attachments.size(), attachments.data(), rects.size(),