radeonsi/vcn: enable RGBP format on gfx940 jpeg

decode output format conversion to RGBP is supported on gfx940 jpeg.

Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22388>
This commit is contained in:
Sathishkumar S
2023-04-06 02:46:46 -05:00
committed by Marge Bot
parent bdb7f36aa8
commit 87a44c44b4
2 changed files with 16 additions and 10 deletions

View File

@@ -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) {

View File

@@ -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