Ian Romanick <i...@freedesktop.org> writes: > From: Gregory Hainaut <gregory.hain...@gmail.com> > > Implementation note: > I don't use context for ralloc (don't know how). > > The check on PROGRAM_SEPARABLE flags is also done when the pipeline > isn't bound. It doesn't make any sense in a DSA style API. > > Maybe we could replace _mesa_validate_program by > _mesa_validate_program_pipeline. For example we could recreate a dummy > pipeline object. However the new function checks also the > TEXTURE_IMAGE_UNIT number not sure of the impact. > > V2: > Fix memory leak with ralloc_strdup > Formatting improvement > > V3 (idr): > * Actually fix the leak of the InfoLog. :) > * Directly generate logs in to gl_pipeline_object::InfoLog via > ralloc_asprintf isntead of using a temporary buffer. > * Split out from previous uber patch. > * Change spec references to include section numbers, etc. > * Fix a bug in checking that a different program isn't active in a stage > between two stages that have the same program. Specifically, > > if (pipe->CurrentVertexProgram->Name == pipe->CurrentGeometryProgram->Name && > pipe->CurrentGeometryProgram->Name != pipe->CurrentVertexProgram->Name) > > should have been > > if (pipe->CurrentVertexProgram->Name == pipe->CurrentFragmentProgram->Name && > pipe->CurrentGeometryProgram->Name != pipe->CurrentVertexProgram->Name) > > v4 (idr): Rework to use CurrentProgram array in loops. > > Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
> diff --git a/src/mesa/main/pipelineobj.c b/src/mesa/main/pipelineobj.c > index 3db97c0..d371e88 100644 > --- a/src/mesa/main/pipelineobj.c > +++ b/src/mesa/main/pipelineobj.c > + /* Section 2.11.11 (Shader Execution), subheading "Validation," of the > + * OpenGL 4.1 spec says: > + * > + * "[INVALID_OPERATION] is generated by any command that transfers > + * vertices to the GL if: > + * > + * ... > + * > + * - Any two active samplers in the current program object are of > + * different types, but refer to the same texture image unit. > + * > + * - The number of active samplers in the program exceeds the > + * maximum number of texture image units allowed." > + */ > + if (!_mesa_sampler_uniforms_pipeline_are_valid(pipe)) > + goto err; > + > + pipe->Validated = GL_TRUE; > + return GL_TRUE; What ensures that the sampler validate will be redone when sampler uniforms change?
pgpAzohzUVDZN.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev