panfrost: Defeature 24-bit textures
authorAlyssa Rosenzweig <alyssa@collabora.com>
Tue, 14 Mar 2023 02:15:36 +0000 (22:15 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 14 Mar 2023 23:10:01 +0000 (23:10 +0000)
mesa/st doesn't like to use 24-bit textures, preferring RGBX over true RGB even
for texture views where this isn't valid. Given how silly true RGB is in
practice, I'd rather drop support and fix texture views than go against the
grain and risk more issues down the line since nobody else in tree is testing
these paths and apps really shouldn't be caring.

Fixes page faults in arb_texture_view-rendering-formats_gles3 which tries to
sample an R8G8B8_UINT texture with a R8G8B8X8_UNORM view in one subcase. That
test is now passing reliably.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21891>

src/panfrost/ci/panfrost-g52-fails.txt
src/panfrost/lib/pan_format.c

index b94da48..f0578fa 100644 (file)
@@ -160,7 +160,6 @@ spec@arb_texture_rg@fbo-blending-formats,Fail
 spec@arb_texture_rg@fbo-blending-formats@GL_R8,Fail
 spec@arb_texture_rg@fbo-blending-formats@GL_RG8,Fail
 spec@arb_texture_rg@fbo-blending-formats@GL_RG,Fail
-spec@arb_texture_view@rendering-formats,Crash
 spec@arb_texture_view@sampling-2d-array-as-cubemap-array,Crash
 spec@arb_texture_view@sampling-2d-array-as-cubemap,Crash
 spec@arb_transform_feedback_instanced@draw-auto instanced,Fail
@@ -495,7 +494,6 @@ spec@nv_copy_image@nv_copy_image-formats --samples=4@Source: GL_RGBA32I/Destinat
 spec@nv_copy_image@nv_copy_image-formats --samples=4@Source: GL_RGBA32UI/Destination: GL_RGBA32UI,Fail
 spec@nv_copy_image@nv_copy_image-formats --samples=4@Source: GL_RGBA8/Destination: GL_RGBA8,Fail
 spec@nv_copy_image@nv_copy_image-formats --samples=4@Source: GL_RGBA8_SNORM/Destination: GL_RGBA8_SNORM,Fail
-spec@oes_texture_view@rendering-formats,Crash
 spec@oes_texture_view@sampling-2d-array-as-cubemap,Crash
 spec@!opengl 1.0@gl-1.0-edgeflag-const,Fail
 spec@!opengl 1.0@gl-1.0-edgeflag,Fail
index df1b206..35b91cd 100644 (file)
@@ -429,9 +429,9 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
    FMT(L32_SINT,                R32I,            RRR1, L, VTR_),
    FMT(I32_UINT,                R32UI,           RRRR, L, VTR_),
    FMT(L32_UINT,                R32UI,           RRR1, L, VTR_),
-   FMT(B8G8R8_UINT,             RGB8UI,          BGR1, L, VTR_),
+   FMT(B8G8R8_UINT,             RGB8UI,          BGR1, L, V___),
+   FMT(B8G8R8_SINT,             RGB8I,           BGR1, L, V___),
    FMT(B8G8R8A8_UINT,           RGBA8UI,         BGRA, L, VTR_),
-   FMT(B8G8R8_SINT,             RGB8I,           BGR1, L, VTR_),
    FMT(B8G8R8A8_SINT,           RGBA8I,          BGRA, L, VTR_),
    FMT(A8R8G8B8_UINT,           RGBA8UI,         GBAR, L, VTR_),
    FMT(A8B8G8R8_UINT,           RGBA8UI,         ABGR, L, VTR_),
@@ -441,7 +441,7 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
    FMT(R8G8_UINT,               RG8UI,           RG01, L, VTR_),
    FMT(R16G16_UINT,             RG16UI,          RG01, L, VTR_),
    FMT(R32G32_UINT,             RG32UI,          RG01, L, VTR_),
-   FMT(R8G8B8_UINT,             RGB8UI,          RGB1, L, VTR_),
+   FMT(R8G8B8_UINT,             RGB8UI,          RGB1, L, V___),
    FMT(R32G32B32_UINT,          RGB32UI,         RGB1, L, VTR_),
    FMT(R8G8B8A8_UINT,           RGBA8UI,         RGBA, L, VTR_),
    FMT(R16G16B16A16_UINT,       RGBA16UI,        RGBA, L, VTR_),
@@ -454,7 +454,7 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
    FMT(R16_UNORM,               R16_UNORM,       R001, L, VTR_),
    FMT(R8G8_UNORM,              RG8_UNORM,       RG01, L, VTR_),
    FMT(R16G16_UNORM,            RG16_UNORM,      RG01, L, VTR_),
-   FMT(R8G8B8_UNORM,            RGB8_UNORM,      RGB1, L, VTR_),
+   FMT(R8G8B8_UNORM,            RGB8_UNORM,      RGB1, L, V___),
 
    /* 32-bit NORM is not texturable in v7 onwards. It's renderable
     * everywhere, but rendering without texturing is not useful.
@@ -515,8 +515,8 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
    FMT(L8_SRGB,                 R8_UNORM,        RRR1, S, VTR_),
    FMT(R8_SRGB,                 R8_UNORM,        R001, S, VTR_),
    FMT(R8G8_SRGB,               RG8_UNORM,       RG01, S, VTR_),
-   FMT(R8G8B8_SRGB,             RGB8_UNORM,      RGB1, S, VTR_),
-   FMT(B8G8R8_SRGB,             RGB8_UNORM,      BGR1, S, VTR_),
+   FMT(R8G8B8_SRGB,             RGB8_UNORM,      RGB1, S, V___),
+   FMT(B8G8R8_SRGB,             RGB8_UNORM,      BGR1, S, V___),
    FMT(R8G8B8A8_SRGB,           RGBA8_UNORM,     RGBA, S, VTR_),
    FMT(A8B8G8R8_SRGB,           RGBA8_UNORM,     ABGR, S, VTR_),
    FMT(X8B8G8R8_SRGB,           RGBA8_UNORM,     ABG1, S, VTR_),
@@ -532,7 +532,7 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
    FMT(R16G16_SINT,             RG16I,           RG01, L, VTR_),
    FMT(R32G32_SINT,             RG32I,           RG01, L, VTR_),
    FMT(R16G16_FLOAT,            RG16F,           RG01, L, VTR_),
-   FMT(R8G8B8_SINT,             RGB8I,           RGB1, L, VTR_),
+   FMT(R8G8B8_SINT,             RGB8I,           RGB1, L, V___),
    FMT(R32G32B32_SINT,          RGB32I,          RGB1, L, VTR_),
    FMT(R8G8B8A8_SINT,           RGBA8I,          RGBA, L, VTR_),
    FMT(R16G16B16A16_SINT,       RGBA16I,         RGBA, L, VTR_),