Signed-off-by: Jordan Justen <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
---
src/mesa/main/dd.h | 12 ++++++++++++
src/mesa/main/shaderapi.c | 8 +++++++-
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index da03b2e8b94..91eff55f84d 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -1126,6 +1126,18 @@ struct dd_function_table {
GLuint64 size,
int fd);
/*@}*/
+
+ /**
+ * \name GL_ARB_get_program_binary
+ */
+ /*@{*/
+ /**
+ * Called to retrieve a binary serialized copy of the current program.
+ */
+ void (*GetProgramBinaryLength)(struct gl_context *ctx,
+ struct gl_shader_program *shProg,
+ GLint *length);
+ /*@}*/
};
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 72824355838..f12825d2536 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -834,7 +834,13 @@ get_programiv(struct gl_context *ctx, GLuint program,
GLenum pname,
*params = shProg->BinaryRetreivableHint;
return;
case GL_PROGRAM_BINARY_LENGTH:
- *params = 0;
+ assert(ctx->Const.NumProgramBinaryFormats == 0 ||
+ ctx->Driver.GetProgramBinaryLength);
+ if (ctx->Const.NumProgramBinaryFormats == 0) {
+ *params = 0;
+ } else {
+ ctx->Driver.GetProgramBinaryLength(ctx, shProg, params);
+ }
return;
case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS:
if (!ctx->Extensions.ARB_shader_atomic_counters)
--
2.14.1
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev