From: Jordan Justen <jordan.l.jus...@intel.com> V2: call generic _mesa_get_program_binary() helper rather than driver function directly to allow greater code sharing.
Signed-off-by: Timothy Arceri <tarc...@itsqueeze.com> Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> (v1) Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> (v1) --- src/mesa/main/shaderapi.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 82a7fde697b..b728b320ac4 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -2192,26 +2192,29 @@ _mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, * INVALID_OPERATION error. */ if (!shProg->data->LinkStatus) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetProgramBinary(program %u not linked)", shProg->Name); *length = 0; return; } - *length = 0; - _mesa_error(ctx, GL_INVALID_OPERATION, - "glGetProgramBinary(driver supports zero binary formats)"); - - (void) binaryFormat; - (void) binary; + if (ctx->Const.NumProgramBinaryFormats == 0) { + *length = 0; + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetProgramBinary(driver supports zero binary formats)"); + } else { + _mesa_get_program_binary(ctx, shProg, bufSize, length, binaryFormat, + binary); + assert(*length == 0 || *binaryFormat == GL_PROGRAM_BINARY_FORMAT_MESA); + } } void GLAPIENTRY _mesa_ProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length) { struct gl_shader_program *shProg; GET_CURRENT_CONTEXT(ctx); shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramBinary"); -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev