mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 11:40:10 +01:00
pan/format: Add PAN_BIND_STORAGE_IMAGE flag
The HW does not support STORAGE_IMAGE for all formats that can be sampled or used as render targets. The HW does not support STORAGE_TEXEL_BUFFER for all formats that can be used as render targets. Signed-off-by: Ryan Mckeever <ryan.mckeever@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33787>
This commit is contained in:
parent
b9a9798c46
commit
d95423686f
3 changed files with 269 additions and 259 deletions
|
|
@ -120,12 +120,15 @@ const struct pan_blendable_format
|
||||||
#define _T PAN_BIND_SAMPLER_VIEW
|
#define _T PAN_BIND_SAMPLER_VIEW
|
||||||
#define _R PAN_BIND_RENDER_TARGET
|
#define _R PAN_BIND_RENDER_TARGET
|
||||||
#define _Z PAN_BIND_DEPTH_STENCIL
|
#define _Z PAN_BIND_DEPTH_STENCIL
|
||||||
|
#define _I PAN_BIND_STORAGE_IMAGE
|
||||||
|
|
||||||
#define FLAGS_V___ (_V)
|
#define FLAGS_V____ (_V)
|
||||||
#define FLAGS__T__ (_T)
|
#define FLAGS__T___ (_T)
|
||||||
#define FLAGS_VTR_ (_V | _T | _R)
|
#define FLAGS_VTR__ (_V | _T | _R)
|
||||||
#define FLAGS_VT__ (_V | _T)
|
#define FLAGS_VTR_I (_V | _T | _R | _I)
|
||||||
#define FLAGS__T_Z (_T | _Z)
|
#define FLAGS_VT___ (_V | _T)
|
||||||
|
#define FLAGS_VT__I (_V | _T | _I)
|
||||||
|
#define FLAGS__T_Z_ (_T | _Z)
|
||||||
|
|
||||||
#define FMT(pipe, mali, swizzle, srgb, flags) \
|
#define FMT(pipe, mali, swizzle, srgb, flags) \
|
||||||
[PIPE_FORMAT_##pipe] = { \
|
[PIPE_FORMAT_##pipe] = { \
|
||||||
|
|
@ -155,7 +158,7 @@ const struct pan_blendable_format
|
||||||
#define FMTC(pipe, texfeat, interchange, swizzle, srgb) \
|
#define FMTC(pipe, texfeat, interchange, swizzle, srgb) \
|
||||||
[PIPE_FORMAT_##pipe] = { \
|
[PIPE_FORMAT_##pipe] = { \
|
||||||
.hw = MALI_PACK_FMT(texfeat, swizzle, srgb), \
|
.hw = MALI_PACK_FMT(texfeat, swizzle, srgb), \
|
||||||
.bind = PAN_BIND_SAMPLER_VIEW, \
|
.bind = (PAN_BIND_SAMPLER_VIEW | PAN_BIND_STORAGE_IMAGE), \
|
||||||
.texfeat_bit = MALI_##texfeat, \
|
.texfeat_bit = MALI_##texfeat, \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
@ -165,31 +168,31 @@ const struct pan_blendable_format
|
||||||
#define FMTC(pipe, texfeat, interchange, swizzle, srgb) \
|
#define FMTC(pipe, texfeat, interchange, swizzle, srgb) \
|
||||||
[PIPE_FORMAT_##pipe] = { \
|
[PIPE_FORMAT_##pipe] = { \
|
||||||
.hw = MALI_PACK_FMT(interchange, swizzle, srgb), \
|
.hw = MALI_PACK_FMT(interchange, swizzle, srgb), \
|
||||||
.bind = PAN_BIND_SAMPLER_VIEW, \
|
.bind = (PAN_BIND_SAMPLER_VIEW | PAN_BIND_STORAGE_IMAGE), \
|
||||||
.texfeat_bit = MALI_##texfeat, \
|
.texfeat_bit = MALI_##texfeat, \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
||||||
FMT(NONE, CONSTANT, 0000, L, VTR_),
|
FMT(NONE, CONSTANT, 0000, L, VTR_I),
|
||||||
|
|
||||||
#if PAN_ARCH >= 7
|
#if PAN_ARCH >= 7
|
||||||
/* Multiplane formats */
|
/* Multiplane formats */
|
||||||
FMT_YUV(R8G8_R8B8_UNORM, YUYV8, UVYA, NO_SWAP, CENTER_422, _T__),
|
FMT_YUV(R8G8_R8B8_UNORM, YUYV8, UVYA, NO_SWAP, CENTER_422, _T___),
|
||||||
FMT_YUV(G8R8_B8R8_UNORM, VYUY8, UYVA, SWAP, CENTER_422, _T__),
|
FMT_YUV(G8R8_B8R8_UNORM, VYUY8, UYVA, SWAP, CENTER_422, _T___),
|
||||||
FMT_YUV(R8B8_R8G8_UNORM, YUYV8, VYUA, NO_SWAP, CENTER_422, _T__),
|
FMT_YUV(R8B8_R8G8_UNORM, YUYV8, VYUA, NO_SWAP, CENTER_422, _T___),
|
||||||
FMT_YUV(B8R8_G8R8_UNORM, VYUY8, VUYA, SWAP, CENTER_422, _T__),
|
FMT_YUV(B8R8_G8R8_UNORM, VYUY8, VUYA, SWAP, CENTER_422, _T___),
|
||||||
FMT_YUV(R8_G8B8_420_UNORM, Y8_UV8_420, YUVA, NO_SWAP, CENTER, _T__),
|
FMT_YUV(R8_G8B8_420_UNORM, Y8_UV8_420, YUVA, NO_SWAP, CENTER, _T___),
|
||||||
FMT_YUV(R8_B8G8_420_UNORM, Y8_UV8_420, YVUA, NO_SWAP, CENTER, _T__),
|
FMT_YUV(R8_B8G8_420_UNORM, Y8_UV8_420, YVUA, NO_SWAP, CENTER, _T___),
|
||||||
FMT_YUV(R8_G8_B8_420_UNORM, Y8_U8_V8_420, YUVA, NO_SWAP, CENTER, _T__),
|
FMT_YUV(R8_G8_B8_420_UNORM, Y8_U8_V8_420, YUVA, NO_SWAP, CENTER, _T___),
|
||||||
FMT_YUV(R8_B8_G8_420_UNORM, Y8_U8_V8_420, YVUA, NO_SWAP, CENTER, _T__),
|
FMT_YUV(R8_B8_G8_420_UNORM, Y8_U8_V8_420, YVUA, NO_SWAP, CENTER, _T___),
|
||||||
|
|
||||||
FMT_YUV(R8_G8B8_422_UNORM, Y8_UV8_422, YUVA, NO_SWAP, CENTER_422, _T__),
|
FMT_YUV(R8_G8B8_422_UNORM, Y8_UV8_422, YUVA, NO_SWAP, CENTER_422, _T___),
|
||||||
FMT_YUV(R8_B8G8_422_UNORM, Y8_UV8_422, YVUA, NO_SWAP, CENTER_422, _T__),
|
FMT_YUV(R8_B8G8_422_UNORM, Y8_UV8_422, YVUA, NO_SWAP, CENTER_422, _T___),
|
||||||
|
|
||||||
FMT_YUV(R10_G10B10_420_UNORM, Y10_UV10_420, YUVA, NO_SWAP, CENTER, _T__),
|
FMT_YUV(R10_G10B10_420_UNORM, Y10_UV10_420, YUVA, NO_SWAP, CENTER, _T___),
|
||||||
FMT_YUV(R10_G10B10_422_UNORM, Y10_UV10_422, YUVA, NO_SWAP, CENTER_422, _T__),
|
FMT_YUV(R10_G10B10_422_UNORM, Y10_UV10_422, YUVA, NO_SWAP, CENTER_422, _T___),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FMTC(ETC1_RGB8, ETC2_RGB8, RGBA8_UNORM, RGB1, L),
|
FMTC(ETC1_RGB8, ETC2_RGB8, RGBA8_UNORM, RGB1, L),
|
||||||
|
|
@ -274,256 +277,262 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
||||||
FMTC(ASTC_6x6x5_SRGB, ASTC_3D_LDR, RGBA8_UNORM, RGBA, S),
|
FMTC(ASTC_6x6x5_SRGB, ASTC_3D_LDR, RGBA8_UNORM, RGBA, S),
|
||||||
FMTC(ASTC_6x6x6_SRGB, ASTC_3D_LDR, RGBA8_UNORM, RGBA, S),
|
FMTC(ASTC_6x6x6_SRGB, ASTC_3D_LDR, RGBA8_UNORM, RGBA, S),
|
||||||
|
|
||||||
FMT(R5G6B5_UNORM, RGB565, RGB1, L, VTR_),
|
FMT(R5G6B5_UNORM, RGB565, RGB1, L, VTR_I),
|
||||||
FMT(B5G6R5_UNORM, RGB565, BGR1, L, VTR_),
|
FMT(B5G6R5_UNORM, RGB565, BGR1, L, VTR_I),
|
||||||
FMT(R5G5B5X1_UNORM, RGB5_A1_UNORM, RGB1, L, VT__),
|
FMT(R5G5B5X1_UNORM, RGB5_A1_UNORM, RGB1, L, VT__I),
|
||||||
FMT(B5G5R5X1_UNORM, RGB5_A1_UNORM, BGR1, L, VT__),
|
FMT(B5G5R5X1_UNORM, RGB5_A1_UNORM, BGR1, L, VT__I),
|
||||||
FMT(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_),
|
FMT(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_I),
|
||||||
FMT(B5G5R5A1_UNORM, RGB5_A1_UNORM, BGRA, L, VTR_),
|
FMT(B5G5R5A1_UNORM, RGB5_A1_UNORM, BGRA, L, VTR_I),
|
||||||
FMT(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_),
|
FMT(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_I),
|
||||||
FMT(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_),
|
FMT(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_I),
|
||||||
FMT(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_),
|
FMT(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_I),
|
||||||
FMT(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_),
|
FMT(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_I),
|
||||||
#if PAN_ARCH <= 5
|
#if PAN_ARCH <= 5
|
||||||
FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__),
|
FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__I),
|
||||||
FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__),
|
FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__I),
|
||||||
FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__),
|
FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__I),
|
||||||
FMT(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, _T__),
|
FMT(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, _T___),
|
||||||
#else
|
#else
|
||||||
FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, V___),
|
FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, V____),
|
||||||
FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, V___),
|
FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, V____),
|
||||||
FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, V___),
|
FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, V____),
|
||||||
#endif
|
#endif
|
||||||
FMT(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_),
|
FMT(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_I),
|
||||||
FMT(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_),
|
FMT(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_I),
|
||||||
FMT(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, V___),
|
FMT(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, V____),
|
||||||
FMT(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, V___),
|
FMT(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, V____),
|
||||||
FMT(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR_),
|
FMT(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR__),
|
||||||
FMT(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR_),
|
FMT(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR__),
|
||||||
FMT(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, V___),
|
FMT(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, V____),
|
||||||
FMT(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, V___),
|
FMT(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, V____),
|
||||||
FMT(R8_SSCALED, R8I, R001, L, V___),
|
FMT(R8_SSCALED, R8I, R001, L, V____),
|
||||||
FMT(R8G8_SSCALED, RG8I, RG01, L, V___),
|
FMT(R8G8_SSCALED, RG8I, RG01, L, V____),
|
||||||
FMT(R8G8B8_SSCALED, RGB8I, RGB1, L, V___),
|
FMT(R8G8B8_SSCALED, RGB8I, RGB1, L, V____),
|
||||||
FMT(B8G8R8_SSCALED, RGB8I, BGR1, L, V___),
|
FMT(B8G8R8_SSCALED, RGB8I, BGR1, L, V____),
|
||||||
FMT(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V___),
|
FMT(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V____),
|
||||||
FMT(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V___),
|
FMT(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V____),
|
||||||
FMT(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V___),
|
FMT(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V____),
|
||||||
FMT(R8_USCALED, R8UI, R001, L, V___),
|
FMT(R8_USCALED, R8UI, R001, L, V____),
|
||||||
FMT(R8G8_USCALED, RG8UI, RG01, L, V___),
|
FMT(R8G8_USCALED, RG8UI, RG01, L, V____),
|
||||||
FMT(R8G8B8_USCALED, RGB8UI, RGB1, L, V___),
|
FMT(R8G8B8_USCALED, RGB8UI, RGB1, L, V____),
|
||||||
FMT(B8G8R8_USCALED, RGB8UI, BGR1, L, V___),
|
FMT(B8G8R8_USCALED, RGB8UI, BGR1, L, V____),
|
||||||
FMT(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V___),
|
FMT(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V____),
|
||||||
FMT(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V___),
|
FMT(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V____),
|
||||||
FMT(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V___),
|
FMT(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V____),
|
||||||
FMT(R16_USCALED, R16UI, R001, L, V___),
|
FMT(R16_USCALED, R16UI, R001, L, V____),
|
||||||
FMT(R16G16_USCALED, RG16UI, RG01, L, V___),
|
FMT(R16G16_USCALED, RG16UI, RG01, L, V____),
|
||||||
FMT(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V___),
|
FMT(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V____),
|
||||||
FMT(R16_SSCALED, R16I, R001, L, V___),
|
FMT(R16_SSCALED, R16I, R001, L, V____),
|
||||||
FMT(R16G16_SSCALED, RG16I, RG01, L, V___),
|
FMT(R16G16_SSCALED, RG16I, RG01, L, V____),
|
||||||
FMT(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V___),
|
FMT(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V____),
|
||||||
FMT(R32_USCALED, R32UI, R001, L, V___),
|
FMT(R32_USCALED, R32UI, R001, L, V____),
|
||||||
FMT(R32G32_USCALED, RG32UI, RG01, L, V___),
|
FMT(R32G32_USCALED, RG32UI, RG01, L, V____),
|
||||||
FMT(R32G32B32_USCALED, RGB32UI, RGB1, L, V___),
|
FMT(R32G32B32_USCALED, RGB32UI, RGB1, L, V____),
|
||||||
FMT(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V___),
|
FMT(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V____),
|
||||||
FMT(R32_SSCALED, R32I, R001, L, V___),
|
FMT(R32_SSCALED, R32I, R001, L, V____),
|
||||||
FMT(R32G32_SSCALED, RG32I, RG01, L, V___),
|
FMT(R32G32_SSCALED, RG32I, RG01, L, V____),
|
||||||
FMT(R32G32B32_SSCALED, RGB32I, RGB1, L, V___),
|
FMT(R32G32B32_SSCALED, RGB32I, RGB1, L, V____),
|
||||||
FMT(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V___),
|
FMT(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V____),
|
||||||
FMT(R32_FIXED, R32_FIXED, R001, L, V___),
|
FMT(R32_FIXED, R32_FIXED, R001, L, V____),
|
||||||
FMT(R32G32_FIXED, RG32_FIXED, RG01, L, V___),
|
FMT(R32G32_FIXED, RG32_FIXED, RG01, L, V____),
|
||||||
FMT(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V___),
|
FMT(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V____),
|
||||||
FMT(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V___),
|
FMT(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V____),
|
||||||
FMT(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_),
|
FMT(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_I),
|
||||||
#if PAN_ARCH < 7
|
#if PAN_ARCH < 7
|
||||||
FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, _T__),
|
FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, _T___),
|
||||||
#else
|
#else
|
||||||
FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VTR_),
|
FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VTR_I),
|
||||||
#endif
|
#endif
|
||||||
#if PAN_ARCH >= 6
|
#if PAN_ARCH >= 6
|
||||||
/* SNORM is renderable on Bifrost (with blend shaders) */
|
/* SNORM is renderable on Bifrost (with blend shaders) */
|
||||||
FMT(R8_SNORM, R8_SNORM, R001, L, VTR_),
|
FMT(R8_SNORM, R8_SNORM, R001, L, VTR_I),
|
||||||
FMT(R16_SNORM, R16_SNORM, R001, L, VTR_),
|
FMT(R16_SNORM, R16_SNORM, R001, L, VTR_I),
|
||||||
FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VTR_),
|
FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VTR_I),
|
||||||
FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VTR_),
|
FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VTR_I),
|
||||||
FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VTR_),
|
FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VTR_I),
|
||||||
FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VTR_),
|
FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VTR_I),
|
||||||
FMT(B8G8R8A8_SNORM, RGBA8_SNORM, BGRA, L, VTR_),
|
FMT(B8G8R8A8_SNORM, RGBA8_SNORM, BGRA, L, VTR_I),
|
||||||
FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VTR_),
|
FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VTR_I),
|
||||||
#else
|
#else
|
||||||
/* So far we haven't needed SNORM rendering on Midgard */
|
/* So far we haven't needed SNORM rendering on Midgard */
|
||||||
FMT(R8_SNORM, R8_SNORM, R001, L, VT__),
|
FMT(R8_SNORM, R8_SNORM, R001, L, VT__I),
|
||||||
FMT(R16_SNORM, R16_SNORM, R001, L, VT__),
|
FMT(R16_SNORM, R16_SNORM, R001, L, VT__I),
|
||||||
FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VT__),
|
FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VT__I),
|
||||||
FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VT__),
|
FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VT__I),
|
||||||
FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__),
|
FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__I),
|
||||||
FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__),
|
FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__I),
|
||||||
FMT(B8G8R8A8_SNORM, RGBA8_SNORM, BGRA, L, VT__),
|
FMT(B8G8R8A8_SNORM, RGBA8_SNORM, BGRA, L, VT__I),
|
||||||
FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__),
|
FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__I),
|
||||||
#endif
|
#endif
|
||||||
FMT(I8_SINT, R8I, RRRR, L, VTR_),
|
FMT(I8_SINT, R8I, RRRR, L, VTR_I),
|
||||||
FMT(L8_SINT, R8I, RRR1, L, VTR_),
|
FMT(L8_SINT, R8I, RRR1, L, VTR_I),
|
||||||
FMT(I8_UINT, R8UI, RRRR, L, VTR_),
|
FMT(I8_UINT, R8UI, RRRR, L, VTR_I),
|
||||||
FMT(L8_UINT, R8UI, RRR1, L, VTR_),
|
FMT(L8_UINT, R8UI, RRR1, L, VTR_I),
|
||||||
FMT(I16_SINT, R16I, RRRR, L, VTR_),
|
FMT(I16_SINT, R16I, RRRR, L, VTR_I),
|
||||||
FMT(L16_SINT, R16I, RRR1, L, VTR_),
|
FMT(L16_SINT, R16I, RRR1, L, VTR_I),
|
||||||
FMT(I16_UINT, R16UI, RRRR, L, VTR_),
|
FMT(I16_UINT, R16UI, RRRR, L, VTR_I),
|
||||||
FMT(L16_UINT, R16UI, RRR1, L, VTR_),
|
FMT(L16_UINT, R16UI, RRR1, L, VTR_I),
|
||||||
FMT(I32_SINT, R32I, RRRR, L, VTR_),
|
FMT(I32_SINT, R32I, RRRR, L, VTR_I),
|
||||||
FMT(L32_SINT, R32I, RRR1, L, VTR_),
|
FMT(L32_SINT, R32I, RRR1, L, VTR_I),
|
||||||
FMT(I32_UINT, R32UI, RRRR, L, VTR_),
|
FMT(I32_UINT, R32UI, RRRR, L, VTR_I),
|
||||||
FMT(L32_UINT, R32UI, RRR1, L, VTR_),
|
FMT(L32_UINT, R32UI, RRR1, L, VTR_I),
|
||||||
FMT(B8G8R8_UINT, RGB8UI, BGR1, L, V___),
|
FMT(B8G8R8_UINT, RGB8UI, BGR1, L, V____),
|
||||||
FMT(B8G8R8_SINT, RGB8I, BGR1, L, V___),
|
FMT(B8G8R8_SINT, RGB8I, BGR1, L, V____),
|
||||||
FMT(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_),
|
FMT(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_I),
|
||||||
FMT(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_),
|
FMT(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_I),
|
||||||
FMT(A8R8G8B8_UINT, RGBA8UI, GBAR, L, VTR_),
|
FMT(A8R8G8B8_UINT, RGBA8UI, GBAR, L, VTR_I),
|
||||||
FMT(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_),
|
FMT(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_I),
|
||||||
FMT(R8_UINT, R8UI, R001, L, VTR_),
|
FMT(R8_UINT, R8UI, R001, L, VTR_I),
|
||||||
FMT(R16_UINT, R16UI, R001, L, VTR_),
|
FMT(R16_UINT, R16UI, R001, L, VTR_I),
|
||||||
FMT(R32_UINT, R32UI, R001, L, VTR_),
|
FMT(R32_UINT, R32UI, R001, L, VTR_I),
|
||||||
FMT(R8G8_UINT, RG8UI, RG01, L, VTR_),
|
FMT(R8G8_UINT, RG8UI, RG01, L, VTR_I),
|
||||||
FMT(R16G16_UINT, RG16UI, RG01, L, VTR_),
|
FMT(R16G16_UINT, RG16UI, RG01, L, VTR_I),
|
||||||
FMT(R32G32_UINT, RG32UI, RG01, L, VTR_),
|
FMT(R32G32_UINT, RG32UI, RG01, L, VTR_I),
|
||||||
FMT(R8G8B8_UINT, RGB8UI, RGB1, L, V___),
|
FMT(R8G8B8_UINT, RGB8UI, RGB1, L, V____),
|
||||||
FMT(R32G32B32_UINT, RGB32UI, RGB1, L, VTR_),
|
/* TODO: enable storage after CTS bug fix is merged:
|
||||||
FMT(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_),
|
* https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/5700 */
|
||||||
FMT(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_),
|
FMT(R32G32B32_UINT, RGB32UI, RGB1, L, VTR__),
|
||||||
FMT(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_),
|
FMT(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_I),
|
||||||
FMT(R32_FLOAT, R32F, R001, L, VTR_),
|
FMT(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_I),
|
||||||
FMT(R32G32_FLOAT, RG32F, RG01, L, VTR_),
|
FMT(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_I),
|
||||||
FMT(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR_),
|
FMT(R32_FLOAT, R32F, R001, L, VTR_I),
|
||||||
FMT(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_),
|
FMT(R32G32_FLOAT, RG32F, RG01, L, VTR_I),
|
||||||
FMT(R8_UNORM, R8_UNORM, R001, L, VTR_),
|
/* TODO: enable storage after CTS bug fix is merged:
|
||||||
FMT(R16_UNORM, R16_UNORM, R001, L, VTR_),
|
* https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/5700 */
|
||||||
FMT(R8G8_UNORM, RG8_UNORM, RG01, L, VTR_),
|
FMT(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR__),
|
||||||
FMT(R16G16_UNORM, RG16_UNORM, RG01, L, VTR_),
|
FMT(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_I),
|
||||||
FMT(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, V___),
|
FMT(R8_UNORM, R8_UNORM, R001, L, VTR_I),
|
||||||
|
FMT(R16_UNORM, R16_UNORM, R001, L, VTR_I),
|
||||||
|
FMT(R8G8_UNORM, RG8_UNORM, RG01, L, VTR_I),
|
||||||
|
FMT(R16G16_UNORM, RG16_UNORM, RG01, L, VTR_I),
|
||||||
|
FMT(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, V____),
|
||||||
|
|
||||||
/* 32-bit NORM is not texturable in v7 onwards. It's renderable
|
/* 32-bit NORM is not texturable in v7 onwards. It's renderable
|
||||||
* everywhere, but rendering without texturing is not useful.
|
* everywhere, but rendering without texturing is not useful.
|
||||||
*/
|
*/
|
||||||
#if PAN_ARCH <= 6
|
#if PAN_ARCH <= 6
|
||||||
FMT(R32_UNORM, R32_UNORM, R001, L, VTR_),
|
FMT(R32_UNORM, R32_UNORM, R001, L, VTR_I),
|
||||||
FMT(R32G32_UNORM, RG32_UNORM, RG01, L, VTR_),
|
FMT(R32G32_UNORM, RG32_UNORM, RG01, L, VTR_I),
|
||||||
FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VT__),
|
FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VT__I),
|
||||||
FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VTR_),
|
FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VTR_I),
|
||||||
FMT(R32_SNORM, R32_SNORM, R001, L, VT__),
|
FMT(R32_SNORM, R32_SNORM, R001, L, VT__I),
|
||||||
FMT(R32G32_SNORM, RG32_SNORM, RG01, L, VT__),
|
FMT(R32G32_SNORM, RG32_SNORM, RG01, L, VT__I),
|
||||||
FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__),
|
FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__I),
|
||||||
FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__),
|
FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__I),
|
||||||
#else
|
#else
|
||||||
FMT(R32_UNORM, R32_UNORM, R001, L, V___),
|
FMT(R32_UNORM, R32_UNORM, R001, L, V____),
|
||||||
FMT(R32G32_UNORM, RG32_UNORM, RG01, L, V___),
|
FMT(R32G32_UNORM, RG32_UNORM, RG01, L, V____),
|
||||||
FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, V___),
|
FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, V____),
|
||||||
FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, V___),
|
FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, V____),
|
||||||
FMT(R32_SNORM, R32_SNORM, R001, L, V___),
|
FMT(R32_SNORM, R32_SNORM, R001, L, V____),
|
||||||
FMT(R32G32_SNORM, RG32_SNORM, RG01, L, V___),
|
FMT(R32G32_SNORM, RG32_SNORM, RG01, L, V____),
|
||||||
FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, V___),
|
FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, V____),
|
||||||
FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, V___),
|
FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, V____),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Don't allow render/texture for 48-bit */
|
/* Don't allow render/texture for 48-bit */
|
||||||
FMT(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, V___),
|
FMT(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, V____),
|
||||||
FMT(R16G16B16_SINT, RGB16I, RGB1, L, V___),
|
FMT(R16G16B16_SINT, RGB16I, RGB1, L, V____),
|
||||||
FMT(R16G16B16_FLOAT, RGB16F, RGB1, L, V___),
|
FMT(R16G16B16_FLOAT, RGB16F, RGB1, L, V____),
|
||||||
FMT(R16G16B16_USCALED, RGB16UI, RGB1, L, V___),
|
FMT(R16G16B16_USCALED, RGB16UI, RGB1, L, V____),
|
||||||
FMT(R16G16B16_SSCALED, RGB16I, RGB1, L, V___),
|
FMT(R16G16B16_SSCALED, RGB16I, RGB1, L, V____),
|
||||||
FMT(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, V___),
|
FMT(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, V____),
|
||||||
FMT(R16G16B16_UINT, RGB16UI, RGB1, L, V___),
|
FMT(R16G16B16_UINT, RGB16UI, RGB1, L, V____),
|
||||||
FMT(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_),
|
FMT(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_I),
|
||||||
FMT(B4G4R4A4_UNORM, RGBA4_UNORM, BGRA, L, VTR_),
|
FMT(B4G4R4A4_UNORM, RGBA4_UNORM, BGRA, L, VTR_I),
|
||||||
FMT(A4R4G4B4_UNORM, RGBA4_UNORM, ARGB, L, VTR_),
|
FMT(A4R4G4B4_UNORM, RGBA4_UNORM, ARGB, L, VTR__),
|
||||||
FMT(A4B4G4R4_UNORM, RGBA4_UNORM, ABGR, L, VTR_),
|
FMT(A4B4G4R4_UNORM, RGBA4_UNORM, ABGR, L, VTR__),
|
||||||
FMT(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VTR_),
|
FMT(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VTR_I),
|
||||||
FMT(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_),
|
FMT(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_I),
|
||||||
FMT(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_),
|
FMT(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_I),
|
||||||
FMT(A8R8G8B8_UNORM, RGBA8_UNORM, GBAR, L, VTR_),
|
FMT(A8R8G8B8_UNORM, RGBA8_UNORM, GBAR, L, VTR_I),
|
||||||
FMT(X8R8G8B8_UNORM, RGBA8_UNORM, GBA1, L, VTR_),
|
FMT(X8R8G8B8_UNORM, RGBA8_UNORM, GBA1, L, VTR_I),
|
||||||
FMT(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_),
|
FMT(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_I),
|
||||||
FMT(X8B8G8R8_UNORM, RGBA8_UNORM, ABG1, L, VTR_),
|
FMT(X8B8G8R8_UNORM, RGBA8_UNORM, ABG1, L, VTR_I),
|
||||||
FMT(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_),
|
FMT(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_I),
|
||||||
FMT(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_),
|
FMT(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_I),
|
||||||
FMT(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__),
|
FMT(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__I),
|
||||||
FMT(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_),
|
FMT(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_I),
|
||||||
FMT(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_),
|
FMT(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_I),
|
||||||
FMT(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_),
|
FMT(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_I),
|
||||||
FMT(L8_UNORM, R8_UNORM, RRR1, L, VTR_),
|
FMT(L8_UNORM, R8_UNORM, RRR1, L, VTR_I),
|
||||||
FMT(I8_UNORM, R8_UNORM, RRRR, L, VTR_),
|
FMT(I8_UNORM, R8_UNORM, RRRR, L, VTR_I),
|
||||||
FMT(L16_UNORM, R16_UNORM, RRR1, L, VT__),
|
FMT(L16_UNORM, R16_UNORM, RRR1, L, VT__I),
|
||||||
FMT(I16_UNORM, R16_UNORM, RRRR, L, VT__),
|
FMT(I16_UNORM, R16_UNORM, RRRR, L, VT__I),
|
||||||
FMT(L8_SNORM, R8_SNORM, RRR1, L, VT__),
|
FMT(L8_SNORM, R8_SNORM, RRR1, L, VT__I),
|
||||||
FMT(I8_SNORM, R8_SNORM, RRRR, L, VT__),
|
FMT(I8_SNORM, R8_SNORM, RRRR, L, VT__I),
|
||||||
FMT(L16_SNORM, R16_SNORM, RRR1, L, VT__),
|
FMT(L16_SNORM, R16_SNORM, RRR1, L, VT__I),
|
||||||
FMT(I16_SNORM, R16_SNORM, RRRR, L, VT__),
|
FMT(I16_SNORM, R16_SNORM, RRRR, L, VT__I),
|
||||||
FMT(L16_FLOAT, R16F, RRR1, L, VTR_),
|
FMT(L16_FLOAT, R16F, RRR1, L, VTR_I),
|
||||||
FMT(I16_FLOAT, RG16F, RRRR, L, VTR_),
|
FMT(I16_FLOAT, RG16F, RRRR, L, VTR_I),
|
||||||
FMT(L8_SRGB, R8_UNORM, RRR1, S, VTR_),
|
FMT(L8_SRGB, R8_UNORM, RRR1, S, VTR_I),
|
||||||
FMT(R8_SRGB, R8_UNORM, R001, S, VTR_),
|
FMT(R8_SRGB, R8_UNORM, R001, S, VTR_I),
|
||||||
FMT(R8G8_SRGB, RG8_UNORM, RG01, S, VTR_),
|
FMT(R8G8_SRGB, RG8_UNORM, RG01, S, VTR_I),
|
||||||
FMT(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, V___),
|
FMT(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, V____),
|
||||||
FMT(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, V___),
|
FMT(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, V____),
|
||||||
FMT(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_),
|
FMT(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_I),
|
||||||
FMT(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_),
|
FMT(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_I),
|
||||||
FMT(X8B8G8R8_SRGB, RGBA8_UNORM, ABG1, S, VTR_),
|
FMT(X8B8G8R8_SRGB, RGBA8_UNORM, ABG1, S, VTR_I),
|
||||||
FMT(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_),
|
FMT(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_I),
|
||||||
FMT(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_),
|
FMT(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_I),
|
||||||
FMT(A8R8G8B8_SRGB, RGBA8_UNORM, GBAR, S, VTR_),
|
FMT(A8R8G8B8_SRGB, RGBA8_UNORM, GBAR, S, VTR_I),
|
||||||
FMT(X8R8G8B8_SRGB, RGBA8_UNORM, GBA1, S, VTR_),
|
FMT(X8R8G8B8_SRGB, RGBA8_UNORM, GBA1, S, VTR_I),
|
||||||
FMT(R8_SINT, R8I, R001, L, VTR_),
|
FMT(R8_SINT, R8I, R001, L, VTR_I),
|
||||||
FMT(R16_SINT, R16I, R001, L, VTR_),
|
FMT(R16_SINT, R16I, R001, L, VTR_I),
|
||||||
FMT(R32_SINT, R32I, R001, L, VTR_),
|
FMT(R32_SINT, R32I, R001, L, VTR_I),
|
||||||
FMT(R16_FLOAT, R16F, R001, L, VTR_),
|
FMT(R16_FLOAT, R16F, R001, L, VTR_I),
|
||||||
FMT(R8G8_SINT, RG8I, RG01, L, VTR_),
|
FMT(R8G8_SINT, RG8I, RG01, L, VTR_I),
|
||||||
FMT(R16G16_SINT, RG16I, RG01, L, VTR_),
|
FMT(R16G16_SINT, RG16I, RG01, L, VTR_I),
|
||||||
FMT(R32G32_SINT, RG32I, RG01, L, VTR_),
|
FMT(R32G32_SINT, RG32I, RG01, L, VTR_I),
|
||||||
FMT(R16G16_FLOAT, RG16F, RG01, L, VTR_),
|
FMT(R16G16_FLOAT, RG16F, RG01, L, VTR_I),
|
||||||
FMT(R8G8B8_SINT, RGB8I, RGB1, L, V___),
|
FMT(R8G8B8_SINT, RGB8I, RGB1, L, V____),
|
||||||
FMT(R32G32B32_SINT, RGB32I, RGB1, L, VTR_),
|
/* TODO: enable storage after CTS bug fix is merged:
|
||||||
FMT(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_),
|
* https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/5700 */
|
||||||
FMT(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_),
|
FMT(R32G32B32_SINT, RGB32I, RGB1, L, VTR__),
|
||||||
FMT(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_),
|
FMT(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_I),
|
||||||
FMT(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_),
|
FMT(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_I),
|
||||||
FMT(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_),
|
FMT(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_I),
|
||||||
FMT(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__),
|
FMT(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_I),
|
||||||
FMT(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_),
|
FMT(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_I),
|
||||||
FMT(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_),
|
FMT(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__I),
|
||||||
FMT(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_),
|
FMT(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_I),
|
||||||
FMT(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_),
|
FMT(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_I),
|
||||||
FMT(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_),
|
FMT(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_I),
|
||||||
FMT(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_),
|
FMT(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_I),
|
||||||
|
FMT(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_I),
|
||||||
|
FMT(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_I),
|
||||||
|
|
||||||
#if PAN_ARCH <= 6
|
#if PAN_ARCH <= 6
|
||||||
FMT(Z16_UNORM, R16_UNORM, RRRR, L, _T_Z),
|
FMT(Z16_UNORM, R16_UNORM, RRRR, L, _T_Z_),
|
||||||
FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RRRR, L, _T_Z),
|
FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RRRR, L, _T_Z_),
|
||||||
FMT(Z24X8_UNORM, Z24X8_UNORM, RRRR, L, _T_Z),
|
FMT(Z24X8_UNORM, Z24X8_UNORM, RRRR, L, _T_Z_),
|
||||||
FMT(Z32_FLOAT, R32F, RRRR, L, _T_Z),
|
FMT(Z32_FLOAT, R32F, RRRR, L, _T_Z_),
|
||||||
FMT(Z32_FLOAT_S8X24_UINT, RG32F, RRRR, L, _T_Z),
|
FMT(Z32_FLOAT_S8X24_UINT, RG32F, RRRR, L, _T_Z_),
|
||||||
FMT(X32_S8X24_UINT, X32_S8X24, GGGG, L, _T_Z),
|
FMT(X32_S8X24_UINT, X32_S8X24, GGGG, L, _T_Z_),
|
||||||
FMT(X24S8_UINT, RGBA8UI, AAAA, L, _T_Z),
|
FMT(X24S8_UINT, RGBA8UI, AAAA, L, _T_Z_),
|
||||||
FMT(S8_UINT, R8UI, RRRR, L, _T_Z),
|
FMT(S8_UINT, R8UI, RRRR, L, _T_Z_),
|
||||||
|
|
||||||
FMT(A8_UNORM, R8_UNORM, 000R, L, VTR_),
|
FMT(A8_UNORM, R8_UNORM, 000R, L, VTR_I),
|
||||||
FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_),
|
FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_I),
|
||||||
FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_),
|
FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_I),
|
||||||
|
|
||||||
/* These formats were removed in v7 */
|
/* These formats were removed in v7 */
|
||||||
FMT(A8_SNORM, R8_SNORM, 000R, L, VT__),
|
FMT(A8_SNORM, R8_SNORM, 000R, L, VT__I),
|
||||||
FMT(A8_SINT, R8I, 000R, L, VTR_),
|
FMT(A8_SINT, R8I, 000R, L, VTR_I),
|
||||||
FMT(A8_UINT, R8UI, 000R, L, VTR_),
|
FMT(A8_UINT, R8UI, 000R, L, VTR_I),
|
||||||
FMT(A16_SINT, R16I, 000R, L, VTR_),
|
FMT(A16_SINT, R16I, 000R, L, VTR_I),
|
||||||
FMT(A16_UINT, R16UI, 000R, L, VTR_),
|
FMT(A16_UINT, R16UI, 000R, L, VTR_I),
|
||||||
FMT(A32_SINT, R32I, 000R, L, VTR_),
|
FMT(A32_SINT, R32I, 000R, L, VTR_I),
|
||||||
FMT(A32_UINT, R32UI, 000R, L, VTR_),
|
FMT(A32_UINT, R32UI, 000R, L, VTR_I),
|
||||||
FMT(A16_UNORM, R16_UNORM, 000R, L, VT__),
|
FMT(A16_UNORM, R16_UNORM, 000R, L, VT__I),
|
||||||
FMT(A16_SNORM, R16_SNORM, 000R, L, VT__),
|
FMT(A16_SNORM, R16_SNORM, 000R, L, VT__I),
|
||||||
FMT(A16_FLOAT, R16F, 000R, L, VTR_),
|
FMT(A16_FLOAT, R16F, 000R, L, VTR_I),
|
||||||
|
|
||||||
#else
|
#else
|
||||||
FMT(Z16_UNORM, Z16_UNORM, RGBA, L, _T_Z),
|
FMT(Z16_UNORM, Z16_UNORM, RGBA, L, _T_Z_),
|
||||||
FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RGBA, L, _T_Z),
|
FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RGBA, L, _T_Z_),
|
||||||
FMT(Z24X8_UNORM, Z24X8_UNORM, RGBA, L, _T_Z),
|
FMT(Z24X8_UNORM, Z24X8_UNORM, RGBA, L, _T_Z_),
|
||||||
FMT(Z32_FLOAT, R32F, RGBA, L, _T_Z),
|
FMT(Z32_FLOAT, R32F, RGBA, L, _T_Z_),
|
||||||
|
|
||||||
#if PAN_ARCH >= 9
|
#if PAN_ARCH >= 9
|
||||||
/* Specify interchange formats, the actual format for depth/stencil is
|
/* Specify interchange formats, the actual format for depth/stencil is
|
||||||
|
|
@ -533,25 +542,25 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
||||||
* "0s00" and "S8 GRBA" is logically "s000". For Bifrost compatibility
|
* "0s00" and "S8 GRBA" is logically "s000". For Bifrost compatibility
|
||||||
* we want stencil in the red channel, so we use the GRBA swizzles.
|
* we want stencil in the red channel, so we use the GRBA swizzles.
|
||||||
*/
|
*/
|
||||||
FMT(Z32_FLOAT_S8X24_UINT, R32F, GRBA, L, _T_Z),
|
FMT(Z32_FLOAT_S8X24_UINT, R32F, GRBA, L, _T_Z_),
|
||||||
FMT(X32_S8X24_UINT, S8, GRBA, L, _T_Z),
|
FMT(X32_S8X24_UINT, S8, GRBA, L, _T_Z_),
|
||||||
FMT(X24S8_UINT, S8, GRBA, L, _T_Z),
|
FMT(X24S8_UINT, S8, GRBA, L, _T_Z_),
|
||||||
FMT(S8_UINT, S8, GRBA, L, _T_Z),
|
FMT(S8_UINT, S8, GRBA, L, _T_Z_),
|
||||||
|
|
||||||
/* similarly, the interchange format is RGBA8, but we only
|
/* similarly, the interchange format is RGBA8, but we only
|
||||||
actually store 1 component in memory here */
|
actually store 1 component in memory here */
|
||||||
FMT(A8_UNORM, RGBA8_UNORM, 000A, L, VTR_),
|
FMT(A8_UNORM, RGBA8_UNORM, 000A, L, VTR_I),
|
||||||
#else
|
#else
|
||||||
/* Specify real formats on Bifrost */
|
/* Specify real formats on Bifrost */
|
||||||
FMT(Z32_FLOAT_S8X24_UINT, Z32_X32, RGBA, L, _T_Z),
|
FMT(Z32_FLOAT_S8X24_UINT, Z32_X32, RGBA, L, _T_Z_),
|
||||||
FMT(X32_S8X24_UINT, X32_S8X24, GRBA, L, _T_Z),
|
FMT(X32_S8X24_UINT, X32_S8X24, GRBA, L, _T_Z_),
|
||||||
FMT(X24S8_UINT, X24S8, GRBA, L, _T_Z),
|
FMT(X24S8_UINT, X24S8, GRBA, L, _T_Z_),
|
||||||
FMT(S8_UINT, S8, GRBA, L, _T_Z),
|
FMT(S8_UINT, S8, GRBA, L, _T_Z_),
|
||||||
|
|
||||||
/* Obsolete formats removed in Valhall */
|
/* Obsolete formats removed in Valhall */
|
||||||
FMT(A8_UNORM, A8_UNORM, 000A, L, VTR_),
|
FMT(A8_UNORM, A8_UNORM, 000A, L, VTR_I),
|
||||||
FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_),
|
FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_I),
|
||||||
FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_),
|
FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_I),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ typedef uint32_t mali_pixel_format;
|
||||||
#define PAN_BIND_RENDER_TARGET (1 << 1)
|
#define PAN_BIND_RENDER_TARGET (1 << 1)
|
||||||
#define PAN_BIND_SAMPLER_VIEW (1 << 3)
|
#define PAN_BIND_SAMPLER_VIEW (1 << 3)
|
||||||
#define PAN_BIND_VERTEX_BUFFER (1 << 4)
|
#define PAN_BIND_VERTEX_BUFFER (1 << 4)
|
||||||
|
#define PAN_BIND_STORAGE_IMAGE (1 << 15) /* == PIPE_BIND_SHADER_IMAGE */
|
||||||
|
|
||||||
struct panfrost_format {
|
struct panfrost_format {
|
||||||
uint32_t hw : 22;
|
uint32_t hw : 22;
|
||||||
|
|
|
||||||
|
|
@ -1378,12 +1378,10 @@ get_image_plane_format_features(struct panvk_physical_device *physical_device,
|
||||||
features |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
|
features |= VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
|
||||||
|
|
||||||
features |= VK_FORMAT_FEATURE_BLIT_SRC_BIT;
|
features |= VK_FORMAT_FEATURE_BLIT_SRC_BIT;
|
||||||
features |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fmt.bind & PAN_BIND_RENDER_TARGET) {
|
if (fmt.bind & PAN_BIND_RENDER_TARGET) {
|
||||||
features |= VK_FORMAT_FEATURE_BLIT_DST_BIT;
|
features |= VK_FORMAT_FEATURE_BLIT_DST_BIT;
|
||||||
features |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
|
|
||||||
|
|
||||||
/* SNORM rendering isn't working yet (nir_lower_blend bugs), disable for
|
/* SNORM rendering isn't working yet (nir_lower_blend bugs), disable for
|
||||||
* now.
|
* now.
|
||||||
|
|
@ -1396,6 +1394,9 @@ get_image_plane_format_features(struct panvk_physical_device *physical_device,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fmt.bind & PAN_BIND_STORAGE_IMAGE)
|
||||||
|
features |= VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
|
||||||
|
|
||||||
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
||||||
features |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
|
features |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
|
||||||
|
|
||||||
|
|
@ -1508,8 +1509,7 @@ get_buffer_format_features(struct panvk_physical_device *physical_device,
|
||||||
!util_format_is_depth_or_stencil(pfmt))
|
!util_format_is_depth_or_stencil(pfmt))
|
||||||
features |= VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
|
features |= VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
|
||||||
|
|
||||||
if ((fmt.bind & PAN_BIND_RENDER_TARGET) &&
|
if (fmt.bind & PAN_BIND_STORAGE_IMAGE)
|
||||||
!util_format_is_depth_and_stencil(pfmt))
|
|
||||||
features |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
|
features |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
|
||||||
|
|
||||||
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue