[Mesa-dev] [PATCH 2/2] mesa/sso: Add compute shader support
Lofstedt, Marta
marta.lofstedt at intel.com
Thu Oct 29 02:56:59 PDT 2015
Reviewed-by: Marta Lofstedt <marta.lofstedt at intel.com>
> -----Original Message-----
> From: mesa-dev [mailto:mesa-dev-bounces at lists.freedesktop.org] On
> Behalf Of Jordan Justen
> Sent: Thursday, October 29, 2015 8:52 AM
> To: mesa-dev at lists.freedesktop.org
> Subject: [Mesa-dev] [PATCH 2/2] mesa/sso: Add compute shader support
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
> src/mesa/main/api_validate.c | 2 +-
> src/mesa/main/pipelineobj.c | 11 +++++++++++
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
> index c59b6f3..46f39e7 100644
> --- a/src/mesa/main/api_validate.c
> +++ b/src/mesa/main/api_validate.c
> @@ -923,7 +923,7 @@ check_valid_to_compute(struct gl_context *ctx,
> const char *function)
> * "An INVALID_OPERATION error is generated if there is no active program
> * for the compute shader stage."
> */
> - prog = ctx->Shader.CurrentProgram[MESA_SHADER_COMPUTE];
> + prog = ctx->_Shader->CurrentProgram[MESA_SHADER_COMPUTE];
> if (prog == NULL || prog->_LinkedShaders[MESA_SHADER_COMPUTE] ==
> NULL) {
> _mesa_error(ctx, GL_INVALID_OPERATION,
> "%s(no active compute shader)", diff --git
> a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c index
> c8c50fa..58730f4 100644
> --- a/src/mesa/main/pipelineobj.c
> +++ b/src/mesa/main/pipelineobj.c
> @@ -255,6 +255,8 @@ _mesa_UseProgramStages(GLuint pipeline, GLbitfield
> stages, GLuint program)
> if (_mesa_has_tessellation(ctx))
> any_valid_stages |= GL_TESS_CONTROL_SHADER_BIT |
> GL_TESS_EVALUATION_SHADER_BIT;
> + if (_mesa_has_compute_shaders(ctx))
> + any_valid_stages |= GL_COMPUTE_SHADER_BIT;
>
> if (stages != GL_ALL_SHADER_BITS && (stages & ~any_valid_stages) != 0) {
> _mesa_error(ctx, GL_INVALID_VALUE, "glUseProgramStages(Stages)");
> @@ -336,6 +338,9 @@ _mesa_UseProgramStages(GLuint pipeline, GLbitfield
> stages, GLuint program)
>
> if ((stages & GL_TESS_EVALUATION_SHADER_BIT) != 0)
> _mesa_use_shader_program(ctx, GL_TESS_EVALUATION_SHADER,
> shProg, pipe);
> +
> + if ((stages & GL_COMPUTE_SHADER_BIT) != 0)
> + _mesa_use_shader_program(ctx, GL_COMPUTE_SHADER, shProg,
> pipe);
> }
>
> /**
> @@ -669,6 +674,12 @@ _mesa_GetProgramPipelineiv(GLuint pipeline,
> GLenum pname, GLint *params)
> *params = pipe->CurrentProgram[MESA_SHADER_FRAGMENT]
> ? pipe->CurrentProgram[MESA_SHADER_FRAGMENT]->Name : 0;
> return;
> + case GL_COMPUTE_SHADER:
> + if (!_mesa_has_compute_shaders(ctx))
> + break;
> + *params = pipe->CurrentProgram[MESA_SHADER_COMPUTE]
> + ? pipe->CurrentProgram[MESA_SHADER_COMPUTE]->Name : 0;
> + return;
> default:
> break;
> }
> --
> 2.5.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list