From 3fe747a0feb357cd7ad47e44caadcdbcdf719461 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Sat, 1 Dec 2012 19:14:21 -0800 Subject: [PATCH] mesa: Add stub implementations of glGetProgramBinary and glProgramBinary Signed-off-by: Ian Romanick Reviewed-by: Kenneth Graunke --- src/mesa/main/shaderapi.c | 55 +++++++++++++++++++++++++++++++++++++++ src/mesa/main/shaderapi.h | 8 ++++++ 2 files changed, 63 insertions(+) diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 19fa6fc30e6..bf738b94185 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -1500,6 +1500,61 @@ _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, #endif /* FEATURE_ES2 */ +void GLAPIENTRY +_mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, + GLenum *binaryFormat, GLvoid *binary) +{ + struct gl_shader_program *shProg; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetProgramBinary"); + if (!shProg) + return; + + if (!shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetProgramBinary(program %u not linked)", + shProg->Name); + return; + } + + if (bufSize < 0){ + _mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramBinary(bufSize < 0)"); + return; + } + + /* The ARB_get_program_binary spec says: + * + * "If is NULL, then no length is returned." + */ + if (length != NULL) + *length = 0; + + (void) binaryFormat; + (void) binary; +} + +void GLAPIENTRY +_mesa_ProgramBinary(GLuint program, GLenum binaryFormat, + const GLvoid *binary, GLsizei length) +{ + struct gl_shader_program *shProg; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramBinary"); + if (!shProg) + return; + + (void) binaryFormat; + (void) binary; + (void) length; + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); +} + void GLAPIENTRY _mesa_ProgramParameteri(GLuint program, GLenum pname, GLint value) diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index 53d83032803..d3199db9667 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -189,6 +189,14 @@ extern void GLAPIENTRY _mesa_ShaderBinary(GLint n, const GLuint *shaders, GLenum binaryformat, const void* binary, GLint length); +extern void GLAPIENTRY +_mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, + GLenum *binaryFormat, GLvoid *binary); + +extern void GLAPIENTRY +_mesa_ProgramBinary(GLuint program, GLenum binaryFormat, + const GLvoid *binary, GLsizei length); + extern void GLAPIENTRY _mesa_ProgramParameteri(GLuint program, GLenum pname, GLint value); -- 2.30.2