[Mesa-dev] [PATCH] radv: add support for VK_AMD_buffer_marker

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon Jun 24 08:37:22 UTC 2019


R-b

On Fri, Jun 21, 2019, 4:14 PM Samuel Pitoiset <samuel.pitoiset at gmail.com>
wrote:

> This simple extension might be useful for debugging purposes.
> GAPID has support for it.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>
> A simple crucible test:
> https://gitlab.freedesktop.org/mesa/crucible/merge_requests/47
>
>  src/amd/vulkan/radv_cmd_buffer.c  | 35 +++++++++++++++++++++++++++++++
>  src/amd/vulkan/radv_extensions.py |  1 +
>  2 files changed, 36 insertions(+)
>
> diff --git a/src/amd/vulkan/radv_cmd_buffer.c
> b/src/amd/vulkan/radv_cmd_buffer.c
> index 9b4d4528028..215ccced144 100644
> --- a/src/amd/vulkan/radv_cmd_buffer.c
> +++ b/src/amd/vulkan/radv_cmd_buffer.c
> @@ -5716,3 +5716,38 @@ void radv_CmdDrawIndirectByteCountEXT(
>
>         radv_draw(cmd_buffer, &info);
>  }
> +
> +/* VK_AMD_buffer_marker */
> +void radv_CmdWriteBufferMarkerAMD(
> +    VkCommandBuffer                             commandBuffer,
> +    VkPipelineStageFlagBits                     pipelineStage,
> +    VkBuffer                                    dstBuffer,
> +    VkDeviceSize                                dstOffset,
> +    uint32_t                                    marker)
> +{
> +       RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
> +       RADV_FROM_HANDLE(radv_buffer, buffer, dstBuffer);
> +       struct radeon_cmdbuf *cs = cmd_buffer->cs;
> +       uint64_t va = radv_buffer_get_va(buffer->bo) + dstOffset;
> +
> +       si_emit_cache_flush(cmd_buffer);
> +
> +       if (!(pipelineStage & ~VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT)) {
> +               radeon_emit(cs, PKT3(PKT3_COPY_DATA, 4, 0));
> +               radeon_emit(cs, COPY_DATA_SRC_SEL(COPY_DATA_IMM) |
> +                               COPY_DATA_DST_SEL(COPY_DATA_DST_MEM) |
> +                               COPY_DATA_WR_CONFIRM);
> +               radeon_emit(cs, marker);
> +               radeon_emit(cs, 0);
> +               radeon_emit(cs, va);
> +               radeon_emit(cs, va >> 32);
> +       } else {
> +               si_cs_emit_write_event_eop(cs,
> +
> cmd_buffer->device->physical_device->rad_info.chip_class,
> +
> radv_cmd_buffer_uses_mec(cmd_buffer),
> +                                          V_028A90_BOTTOM_OF_PIPE_TS, 0,
> +                                          EOP_DATA_SEL_VALUE_32BIT,
> +                                          va, marker,
> +                                          cmd_buffer->gfx9_eop_bug_va);
> +       }
> +}
> diff --git a/src/amd/vulkan/radv_extensions.py
> b/src/amd/vulkan/radv_extensions.py
> index b676cb8b8e2..1708173817b 100644
> --- a/src/amd/vulkan/radv_extensions.py
> +++ b/src/amd/vulkan/radv_extensions.py
> @@ -130,6 +130,7 @@ EXTENSIONS = [
>      Extension('VK_EXT_transform_feedback',                1, True),
>      Extension('VK_EXT_vertex_attribute_divisor',          3, True),
>      Extension('VK_EXT_ycbcr_image_arrays',                1, True),
> +    Extension('VK_AMD_buffer_marker',                     1, True),
>      Extension('VK_AMD_draw_indirect_count',               1, True),
>      Extension('VK_AMD_gcn_shader',                        1, True),
>      Extension('VK_AMD_gpu_shader_half_float',             1,
> 'device->rad_info.chip_class >= GFX8 && HAVE_LLVM >= 0x0800'),
> --
> 2.22.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190624/96891ab7/attachment.html>


More information about the mesa-dev mailing list