mesa: change init subroutine defaults helper to work per gl_program
A later patch will result in SSO programs calling this helper per gl_program rather than per gl_shader_program. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
90d950038f
commit
aad93402c0
|
@ -468,8 +468,14 @@ _mesa_bind_pipeline(struct gl_context *ctx,
|
||||||
|
|
||||||
FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS);
|
FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS);
|
||||||
|
|
||||||
for (i = 0; i < MESA_SHADER_STAGES; i++)
|
for (i = 0; i < MESA_SHADER_STAGES; i++) {
|
||||||
_mesa_shader_program_init_subroutine_defaults(ctx, ctx->_Shader->CurrentProgram[i]);
|
if (ctx->_Shader->CurrentProgram[i]) {
|
||||||
|
struct gl_linked_shader *sh =
|
||||||
|
ctx->_Shader->CurrentProgram[i]->_LinkedShaders[i];
|
||||||
|
if (sh)
|
||||||
|
_mesa_program_init_subroutine_defaults(ctx, sh->Program);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1221,8 +1221,15 @@ use_shader_program(struct gl_context *ctx, gl_shader_stage stage,
|
||||||
if ((shProg != NULL) && (shProg->_LinkedShaders[stage] == NULL))
|
if ((shProg != NULL) && (shProg->_LinkedShaders[stage] == NULL))
|
||||||
shProg = NULL;
|
shProg = NULL;
|
||||||
|
|
||||||
if (shProg)
|
if (shProg) {
|
||||||
_mesa_shader_program_init_subroutine_defaults(ctx, shProg);
|
for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
|
||||||
|
struct gl_linked_shader *sh = shProg->_LinkedShaders[i];
|
||||||
|
if (!sh)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
_mesa_program_init_subroutine_defaults(ctx, sh->Program);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (*target != shProg) {
|
if (*target != shProg) {
|
||||||
/* Program is current, flush it */
|
/* Program is current, flush it */
|
||||||
|
@ -2875,7 +2882,7 @@ _mesa_shader_write_subroutine_indices(struct gl_context *ctx,
|
||||||
ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]->Program);
|
ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]->Program);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
_mesa_program_init_subroutine_defaults(struct gl_context *ctx,
|
_mesa_program_init_subroutine_defaults(struct gl_context *ctx,
|
||||||
struct gl_program *p)
|
struct gl_program *p)
|
||||||
{
|
{
|
||||||
|
@ -2897,20 +2904,3 @@ _mesa_program_init_subroutine_defaults(struct gl_context *ctx,
|
||||||
binding->IndexPtr[i] = find_compat_subroutine(p, uni->type);
|
binding->IndexPtr[i] = find_compat_subroutine(p, 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_program_init_subroutine_defaults(ctx, shProg->_LinkedShaders[i]->Program);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -288,8 +288,8 @@ _mesa_PatchParameterfv(GLenum pname, const GLfloat *values);
|
||||||
|
|
||||||
/* GL_ARB_shader_subroutine */
|
/* GL_ARB_shader_subroutine */
|
||||||
void
|
void
|
||||||
_mesa_shader_program_init_subroutine_defaults(struct gl_context *ctx,
|
_mesa_program_init_subroutine_defaults(struct gl_context *ctx,
|
||||||
struct gl_shader_program *shProg);
|
struct gl_program *prog);
|
||||||
|
|
||||||
extern GLint GLAPIENTRY
|
extern GLint GLAPIENTRY
|
||||||
_mesa_GetSubroutineUniformLocation(GLuint program, GLenum shadertype,
|
_mesa_GetSubroutineUniformLocation(GLuint program, GLenum shadertype,
|
||||||
|
|
Loading…
Reference in New Issue