swr: fix crashes caused by incorrectly reporting SSBO support
Reviewed-by: Krzysztof Raszkowski <krzysztof.raszkowski@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8597>
diff --git a/src/gallium/drivers/swr/swr_screen.cpp b/src/gallium/drivers/swr/swr_screen.cpp
index 4a3a1ee..8bc7a20 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -342,16 +342,17 @@
enum pipe_shader_type shader,
enum pipe_shader_cap param)
{
- if (shader == PIPE_SHADER_VERTEX ||
- shader == PIPE_SHADER_FRAGMENT ||
- shader == PIPE_SHADER_GEOMETRY
- || shader == PIPE_SHADER_TESS_CTRL ||
- shader == PIPE_SHADER_TESS_EVAL
- )
- return gallivm_get_shader_param(param);
+ if (shader != PIPE_SHADER_VERTEX &&
+ shader != PIPE_SHADER_FRAGMENT &&
+ shader != PIPE_SHADER_GEOMETRY &&
+ shader != PIPE_SHADER_TESS_CTRL &&
+ shader != PIPE_SHADER_TESS_EVAL)
+ return 0;
- // Todo: compute
- return 0;
+ if (param == PIPE_SHADER_CAP_MAX_SHADER_BUFFERS)
+ return 0;
+
+ return gallivm_get_shader_param(param);
}