[Mesa-dev] [PATCH] st/mesa: do not init limits when compute shaders are not supported
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Feb 15 21:42:07 UTC 2016
On 02/15/2016 10:40 PM, Samuel Pitoiset wrote:
> When the number of uniform blocks is less than 12,
> ARB_uniform_buffer_object can't be enabled and the maximum GL version
> is not even 3.1...
>
> This fixes a regression introduced in 7c79c1e (st/mesa: add compute
> shader state) if the maximum number of uniform blocks allowed for
> compute shaders is less than 12. This happens on Kepler but this might
> also affect other Gallium drivers.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> Reported-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
> Tested-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
> ---
> src/mesa/state_tracker/st_extensions.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
> index bdfbded..8347fec 100644
> --- a/src/mesa/state_tracker/st_extensions.c
> +++ b/src/mesa/state_tracker/st_extensions.c
> @@ -75,6 +75,7 @@ static int _clamp(int a, int min, int max)
> void st_init_limits(struct pipe_screen *screen,
> struct gl_constants *c, struct gl_extensions *extensions)
> {
> + int supported_irs;
> unsigned sh;
> boolean can_ubo = TRUE;
>
> @@ -177,6 +178,13 @@ void st_init_limits(struct pipe_screen *screen,
> case PIPE_SHADER_COMPUTE:
> pc = &c->Program[MESA_SHADER_COMPUTE];
> options = &c->ShaderCompilerOptions[MESA_SHADER_COMPUTE];
> +
> + if (!screen->get_param(screen, PIPE_CAP_COMPUTE))
> + continue;
> + supported_irs =
> + screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_SUPPORTED_IRS);
> + if (!(compute_supported_irs & (1 << PIPE_SHADER_IR_TGSI)))
Wrong version, this should be supported_irs.
> + continue;
> break;
> default:
> assert(0);
>
More information about the mesa-dev
mailing list