crocus: fix SIGSEGV crash at pbo compressed teximage

This affects piglit/bin/ext_texture_array-compressed teximage pbo -auto -fbo

Routine create_surface() at src/gallium/drivers/crocus/crocus_state.c
does not suppport compressed format and returns NULL in that case.

Since MR https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34054
routine st_try_pbo_compressed_texsubimage() at src/mesa/state_tracker/st_cb_texture.c is missing a test via pipe->create_surface() and does
not fallback to _mesa_store_compressed_texsubimage() which causes a SIGSEGV abort.

Regression is solved by introducing the variable surface_no_compress at struct pipe_caps, causing the fallback.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13426

Signed-off-by: GKraats <vd.kraats@hccnet.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37150>
This commit is contained in:
GKraats
2025-09-02 23:04:13 +02:00
committed by Marge Bot
parent ef55869dc8
commit 3b5b68dbfb
4 changed files with 7 additions and 0 deletions
+2
View File
@@ -341,6 +341,8 @@ Capability about the features and limits of the driver/GPU.
* ``pipe_caps.generate_mipmap``: Indicates whether pipe_context::generate_mipmap
is supported.
* ``pipe_caps.string_marker``: Whether pipe->emit_string_marker() is supported.
* ``pipe_caps.surface_no_compress``: Indicates that
pipe_context::create_surface does not support compression
* ``pipe_caps.surface_reinterpret_blocks``: Indicates whether
pipe_context::create_surface supports reinterpreting a texture as a surface
of a format with different block width/height (but same block size in bits).