diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 1 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_wrapper.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_wrapper.h | 12 |
3 files changed, 15 insertions, 8 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 4cfb20bc2..0662a2d9f 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -65,6 +65,7 @@ | |||
| 65 | EXTENSION(EXT, SHADER_VIEWPORT_INDEX_LAYER, shader_viewport_index_layer) \ | 65 | EXTENSION(EXT, SHADER_VIEWPORT_INDEX_LAYER, shader_viewport_index_layer) \ |
| 66 | EXTENSION(EXT, TOOLING_INFO, tooling_info) \ | 66 | EXTENSION(EXT, TOOLING_INFO, tooling_info) \ |
| 67 | EXTENSION(EXT, VERTEX_ATTRIBUTE_DIVISOR, vertex_attribute_divisor) \ | 67 | EXTENSION(EXT, VERTEX_ATTRIBUTE_DIVISOR, vertex_attribute_divisor) \ |
| 68 | EXTENSION(KHR, DRAW_INDIRECT_COUNT, draw_indirect_count) \ | ||
| 68 | EXTENSION(KHR, DRIVER_PROPERTIES, driver_properties) \ | 69 | EXTENSION(KHR, DRIVER_PROPERTIES, driver_properties) \ |
| 69 | EXTENSION(KHR, EXTERNAL_MEMORY_FD, external_memory_fd) \ | 70 | EXTENSION(KHR, EXTERNAL_MEMORY_FD, external_memory_fd) \ |
| 70 | EXTENSION(KHR, PUSH_DESCRIPTOR, push_descriptor) \ | 71 | EXTENSION(KHR, PUSH_DESCRIPTOR, push_descriptor) \ |
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp index 61be1fce1..486d4dfaf 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.cpp +++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp | |||
| @@ -96,8 +96,8 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept { | |||
| 96 | X(vkCmdDrawIndexed); | 96 | X(vkCmdDrawIndexed); |
| 97 | X(vkCmdDrawIndirect); | 97 | X(vkCmdDrawIndirect); |
| 98 | X(vkCmdDrawIndexedIndirect); | 98 | X(vkCmdDrawIndexedIndirect); |
| 99 | X(vkCmdDrawIndirectCountKHR); | 99 | X(vkCmdDrawIndirectCount); |
| 100 | X(vkCmdDrawIndexedIndirectCountKHR); | 100 | X(vkCmdDrawIndexedIndirectCount); |
| 101 | X(vkCmdEndQuery); | 101 | X(vkCmdEndQuery); |
| 102 | X(vkCmdEndRenderPass); | 102 | X(vkCmdEndRenderPass); |
| 103 | X(vkCmdEndTransformFeedbackEXT); | 103 | X(vkCmdEndTransformFeedbackEXT); |
| @@ -221,6 +221,12 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept { | |||
| 221 | if (!dld.vkResetQueryPool) { | 221 | if (!dld.vkResetQueryPool) { |
| 222 | Proc(dld.vkResetQueryPool, dld, "vkResetQueryPoolEXT", device); | 222 | Proc(dld.vkResetQueryPool, dld, "vkResetQueryPoolEXT", device); |
| 223 | } | 223 | } |
| 224 | |||
| 225 | // Support for draw indirect with count is optional in Vulkan 1.2 | ||
| 226 | if (!dld.vkCmdDrawIndirectCount) { | ||
| 227 | Proc(dld.vkCmdDrawIndirectCount, dld, "vkCmdDrawIndirectCountKHR", device); | ||
| 228 | Proc(dld.vkCmdDrawIndexedIndirectCount, dld, "vkCmdDrawIndexedIndirectCountKHR", device); | ||
| 229 | } | ||
| 224 | #undef X | 230 | #undef X |
| 225 | } | 231 | } |
| 226 | 232 | ||
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h index 412779b51..e86f661cb 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.h +++ b/src/video_core/vulkan_common/vulkan_wrapper.h | |||
| @@ -215,8 +215,8 @@ struct DeviceDispatch : InstanceDispatch { | |||
| 215 | PFN_vkCmdDrawIndexed vkCmdDrawIndexed{}; | 215 | PFN_vkCmdDrawIndexed vkCmdDrawIndexed{}; |
| 216 | PFN_vkCmdDrawIndirect vkCmdDrawIndirect{}; | 216 | PFN_vkCmdDrawIndirect vkCmdDrawIndirect{}; |
| 217 | PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect{}; | 217 | PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect{}; |
| 218 | PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR{}; | 218 | PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount{}; |
| 219 | PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR{}; | 219 | PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount{}; |
| 220 | PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT{}; | 220 | PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT{}; |
| 221 | PFN_vkCmdEndQuery vkCmdEndQuery{}; | 221 | PFN_vkCmdEndQuery vkCmdEndQuery{}; |
| 222 | PFN_vkCmdEndRenderPass vkCmdEndRenderPass{}; | 222 | PFN_vkCmdEndRenderPass vkCmdEndRenderPass{}; |
| @@ -1065,15 +1065,15 @@ public: | |||
| 1065 | 1065 | ||
| 1066 | void DrawIndirectCount(VkBuffer src_buffer, VkDeviceSize src_offset, VkBuffer count_buffer, | 1066 | void DrawIndirectCount(VkBuffer src_buffer, VkDeviceSize src_offset, VkBuffer count_buffer, |
| 1067 | VkDeviceSize count_offset, u32 draw_count, u32 stride) const noexcept { | 1067 | VkDeviceSize count_offset, u32 draw_count, u32 stride) const noexcept { |
| 1068 | dld->vkCmdDrawIndirectCountKHR(handle, src_buffer, src_offset, count_buffer, count_offset, | 1068 | dld->vkCmdDrawIndirectCount(handle, src_buffer, src_offset, count_buffer, count_offset, |
| 1069 | draw_count, stride); | 1069 | draw_count, stride); |
| 1070 | } | 1070 | } |
| 1071 | 1071 | ||
| 1072 | void DrawIndexedIndirectCount(VkBuffer src_buffer, VkDeviceSize src_offset, | 1072 | void DrawIndexedIndirectCount(VkBuffer src_buffer, VkDeviceSize src_offset, |
| 1073 | VkBuffer count_buffer, VkDeviceSize count_offset, u32 draw_count, | 1073 | VkBuffer count_buffer, VkDeviceSize count_offset, u32 draw_count, |
| 1074 | u32 stride) const noexcept { | 1074 | u32 stride) const noexcept { |
| 1075 | dld->vkCmdDrawIndexedIndirectCountKHR(handle, src_buffer, src_offset, count_buffer, | 1075 | dld->vkCmdDrawIndexedIndirectCount(handle, src_buffer, src_offset, count_buffer, |
| 1076 | count_offset, draw_count, stride); | 1076 | count_offset, draw_count, stride); |
| 1077 | } | 1077 | } |
| 1078 | 1078 | ||
| 1079 | void ClearAttachments(Span<VkClearAttachment> attachments, | 1079 | void ClearAttachments(Span<VkClearAttachment> attachments, |