mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 20:20:09 +01:00
ac,radeonsi/vcn,radv/video: Drop signature param
The signature is not very useful, and is unnecessary CPU overhead. Reviewed-by: David Rosca <david.rosca@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38372>
This commit is contained in:
parent
490f05f82c
commit
b4ae11ee42
6 changed files with 16 additions and 65 deletions
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue