mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-17 10:20:33 +01:00
ac: Add VCN ac_video_dec implementation
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39627>
This commit is contained in:
parent
b5028e84c8
commit
79af03556c
3 changed files with 1768 additions and 1 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -9,6 +9,8 @@
|
||||||
#ifndef _AC_VCN_DEC_H
|
#ifndef _AC_VCN_DEC_H
|
||||||
#define _AC_VCN_DEC_H
|
#define _AC_VCN_DEC_H
|
||||||
|
|
||||||
|
#include "ac_video_dec.h"
|
||||||
|
|
||||||
/* VCN programming information shared between gallium/vulkan */
|
/* VCN programming information shared between gallium/vulkan */
|
||||||
#define RDECODE_PKT_TYPE_S(x) (((unsigned)(x)&0x3) << 30)
|
#define RDECODE_PKT_TYPE_S(x) (((unsigned)(x)&0x3) << 30)
|
||||||
#define RDECODE_PKT_TYPE_G(x) (((x) >> 30) & 0x3)
|
#define RDECODE_PKT_TYPE_G(x) (((x) >> 30) & 0x3)
|
||||||
|
|
@ -1147,6 +1149,18 @@ typedef struct rvcn_dec_feedback_profiling_s {
|
||||||
unsigned int dmaHwCrc32Value2;
|
unsigned int dmaHwCrc32Value2;
|
||||||
} rvcn_dec_feedback_profiling_t;
|
} rvcn_dec_feedback_profiling_t;
|
||||||
|
|
||||||
|
typedef struct rvcn_dec_avc_its_s {
|
||||||
|
unsigned char scaling_list_4x4[6][16];
|
||||||
|
unsigned char scaling_list_8x8[2][64];
|
||||||
|
} rvcn_dec_avc_its_t;
|
||||||
|
|
||||||
|
typedef struct rvcn_dec_hevc_its_s {
|
||||||
|
unsigned char scaling_list_4x4[6][16];
|
||||||
|
unsigned char scaling_list_8x8[6][64];
|
||||||
|
unsigned char scaling_list_16x16[6][64];
|
||||||
|
unsigned char scaling_list_32x32[2][64];
|
||||||
|
} rvcn_dec_hevc_its_t;
|
||||||
|
|
||||||
typedef struct rvcn_dec_vp9_nmv_ctx_mask_s {
|
typedef struct rvcn_dec_vp9_nmv_ctx_mask_s {
|
||||||
unsigned short classes_mask[2];
|
unsigned short classes_mask[2];
|
||||||
unsigned short bits_mask[2];
|
unsigned short bits_mask[2];
|
||||||
|
|
@ -1272,4 +1286,8 @@ 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_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);
|
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);
|
||||||
|
|
||||||
|
uint32_t ac_vcn_dec_dpb_size(const struct radeon_info *info, struct ac_video_dec_session_param *param);
|
||||||
|
uint32_t ac_vcn_dec_dpb_alignment(const struct radeon_info *info, struct ac_video_dec_session_param *param);
|
||||||
|
struct ac_video_dec *ac_vcn_create_video_decoder(const struct radeon_info *info, struct ac_video_dec_session_param *param);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -5,21 +5,28 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ac_video_dec.h"
|
#include "ac_video_dec.h"
|
||||||
|
#include "ac_vcn_dec.h"
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
ac_video_dec_dpb_size(const struct radeon_info *info, struct ac_video_dec_session_param *param)
|
ac_video_dec_dpb_size(const struct radeon_info *info, struct ac_video_dec_session_param *param)
|
||||||
{
|
{
|
||||||
|
if (info->vcn_ip_version >= VCN_1_0_0)
|
||||||
|
return ac_vcn_dec_dpb_size(info, param);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
ac_video_dec_dpb_alignment(const struct radeon_info *info, struct ac_video_dec_session_param *param)
|
ac_video_dec_dpb_alignment(const struct radeon_info *info, struct ac_video_dec_session_param *param)
|
||||||
{
|
{
|
||||||
|
if (info->vcn_ip_version >= VCN_1_0_0)
|
||||||
|
return ac_vcn_dec_dpb_alignment(info, param);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ac_video_dec *
|
struct ac_video_dec *
|
||||||
ac_create_video_decoder(const struct radeon_info *info, struct ac_video_dec_session_param *param)
|
ac_create_video_decoder(const struct radeon_info *info, struct ac_video_dec_session_param *param)
|
||||||
{
|
{
|
||||||
|
if (info->vcn_ip_version >= VCN_1_0_0)
|
||||||
|
return ac_vcn_create_video_decoder(info, param);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue