[Mesa-dev] [PATCH 2/2] radv: Implement VK_KHR_draw_indirect_count.

Dave Airlie airlied at gmail.com
Mon May 28 01:59:18 UTC 2018


On 27 May 2018 at 07:10, Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl> wrote:
> Literally the same as the AMD ext.


For the two:
Reviewed-by: Dave Airlie <airlied at redhat.com>

>
> 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
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list