amd: move vp9 probs table to common code.
This will be reused by radv eventually, so let's move it all over to common code. It might have other users eventually, but we can worry about that later. Reviewed-by: David Rosca <david.rosca@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35398>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user