Mesa (master): mesa: add api to write subroutine indicies to the program storage.

Dave Airlie airlied at kemper.freedesktop.org
Tue Aug 23 01:04:15 UTC 2016


Module: Mesa
Branch: master
Commit: ea783667e4fff16fde9dfb76eefcd6aa484077d4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea783667e4fff16fde9dfb76eefcd6aa484077d4

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Jun  7 15:25:56 2016 +1000

mesa: add api to write subroutine indicies to the program storage.

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 <airlied at redhat.com>
Reviewed-by: Andres Gomez <agomez at igalia.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 6631f1e..733fee6 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -2838,6 +2838,16 @@ _mesa_shader_write_subroutine_index(struct gl_context *ctx,
    } while(i < sh->NumSubroutineUniformRemapTable);
 }
 
+void
+_mesa_shader_write_subroutine_indices(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_linked_shader *sh)
diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h
index b3de5fa..4297bfa 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_indices(struct gl_context *ctx,
+                                      gl_shader_stage stage);
 extern void GLAPIENTRY
 _mesa_AttachObjectARB(GLhandleARB, GLhandleARB);
 




More information about the mesa-commit mailing list