Timothy Arceri <timothy.arc...@collabora.com> writes: > This will allow us to store gl_program rather than gl_shader_program > as the current program perstage which allows us to simplify code > that makes use of the CurrentProgram list. > ---
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c > index 10cee7b..4fe26fd 100644 > --- a/src/mesa/main/shaderapi.c > +++ b/src/mesa/main/shaderapi.c > @@ -2853,44 +2863,28 @@ _mesa_shader_write_subroutine_indices(struct > gl_context *ctx, > if (ctx->_Shader->CurrentProgram[stage] && > ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]) > _mesa_shader_write_subroutine_index(ctx, > - > ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]); > + > ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]->Program); > } > > -static void > -_mesa_shader_init_subroutine_defaults(struct gl_context *ctx, > - struct gl_linked_shader *sh) > +void > +_mesa_shader_program_init_subroutine_defaults(struct gl_context *ctx, > + struct gl_program *p) > { > - int i; > - struct gl_subroutine_index_binding *binding = > &ctx->SubroutineIndex[sh->Stage]; > - if (binding->NumIndex != sh->NumSubroutineUniformRemapTable) { > + assert(p); > + > + struct gl_subroutine_index_binding *binding = > &ctx->SubroutineIndex[p->info.stage]; > + if (binding->NumIndex != p->sh.NumSubroutineUniformRemapTable) { > binding->IndexPtr = realloc(binding->IndexPtr, > - sh->NumSubroutineUniformRemapTable * > (sizeof(GLuint))); > - binding->NumIndex = sh->NumSubroutineUniformRemapTable; > + p->sh.NumSubroutineUniformRemapTable * > (sizeof(GLuint))); > + binding->NumIndex = p->sh.NumSubroutineUniformRemapTable; > } > > - for (i = 0; i < sh->NumSubroutineUniformRemapTable; i++) { > - struct gl_uniform_storage *uni = sh->SubroutineUniformRemapTable[i]; > + for (int i = 0; i < p->sh.NumSubroutineUniformRemapTable; i++) { > + struct gl_uniform_storage *uni = p->sh.SubroutineUniformRemapTable[i]; > > if (!uni) > continue; > > - binding->IndexPtr[i] = find_compat_subroutine(sh, uni->type); > - } > -} > - > -void > -_mesa_shader_program_init_subroutine_defaults(struct gl_context *ctx, > - struct gl_shader_program > *shProg) > -{ > - int i; > - > - if (!shProg) > - return; > - > - for (i = 0; i < MESA_SHADER_STAGES; i++) { > - if (!shProg->_LinkedShaders[i]) > - continue; > - > - _mesa_shader_init_subroutine_defaults(ctx, shProg->_LinkedShaders[i]); > + binding->IndexPtr[i] = find_compat_subroutine(p, uni->type); > } > } The change in signature of mesa_shader_init_subroutine_defaults() forces moving its loop out to the callers in this patch. It gets cleaned up a bit in patch 49, but it doesn't seem to belong here. Also, if it's taking a program instead of a shader_program, it seems like it should be called _mesa_program, instead.
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev