virgl/video: Pass "max_references" to backend when creating a video codec

The "max_references" is an important value in sequence parameters,
which will be used when encoding SPS headers.

Signed-off-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Signed-off-by: Feng Jiang <jiangfeng@kylinos.cn>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18831>
This commit is contained in:
Boyuan Zhang 2022-09-29 11:26:25 +08:00 committed by Marge Bot
parent d4f189fe69
commit 69ed5f13d8
2 changed files with 8 additions and 2 deletions

View file

@ -1640,7 +1640,10 @@ void virgl_encode_emit_string_marker(struct virgl_context *ctx,
void virgl_encode_create_video_codec(struct virgl_context *ctx,
struct virgl_video_codec *cdc)
{
virgl_encoder_write_cmd_dword(ctx, VIRGL_CMD0(VIRGL_CCMD_CREATE_VIDEO_CODEC, 0, 7));
struct virgl_screen *rs = virgl_screen(ctx->base.screen);
uint32_t len = rs->caps.caps.v2.host_feature_check_version >= 14 ? 8 : 7;
virgl_encoder_write_cmd_dword(ctx, VIRGL_CMD0(VIRGL_CCMD_CREATE_VIDEO_CODEC, 0, len));
virgl_encoder_write_dword(ctx->cbuf, cdc->handle);
virgl_encoder_write_dword(ctx->cbuf, cdc->base.profile);
virgl_encoder_write_dword(ctx->cbuf, cdc->base.entrypoint);
@ -1648,6 +1651,8 @@ void virgl_encode_create_video_codec(struct virgl_context *ctx,
virgl_encoder_write_dword(ctx->cbuf, cdc->base.level);
virgl_encoder_write_dword(ctx->cbuf, cdc->base.width);
virgl_encoder_write_dword(ctx->cbuf, cdc->base.height);
if (rs->caps.caps.v2.host_feature_check_version >= 14)
virgl_encoder_write_dword(ctx->cbuf, cdc->base.max_references);
}
void virgl_encode_destroy_video_codec(struct virgl_context *ctx,

View file

@ -709,7 +709,7 @@ enum vrend_tweak_type {
#define VIRGL_LINK_SHADER_COMPUTE_HANDLE 6
/* VIRGL_CCMD_CREATE_VIDEO_CODEC */
#define VIRGL_CREATE_VIDEO_CODEC_SIZE 7
#define VIRGL_CREATE_VIDEO_CODEC_MIN_SIZE 7
#define VIRGL_CREATE_VIDEO_CODEC_HANDLE 1
#define VIRGL_CREATE_VIDEO_CODEC_PROFILE 2
#define VIRGL_CREATE_VIDEO_CODEC_ENTRYPOINT 3
@ -717,6 +717,7 @@ enum vrend_tweak_type {
#define VIRGL_CREATE_VIDEO_CODEC_LEVEL 5
#define VIRGL_CREATE_VIDEO_CODEC_WIDTH 6
#define VIRGL_CREATE_VIDEO_CODEC_HEIGHT 7
#define VIRGL_CREATE_VIDEO_CODEC_MAX_REF 8
/* VIRGL_CCMD_DESTROY_VIDEO_CODEC */
#define VIRGL_DESTROY_VIDEO_CODEC_SIZE 1