Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> --- 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 mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev