asahi: Support XRGB formats

Just treat them like ARGB. Not sure if this is sane, but it works for now...

Signed-off-by: Asahi Lina <lina@asahilina.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19606>
This commit is contained in:
Asahi Lina 2022-06-19 04:02:24 +09:00 committed by Marge Bot
parent 7c59e75481
commit 7147313d0a
2 changed files with 16 additions and 4 deletions

View file

@ -43,6 +43,10 @@ const struct agx_pixel_format_entry agx_pixel_format[PIPE_FORMAT_COUNT] = {
AGX_FMT(A8R8G8B8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(A8B8G8R8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(B8G8R8A8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(R8G8B8X8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(X8R8G8B8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(X8B8G8R8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(B8G8R8X8_UNORM, R8G8B8A8, UNORM, T, U8NORM),
AGX_FMT(R16_UNORM, R16, UNORM, T, U16NORM),
AGX_FMT(R16G16_UNORM, R16G16, UNORM, T, U16NORM),
@ -54,6 +58,10 @@ const struct agx_pixel_format_entry agx_pixel_format[PIPE_FORMAT_COUNT] = {
AGX_FMT(A8R8G8B8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(A8B8G8R8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(B8G8R8A8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(R8G8B8X8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(X8R8G8B8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(X8B8G8R8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(B8G8R8X8_SRGB, R8G8B8A8, UNORM, T, SRGBA8),
AGX_FMT(R8_SNORM, R8, SNORM, T, S8NORM),
AGX_FMT(R8G8_SNORM, R8G8, SNORM, T, S8NORM),
@ -61,6 +69,10 @@ const struct agx_pixel_format_entry agx_pixel_format[PIPE_FORMAT_COUNT] = {
AGX_FMT(A8R8G8B8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(A8B8G8R8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(B8G8R8A8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(R8G8B8X8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(X8R8G8B8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(X8B8G8R8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(B8G8R8X8_SNORM, R8G8B8A8, SNORM, T, S8NORM),
AGX_FMT(R16_FLOAT, R16, FLOAT, T, F16),
AGX_FMT(R16G16_FLOAT, R16G16, FLOAT, T, F16),

View file

@ -783,16 +783,16 @@ agx_set_framebuffer_state(struct pipe_context *pctx,
cfg.type = agx_pixel_format[surf->format].type;
assert(desc->nr_channels >= 1 && desc->nr_channels <= 4);
cfg.swizzle_r = agx_channel_from_pipe(desc->swizzle[0]);
cfg.swizzle_r = agx_channel_from_pipe(desc->swizzle[0]) & 3;
if (desc->nr_channels >= 2)
cfg.swizzle_g = agx_channel_from_pipe(desc->swizzle[1]);
cfg.swizzle_g = agx_channel_from_pipe(desc->swizzle[1]) & 3;
if (desc->nr_channels >= 3)
cfg.swizzle_b = agx_channel_from_pipe(desc->swizzle[2]);
cfg.swizzle_b = agx_channel_from_pipe(desc->swizzle[2]) & 3;
if (desc->nr_channels >= 4)
cfg.swizzle_a = agx_channel_from_pipe(desc->swizzle[3]);
cfg.swizzle_a = agx_channel_from_pipe(desc->swizzle[3]) & 3;
cfg.width = state->width;
cfg.height = state->height;