mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 17:20:10 +01:00
mesa/sso: Implement _mesa_ActiveShaderProgram
This was originally included in another patch, but it was split out by Ian Romanick. v2 (idr): Return early from _mesa_ActiveShaderProgram if _mesa_lookup_shader_program_err returns an error. Suggested by Jordan. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> [v2]
This commit is contained in:
parent
e9ff3b9918
commit
c171834b49
1 changed files with 28 additions and 0 deletions
|
|
@ -223,6 +223,34 @@ _mesa_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
|
|||
void GLAPIENTRY
|
||||
_mesa_ActiveShaderProgram(GLuint pipeline, GLuint program)
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct gl_shader_program *shProg = NULL;
|
||||
struct gl_pipeline_object *pipe = lookup_pipeline_object(ctx, pipeline);
|
||||
|
||||
if (program != 0) {
|
||||
shProg = _mesa_lookup_shader_program_err(ctx, program,
|
||||
"glActiveShaderProgram(program)");
|
||||
if (shProg == NULL)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!pipe) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, "glActiveShaderProgram(pipeline)");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Object is created by any Pipeline call but glGenProgramPipelines,
|
||||
* glIsProgramPipeline and GetProgramPipelineInfoLog
|
||||
*/
|
||||
pipe->EverBound = GL_TRUE;
|
||||
|
||||
if ((shProg != NULL) && !shProg->LinkStatus) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glActiveShaderProgram(program %u not linked)", shProg->Name);
|
||||
return;
|
||||
}
|
||||
|
||||
_mesa_reference_shader_program(ctx, &pipe->ActiveProgram, shProg);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue