On 27 May 2018 at 07:10, Bas Nieuwenhuizen <[email protected]> wrote: > Literally the same as the AMD ext.
For the two: Reviewed-by: Dave Airlie <[email protected]> > > Passes *indirect_draw_count* CTS tests. > --- > src/amd/vulkan/radv_cmd_buffer.c | 49 +++++++++++++++++++++++++++++++ > src/amd/vulkan/radv_extensions.py | 1 + > 2 files changed, 50 insertions(+) > > diff --git a/src/amd/vulkan/radv_cmd_buffer.c > b/src/amd/vulkan/radv_cmd_buffer.c > index 5ab577b4c59..24dadf1d4e8 100644 > --- a/src/amd/vulkan/radv_cmd_buffer.c > +++ b/src/amd/vulkan/radv_cmd_buffer.c > @@ -3384,6 +3384,55 @@ void radv_CmdDrawIndexedIndirectCountAMD( > radv_draw(cmd_buffer, &info); > } > > +void radv_CmdDrawIndirectCountKHR( > + VkCommandBuffer commandBuffer, > + VkBuffer _buffer, > + VkDeviceSize offset, > + VkBuffer _countBuffer, > + VkDeviceSize countBufferOffset, > + uint32_t maxDrawCount, > + uint32_t stride) > +{ > + RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); > + RADV_FROM_HANDLE(radv_buffer, buffer, _buffer); > + RADV_FROM_HANDLE(radv_buffer, count_buffer, _countBuffer); > + struct radv_draw_info info = {}; > + > + info.count = maxDrawCount; > + info.indirect = buffer; > + info.indirect_offset = offset; > + info.count_buffer = count_buffer; > + info.count_buffer_offset = countBufferOffset; > + info.stride = stride; > + > + radv_draw(cmd_buffer, &info); > +} > + > +void radv_CmdDrawIndexedIndirectCountKHR( > + VkCommandBuffer commandBuffer, > + VkBuffer _buffer, > + VkDeviceSize offset, > + VkBuffer _countBuffer, > + VkDeviceSize countBufferOffset, > + uint32_t maxDrawCount, > + uint32_t stride) > +{ > + RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); > + RADV_FROM_HANDLE(radv_buffer, buffer, _buffer); > + RADV_FROM_HANDLE(radv_buffer, count_buffer, _countBuffer); > + struct radv_draw_info info = {}; > + > + info.indexed = true; > + info.count = maxDrawCount; > + info.indirect = buffer; > + info.indirect_offset = offset; > + info.count_buffer = count_buffer; > + info.count_buffer_offset = countBufferOffset; > + info.stride = stride; > + > + radv_draw(cmd_buffer, &info); > +} > + > struct radv_dispatch_info { > /** > * Determine the layout of the grid (in block units) to be used. > diff --git a/src/amd/vulkan/radv_extensions.py > b/src/amd/vulkan/radv_extensions.py > index ec34551696e..a5b5a8dc34e 100644 > --- a/src/amd/vulkan/radv_extensions.py > +++ b/src/amd/vulkan/radv_extensions.py > @@ -56,6 +56,7 @@ EXTENSIONS = [ > Extension('VK_KHR_descriptor_update_template', 1, True), > Extension('VK_KHR_device_group', 1, True), > Extension('VK_KHR_device_group_creation', 1, True), > + Extension('VK_KHR_draw_indirect_count', 1, True), > Extension('VK_KHR_external_fence', 1, > 'device->rad_info.has_syncobj_wait_for_submit'), > Extension('VK_KHR_external_fence_capabilities', 1, True), > Extension('VK_KHR_external_fence_fd', 1, > 'device->rad_info.has_syncobj_wait_for_submit'), > -- > 2.17.0 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
