Commit 3ce8dbcd by apatrick@chromium.org

Add placeholder entry points for GL_OES_get_program_binary.

Review URL: https://codereview.appspot.com/6279054 git-svn-id: https://angleproject.googlecode.com/svn/trunk@1146 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 430f5e0c
...@@ -238,6 +238,11 @@ typedef void* GLeglImageOES; ...@@ -238,6 +238,11 @@ typedef void* GLeglImageOES;
#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
#endif #endif
/* GL_ANGLE_program_binary */
#ifndef GL_ANGLE_program_binary
#define GL_PROGRAM_BINARY_ANGLE 0x93A6
#endif
/*------------------------------------------------------------------------* /*------------------------------------------------------------------------*
* APPLE extension tokens * APPLE extension tokens
*------------------------------------------------------------------------*/ *------------------------------------------------------------------------*/
...@@ -1487,6 +1492,11 @@ typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); ...@@ -1487,6 +1492,11 @@ typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
#define GL_VIV_shader_binary 1 #define GL_VIV_shader_binary 1
#endif #endif
/* GL_ANGLE_program_binary */
#ifndef GL_ANGLE_program_binary
#define GL_ANGLE_program_binary 1
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
...@@ -1653,6 +1653,12 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1653,6 +1653,12 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
case GL_RESET_NOTIFICATION_STRATEGY_EXT: case GL_RESET_NOTIFICATION_STRATEGY_EXT:
*params = mResetStrategy; *params = mResetStrategy;
break; break;
case GL_NUM_PROGRAM_BINARY_FORMATS_OES:
*params = 1;
break;
case GL_PROGRAM_BINARY_FORMATS_OES:
*params = GL_PROGRAM_BINARY_ANGLE;
break;
default: default:
return false; return false;
} }
...@@ -1744,6 +1750,8 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu ...@@ -1744,6 +1750,8 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu
case GL_TEXTURE_BINDING_2D: case GL_TEXTURE_BINDING_2D:
case GL_TEXTURE_BINDING_CUBE_MAP: case GL_TEXTURE_BINDING_CUBE_MAP:
case GL_RESET_NOTIFICATION_STRATEGY_EXT: case GL_RESET_NOTIFICATION_STRATEGY_EXT:
case GL_NUM_PROGRAM_BINARY_FORMATS_OES:
case GL_PROGRAM_BINARY_FORMATS_OES:
{ {
*type = GL_INT; *type = GL_INT;
*numParams = 1; *numParams = 1;
...@@ -3722,6 +3730,7 @@ void Context::initExtensionString() ...@@ -3722,6 +3730,7 @@ void Context::initExtensionString()
} }
mExtensionString += "GL_OES_packed_depth_stencil "; mExtensionString += "GL_OES_packed_depth_stencil ";
//mExtensionString += "GL_OES_get_program_binary ";
mExtensionString += "GL_OES_rgb8_rgba8 "; mExtensionString += "GL_OES_rgb8_rgba8 ";
mExtensionString += "GL_OES_standard_derivatives "; mExtensionString += "GL_OES_standard_derivatives ";
......
...@@ -188,6 +188,12 @@ ProgramBinary* Program::getProgramBinary() ...@@ -188,6 +188,12 @@ ProgramBinary* Program::getProgramBinary()
return mProgramBinary; return mProgramBinary;
} }
void Program::setProgramBinary(ProgramBinary *programBinary)
{
unlink(false);
mProgramBinary = programBinary;
}
void Program::release() void Program::release()
{ {
mRefCount--; mRefCount--;
......
...@@ -50,6 +50,7 @@ class Program ...@@ -50,6 +50,7 @@ class Program
void bindAttributeLocation(GLuint index, const char *name); void bindAttributeLocation(GLuint index, const char *name);
void link(); void link();
void setProgramBinary(ProgramBinary *programBinary);
ProgramBinary *getProgramBinary(); ProgramBinary *getProgramBinary();
int getInfoLogLength() const; int getInfoLogLength() const;
......
...@@ -3421,6 +3421,9 @@ void __stdcall glGetProgramiv(GLuint program, GLenum pname, GLint* params) ...@@ -3421,6 +3421,9 @@ void __stdcall glGetProgramiv(GLuint program, GLenum pname, GLint* params)
case GL_ACTIVE_UNIFORM_MAX_LENGTH: case GL_ACTIVE_UNIFORM_MAX_LENGTH:
*params = programObject->getActiveUniformMaxLength(); *params = programObject->getActiveUniformMaxLength();
return; return;
case GL_PROGRAM_BINARY_LENGTH_OES:
*params = 0;
return;
default: default:
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
...@@ -6818,6 +6821,79 @@ void __stdcall glTexImage3DOES(GLenum target, GLint level, GLenum internalformat ...@@ -6818,6 +6821,79 @@ void __stdcall glTexImage3DOES(GLenum target, GLint level, GLenum internalformat
} }
} }
void __stdcall glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length,
GLenum *binaryFormat, void *binary)
{
EVENT("(GLenum program = 0x%X, bufSize = %s, length = 0x%0.8p, binaryFormat = 0x%0.8p, binary = 0x%0.8p)",
program, bufSize, length, binaryFormat, binary);
try
{
gl::Context *context = gl::getNonLostContext();
if (context)
{
gl::Program *programObject = context->getProgram(program);
if (!programObject)
{
return error(GL_INVALID_OPERATION);
}
gl::ProgramBinary *programBinary = programObject->getProgramBinary();
if (!programBinary)
{
return error(GL_INVALID_OPERATION);
}
*binaryFormat = GL_PROGRAM_BINARY_ANGLE;
if (length)
{
*length = 0;
}
}
}
catch(std::bad_alloc&)
{
return error(GL_OUT_OF_MEMORY);
}
}
void __stdcall glProgramBinaryOES(GLuint program, GLenum binaryFormat,
const void *binary, GLint length)
{
EVENT("(GLenum program = 0x%X, binaryFormat = 0x%x, binary = 0x%0.8p, length = %d)",
program, binaryFormat, binary, length);
try
{
gl::Context *context = gl::getNonLostContext();
if (context)
{
if (binaryFormat != GL_PROGRAM_BINARY_ANGLE)
{
return error(GL_INVALID_ENUM);
}
gl::Program *programObject = context->getProgram(program);
if (!programObject)
{
return error(GL_INVALID_OPERATION);
}
programObject->setProgramBinary(NULL);
}
}
catch(std::bad_alloc&)
{
return error(GL_OUT_OF_MEMORY);
}
}
__eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname) __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *procname)
{ {
struct Extension struct Extension
...@@ -6854,7 +6930,8 @@ __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char * ...@@ -6854,7 +6930,8 @@ __eglMustCastToProperFunctionPointerType __stdcall glGetProcAddress(const char *
{"glVertexAttribDivisorANGLE", (__eglMustCastToProperFunctionPointerType)glVertexAttribDivisorANGLE}, {"glVertexAttribDivisorANGLE", (__eglMustCastToProperFunctionPointerType)glVertexAttribDivisorANGLE},
{"glDrawArraysInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawArraysInstancedANGLE}, {"glDrawArraysInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawArraysInstancedANGLE},
{"glDrawElementsInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawElementsInstancedANGLE}, {"glDrawElementsInstancedANGLE", (__eglMustCastToProperFunctionPointerType)glDrawElementsInstancedANGLE},
}; {"glGetProgramBinaryOES", (__eglMustCastToProperFunctionPointerType)glGetProgramBinaryOES},
{"glProgramBinaryOES", (__eglMustCastToProperFunctionPointerType)glProgramBinaryOES}, };
for (int ext = 0; ext < sizeof(glExtensions) / sizeof(Extension); ext++) for (int ext = 0; ext < sizeof(glExtensions) / sizeof(Extension); ext++)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment