From: Dave Airlie <airl...@redhat.com> This writes the subroutine indicies to the program storage for a stage. This API is intended to be used by drivers to update the uniform storage before uploading to the hw.
This isn't the most thread safe effort, but it will be significantly more multi-context safe. Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/mesa/main/shaderapi.c | 10 ++++++++++ src/mesa/main/shaderapi.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 818a88d..07c581f 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -2816,6 +2816,16 @@ _mesa_shader_write_subroutine_index(struct gl_context *ctx, } while(i < sh->NumSubroutineUniformRemapTable); } +void +_mesa_shader_write_subroutine_indicies(struct gl_context *ctx, + gl_shader_stage stage) +{ + if (ctx->_Shader->CurrentProgram[stage] && + ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]) + _mesa_shader_write_subroutine_index(ctx, + ctx->_Shader->CurrentProgram[stage]->_LinkedShaders[stage]); +} + static void _mesa_shader_init_subroutine_defaults(struct gl_context *ctx, struct gl_shader *sh) diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index b3de5fa..968cf97 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -69,6 +69,9 @@ _mesa_count_active_attribs(struct gl_shader_program *shProg); extern size_t _mesa_longest_attribute_name_length(struct gl_shader_program *shProg); +extern void +_mesa_shader_write_subroutine_indicies(struct gl_context *ctx, + gl_shader_stage stage); extern void GLAPIENTRY _mesa_AttachObjectARB(GLhandleARB, GLhandleARB); -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev