Timothy Arceri <[email protected]> writes: > --- > src/mapi/glapi/gen/ARB_separate_shader_objects.xml | 2 +- > src/mesa/main/pipelineobj.c | 21 +++++++++++++++++++++ > src/mesa/main/pipelineobj.h | 3 +++ > 3 files changed, 25 insertions(+), 1 deletion(-) > > diff --git a/src/mapi/glapi/gen/ARB_separate_shader_objects.xml > b/src/mapi/glapi/gen/ARB_separate_shader_objects.xml > index 26a7afa..9b17a4e 100644 > --- a/src/mapi/glapi/gen/ARB_separate_shader_objects.xml > +++ b/src/mapi/glapi/gen/ARB_separate_shader_objects.xml > @@ -8,21 +8,21 @@ > <enum name="ACTIVE_PROGRAM" > value="0x8259"/> > <enum name="PROGRAM_PIPELINE_BINDING" > value="0x825A"/> > <enum name="VERTEX_SHADER_BIT" > value="0x00000001"/> > <enum name="FRAGMENT_SHADER_BIT" > value="0x00000002"/> > <enum name="GEOMETRY_SHADER_BIT" > value="0x00000004"/> > <enum name="TESS_CONTROL_SHADER_BIT" > value="0x00000008"/> > <enum name="TESS_EVALUATION_SHADER_BIT" > value="0x00000010"/> > <enum name="ALL_SHADER_BITS" > value="0xFFFFFFFF"/> > <enum name="PROGRAM_SEPARABLE" > value="0x8258"/> > > - <function name="UseProgramStages" es2="3.1"> > + <function name="UseProgramStages" es2="3.1" no_error="true"> > <param name="pipeline" type="GLuint" /> > <param name="stages" type="GLbitfield" /> > <param name="program" type="GLuint" /> > </function> > <function name="ActiveShaderProgram" es2="3.1"> > <param name="pipeline" type="GLuint" /> > <param name="program" type="GLuint" /> > </function> > <function name="CreateShaderProgramv" es2="3.1"> > <param name="type" type="GLenum" /> > diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c > index 047c0a3..b6a4332 100644 > --- a/src/mesa/main/pipelineobj.c > +++ b/src/mesa/main/pipelineobj.c > @@ -249,20 +249,41 @@ use_program_stages(struct gl_context *ctx, struct > gl_shader_program *shProg, > > if ((stages & GL_TESS_EVALUATION_SHADER_BIT) != 0) > use_program_stage(ctx, GL_TESS_EVALUATION_SHADER, shProg, pipe); > > if ((stages & GL_COMPUTE_SHADER_BIT) != 0) > use_program_stage(ctx, GL_COMPUTE_SHADER, shProg, pipe); > > pipe->Validated = false; > } > > +void GLAPIENTRY > +_mesa_UseProgramStages_no_error(GLuint pipeline, GLbitfield stages, > + GLuint prog) > +{ > + GET_CURRENT_CONTEXT(ctx); > + > + struct gl_pipeline_object *pipe = > + _mesa_lookup_pipeline_object(ctx, pipeline); > + struct gl_shader_program *shProg = NULL; > + > + if (prog) > + _mesa_lookup_shader_program(ctx, prog); > + > + /* Object is created by any Pipeline call but glGenProgramPipelines, > + * glIsProgramPipeline and GetProgramPipelineInfoLog > + */ > + pipe->EverBound = GL_TRUE; > + > + use_program_stages(ctx, shProg, stages, pipe); > +}
Does EverBound need to be set before the validation in the other path? Wondering if we can just move EverBound setting to use_program_stages().
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
