From 87a44c44b4530b94b6e3829382fd589cc09e734c Mon Sep 17 00:00:00 2001 From: Sathishkumar S Date: Thu, 6 Apr 2023 02:46:46 -0500 Subject: [PATCH] radeonsi/vcn: enable RGBP format on gfx940 jpeg decode output format conversion to RGBP is supported on gfx940 jpeg. Signed-off-by: Sathishkumar S Reviewed-by: Leo Liu Part-of: --- .../drivers/radeonsi/radeon_vcn_dec_jpeg.c | 25 +++++++++++-------- src/gallium/drivers/radeonsi/si_get.c | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_dec_jpeg.c b/src/gallium/drivers/radeonsi/radeon_vcn_dec_jpeg.c index 905f6232495..e5c137e3f21 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_dec_jpeg.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec_jpeg.c @@ -51,6 +51,7 @@ static struct pb_buffer *radeon_jpeg_get_decode_param(struct radeon_decoder *dec case PIPE_FORMAT_IYUV: case PIPE_FORMAT_YV12: case PIPE_FORMAT_Y8_U8_V8_444_UNORM: + case PIPE_FORMAT_R8_G8_B8_UNORM: chromav = (struct si_texture *)((struct vl_video_buffer *)target)->resources[2]; dec->jpg.dt_chromav_top_offset = chromav->surface.u.gfx9.surf_offset; chroma = (struct si_texture *)((struct vl_video_buffer*)target)->resources[1]; @@ -252,16 +253,20 @@ static void send_cmd_target_direct(struct radeon_decoder *dec, struct pb_buffer uint32_t fc_sps_info_val = 0; switch (buffer_format) { - case PIPE_FORMAT_R8G8B8A8_UNORM: - format_convert = true; - fc_sps_info_val = 1 | (1 << 4) | (0xff << 8); - break; - case PIPE_FORMAT_A8R8G8B8_UNORM: - format_convert = true; - fc_sps_info_val = 1 | (1 << 4) | (1 << 5) | (0xff << 8); - break; - default: - break; + case PIPE_FORMAT_R8G8B8A8_UNORM: + format_convert = true; + fc_sps_info_val = 1 | (1 << 4) | (0xff << 8); + break; + case PIPE_FORMAT_A8R8G8B8_UNORM: + format_convert = true; + fc_sps_info_val = 1 | (1 << 4) | (1 << 5) | (0xff << 8); + break; + case PIPE_FORMAT_R8_G8_B8_UNORM: + format_convert = true; + fc_sps_info_val = 1 | (1 << 5) | (0xff << 8); + break; + default: + break; } if (dec->jpg_reg.version == RDECODE_JPEG_REG_VER_V3 && format_convert) { diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index 4b9db8082c6..d4b307522a0 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -906,6 +906,7 @@ static bool si_vid_is_format_supported(struct pipe_screen *screen, enum pipe_for return false; case PIPE_FORMAT_R8G8B8A8_UNORM: case PIPE_FORMAT_A8R8G8B8_UNORM: + case PIPE_FORMAT_R8_G8_B8_UNORM: if (sscreen->info.family == CHIP_GFX940) return true; else