[Mesa-dev] [PATCH 14/23] main: add binary support to GetProgramBinary
Timothy Arceri
tarceri at itsqueeze.com
Wed Nov 29 01:24:50 UTC 2017
From: Jordan Justen <jordan.l.justen at 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 <tarceri at itsqueeze.com>
Signed-off-by: Jordan Justen <jordan.l.justen at intel.com> (v1)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at 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
More information about the mesa-dev
mailing list