From 40c124e67a188aec9d274cc2e7b7777761f6b4d2 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Wed, 13 Aug 2025 14:02:38 +0200 Subject: [PATCH] radv: Change radv_vcn_write_event to a write memory func Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 6 +++--- src/amd/vulkan/radv_video.c | 5 +---- src/amd/vulkan/radv_video.h | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d8fa842fd95..2ace0d4bc14 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -14422,15 +14422,15 @@ write_event(struct radv_cmd_buffer *cmd_buffer, struct radv_event *event, VkPipe struct radv_cmd_stream *cs = cmd_buffer->cs; uint64_t va = radv_buffer_get_va(event->bo); + radv_cs_add_buffer(device->ws, cs->b, event->bo); + if (cmd_buffer->qf == RADV_QUEUE_VIDEO_DEC || cmd_buffer->qf == RADV_QUEUE_VIDEO_ENC) { - radv_vcn_write_event(cmd_buffer, event, value); + radv_vcn_write_memory(cmd_buffer, va, value); return; } radv_emit_cache_flush(cmd_buffer); - radv_cs_add_buffer(device->ws, cs->b, event->bo); - ASSERTED unsigned cdw_max = radeon_check_space(device->ws, cs->b, 28); if (stageMask & (VK_PIPELINE_STAGE_2_COPY_BIT | VK_PIPELINE_STAGE_2_RESOLVE_BIT | VK_PIPELINE_STAGE_2_BLIT_BIT | diff --git a/src/amd/vulkan/radv_video.c b/src/amd/vulkan/radv_video.c index ecaa81480f7..ace2c0a7208 100644 --- a/src/amd/vulkan/radv_video.c +++ b/src/amd/vulkan/radv_video.c @@ -143,7 +143,7 @@ radv_vcn_sq_tail(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq) } void -radv_vcn_write_event(struct radv_cmd_buffer *cmd_buffer, struct radv_event *event, unsigned value) +radv_vcn_write_memory(struct radv_cmd_buffer *cmd_buffer, uint64_t va, unsigned value) { struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); struct radv_physical_device *pdev = radv_device_physical(device); @@ -154,9 +154,6 @@ radv_vcn_write_event(struct radv_cmd_buffer *cmd_buffer, struct radv_event *even if (pdev->vid_decode_ip == AMD_IP_UVD) return; - radv_cs_add_buffer(device->ws, cs->b, event->bo); - uint64_t va = radv_buffer_get_va(event->bo); - bool separate_queue = pdev->vid_decode_ip != AMD_IP_VCN_UNIFIED; if (cmd_buffer->qf == RADV_QUEUE_VIDEO_DEC && separate_queue && pdev->vid_dec_reg.data2) { radeon_check_space(device->ws, cs->b, 8); diff --git a/src/amd/vulkan/radv_video.h b/src/amd/vulkan/radv_video.h index 56309fc57ce..1ca3fe8621f 100644 --- a/src/amd/vulkan/radv_video.h +++ b/src/amd/vulkan/radv_video.h @@ -80,7 +80,7 @@ void radv_video_get_profile_alignments(struct radv_physical_device *pdev, const void radv_vcn_sq_header(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq, unsigned type, bool skip_signature); void radv_vcn_sq_tail(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq); -void radv_vcn_write_event(struct radv_cmd_buffer *cmd_buffer, struct radv_event *event, unsigned value); +void radv_vcn_write_memory(struct radv_cmd_buffer *cmd_buffer, uint64_t va, unsigned value); void radv_init_physical_device_encoder(struct radv_physical_device *pdevice); void radv_probe_video_decode(struct radv_physical_device *pdev);