swr: fix crashes caused by incorrectly reporting SSBO support
authorjzielins <jan.zielinski@intel.com>
Thu, 10 Dec 2020 11:15:33 +0000 (12:15 +0100)
committerjzielins <jan.zielinski@intel.com>
Thu, 10 Dec 2020 14:54:49 +0000 (15:54 +0100)
Reviewed-by: Krzysztof Raszkowski <krzysztof.raszkowski@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8036>

src/gallium/drivers/swr/swr_screen.cpp

index 4a3a1ee..8bc7a20 100644 (file)
@@ -342,16 +342,17 @@ swr_get_shader_param(struct pipe_screen *screen,
                      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);
-
-   // Todo: compute
-   return 0;
+   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;
+
+   if (param == PIPE_SHADER_CAP_MAX_SHADER_BUFFERS)
+      return 0;
+
+   return gallivm_get_shader_param(param);
 }