diff --git a/src/amd/common/ac_vcn_dec.c b/src/amd/common/ac_vcn_dec.c index b358f652d4e..b2308d557a8 100644 --- a/src/amd/common/ac_vcn_dec.c +++ b/src/amd/common/ac_vcn_dec.c @@ -12,6 +12,35 @@ #include "ac_vcn_dec.h" #include "ac_vcn_av1_default.h" +#include "ac_vcn_vp9_default.h" + +void ac_vcn_vp9_fill_probs_table(void *ptr) +{ + rvcn_dec_vp9_probs_t *probs = (rvcn_dec_vp9_probs_t *)ptr; + + memcpy(&probs->coef_probs[0], default_coef_probs_4x4, sizeof(default_coef_probs_4x4)); + memcpy(&probs->coef_probs[1], default_coef_probs_8x8, sizeof(default_coef_probs_8x8)); + memcpy(&probs->coef_probs[2], default_coef_probs_16x16, sizeof(default_coef_probs_16x16)); + memcpy(&probs->coef_probs[3], default_coef_probs_32x32, sizeof(default_coef_probs_32x32)); + memcpy(probs->y_mode_prob, default_if_y_probs, sizeof(default_if_y_probs)); + memcpy(probs->uv_mode_prob, default_if_uv_probs, sizeof(default_if_uv_probs)); + memcpy(probs->single_ref_prob, default_single_ref_p, sizeof(default_single_ref_p)); + memcpy(probs->switchable_interp_prob, default_switchable_interp_prob, + sizeof(default_switchable_interp_prob)); + memcpy(probs->partition_prob, default_partition_probs, sizeof(default_partition_probs)); + memcpy(probs->inter_mode_probs, default_inter_mode_probs, sizeof(default_inter_mode_probs)); + memcpy(probs->mbskip_probs, default_skip_probs, sizeof(default_skip_probs)); + memcpy(probs->intra_inter_prob, default_intra_inter_p, sizeof(default_intra_inter_p)); + memcpy(probs->comp_inter_prob, default_comp_inter_p, sizeof(default_comp_inter_p)); + memcpy(probs->comp_ref_prob, default_comp_ref_p, sizeof(default_comp_ref_p)); + memcpy(probs->tx_probs_32x32, default_tx_probs_32x32, sizeof(default_tx_probs_32x32)); + memcpy(probs->tx_probs_16x16, default_tx_probs_16x16, sizeof(default_tx_probs_16x16)); + memcpy(probs->tx_probs_8x8, default_tx_probs_8x8, sizeof(default_tx_probs_8x8)); + memcpy(probs->mv_joints, default_nmv_joints, sizeof(default_nmv_joints)); + memcpy(&probs->mv_comps[0], default_nmv_components, sizeof(default_nmv_components)); + memset(&probs->nmvc_mask, 0, sizeof(rvcn_dec_vp9_nmv_ctx_mask_t)); +} + static unsigned ac_vcn_dec_frame_ctx_size_av1(unsigned av1_version) { diff --git a/src/amd/common/ac_vcn_dec.h b/src/amd/common/ac_vcn_dec.h index aef5aba9023..da2a89f4ebe 100644 --- a/src/amd/common/ac_vcn_dec.h +++ b/src/amd/common/ac_vcn_dec.h @@ -1257,6 +1257,8 @@ struct jpeg_params { #define RDECODE_SESSION_CONTEXT_SIZE (128 * 1024) #define RDECODE_MAX_SUBSAMPLE_SIZE (2048 * 2 * 4) +void ac_vcn_vp9_fill_probs_table(void *ptr); + unsigned ac_vcn_dec_calc_ctx_size_av1(unsigned av1_version); void ac_vcn_av1_init_probs(unsigned av1_version, uint8_t *prob); void ac_vcn_av1_init_film_grain_buffer(unsigned av1_version, rvcn_dec_film_grain_params_t *fg_params, rvcn_dec_av1_fg_init_buf_t *fg_buf); diff --git a/src/gallium/auxiliary/vl/vl_probs_table.h b/src/amd/common/ac_vcn_vp9_default.h similarity index 100% rename from src/gallium/auxiliary/vl/vl_probs_table.h rename to src/amd/common/ac_vcn_vp9_default.h diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build index cd69d63fa32..a5ba590968c 100644 --- a/src/amd/common/meson.build +++ b/src/amd/common/meson.build @@ -89,6 +89,7 @@ amd_common_files = files( 'ac_pm4.c', 'ac_pm4.h', 'ac_vcn_av1_default.h', + 'ac_vcn_vp9_default.h', 'ac_vcn_dec.c', 'ac_vcn_enc.c', 'ac_uvd_dec.c', diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build index 82480242905..a5707fb6887 100644 --- a/src/gallium/auxiliary/meson.build +++ b/src/gallium/auxiliary/meson.build @@ -423,7 +423,6 @@ files_libgalliumvl = files( 'vl/vl_video_buffer.h', 'vl/vl_zscan.c', 'vl/vl_zscan.h', - 'vl/vl_probs_table.h', ) vlwinsys_deps = [] diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c index 5a246216b0f..6e0c8d29f9d 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c @@ -13,7 +13,6 @@ #include "util/u_memory.h" #include "util/u_video.h" #include "util/vl_zscan_data.h" -#include "vl/vl_probs_table.h" #include "pspdecryptionparam.h" #include "cencdecryptionparam.h" @@ -418,33 +417,6 @@ static rvcn_dec_message_hevc_t get_h265_msg(struct radeon_decoder *dec, return result; } -static void fill_probs_table(void *ptr) -{ - rvcn_dec_vp9_probs_t *probs = (rvcn_dec_vp9_probs_t *)ptr; - - memcpy(&probs->coef_probs[0], default_coef_probs_4x4, sizeof(default_coef_probs_4x4)); - memcpy(&probs->coef_probs[1], default_coef_probs_8x8, sizeof(default_coef_probs_8x8)); - memcpy(&probs->coef_probs[2], default_coef_probs_16x16, sizeof(default_coef_probs_16x16)); - memcpy(&probs->coef_probs[3], default_coef_probs_32x32, sizeof(default_coef_probs_32x32)); - memcpy(probs->y_mode_prob, default_if_y_probs, sizeof(default_if_y_probs)); - memcpy(probs->uv_mode_prob, default_if_uv_probs, sizeof(default_if_uv_probs)); - memcpy(probs->single_ref_prob, default_single_ref_p, sizeof(default_single_ref_p)); - memcpy(probs->switchable_interp_prob, default_switchable_interp_prob, - sizeof(default_switchable_interp_prob)); - memcpy(probs->partition_prob, default_partition_probs, sizeof(default_partition_probs)); - memcpy(probs->inter_mode_probs, default_inter_mode_probs, sizeof(default_inter_mode_probs)); - memcpy(probs->mbskip_probs, default_skip_probs, sizeof(default_skip_probs)); - memcpy(probs->intra_inter_prob, default_intra_inter_p, sizeof(default_intra_inter_p)); - memcpy(probs->comp_inter_prob, default_comp_inter_p, sizeof(default_comp_inter_p)); - memcpy(probs->comp_ref_prob, default_comp_ref_p, sizeof(default_comp_ref_p)); - memcpy(probs->tx_probs_32x32, default_tx_probs_32x32, sizeof(default_tx_probs_32x32)); - memcpy(probs->tx_probs_16x16, default_tx_probs_16x16, sizeof(default_tx_probs_16x16)); - memcpy(probs->tx_probs_8x8, default_tx_probs_8x8, sizeof(default_tx_probs_8x8)); - memcpy(probs->mv_joints, default_nmv_joints, sizeof(default_nmv_joints)); - memcpy(&probs->mv_comps[0], default_nmv_components, sizeof(default_nmv_components)); - memset(&probs->nmvc_mask, 0, sizeof(rvcn_dec_vp9_nmv_ctx_mask_t)); -} - static rvcn_dec_message_vp9_t get_vp9_msg(struct radeon_decoder *dec, struct pipe_video_buffer *target, struct pipe_vp9_picture_desc *pic) @@ -1722,7 +1694,7 @@ static struct pb_buffer_lean *rvcn_dec_message_decode(struct radeon_decoder *dec /* ctx needs probs table */ ptr = dec->ws->buffer_map(dec->ws, dec->ctx.res->buf, NULL, PIPE_MAP_WRITE | RADEON_MAP_TEMPORARY); - fill_probs_table(ptr); + ac_vcn_vp9_fill_probs_table(ptr); dec->ws->buffer_unmap(dec->ws, dec->ctx.res->buf); dec->bs_ptr = NULL; } else if (fmt == PIPE_VIDEO_FORMAT_HEVC) { @@ -2942,7 +2914,7 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context, ptr = dec->ws->buffer_map(dec->ws, buf->res->buf, NULL, PIPE_MAP_WRITE | RADEON_MAP_TEMPORARY); ptr += FB_BUFFER_OFFSET + FB_BUFFER_SIZE; - fill_probs_table(ptr); + ac_vcn_vp9_fill_probs_table(ptr); dec->ws->buffer_unmap(dec->ws, buf->res->buf); dec->bs_ptr = NULL; }