diff --git a/src/amd/common/ac_vcn.h b/src/amd/common/ac_vcn.h index afd075fb544..3b35d6ffd35 100644 --- a/src/amd/common/ac_vcn.h +++ b/src/amd/common/ac_vcn.h @@ -42,8 +42,6 @@ #define RADEON_VCN_RESOLVE_INPUT_PARAM_LAYOUT_TYPE_QPMAP_INT16 2 struct rvcn_sq_var { - unsigned int *signature_ib_checksum; - unsigned int *signature_ib_total_size_in_dw; unsigned int *engine_ib_size_of_packages; }; diff --git a/src/amd/vulkan/radv_video.c b/src/amd/vulkan/radv_video.c index b2fdc14ce5d..d3ea3fe20ff 100644 --- a/src/amd/vulkan/radv_video.c +++ b/src/amd/vulkan/radv_video.c @@ -86,24 +86,8 @@ radv_vid_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size, /* vcn unified queue (sq) ib header */ void -radv_vcn_sq_header(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq, unsigned type, bool skip_signature) +radv_vcn_sq_header(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq, unsigned type) { - if (!skip_signature) { - /* vcn ib signature */ - radeon_begin(cs); - radeon_emit(RADEON_VCN_SIGNATURE_SIZE); - radeon_emit(RADEON_VCN_SIGNATURE); - radeon_emit(0); - radeon_emit(0); - radeon_end(); - - sq->signature_ib_checksum = &cs->b->buf[cs->b->cdw - 2]; - sq->signature_ib_total_size_in_dw = &cs->b->buf[cs->b->cdw - 1]; - } else { - sq->signature_ib_checksum = NULL; - sq->signature_ib_total_size_in_dw = NULL; - } - /* vcn ib engine info */ radeon_begin(cs); radeon_emit(RADEON_VCN_ENGINE_INFO_SIZE); @@ -120,26 +104,14 @@ radv_vcn_sq_tail(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq) { uint32_t *end; uint32_t size_in_dw; - uint32_t checksum = 0; end = &cs->b->buf[cs->b->cdw]; - if (sq->signature_ib_checksum == NULL && sq->signature_ib_total_size_in_dw == NULL) { - if (sq->engine_ib_size_of_packages == NULL) - return; + if (sq->engine_ib_size_of_packages == NULL) + return; - size_in_dw = end - sq->engine_ib_size_of_packages + 3; /* package_size, package_type, engine_type */ - *sq->engine_ib_size_of_packages = size_in_dw * sizeof(uint32_t); - } else { - size_in_dw = end - sq->signature_ib_total_size_in_dw - 1; - *sq->signature_ib_total_size_in_dw = size_in_dw; - *sq->engine_ib_size_of_packages = size_in_dw * sizeof(uint32_t); - - for (int i = 0; i < size_in_dw; i++) - checksum += *(sq->signature_ib_checksum + 2 + i); - - *sq->signature_ib_checksum = checksum; - } + size_in_dw = end - sq->engine_ib_size_of_packages + 3; /* package_size, package_type, engine_type */ + *sq->engine_ib_size_of_packages = size_in_dw * sizeof(uint32_t); } void @@ -170,7 +142,7 @@ radv_vcn_write_memory(struct radv_cmd_buffer *cmd_buffer, uint64_t va, unsigned } radeon_check_space(device->ws, cs->b, 256); - radv_vcn_sq_header(cs, &sq, RADEON_VCN_ENGINE_TYPE_COMMON, separate_queue); + radv_vcn_sq_header(cs, &sq, RADEON_VCN_ENGINE_TYPE_COMMON); struct rvcn_cmn_engine_ib_package *ib_header = (struct rvcn_cmn_engine_ib_package *)&(cs->b->buf[cs->b->cdw]); ib_header->package_size = sizeof(struct rvcn_cmn_engine_ib_package) + sizeof(struct rvcn_cmn_engine_op_writememory); cs->b->cdw++; @@ -194,7 +166,7 @@ radv_vcn_sq_start(struct radv_cmd_buffer *cmd_buffer) struct radv_cmd_stream *cs = cmd_buffer->cs; radeon_check_space(device->ws, cs->b, 512); - radv_vcn_sq_header(cs, &cmd_buffer->video.sq, RADEON_VCN_ENGINE_TYPE_DECODE, false); + radv_vcn_sq_header(cs, &cmd_buffer->video.sq, RADEON_VCN_ENGINE_TYPE_DECODE); rvcn_decode_ib_package_t *ib_header = (rvcn_decode_ib_package_t *)&(cs->b->buf[cs->b->cdw]); ib_header->package_size = sizeof(struct rvcn_decode_buffer_s) + sizeof(struct rvcn_decode_ib_package_s); cs->b->cdw++; diff --git a/src/amd/vulkan/radv_video.h b/src/amd/vulkan/radv_video.h index 5f8461980e5..bd6461e06d1 100644 --- a/src/amd/vulkan/radv_video.h +++ b/src/amd/vulkan/radv_video.h @@ -92,7 +92,7 @@ void radv_init_physical_device_decoder(struct radv_physical_device *pdev); void radv_video_get_profile_alignments(struct radv_physical_device *pdev, const VkVideoProfileListInfoKHR *profile_list, uint32_t *width_align_out, uint32_t *height_align_out); -void radv_vcn_sq_header(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq, unsigned type, bool skip_signature); +void radv_vcn_sq_header(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq, unsigned type); void radv_vcn_sq_tail(struct radv_cmd_stream *cs, struct rvcn_sq_var *sq); void radv_vcn_write_memory(struct radv_cmd_buffer *cmd_buffer, uint64_t va, unsigned value); diff --git a/src/amd/vulkan/radv_video_enc.c b/src/amd/vulkan/radv_video_enc.c index f2616622321..6189177a1dc 100644 --- a/src/amd/vulkan/radv_video_enc.c +++ b/src/amd/vulkan/radv_video_enc.c @@ -1698,7 +1698,7 @@ radv_enc_qp_map_input(struct radv_cmd_buffer *cmd_buffer, const struct VkVideoEn radv_buffer_get_va(cmd_buffer->video.vid->qp_map.mem->bo) + cmd_buffer->video.vid->qp_map.offset; radv_cs_add_buffer(device->ws, cmd_buffer->cs->b, cmd_buffer->video.vid->qp_map.mem->bo); - radv_vcn_sq_header(cs, &cmd_buffer->video.sq, RADEON_VCN_ENGINE_TYPE_COMMON, false); + radv_vcn_sq_header(cs, &cmd_buffer->video.sq, RADEON_VCN_ENGINE_TYPE_COMMON); struct rvcn_cmn_engine_ib_package *ib_header = (struct rvcn_cmn_engine_ib_package *)&(cs->b->buf[cs->b->cdw]); ib_header->package_size = @@ -2830,10 +2830,8 @@ radv_vcn_encode_video(struct radv_cmd_buffer *cmd_buffer, const VkVideoEncodeInf if (pdev->enc_hw_ver >= RADV_VIDEO_ENC_HW_5) radv_enc_qp_map_input(cmd_buffer, enc_info); - if (pdev->enc_hw_ver >= RADV_VIDEO_ENC_HW_2) { - radv_vcn_sq_header(cs, &cmd_buffer->video.sq, RADEON_VCN_ENGINE_TYPE_ENCODE, - pdev->enc_hw_ver < RADV_VIDEO_ENC_HW_4); - } + if (pdev->enc_hw_ver >= RADV_VIDEO_ENC_HW_2) + radv_vcn_sq_header(cs, &cmd_buffer->video.sq, RADEON_VCN_ENGINE_TYPE_ENCODE); const struct VkVideoInlineQueryInfoKHR *inline_queries = NULL; if (vid->vk.flags & VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR) { diff --git a/src/gallium/drivers/radeonsi/radeon_vcn.c b/src/gallium/drivers/radeonsi/radeon_vcn.c index e3848305a9f..5b4bcfd9824 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn.c @@ -11,14 +11,6 @@ void rvcn_sq_header(struct radeon_cmdbuf *cs, struct rvcn_sq_var *sq, bool enc) { - /* vcn ib signature */ - radeon_emit(cs, RADEON_VCN_SIGNATURE_SIZE); - radeon_emit(cs, RADEON_VCN_SIGNATURE); - sq->signature_ib_checksum = &cs->current.buf[cs->current.cdw]; - radeon_emit(cs, 0); - sq->signature_ib_total_size_in_dw = &cs->current.buf[cs->current.cdw]; - radeon_emit(cs, 0); - /* vcn ib engine info */ radeon_emit(cs, RADEON_VCN_ENGINE_INFO_SIZE); radeon_emit(cs, RADEON_VCN_ENGINE_INFO); @@ -33,19 +25,12 @@ void rvcn_sq_tail(struct radeon_cmdbuf *cs, { uint32_t *end; uint32_t size_in_dw; - uint32_t checksum = 0; - - if (sq->signature_ib_checksum == NULL || sq->signature_ib_total_size_in_dw == NULL || - sq->engine_ib_size_of_packages == NULL) - return; end = &cs->current.buf[cs->current.cdw]; - size_in_dw = end - sq->signature_ib_total_size_in_dw - 1; - *sq->signature_ib_total_size_in_dw = size_in_dw; + + if (sq->engine_ib_size_of_packages == NULL) + return; + + size_in_dw = end - sq->engine_ib_size_of_packages + 3; *sq->engine_ib_size_of_packages = size_in_dw * sizeof(uint32_t); - - for (int i = 0; i < size_in_dw; i++) - checksum += *(sq->signature_ib_checksum + 2 + i); - - *sq->signature_ib_checksum = checksum; } diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c index d4b4a7fa838..a6a0872c6e2 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c @@ -2896,8 +2896,6 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context, ring = AMD_IP_VCN_UNIFIED; } - dec->sq.signature_ib_total_size_in_dw = NULL; - dec->sq.signature_ib_checksum = NULL; dec->sq.engine_ib_size_of_packages = NULL; if (!ws->cs_create(&dec->cs,