diff options
| author | 2022-02-09 15:00:05 +0100 | |
|---|---|---|
| committer | 2023-01-01 16:43:57 -0500 | |
| commit | a5a94f52ffcbf3119d272a9369021a213ea6dad2 (patch) | |
| tree | ba6d42b142894d0f3f0ac34fb6ce491442bae8fd /src/video_core/vulkan_common | |
| parent | Merge pull request #9538 from merryhime/char-concat (diff) | |
| download | yuzu-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.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_wrapper.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_wrapper.h | 15 |
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(), |