If user doesn't compile with glew 1.6, cut out program binaries so everything still compiles.

This commit is contained in:
Ryan Houdek 2011-12-24 00:37:13 -06:00
parent 9bc6b83fd0
commit b90fa37c60
2 changed files with 14 additions and 2 deletions

View File

@ -137,9 +137,10 @@ namespace OGL
glAttachShader(entry.program.glprogid, entry.program.vsid);
glAttachShader(entry.program.glprogid, entry.program.psid);
#ifdef GLEW_VERSION_4_0
if (g_ActiveConfig.backend_info.bSupportsGLSLCache)
glProgramParameteri(entry.program.glprogid, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE);
#endif
glLinkProgram(entry.program.glprogid);
@ -201,7 +202,7 @@ namespace OGL
glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_ps_vs_ubo, 0, ps_data_size);
glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_ps_vs_ubo, s_vs_data_offset, vs_data_size);
}
#ifdef GLEW_VERSION_4_0
// Read our shader cache, only if supported
if (g_ActiveConfig.backend_info.bSupportsGLSLCache)
{
@ -218,6 +219,7 @@ namespace OGL
glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, Formats);
ProgramFormat = (GLenum)Formats[0]; // We don't really care about format
}
#endif
}
void ProgramShaderCache::Shutdown(void)

View File

@ -79,16 +79,24 @@ struct PROGRAMSHADER
GLint binaryLength;
u8 *Data()
{
#ifdef GLEW_VERSION_4_0
glGetProgramiv(glprogid, GL_PROGRAM_BINARY_LENGTH, &binaryLength);
u8* binary = (u8*)malloc(binaryLength);
glGetProgramBinary(glprogid, binaryLength, NULL, &ProgramFormat, binary);
return binary;
#else
return NULL;
#endif
}
GLint Size()
{
#ifdef GLEW_VERSION_4_0
if(!binaryLength)
glGetProgramiv(glprogid, GL_PROGRAM_BINARY_LENGTH, &binaryLength);
return binaryLength;
#else
return 0;
#endif
}
};
@ -119,6 +127,7 @@ class ProgramShaderCache
public:
void Read(const PROGRAMUID &key, const u8 *value, u32 value_size)
{
#ifdef GLEW_VERSION_4_0
PCacheEntry entry;
// The two shaders might not even exist anymore
@ -139,6 +148,7 @@ class ProgramShaderCache
glUseProgram(entry.program.glprogid);
SetProgramVariables(entry, key);
}
#endif
}
};