pan/format: Disable image storage on A8_UNORM
A8_UNORM on v9+ is using RGBA8_UNORM as a pixel format with the
A8_UNORM clump format to dealing with the diffences between
RGBA8 and the actual A8 in-memory layout.
The problem is, LEA_TEX only loads the InternalConversionDescriptor
which contains only the pixel format, and that's what ST_CVT uses
to do the conversion, so we'll actually store 4 components instead
of one.
This shows up with
dEQP-VK.image.load_store.without_any_format.buffer.a8_unorm* after
enabling maintenance5.
For now I've turned off the image storage capability for A8_UNORM
on all gens, but I'd be fine disabling it only on v9+ if you think
that's preferable.
Fixes: d95423686f
("pan/format: Add PAN_BIND_STORAGE_IMAGE flag")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34648>
(cherry picked from commit 9d1262e108dcd962cff4d564e9f0f62799414305)
This commit is contained in:

committed by
Eric Engestrom

parent
91cf9b4e43
commit
518f052e98
@@ -994,7 +994,7 @@
|
|||||||
"description": "pan/format: Disable image storage on A8_UNORM",
|
"description": "pan/format: Disable image storage on A8_UNORM",
|
||||||
"nominated": true,
|
"nominated": true,
|
||||||
"nomination_type": 2,
|
"nomination_type": 2,
|
||||||
"resolution": 0,
|
"resolution": 1,
|
||||||
"main_sha": null,
|
"main_sha": null,
|
||||||
"because_sha": "d95423686fda6c8a96702b1535a967132f8887f8",
|
"because_sha": "d95423686fda6c8a96702b1535a967132f8887f8",
|
||||||
"notes": null
|
"notes": null
|
||||||
|
@@ -512,7 +512,7 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
|||||||
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_I),
|
FMT(A8_UNORM, R8_UNORM, 000R, L, VTR__),
|
||||||
FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_I),
|
FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_I),
|
||||||
FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_I),
|
FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_I),
|
||||||
|
|
||||||
@@ -549,7 +549,7 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
|||||||
|
|
||||||
/* 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_I),
|
FMT(A8_UNORM, RGBA8_UNORM, 000A, L, VTR__),
|
||||||
#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_),
|
||||||
@@ -558,7 +558,7 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
|
|||||||
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_I),
|
FMT(A8_UNORM, A8_UNORM, 000A, L, VTR__),
|
||||||
FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_I),
|
FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_I),
|
||||||
FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_I),
|
FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_I),
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user