asahi: Add internal (renderable) formats to the table

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11718>
This commit is contained in:
Alyssa Rosenzweig 2021-07-04 16:20:36 -04:00 committed by Marge Bot
parent 78610de496
commit 0e0448d8df
3 changed files with 52 additions and 46 deletions

View File

@ -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 {

View File

@ -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(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),
AGX_FMT(R16G16_UNORM, R16G16, UNORM, T),
AGX_FMT(R16G16B16A16_UNORM, R16G16B16A16, UNORM, T),
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),
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_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, 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(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),
AGX_FMT(R16G16_FLOAT, R16G16, FLOAT, T),
AGX_FMT(R16G16B16A16_FLOAT, R16G16B16A16, FLOAT, T),
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),
AGX_FMT(R32G32_FLOAT, R32G32, FLOAT, T),
AGX_FMT(R32G32B32A32_FLOAT, R32G32B32A32, FLOAT, T),
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(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(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),
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

View File

@ -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];