mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
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:
parent
7c59e75481
commit
7147313d0a
2 changed files with 16 additions and 4 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue