[Mesa-dev] [PATCH 1/3] mesa: Add _mesa_has_compute_shaders

Ilia Mirkin imirkin at alum.mit.edu
Fri Feb 13 23:13:01 PST 2015


On Sat, Feb 14, 2015 at 2:02 AM, Ben Widawsky
<benjamin.widawsky at intel.com> wrote:
> From: Jordan Justen <jordan.l.justen at intel.com>
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>  src/mesa/main/context.h | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
> index d902ea7..69389ae 100644
> --- a/src/mesa/main/context.h
> +++ b/src/mesa/main/context.h
> @@ -326,6 +326,17 @@ _mesa_has_geometry_shaders(const struct gl_context *ctx)
>  }
>
>
> +/**
> + * Checks if the context supports compute shaders.
> + */
> +static inline GLboolean
> +_mesa_has_compute_shaders(const struct gl_context *ctx)
> +{
> +   return ctx->Extensions.ARB_compute_shader ||
> +      (ctx->API == API_OPENGLES2 && ctx->Version >= 31);

This will return true for a driver that has compute shader support but
is currently exposing a compat (or GLES1?) context. I guess you want
like

(API == GLES2 && version >= 31) ||
(desktop && version >= 43) ||
(API == CORE && extension)

This seems a little on the complex side though -- a driver that really
supports GLES3.1 or GL4.3 will have that extension bit set -- the only
time that wouldn't happen is if someone forces the version. Not sure
if that's a case to really worry about...

This would be much simpler as

extension && (API == GLES2 || API == CORE)

Cheers,

  -ilia


More information about the mesa-dev mailing list