From 7b578c12497cfea2249467951e270993462ff4a9 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 25 Oct 2021 12:57:15 -0700 Subject: [PATCH] freedreno/a6xx: Emit a null descriptor for unoccupied IBO slots. Fixes a crash in some desktop GL testcases in piglit. Cc: mesa-stable Part-of: --- src/freedreno/ci/freedreno-a630-fails.txt | 8 +++----- src/gallium/drivers/freedreno/a6xx/fd6_image.c | 6 ++++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/freedreno/ci/freedreno-a630-fails.txt b/src/freedreno/ci/freedreno-a630-fails.txt index f2671ee..7db977a 100644 --- a/src/freedreno/ci/freedreno-a630-fails.txt +++ b/src/freedreno/ci/freedreno-a630-fails.txt @@ -246,9 +246,6 @@ spec@arb_texture_rg@texwrap formats-int bordercolor-swizzled@GL_RG32UI- swizzled spec@arb_texture_rg@texwrap formats-int bordercolor-swizzled@GL_RG8I- swizzled- border color only,Fail spec@arb_texture_rg@texwrap formats-int bordercolor-swizzled@GL_RG8UI- swizzled- border color only,Fail -# segfault on fd6_emit_image_tex() of null image resource -spec@arb_texture_view@bug-layers-image,Crash - spec@arb_texture_view@mipgen,Fail spec@arb_texture_view@rendering-layers-image,Fail spec@arb_texture_view@rendering-layers-image@layers rendering of image1DArray,Fail @@ -508,8 +505,9 @@ spec@nv_copy_depth_to_color@nv_copy_depth_to_color 1 0x223344ff,Crash spec@nv_copy_depth_to_color@nv_copy_depth_to_color 1 0x76356278,Crash spec@nv_copy_depth_to_color@nv_copy_depth_to_color,Crash -# segfault on fd6_emit_image_tex() of null image resource -spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3,Crash +spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3@oes_egl_image_external_essl3_imageLoad,Fail +spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3@oes_egl_image_external_essl3_imageStore,Fail +spec@oes_egl_image_external_essl3@oes_egl_image_external_essl3,Fail # "MESA: error: unknown vertex shader output name: VARYING_SLOT_EDGE # gl-2.0-edgeflag: ../src/freedreno/ir3/ir3_context.c:411: ir3_context_error: Assertion `!""' failed." diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_image.c b/src/gallium/drivers/freedreno/a6xx/fd6_image.c index 61c6ccb..347d83a 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_image.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_image.c @@ -174,6 +174,12 @@ translate_buf(struct fd6_image *img, const struct pipe_shader_buffer *pimg) static void emit_image_tex(struct fd_ringbuffer *ring, struct fd6_image *img) { + if (!img->prsc) { + for (int i = 0; i < FDL6_TEX_CONST_DWORDS; i++) + OUT_RING(ring, 0); + return; + } + struct fd_resource *rsc = fd_resource(img->prsc); bool ubwc_enabled = fd_resource_ubwc_enabled(rsc, img->level); -- 2.7.4