diff --git a/src/gallium/frontends/va/image.c b/src/gallium/frontends/va/image.c index fd21e2a3859..a5b5cf202c9 100644 --- a/src/gallium/frontends/va/image.c +++ b/src/gallium/frontends/va/image.c @@ -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'): diff --git a/src/gallium/frontends/va/surface.c b/src/gallium/frontends/va/surface.c index fc5ff368e35..cb92a8ae101 100644 --- a/src/gallium/frontends/va/surface.c +++ b/src/gallium/frontends/va/surface.c @@ -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); diff --git a/src/gallium/frontends/va/va_private.h b/src/gallium/frontends/va/va_private.h index 11186c821ed..49e52af3613 100644 --- a/src/gallium/frontends/va/va_private.h +++ b/src/gallium/frontends/va/va_private.h @@ -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: