From 0e0448d8df38731eb404d0d2c4e374f402b9ae42 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 4 Jul 2021 16:20:36 -0400 Subject: [PATCH] asahi: Add internal (renderable) formats to the table Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_compile.h | 3 ++ src/asahi/lib/agx_formats.c | 110 ++++++++++++++++++++------------------- src/asahi/lib/agx_formats.h | 1 + 3 files changed, 60 insertions(+), 54 deletions(-) diff --git a/src/asahi/compiler/agx_compile.h b/src/asahi/compiler/agx_compile.h index 38da1c7..c927377 100644 --- a/src/asahi/compiler/agx_compile.h +++ b/src/asahi/compiler/agx_compile.h @@ -110,6 +110,9 @@ enum agx_format { AGX_FORMAT_SRGBA8 = 10, AGX_FORMAT_RG11B10F = 12, AGX_FORMAT_RGB9E5 = 13, + + /* Keep last */ + AGX_NUM_FORMATS, }; struct agx_attribute { diff --git a/src/asahi/lib/agx_formats.c b/src/asahi/lib/agx_formats.c index 8efdd3f..82fc5f8 100644 --- a/src/asahi/lib/agx_formats.c +++ b/src/asahi/lib/agx_formats.c @@ -26,66 +26,68 @@ #define T true #define F false +#define AGX_FORMAT__ 0 -#define AGX_FMT(pipe, channels, type, is_renderable) \ +#define AGX_FMT(pipe, channels, type, is_renderable, internal_fmt) \ [PIPE_FORMAT_ ## pipe] = { \ .hw = (AGX_CHANNELS_ ## channels) | ((AGX_TEXTURE_TYPE_ ## type) << 7), \ - .renderable = is_renderable \ + .renderable = is_renderable, \ + .internal = AGX_FORMAT_ ## internal_fmt,\ } const struct agx_pixel_format_entry agx_pixel_format[PIPE_FORMAT_COUNT] = { - AGX_FMT(R8_UNORM, R8, UNORM, T), - AGX_FMT(R8G8_UNORM, R8G8, UNORM, T), - AGX_FMT(R8G8B8A8_UNORM, R8G8B8A8, UNORM, T), - AGX_FMT(A8R8G8B8_UNORM, R8G8B8A8, UNORM, T), - AGX_FMT(A8B8G8R8_UNORM, R8G8B8A8, UNORM, T), - AGX_FMT(B8G8R8A8_UNORM, R8G8B8A8, UNORM, T), - - AGX_FMT(R16_UNORM, R16, UNORM, T), - AGX_FMT(R16G16_UNORM, R16G16, UNORM, T), - AGX_FMT(R16G16B16A16_UNORM, R16G16B16A16, UNORM, T), - - AGX_FMT(R8_SRGB, R8, UNORM, T), - AGX_FMT(R8G8_SRGB, R8G8, UNORM, T), - AGX_FMT(R8G8B8A8_SRGB, R8G8B8A8, UNORM, T), - AGX_FMT(A8R8G8B8_SRGB, R8G8B8A8, UNORM, T), - AGX_FMT(A8B8G8R8_SRGB, R8G8B8A8, UNORM, T), - AGX_FMT(B8G8R8A8_SRGB, R8G8B8A8, UNORM, T), - - AGX_FMT(R8_SNORM, R8, SNORM, F), - AGX_FMT(R8G8_SNORM, R8G8, SNORM, F), - AGX_FMT(R8G8B8A8_SNORM, R8G8B8A8, SNORM, F), - AGX_FMT(A8R8G8B8_SNORM, R8G8B8A8, SNORM, F), - AGX_FMT(A8B8G8R8_SNORM, R8G8B8A8, SNORM, F), - AGX_FMT(B8G8R8A8_SNORM, R8G8B8A8, SNORM, F), - - AGX_FMT(R16_FLOAT, R16, FLOAT, T), - AGX_FMT(R16G16_FLOAT, R16G16, FLOAT, T), - AGX_FMT(R16G16B16A16_FLOAT, R16G16B16A16, FLOAT, T), - - AGX_FMT(R32_FLOAT, R32, FLOAT, T), - AGX_FMT(R32G32_FLOAT, R32G32, FLOAT, T), - AGX_FMT(R32G32B32A32_FLOAT, R32G32B32A32, FLOAT, T), - - AGX_FMT(Z16_UNORM, R16, UNORM, F), - AGX_FMT(Z32_FLOAT, R32, FLOAT, F), - AGX_FMT(Z32_FLOAT_S8X24_UINT, R32, FLOAT, F), - - AGX_FMT(R10G10B10A2_UNORM, R10G10B10A2, UNORM, F), - AGX_FMT(B10G10R10A2_UNORM, R10G10B10A2, UNORM, F), - AGX_FMT(R11G11B10_FLOAT, R11G11B10, FLOAT, T), - AGX_FMT(R9G9B9E5_FLOAT, R9G9B9E5, FLOAT, F), - - AGX_FMT(ETC2_RGB8, ETC2_RGB8, UNORM, F), - AGX_FMT(ETC2_SRGB8, ETC2_RGB8, UNORM, F), - AGX_FMT(ETC2_RGB8A1, ETC2_RGB8A1, UNORM, F), - AGX_FMT(ETC2_SRGB8A1, ETC2_RGB8A1, UNORM, F), - AGX_FMT(ETC2_RGBA8, ETC2_RGBA8, UNORM, F), - AGX_FMT(ETC2_SRGBA8, ETC2_RGBA8, UNORM, F), - AGX_FMT(ETC2_R11_UNORM, EAC_R11, UNORM, F), - AGX_FMT(ETC2_R11_SNORM, EAC_R11, SNORM, F), - AGX_FMT(ETC2_RG11_UNORM, EAC_RG11, UNORM, F), - AGX_FMT(ETC2_RG11_SNORM, EAC_RG11, SNORM, F), + AGX_FMT(R8_UNORM, R8, UNORM, T, U8NORM), + AGX_FMT(R8G8_UNORM, R8G8, UNORM, T, U8NORM), + AGX_FMT(R8G8B8A8_UNORM, R8G8B8A8, UNORM, T, U8NORM), + 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(R16_UNORM, R16, UNORM, T, U16NORM), + AGX_FMT(R16G16_UNORM, R16G16, UNORM, T, U16NORM), + AGX_FMT(R16G16B16A16_UNORM, R16G16B16A16, UNORM, T, U16NORM), + + AGX_FMT(R8_SRGB, R8, UNORM, T, SRGBA8), + AGX_FMT(R8G8_SRGB, R8G8, UNORM, T, SRGBA8), + AGX_FMT(R8G8B8A8_SRGB, R8G8B8A8, UNORM, T, SRGBA8), + 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(R8_SNORM, R8, SNORM, T, S8NORM), + AGX_FMT(R8G8_SNORM, R8G8, SNORM, T, S8NORM), + AGX_FMT(R8G8B8A8_SNORM, R8G8B8A8, SNORM, T, S8NORM), + 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(R16_FLOAT, R16, FLOAT, T, F16), + AGX_FMT(R16G16_FLOAT, R16G16, FLOAT, T, F16), + AGX_FMT(R16G16B16A16_FLOAT, R16G16B16A16, FLOAT, T, F16), + + AGX_FMT(R32_FLOAT, R32, FLOAT, T, I32), + AGX_FMT(R32G32_FLOAT, R32G32, FLOAT, T, I32), + AGX_FMT(R32G32B32A32_FLOAT, R32G32B32A32, FLOAT, T, I32), + + AGX_FMT(Z16_UNORM, R16, UNORM, F, _), + AGX_FMT(Z32_FLOAT, R32, FLOAT, F, _), + AGX_FMT(Z32_FLOAT_S8X24_UINT, R32, FLOAT, F, _), + + AGX_FMT(R10G10B10A2_UNORM, R10G10B10A2, UNORM, T, RGB10A2), + AGX_FMT(B10G10R10A2_UNORM, R10G10B10A2, UNORM, T, RGB10A2), + AGX_FMT(R11G11B10_FLOAT, R11G11B10, FLOAT, T, RG11B10F), + AGX_FMT(R9G9B9E5_FLOAT, R9G9B9E5, FLOAT, F, RGB9E5), + + AGX_FMT(ETC2_RGB8, ETC2_RGB8, UNORM, F,_), + AGX_FMT(ETC2_SRGB8, ETC2_RGB8, UNORM, F,_), + AGX_FMT(ETC2_RGB8A1, ETC2_RGB8A1, UNORM, F,_), + AGX_FMT(ETC2_SRGB8A1, ETC2_RGB8A1, UNORM, F,_), + AGX_FMT(ETC2_RGBA8, ETC2_RGBA8, UNORM, F,_), + AGX_FMT(ETC2_SRGBA8, ETC2_RGBA8, UNORM, F,_), + AGX_FMT(ETC2_R11_UNORM, EAC_R11, UNORM, F,_), + AGX_FMT(ETC2_R11_SNORM, EAC_R11, SNORM, F,_), + AGX_FMT(ETC2_RG11_UNORM, EAC_RG11, UNORM, F,_), + AGX_FMT(ETC2_RG11_SNORM, EAC_RG11, SNORM, F,_), }; const enum agx_format diff --git a/src/asahi/lib/agx_formats.h b/src/asahi/lib/agx_formats.h index 2ed84a1..506f1e0 100644 --- a/src/asahi/lib/agx_formats.h +++ b/src/asahi/lib/agx_formats.h @@ -31,6 +31,7 @@ struct agx_pixel_format_entry { uint16_t hw; bool renderable : 1; + enum agx_format internal : 4; }; extern const struct agx_pixel_format_entry agx_pixel_format[PIPE_FORMAT_COUNT]; -- 2.7.4