frontends/va: add ABGR format mappings

Add format mappings between VA FourCC and pipe_format for ABGR.

Signed-off-by: Peyton Lee <peytolee@amd.com>
This commit is contained in:
Peyton Lee 2026-05-06 06:42:18 +00:00
parent 9dc8bb4403
commit 597fe16e87
3 changed files with 9 additions and 1 deletions

View file

@ -58,6 +58,8 @@ static const VAImageFormat formats[] =
0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000},
{.fourcc = VA_FOURCC('R','G','B','A'), .byte_order = VA_LSB_FIRST, 32, 32,
0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000},
{.fourcc = VA_FOURCC('A','B','G','R'), .byte_order = VA_LSB_FIRST, 32, 32,
0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000},
{.fourcc = VA_FOURCC('A','R','G','B'), .byte_order = VA_LSB_FIRST, 32, 32,
0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000},
{.fourcc = VA_FOURCC('B','G','R','X'), .byte_order = VA_LSB_FIRST, 32, 24,
@ -187,6 +189,7 @@ vlVaCreateImage(VADriverContextP ctx, VAImageFormat *format, int width, int heig
case VA_FOURCC('B','G','R','A'):
case VA_FOURCC('R','G','B','A'):
case VA_FOURCC('A','B','G','R'):
case VA_FOURCC('A','R','G','B'):
case VA_FOURCC('B','G','R','X'):
case VA_FOURCC('R','G','B','X'):

View file

@ -347,6 +347,7 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
/* VA_RT_FORMAT_RGB32 */
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8G8B8A8_UNORM, attribs, &i);
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_A8B8G8R8_UNORM, attribs, &i);
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B8G8R8A8_UNORM, attribs, &i);
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_R8G8B8X8_UNORM, attribs, &i);
vlVaAddSurfaceFormat(pscreen, config, PIPE_FORMAT_B8G8R8X8_UNORM, attribs, &i);

View file

@ -60,7 +60,7 @@
#define VL_VA_DRIVER(ctx) ((vlVaDriver *)ctx->pDriverData)
#define VL_VA_PSCREEN(ctx) (VL_VA_DRIVER(ctx)->vscreen->pscreen)
#define VL_VA_MAX_IMAGE_FORMATS 22
#define VL_VA_MAX_IMAGE_FORMATS 23
#define VL_VA_ENC_GOP_COEFF 16
#define UINT_TO_PTR(x) ((void*)(uintptr_t)(x))
@ -148,6 +148,8 @@ VaFourccToPipeFormat(unsigned format)
return PIPE_FORMAT_A8R8G8B8_UNORM;
case VA_FOURCC('R','G','B','A'):
return PIPE_FORMAT_R8G8B8A8_UNORM;
case VA_FOURCC('A','B','G','R'):
return PIPE_FORMAT_A8B8G8R8_UNORM;
case VA_FOURCC('B','G','R','X'):
return PIPE_FORMAT_B8G8R8X8_UNORM;
case VA_FOURCC('R','G','B','X'):
@ -200,6 +202,8 @@ PipeFormatToVaFourcc(enum pipe_format p_format)
return VA_FOURCC('R','G','B','A');
case PIPE_FORMAT_A8R8G8B8_UNORM:
return VA_FOURCC('A','R','G','B');
case PIPE_FORMAT_A8B8G8R8_UNORM:
return VA_FOURCC('A','B','G','R');
case PIPE_FORMAT_B8G8R8X8_UNORM:
return VA_FOURCC('B','G','R','X');
case PIPE_FORMAT_R8G8B8X8_UNORM: