Implement other EXT_dsa functions relevant to GL3.2 and above core

* None of these require extra serialisation functions, but some upgraded
  to DSA style serialise instead of selector serialise functions.
* There's a lot of duplication here now (expecially for MultiTex calls).
  This could really do with cleanup soon.
This commit is contained in:
baldurk
2014-12-10 08:18:07 +00:00
parent 37700b3945
commit ddb272c126
9 changed files with 2154 additions and 404 deletions
+25 -25
View File
@@ -1834,19 +1834,19 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glCopyImageSubData(0, eGL_NONE, 0, 0, 0, 0, 0, eGL_NONE, 0, 0, 0, 0, 0, 0, 0);
break;
case COPY_IMAGE1D:
Serialise_glCopyTexImage1D(eGL_NONE, 0, eGL_NONE, 0, 0, 0, 0);
Serialise_glCopyTextureImage1DEXT(0, eGL_NONE, 0, eGL_NONE, 0, 0, 0, 0);
break;
case COPY_IMAGE2D:
Serialise_glCopyTexImage2D(eGL_NONE, 0, eGL_NONE, 0, 0, 0, 0, 0);
Serialise_glCopyTextureImage2DEXT(0, eGL_NONE, 0, eGL_NONE, 0, 0, 0, 0, 0);
break;
case COPY_SUBIMAGE1D:
Serialise_glCopyTexSubImage1D(eGL_NONE, 0, 0, 0, 0, 0);
Serialise_glCopyTextureSubImage1DEXT(0, eGL_NONE, 0, 0, 0, 0, 0);
break;
case COPY_SUBIMAGE2D:
Serialise_glCopyTexSubImage2D(eGL_NONE, 0, 0, 0, 0, 0, 0, 0);
Serialise_glCopyTextureSubImage2DEXT(0, eGL_NONE, 0, 0, 0, 0, 0, 0, 0);
break;
case COPY_SUBIMAGE3D:
Serialise_glCopyTexSubImage3D(eGL_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
Serialise_glCopyTextureSubImage3DEXT(0, eGL_NONE, 0, 0, 0, 0, 0, 0, 0, 0);
break;
case TEXTURE_VIEW:
Serialise_glTextureView(0, eGL_NONE, 0, eGL_NONE, 0, 0, 0, 0);
@@ -1999,16 +1999,16 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glClearBufferfi(eGL_NONE, 0, 0, 0);
break;
case CLEARBUFFERDATA:
Serialise_glClearBufferData(eGL_NONE, eGL_NONE, eGL_NONE, eGL_NONE, NULL);
Serialise_glClearNamedBufferDataEXT(0, eGL_NONE, eGL_NONE, eGL_NONE, NULL);
break;
case CLEARBUFFERSUBDATA:
Serialise_glClearBufferSubData(eGL_NONE, eGL_NONE, 0, 0, eGL_NONE, eGL_NONE, NULL);
Serialise_glClearNamedBufferSubDataEXT(0, eGL_NONE, 0, 0, eGL_NONE, eGL_NONE, NULL);
break;
case CLEARTEXIMAGE:
Serialise_glClearTexImage(0, 0, eGL_NONE, eGL_NONE, NULL);
break;
case CLEARTEXSUBIMAGE:
Serialise_glClearBufferSubData(eGL_NONE, eGL_NONE, 0, 0, eGL_NONE, eGL_NONE, NULL);
Serialise_glClearTexSubImage(0, 0, 0, 0, 0, 0, 0, 0, eGL_NONE, eGL_NONE, NULL);
break;
case POLYGON_MODE:
Serialise_glPolygonMode(eGL_NONE, eGL_NONE);
@@ -2170,13 +2170,13 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glScissorArrayv(0, 0, 0);
break;
case BIND_VERTEXBUFFER:
Serialise_glBindVertexBuffer(0, 0, 0, 0);
Serialise_glVertexArrayBindVertexBufferEXT(0, 0, 0, 0, 0);
break;
case BIND_VERTEXBUFFERS:
Serialise_glBindVertexBuffers(0, 0, NULL, NULL, NULL);
break;
case VERTEXBINDINGDIVISOR:
Serialise_glVertexBindingDivisor(0, 0);
Serialise_glVertexArrayVertexBindingDivisorEXT(0, 0, 0);
break;
case DISPATCH_COMPUTE:
Serialise_glDispatchCompute(0, 0, 0);
@@ -2285,13 +2285,13 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glNamedFramebufferParameteriEXT(0, eGL_NONE, 0);
break;
case READ_BUFFER:
Serialise_glReadBuffer(eGL_NONE);
Serialise_glFramebufferReadBufferEXT(0, eGL_NONE);
break;
case BIND_FRAMEBUFFER:
Serialise_glBindFramebuffer(eGL_NONE, 0);
break;
case DRAW_BUFFER:
Serialise_glDrawBuffer(eGL_NONE);
Serialise_glFramebufferDrawBufferEXT(0, eGL_NONE);
break;
case DRAW_BUFFERS:
Serialise_glFramebufferDrawBuffersEXT(0, 0, NULL);
@@ -2304,10 +2304,10 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glGenRenderbuffers(0, NULL);
break;
case RENDERBUFFER_STORAGE:
Serialise_glRenderbufferStorage(eGL_NONE, eGL_NONE, 0, 0);
Serialise_glNamedRenderbufferStorageEXT(0, eGL_NONE, 0, 0);
break;
case RENDERBUFFER_STORAGEMS:
Serialise_glRenderbufferStorageMultisample(eGL_NONE, 0, eGL_NONE, 0, 0);
Serialise_glNamedRenderbufferStorageMultisampleEXT(0, 0, eGL_NONE, 0, 0);
break;
case GEN_SAMPLERS:
@@ -2372,7 +2372,7 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glUnmapNamedBufferEXT(eGL_NONE);
break;
case FLUSHMAP:
Serialise_glFlushMappedBufferRange(eGL_NONE, 0, 0);
Serialise_glFlushMappedNamedBufferRangeEXT(0, 0, 0);
break;
case GEN_VERTEXARRAY:
Serialise_glGenVertexArrays(0, NULL);
@@ -2381,37 +2381,37 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
Serialise_glBindVertexArray(0);
break;
case VERTEXATTRIBPOINTER:
Serialise_glVertexAttribPointer(0, 0, eGL_NONE, 0, 0, NULL);
Serialise_glVertexArrayVertexAttribOffsetEXT(0, 0, 0, 0, eGL_NONE, 0, 0, NULL);
break;
case VERTEXATTRIBIPOINTER:
Serialise_glVertexAttribIPointer(0, 0, eGL_NONE, 0, NULL);
Serialise_glVertexArrayVertexAttribIOffsetEXT(0, 0, 0, 0, eGL_NONE, 0, NULL);
break;
case VERTEXATTRIBLPOINTER:
Serialise_glVertexAttribLPointer(0, 0, eGL_NONE, 0, NULL);
Serialise_glVertexArrayVertexAttribLOffsetEXT(0, 0, 0, 0, eGL_NONE, 0, NULL);
break;
case ENABLEVERTEXATTRIBARRAY:
Serialise_glEnableVertexAttribArray(0);
Serialise_glEnableVertexArrayAttribEXT(0, 0);
break;
case DISABLEVERTEXATTRIBARRAY:
Serialise_glDisableVertexAttribArray(0);
Serialise_glDisableVertexArrayAttribEXT(0, 0);
break;
case VERTEXATTRIB_GENERIC:
Serialise_glVertexAttrib(0, 0, eGL_NONE, GL_FALSE, NULL, Attrib_packed);
break;
case VERTEXATTRIBFORMAT:
Serialise_glVertexAttribFormat(0, 0, eGL_NONE, 0, 0);
Serialise_glVertexArrayVertexAttribFormatEXT(0, 0, 0, eGL_NONE, 0, 0);
break;
case VERTEXATTRIBIFORMAT:
Serialise_glVertexAttribIFormat(0, 0, eGL_NONE, 0);
Serialise_glVertexArrayVertexAttribIFormatEXT(0, 0, 0, eGL_NONE, 0);
break;
case VERTEXATTRIBLFORMAT:
Serialise_glVertexAttribLFormat(0, 0, eGL_NONE, 0);
Serialise_glVertexArrayVertexAttribLFormatEXT(0, 0, 0, eGL_NONE, 0);
break;
case VERTEXATTRIBDIVISOR:
Serialise_glVertexAttribDivisor(0, 0);
Serialise_glVertexArrayVertexAttribDivisorEXT(0, 0, 0);
break;
case VERTEXATTRIBBINDING:
Serialise_glVertexAttribBinding(0, 0);
Serialise_glVertexArrayVertexAttribBindingEXT(0, 0, 0);
break;
case VAO_ELEMENT_BUFFER:
+80 -7
View File
@@ -857,9 +857,6 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void **params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, void *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params));
enum UniformType
{
@@ -1049,16 +1046,45 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs));
IMPLEMENT_FUNCTION_SERIALISED(void, glGenerateTextureMipmapEXT(GLuint texture, GLenum target));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void *img));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetPointeri_vEXT(GLenum pname, GLuint index, void **params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetPointerIndexedvEXT(GLenum target, GLuint index, void **data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void *img));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void **params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void **param));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void **param));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, void *img));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void *, glMapNamedBufferEXT(GLuint buffer, GLenum access));
IMPLEMENT_FUNCTION_SERIALISED(void *, glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access));
IMPLEMENT_FUNCTION_SERIALISED(void, glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length));
IMPLEMENT_FUNCTION_SERIALISED(GLboolean, glUnmapNamedBufferEXT(GLuint buffer));
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data));
@@ -1070,7 +1096,41 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param));
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode));
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height));
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height));
IMPLEMENT_FUNCTION_SERIALISED(void, glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height));
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint *params));
IMPLEMENT_FUNCTION_SERIALISED(void, glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target));
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer));
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size));
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels));
@@ -1090,5 +1150,18 @@ class WrappedOpenGL
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels));
IMPLEMENT_FUNCTION_SERIALISED(GLboolean, glUnmapNamedBufferEXT(GLuint buffer));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset));
IMPLEMENT_FUNCTION_SERIALISED(void, glEnableVertexArrayEXT(GLuint vaobj, GLenum array));
IMPLEMENT_FUNCTION_SERIALISED(void, glDisableVertexArrayEXT(GLuint vaobj, GLenum array));
IMPLEMENT_FUNCTION_SERIALISED(void, glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index));
IMPLEMENT_FUNCTION_SERIALISED(void, glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset));
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor));
};
+83 -14
View File
@@ -129,8 +129,8 @@ struct GLHookSet
PFNGLGETSTRINGIPROC glGetStringi;
PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
PFNGLGETFLOATI_VPROC glGetFloati_v;
PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
PFNGLGETFLOATI_VPROC glGetFloati_v; // aliases glGetFloati_vEXT
PFNGLGETDOUBLEI_VPROC glGetDoublei_v; // aliases glGetDoublei_vEXT
PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
PFNGLGETINTEGER64VPROC glGetInteger64v;
PFNGLGETSHADERIVPROC glGetShaderiv;
@@ -227,12 +227,7 @@ struct GLHookSet
PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v;
PFNGLGETNAMEDBUFFERPARAMETERIVPROC glGetNamedBufferParameteriv;
PFNGLGETNAMEDBUFFERPOINTERVPROC glGetNamedBufferPointerv;
PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv;
PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glGetNamedFramebufferParameteriv;
PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glGetNamedRenderbufferParameteriv;
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
PFNGLBLENDCOLORPROC glBlendColor;
PFNGLBLENDFUNCIPROC glBlendFunci; // aliases glBlendFunciARB
@@ -285,9 +280,9 @@ struct GLHookSet
PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
PFNGLOBJECTLABELPROC glObjectLabel;
PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
PFNGLENABLEIPROC glEnablei;
PFNGLDISABLEIPROC glDisablei;
PFNGLISENABLEDIPROC glIsEnabledi;
PFNGLENABLEIPROC glEnablei; // aliases glEnableIndexedEXT
PFNGLDISABLEIPROC glDisablei; // aliases glDisableIndexedEXT
PFNGLISENABLEDIPROC glIsEnabledi; // aliases glIsEnabledIndexedEXT
PFNGLISBUFFERPROC glIsBuffer; // aliases glIsBufferARB
PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
PFNGLISPROGRAMPROC glIsProgram;
@@ -620,17 +615,46 @@ struct GLHookSet
PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glCompressedTextureSubImage3DEXT;
PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glFramebufferDrawBuffersEXT;
PFNGLGENERATETEXTUREMIPMAPEXTPROC glGenerateTextureMipmapEXT;
PFNGLGETPOINTERI_VEXTPROC glGetPointeri_vEXT;
PFNGLGETDOUBLEINDEXEDVEXTPROC glGetDoubleIndexedvEXT;
PFNGLGETPOINTERINDEXEDVEXTPROC glGetPointerIndexedvEXT;
PFNGLGETINTEGERINDEXEDVEXTPROC glGetIntegerIndexedvEXT;
PFNGLGETBOOLEANINDEXEDVEXTPROC glGetBooleanIndexedvEXT;
PFNGLGETFLOATINDEXEDVEXTPROC glGetFloatIndexedvEXT;
PFNGLGETMULTITEXIMAGEEXTPROC glGetMultiTexImageEXT;
PFNGLGETMULTITEXPARAMETERFVEXTPROC glGetMultiTexParameterfvEXT;
PFNGLGETMULTITEXPARAMETERIVEXTPROC glGetMultiTexParameterivEXT;
PFNGLGETMULTITEXPARAMETERIIVEXTPROC glGetMultiTexParameterIivEXT;
PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glGetMultiTexParameterIuivEXT;
PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glGetMultiTexLevelParameterfvEXT;
PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glGetMultiTexLevelParameterivEXT;
PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glGetCompressedMultiTexImageEXT;
PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glGetNamedBufferPointervEXT;
PFNGLGETNAMEDPROGRAMIVEXTPROC glGetNamedProgramivEXT;
PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetNamedFramebufferAttachmentParameterivEXT; // aliases glGetNamedFramebufferAttachmentParameteriv
PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glGetNamedBufferParameterivEXT; // aliases glGetNamedBufferParameteriv
PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glGetNamedBufferSubDataEXT; // aliases glGetNamedBufferSubData
PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glGetNamedFramebufferParameterivEXT; // aliases glGetFramebufferParameterivEXT, glGetNamedFramebufferParameteriv
PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glGetNamedRenderbufferParameterivEXT; // aliases glGetNamedRenderbufferParameteriv
PFNGLGETVERTEXARRAYINTEGERVEXTPROC glGetVertexArrayIntegervEXT;
PFNGLGETVERTEXARRAYPOINTERVEXTPROC glGetVertexArrayPointervEXT;
PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glGetVertexArrayIntegeri_vEXT;
PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glGetVertexArrayPointeri_vEXT;
PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glGetCompressedTextureImageEXT;
PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glGetNamedBufferSubDataEXT;
PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glGetNamedBufferParameterivEXT;
PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetNamedFramebufferAttachmentParameterivEXT;
PFNGLGETTEXTUREIMAGEEXTPROC glGetTextureImageEXT;
PFNGLGETTEXTUREPARAMETERIVEXTPROC glGetTextureParameterivEXT;
PFNGLGETTEXTUREPARAMETERFVEXTPROC glGetTextureParameterfvEXT;
PFNGLGETTEXTUREPARAMETERIIVEXTPROC glGetTextureParameterIivEXT;
PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glGetTextureParameterIuivEXT;
PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glGetTextureLevelParameterivEXT;
PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glGetTextureLevelParameterfvEXT;
PFNGLBINDMULTITEXTUREEXTPROC glBindMultiTextureEXT;
PFNGLMAPNAMEDBUFFEREXTPROC glMapNamedBufferEXT;
PFNGLMAPNAMEDBUFFERRANGEEXTPROC glMapNamedBufferRangeEXT;
PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glFlushMappedNamedBufferRangeEXT;
PFNGLUNMAPNAMEDBUFFEREXTPROC glUnmapNamedBufferEXT;
PFNGLCLEARNAMEDBUFFERDATAEXTPROC glClearNamedBufferDataEXT;
PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glClearNamedBufferSubDataEXT;
PFNGLNAMEDBUFFERDATAEXTPROC glNamedBufferDataEXT;
PFNGLNAMEDBUFFERSTORAGEEXTPROC glNamedBufferStorageEXT;
PFNGLNAMEDBUFFERSUBDATAEXTPROC glNamedBufferSubDataEXT;
@@ -642,6 +666,10 @@ struct GLHookSet
PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glNamedFramebufferRenderbufferEXT;
PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glNamedFramebufferTextureLayerEXT;
PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glNamedFramebufferParameteriEXT;
PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glNamedRenderbufferStorageEXT;
PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glNamedRenderbufferStorageMultisampleEXT;
PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glFramebufferDrawBufferEXT;
PFNGLFRAMEBUFFERREADBUFFEREXTPROC glFramebufferReadBufferEXT;
PFNGLTEXTUREBUFFEREXTPROC glTextureBufferEXT;
PFNGLTEXTUREBUFFERRANGEEXTPROC glTextureBufferRangeEXT;
PFNGLTEXTUREIMAGE1DEXTPROC glTextureImage1DEXT;
@@ -661,7 +689,48 @@ struct GLHookSet
PFNGLTEXTURESUBIMAGE1DEXTPROC glTextureSubImage1DEXT;
PFNGLTEXTURESUBIMAGE2DEXTPROC glTextureSubImage2DEXT;
PFNGLTEXTURESUBIMAGE3DEXTPROC glTextureSubImage3DEXT;
PFNGLUNMAPNAMEDBUFFEREXTPROC glUnmapNamedBufferEXT;
PFNGLCOPYTEXTUREIMAGE1DEXTPROC glCopyTextureImage1DEXT;
PFNGLCOPYTEXTUREIMAGE2DEXTPROC glCopyTextureImage2DEXT;
PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glCopyTextureSubImage1DEXT;
PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glCopyTextureSubImage2DEXT;
PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glCopyTextureSubImage3DEXT;
PFNGLMULTITEXPARAMETERIEXTPROC glMultiTexParameteriEXT;
PFNGLMULTITEXPARAMETERIVEXTPROC glMultiTexParameterivEXT;
PFNGLMULTITEXPARAMETERFEXTPROC glMultiTexParameterfEXT;
PFNGLMULTITEXPARAMETERFVEXTPROC glMultiTexParameterfvEXT;
PFNGLMULTITEXIMAGE1DEXTPROC glMultiTexImage1DEXT;
PFNGLMULTITEXIMAGE2DEXTPROC glMultiTexImage2DEXT;
PFNGLMULTITEXSUBIMAGE1DEXTPROC glMultiTexSubImage1DEXT;
PFNGLMULTITEXSUBIMAGE2DEXTPROC glMultiTexSubImage2DEXT;
PFNGLCOPYMULTITEXIMAGE1DEXTPROC glCopyMultiTexImage1DEXT;
PFNGLCOPYMULTITEXIMAGE2DEXTPROC glCopyMultiTexImage2DEXT;
PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glCopyMultiTexSubImage1DEXT;
PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glCopyMultiTexSubImage2DEXT;
PFNGLMULTITEXIMAGE3DEXTPROC glMultiTexImage3DEXT;
PFNGLMULTITEXSUBIMAGE3DEXTPROC glMultiTexSubImage3DEXT;
PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glCopyMultiTexSubImage3DEXT;
PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glCompressedMultiTexImage3DEXT;
PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glCompressedMultiTexImage2DEXT;
PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glCompressedMultiTexImage1DEXT;
PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glCompressedMultiTexSubImage3DEXT;
PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glCompressedMultiTexSubImage2DEXT;
PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glCompressedMultiTexSubImage1DEXT;
PFNGLMULTITEXBUFFEREXTPROC glMultiTexBufferEXT;
PFNGLMULTITEXPARAMETERIIVEXTPROC glMultiTexParameterIivEXT;
PFNGLMULTITEXPARAMETERIUIVEXTPROC glMultiTexParameterIuivEXT;
PFNGLGENERATEMULTITEXMIPMAPEXTPROC glGenerateMultiTexMipmapEXT;
PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glVertexArrayVertexAttribOffsetEXT;
PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glVertexArrayVertexAttribIOffsetEXT;
PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glEnableVertexArrayAttribEXT;
PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glDisableVertexArrayAttribEXT;
PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glVertexArrayBindVertexBufferEXT;
PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glVertexArrayVertexAttribFormatEXT;
PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glVertexArrayVertexAttribIFormatEXT;
PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glVertexArrayVertexAttribLFormatEXT;
PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glVertexArrayVertexAttribBindingEXT;
PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glVertexArrayVertexBindingDivisorEXT;
PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glVertexArrayVertexAttribLOffsetEXT;
PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glVertexArrayVertexAttribDivisorEXT;
// --
};
+168 -18
View File
@@ -142,7 +142,9 @@
HookExtension(PFNGLGETBOOLEANI_VPROC, glGetBooleani_v); \
HookExtension(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v); \
HookExtension(PFNGLGETFLOATI_VPROC, glGetFloati_v); \
HookExtensionAlias(PFNGLGETFLOATI_VPROC, glGetFloati_v, glGetFloati_vEXT); \
HookExtension(PFNGLGETDOUBLEI_VPROC, glGetDoublei_v); \
HookExtensionAlias(PFNGLGETDOUBLEI_VPROC, glGetDoublei_v, glGetDoublei_vEXT); \
HookExtension(PFNGLGETINTEGER64I_VPROC, glGetInteger64i_v); \
HookExtension(PFNGLGETINTEGER64VPROC, glGetInteger64v); \
HookExtension(PFNGLGETSHADERIVPROC, glGetShaderiv); \
@@ -256,12 +258,7 @@
HookExtension(PFNGLGETVERTEXATTRIBDVPROC, glGetVertexAttribdv); \
HookExtension(PFNGLGETVERTEXATTRIBFVPROC, glGetVertexAttribfv); \
HookExtension(PFNGLGETNAMEDBUFFERPARAMETERI64VPROC, glGetNamedBufferParameteri64v); \
HookExtension(PFNGLGETNAMEDBUFFERPARAMETERIVPROC, glGetNamedBufferParameteriv); \
HookExtension(PFNGLGETNAMEDBUFFERPOINTERVPROC, glGetNamedBufferPointerv); \
HookExtension(PFNGLGETNAMEDBUFFERSUBDATAPROC, glGetNamedBufferSubData); \
HookExtension(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetNamedFramebufferAttachmentParameteriv); \
HookExtension(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC, glGetNamedFramebufferParameteriv); \
HookExtension(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC, glGetNamedRenderbufferParameteriv); \
HookExtension(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus); \
HookExtension(PFNGLBLENDCOLORPROC, glBlendColor); \
HookExtension(PFNGLBLENDFUNCIPROC, glBlendFunci); \
@@ -325,8 +322,11 @@
HookExtension(PFNGLOBJECTLABELPROC, glObjectLabel); \
HookExtension(PFNGLOBJECTPTRLABELPROC, glObjectPtrLabel); \
HookExtension(PFNGLENABLEIPROC, glEnablei); \
HookExtensionAlias(PFNGLENABLEIPROC, glEnablei, glEnableIndexedEXT); \
HookExtension(PFNGLDISABLEIPROC, glDisablei); \
HookExtensionAlias(PFNGLDISABLEIPROC, glDisablei, glDisableIndexedEXT); \
HookExtension(PFNGLISENABLEDIPROC, glIsEnabledi); \
HookExtensionAlias(PFNGLISENABLEDIPROC, glIsEnabledi, glIsEnabledIndexedEXT); \
HookExtension(PFNGLISBUFFERPROC, glIsBuffer); \
HookExtensionAlias(PFNGLISBUFFERPROC, glIsBuffer, glIsBufferARB); \
HookExtension(PFNGLISFRAMEBUFFERPROC, glIsFramebuffer); \
@@ -674,17 +674,52 @@
HookExtension(PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC, glCompressedTextureSubImage3DEXT); \
HookExtension(PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC, glFramebufferDrawBuffersEXT); \
HookExtension(PFNGLGENERATETEXTUREMIPMAPEXTPROC, glGenerateTextureMipmapEXT); \
HookExtension(PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC, glGetCompressedTextureImageEXT); \
HookExtension(PFNGLGETNAMEDBUFFERSUBDATAEXTPROC, glGetNamedBufferSubDataEXT); \
HookExtension(PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC, glGetNamedBufferParameterivEXT); \
HookExtension(PFNGLGETPOINTERI_VEXTPROC, glGetPointeri_vEXT); \
HookExtension(PFNGLGETDOUBLEINDEXEDVEXTPROC, glGetDoubleIndexedvEXT); \
HookExtension(PFNGLGETPOINTERINDEXEDVEXTPROC, glGetPointerIndexedvEXT); \
HookExtension(PFNGLGETINTEGERINDEXEDVEXTPROC, glGetIntegerIndexedvEXT); \
HookExtension(PFNGLGETBOOLEANINDEXEDVEXTPROC, glGetBooleanIndexedvEXT); \
HookExtension(PFNGLGETFLOATINDEXEDVEXTPROC, glGetFloatIndexedvEXT); \
HookExtension(PFNGLGETMULTITEXIMAGEEXTPROC, glGetMultiTexImageEXT); \
HookExtension(PFNGLGETMULTITEXPARAMETERFVEXTPROC, glGetMultiTexParameterfvEXT); \
HookExtension(PFNGLGETMULTITEXPARAMETERIVEXTPROC, glGetMultiTexParameterivEXT); \
HookExtension(PFNGLGETMULTITEXPARAMETERIIVEXTPROC, glGetMultiTexParameterIivEXT); \
HookExtension(PFNGLGETMULTITEXPARAMETERIUIVEXTPROC, glGetMultiTexParameterIuivEXT); \
HookExtension(PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC, glGetMultiTexLevelParameterfvEXT); \
HookExtension(PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC, glGetMultiTexLevelParameterivEXT); \
HookExtension(PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC, glGetCompressedMultiTexImageEXT); \
HookExtension(PFNGLGETNAMEDBUFFERPOINTERVEXTPROC, glGetNamedBufferPointervEXT); \
HookExtension(PFNGLGETNAMEDPROGRAMIVEXTPROC, glGetNamedProgramivEXT); \
HookExtension(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC, glGetNamedFramebufferAttachmentParameterivEXT); \
HookExtensionAlias(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC, glGetNamedFramebufferAttachmentParameterivEXT, glGetNamedFramebufferAttachmentParameteriv); \
HookExtension(PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC, glGetNamedBufferParameterivEXT); \
HookExtensionAlias(PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC, glGetNamedBufferParameterivEXT, glGetNamedBufferParameteriv); \
HookExtension(PFNGLGETNAMEDBUFFERSUBDATAEXTPROC, glGetNamedBufferSubDataEXT); \
HookExtensionAlias(PFNGLGETNAMEDBUFFERSUBDATAEXTPROC, glGetNamedBufferSubDataEXT, glGetNamedBufferSubData); \
HookExtension(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC, glGetNamedFramebufferParameterivEXT); \
HookExtensionAlias(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC, glGetNamedFramebufferParameterivEXT, glGetFramebufferParameterivEXT); \
HookExtensionAlias(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC, glGetNamedFramebufferParameterivEXT, glGetNamedFramebufferParameteriv); \
HookExtension(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC, glGetNamedRenderbufferParameterivEXT); \
HookExtensionAlias(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC, glGetNamedRenderbufferParameterivEXT, glGetNamedRenderbufferParameteriv); \
HookExtension(PFNGLGETVERTEXARRAYINTEGERVEXTPROC, glGetVertexArrayIntegervEXT); \
HookExtension(PFNGLGETVERTEXARRAYPOINTERVEXTPROC, glGetVertexArrayPointervEXT); \
HookExtension(PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC, glGetVertexArrayIntegeri_vEXT); \
HookExtension(PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC, glGetVertexArrayPointeri_vEXT); \
HookExtension(PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC, glGetCompressedTextureImageEXT); \
HookExtension(PFNGLGETTEXTUREIMAGEEXTPROC, glGetTextureImageEXT); \
HookExtension(PFNGLGETTEXTUREPARAMETERIVEXTPROC, glGetTextureParameterivEXT); \
HookExtension(PFNGLGETTEXTUREPARAMETERFVEXTPROC, glGetTextureParameterfvEXT); \
HookExtension(PFNGLGETTEXTUREPARAMETERIIVEXTPROC, glGetTextureParameterIivEXT); \
HookExtension(PFNGLGETTEXTUREPARAMETERIUIVEXTPROC, glGetTextureParameterIuivEXT); \
HookExtension(PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC, glGetTextureLevelParameterivEXT); \
HookExtension(PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC, glGetTextureLevelParameterfvEXT); \
HookExtension(PFNGLBINDMULTITEXTUREEXTPROC, glBindMultiTextureEXT); \
HookExtension(PFNGLMAPNAMEDBUFFEREXTPROC, glMapNamedBufferEXT); \
HookExtension(PFNGLMAPNAMEDBUFFERRANGEEXTPROC, glMapNamedBufferRangeEXT); \
HookExtension(PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC, glFlushMappedNamedBufferRangeEXT); \
HookExtension(PFNGLUNMAPNAMEDBUFFEREXTPROC, glUnmapNamedBufferEXT); \
HookExtension(PFNGLCLEARNAMEDBUFFERDATAEXTPROC, glClearNamedBufferDataEXT); \
HookExtension(PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC, glClearNamedBufferSubDataEXT); \
HookExtension(PFNGLNAMEDBUFFERDATAEXTPROC, glNamedBufferDataEXT); \
HookExtension(PFNGLNAMEDBUFFERSTORAGEEXTPROC, glNamedBufferStorageEXT); \
HookExtension(PFNGLNAMEDBUFFERSUBDATAEXTPROC, glNamedBufferSubDataEXT); \
@@ -696,6 +731,10 @@
HookExtension(PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC, glNamedFramebufferRenderbufferEXT); \
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC, glNamedFramebufferTextureLayerEXT); \
HookExtension(PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC, glNamedFramebufferParameteriEXT); \
HookExtension(PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC, glNamedRenderbufferStorageEXT); \
HookExtension(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glNamedRenderbufferStorageMultisampleEXT); \
HookExtension(PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC, glFramebufferDrawBufferEXT); \
HookExtension(PFNGLFRAMEBUFFERREADBUFFEREXTPROC, glFramebufferReadBufferEXT); \
HookExtension(PFNGLTEXTUREBUFFEREXTPROC, glTextureBufferEXT); \
HookExtension(PFNGLTEXTUREBUFFERRANGEEXTPROC, glTextureBufferRangeEXT); \
HookExtension(PFNGLTEXTUREIMAGE1DEXTPROC, glTextureImage1DEXT); \
@@ -715,7 +754,48 @@
HookExtension(PFNGLTEXTURESUBIMAGE1DEXTPROC, glTextureSubImage1DEXT); \
HookExtension(PFNGLTEXTURESUBIMAGE2DEXTPROC, glTextureSubImage2DEXT); \
HookExtension(PFNGLTEXTURESUBIMAGE3DEXTPROC, glTextureSubImage3DEXT); \
HookExtension(PFNGLUNMAPNAMEDBUFFEREXTPROC, glUnmapNamedBufferEXT); \
HookExtension(PFNGLCOPYTEXTUREIMAGE1DEXTPROC, glCopyTextureImage1DEXT); \
HookExtension(PFNGLCOPYTEXTUREIMAGE2DEXTPROC, glCopyTextureImage2DEXT); \
HookExtension(PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC, glCopyTextureSubImage1DEXT); \
HookExtension(PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC, glCopyTextureSubImage2DEXT); \
HookExtension(PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC, glCopyTextureSubImage3DEXT); \
HookExtension(PFNGLMULTITEXPARAMETERIEXTPROC, glMultiTexParameteriEXT); \
HookExtension(PFNGLMULTITEXPARAMETERIVEXTPROC, glMultiTexParameterivEXT); \
HookExtension(PFNGLMULTITEXPARAMETERFEXTPROC, glMultiTexParameterfEXT); \
HookExtension(PFNGLMULTITEXPARAMETERFVEXTPROC, glMultiTexParameterfvEXT); \
HookExtension(PFNGLMULTITEXIMAGE1DEXTPROC, glMultiTexImage1DEXT); \
HookExtension(PFNGLMULTITEXIMAGE2DEXTPROC, glMultiTexImage2DEXT); \
HookExtension(PFNGLMULTITEXSUBIMAGE1DEXTPROC, glMultiTexSubImage1DEXT); \
HookExtension(PFNGLMULTITEXSUBIMAGE2DEXTPROC, glMultiTexSubImage2DEXT); \
HookExtension(PFNGLCOPYMULTITEXIMAGE1DEXTPROC, glCopyMultiTexImage1DEXT); \
HookExtension(PFNGLCOPYMULTITEXIMAGE2DEXTPROC, glCopyMultiTexImage2DEXT); \
HookExtension(PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC, glCopyMultiTexSubImage1DEXT); \
HookExtension(PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC, glCopyMultiTexSubImage2DEXT); \
HookExtension(PFNGLMULTITEXIMAGE3DEXTPROC, glMultiTexImage3DEXT); \
HookExtension(PFNGLMULTITEXSUBIMAGE3DEXTPROC, glMultiTexSubImage3DEXT); \
HookExtension(PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC, glCopyMultiTexSubImage3DEXT); \
HookExtension(PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC, glCompressedMultiTexImage3DEXT); \
HookExtension(PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC, glCompressedMultiTexImage2DEXT); \
HookExtension(PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC, glCompressedMultiTexImage1DEXT); \
HookExtension(PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC, glCompressedMultiTexSubImage3DEXT); \
HookExtension(PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC, glCompressedMultiTexSubImage2DEXT); \
HookExtension(PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC, glCompressedMultiTexSubImage1DEXT); \
HookExtension(PFNGLMULTITEXBUFFEREXTPROC, glMultiTexBufferEXT); \
HookExtension(PFNGLMULTITEXPARAMETERIIVEXTPROC, glMultiTexParameterIivEXT); \
HookExtension(PFNGLMULTITEXPARAMETERIUIVEXTPROC, glMultiTexParameterIuivEXT); \
HookExtension(PFNGLGENERATEMULTITEXMIPMAPEXTPROC, glGenerateMultiTexMipmapEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC, glVertexArrayVertexAttribOffsetEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC, glVertexArrayVertexAttribIOffsetEXT); \
HookExtension(PFNGLENABLEVERTEXARRAYATTRIBEXTPROC, glEnableVertexArrayAttribEXT); \
HookExtension(PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC, glDisableVertexArrayAttribEXT); \
HookExtension(PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC, glVertexArrayBindVertexBufferEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC, glVertexArrayVertexAttribFormatEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC, glVertexArrayVertexAttribIFormatEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC, glVertexArrayVertexAttribLFormatEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC, glVertexArrayVertexAttribBindingEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC, glVertexArrayVertexBindingDivisorEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC, glVertexArrayVertexAttribLOffsetEXT); \
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC, glVertexArrayVertexAttribDivisorEXT); \
HookExtension(PFNGLBINDTEXTUREPROC, glBindTexture); \
HookExtension(PFNGLBLENDFUNCPROC, glBlendFunc); \
HookExtension(PFNGLCLEARPROC, glClear); \
@@ -726,6 +806,7 @@
HookExtension(PFNGLCULLFACEPROC, glCullFace); \
HookExtension(PFNGLDEPTHFUNCPROC, glDepthFunc); \
HookExtension(PFNGLDEPTHMASKPROC, glDepthMask); \
HookExtension(PFNGLDEPTHRANGEPROC, glDepthRange); \
HookExtension(PFNGLSTENCILFUNCPROC, glStencilFunc); \
HookExtension(PFNGLSTENCILMASKPROC, glStencilMask); \
HookExtension(PFNGLSTENCILOPPROC, glStencilOp); \
@@ -978,12 +1059,7 @@
HookWrapper3(void, glGetVertexAttribdv, GLuint, index, GLenum, pname, GLdouble *, params); \
HookWrapper3(void, glGetVertexAttribfv, GLuint, index, GLenum, pname, GLfloat *, params); \
HookWrapper3(void, glGetNamedBufferParameteri64v, GLuint, buffer, GLenum, pname, GLint64 *, params); \
HookWrapper3(void, glGetNamedBufferParameteriv, GLuint, buffer, GLenum, pname, GLint *, params); \
HookWrapper3(void, glGetNamedBufferPointerv, GLuint, buffer, GLenum, pname, void **, params); \
HookWrapper4(void, glGetNamedBufferSubData, GLuint, buffer, GLintptr, offset, GLsizei, size, void *, data); \
HookWrapper4(void, glGetNamedFramebufferAttachmentParameteriv, GLuint, framebuffer, GLenum, attachment, GLenum, pname, GLint *, params); \
HookWrapper3(void, glGetNamedFramebufferParameteriv, GLuint, framebuffer, GLenum, pname, GLint *, param); \
HookWrapper3(void, glGetNamedRenderbufferParameteriv, GLuint, renderbuffer, GLenum, pname, GLint *, params); \
HookWrapper1(GLenum, glCheckFramebufferStatus, GLenum, target); \
HookWrapper4(void, glBlendColor, GLfloat, red, GLfloat, green, GLfloat, blue, GLfloat, alpha); \
HookWrapper3(void, glBlendFunci, GLuint, buf, GLenum, src, GLenum, dst); \
@@ -1371,17 +1447,46 @@
HookWrapper12(void, glCompressedTextureSubImage3DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLsizei, imageSize, const void *, bits); \
HookWrapper3(void, glFramebufferDrawBuffersEXT, GLuint, framebuffer, GLsizei, n, const GLenum *, bufs); \
HookWrapper2(void, glGenerateTextureMipmapEXT, GLuint, texture, GLenum, target); \
HookWrapper4(void, glGetCompressedTextureImageEXT, GLuint, texture, GLenum, target, GLint, lod, void *, img); \
HookWrapper4(void, glGetNamedBufferSubDataEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, void *, data); \
HookWrapper3(void, glGetNamedBufferParameterivEXT, GLuint, buffer, GLenum, pname, GLint *, params); \
HookWrapper3(void, glGetPointeri_vEXT, GLenum, pname, GLuint, index, void **, params); \
HookWrapper3(void, glGetDoubleIndexedvEXT, GLenum, target, GLuint, index, GLdouble *, data); \
HookWrapper3(void, glGetPointerIndexedvEXT, GLenum, target, GLuint, index, void **, data); \
HookWrapper3(void, glGetIntegerIndexedvEXT, GLenum, target, GLuint, index, GLint *, data); \
HookWrapper3(void, glGetBooleanIndexedvEXT, GLenum, target, GLuint, index, GLboolean *, data); \
HookWrapper3(void, glGetFloatIndexedvEXT, GLenum, target, GLuint, index, GLfloat *, data); \
HookWrapper6(void, glGetMultiTexImageEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, format, GLenum, type, void *, pixels); \
HookWrapper4(void, glGetMultiTexParameterfvEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLfloat *, params); \
HookWrapper4(void, glGetMultiTexParameterivEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetMultiTexParameterIivEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetMultiTexParameterIuivEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLuint *, params); \
HookWrapper5(void, glGetMultiTexLevelParameterfvEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, pname, GLfloat *, params); \
HookWrapper5(void, glGetMultiTexLevelParameterivEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetCompressedMultiTexImageEXT, GLenum, texunit, GLenum, target, GLint, lod, void *, img); \
HookWrapper3(void, glGetNamedBufferPointervEXT, GLuint, buffer, GLenum, pname, void **, params); \
HookWrapper4(void, glGetNamedProgramivEXT, GLuint, program, GLenum, target, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetNamedFramebufferAttachmentParameterivEXT, GLuint, framebuffer, GLenum, attachment, GLenum, pname, GLint *, params); \
HookWrapper3(void, glGetNamedBufferParameterivEXT, GLuint, buffer, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetNamedBufferSubDataEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, void *, data); \
HookWrapper3(void, glGetNamedFramebufferParameterivEXT, GLuint, framebuffer, GLenum, pname, GLint *, params); \
HookWrapper3(void, glGetNamedRenderbufferParameterivEXT, GLuint, renderbuffer, GLenum, pname, GLint *, params); \
HookWrapper3(void, glGetVertexArrayIntegervEXT, GLuint, vaobj, GLenum, pname, GLint *, param); \
HookWrapper3(void, glGetVertexArrayPointervEXT, GLuint, vaobj, GLenum, pname, void **, param); \
HookWrapper4(void, glGetVertexArrayIntegeri_vEXT, GLuint, vaobj, GLuint, index, GLenum, pname, GLint *, param); \
HookWrapper4(void, glGetVertexArrayPointeri_vEXT, GLuint, vaobj, GLuint, index, GLenum, pname, void **, param); \
HookWrapper4(void, glGetCompressedTextureImageEXT, GLuint, texture, GLenum, target, GLint, lod, void *, img); \
HookWrapper6(void, glGetTextureImageEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, format, GLenum, type, void *, pixels); \
HookWrapper4(void, glGetTextureParameterivEXT, GLuint, texture, GLenum, target, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetTextureParameterfvEXT, GLuint, texture, GLenum, target, GLenum, pname, GLfloat *, params); \
HookWrapper4(void, glGetTextureParameterIivEXT, GLuint, texture, GLenum, target, GLenum, pname, GLint *, params); \
HookWrapper4(void, glGetTextureParameterIuivEXT, GLuint, texture, GLenum, target, GLenum, pname, GLuint *, params); \
HookWrapper5(void, glGetTextureLevelParameterivEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, pname, GLint *, params); \
HookWrapper5(void, glGetTextureLevelParameterfvEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, pname, GLfloat *, params); \
HookWrapper3(void, glBindMultiTextureEXT, GLenum, texunit, GLenum, target, GLuint, texture); \
HookWrapper2(void *, glMapNamedBufferEXT, GLuint, buffer, GLenum, access); \
HookWrapper4(void *, glMapNamedBufferRangeEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, length, GLbitfield, access); \
HookWrapper3(void, glFlushMappedNamedBufferRangeEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, length); \
HookWrapper1(GLboolean, glUnmapNamedBufferEXT, GLuint, buffer); \
HookWrapper5(void, glClearNamedBufferDataEXT, GLuint, buffer, GLenum, internalformat, GLenum, format, GLenum, type, const void *, data); \
HookWrapper7(void, glClearNamedBufferSubDataEXT, GLuint, buffer, GLenum, internalformat, GLsizeiptr, offset, GLsizeiptr, size, GLenum, format, GLenum, type, const void *, data); \
HookWrapper4(void, glNamedBufferDataEXT, GLuint, buffer, GLsizeiptr, size, const void *, data, GLenum, usage); \
HookWrapper4(void, glNamedBufferStorageEXT, GLuint, buffer, GLsizeiptr, size, const void *, data, GLbitfield, flags); \
HookWrapper4(void, glNamedBufferSubDataEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, const void *, data); \
@@ -1393,6 +1498,10 @@
HookWrapper4(void, glNamedFramebufferRenderbufferEXT, GLuint, framebuffer, GLenum, attachment, GLenum, renderbuffertarget, GLuint, renderbuffer); \
HookWrapper5(void, glNamedFramebufferTextureLayerEXT, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
HookWrapper3(void, glNamedFramebufferParameteriEXT, GLuint, framebuffer, GLenum, pname, GLint, param); \
HookWrapper4(void, glNamedRenderbufferStorageEXT, GLuint, renderbuffer, GLenum, internalformat, GLsizei, width, GLsizei, height); \
HookWrapper5(void, glNamedRenderbufferStorageMultisampleEXT, GLuint, renderbuffer, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height); \
HookWrapper2(void, glFramebufferDrawBufferEXT, GLuint, framebuffer, GLenum, mode); \
HookWrapper2(void, glFramebufferReadBufferEXT, GLuint, framebuffer, GLenum, mode); \
HookWrapper4(void, glTextureBufferEXT, GLuint, texture, GLenum, target, GLenum, internalformat, GLuint, buffer); \
HookWrapper6(void, glTextureBufferRangeEXT, GLuint, texture, GLenum, target, GLenum, internalformat, GLuint, buffer, GLintptr, offset, GLsizeiptr, size); \
HookWrapper9(void, glTextureImage1DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLint, border, GLenum, format, GLenum, type, const void *, pixels); \
@@ -1412,7 +1521,48 @@
HookWrapper8(void, glTextureSubImage1DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper10(void, glTextureSubImage2DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper12(void, glTextureSubImage3DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper1(GLboolean, glUnmapNamedBufferEXT, GLuint, buffer); \
HookWrapper8(void, glCopyTextureImage1DEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, internalformat, GLint, x, GLint, y, GLsizei, width, GLint, border); \
HookWrapper9(void, glCopyTextureImage2DEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, internalformat, GLint, x, GLint, y, GLsizei, width, GLsizei, height, GLint, border); \
HookWrapper7(void, glCopyTextureSubImage1DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLint, x, GLint, y, GLsizei, width); \
HookWrapper9(void, glCopyTextureSubImage2DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
HookWrapper10(void, glCopyTextureSubImage3DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
HookWrapper4(void, glMultiTexParameteriEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLint, param); \
HookWrapper4(void, glMultiTexParameterivEXT, GLenum, texunit, GLenum, target, GLenum, pname, const GLint *, params); \
HookWrapper4(void, glMultiTexParameterfEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLfloat, param); \
HookWrapper4(void, glMultiTexParameterfvEXT, GLenum, texunit, GLenum, target, GLenum, pname, const GLfloat *, params); \
HookWrapper9(void, glMultiTexImage1DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLint, border, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper10(void, glMultiTexImage2DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLsizei, height, GLint, border, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper8(void, glMultiTexSubImage1DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper10(void, glMultiTexSubImage2DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper8(void, glCopyMultiTexImage1DEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, internalformat, GLint, x, GLint, y, GLsizei, width, GLint, border); \
HookWrapper9(void, glCopyMultiTexImage2DEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, internalformat, GLint, x, GLint, y, GLsizei, width, GLsizei, height, GLint, border); \
HookWrapper7(void, glCopyMultiTexSubImage1DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, x, GLint, y, GLsizei, width); \
HookWrapper9(void, glCopyMultiTexSubImage2DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
HookWrapper11(void, glMultiTexImage3DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLint, border, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper12(void, glMultiTexSubImage3DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLenum, type, const void *, pixels); \
HookWrapper10(void, glCopyMultiTexSubImage3DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
HookWrapper10(void, glCompressedMultiTexImage3DEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLint, border, GLsizei, imageSize, const void *, bits); \
HookWrapper9(void, glCompressedMultiTexImage2DEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, internalformat, GLsizei, width, GLsizei, height, GLint, border, GLsizei, imageSize, const void *, bits); \
HookWrapper8(void, glCompressedMultiTexImage1DEXT, GLenum, texunit, GLenum, target, GLint, level, GLenum, internalformat, GLsizei, width, GLint, border, GLsizei, imageSize, const void *, bits); \
HookWrapper12(void, glCompressedMultiTexSubImage3DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLsizei, imageSize, const void *, bits); \
HookWrapper10(void, glCompressedMultiTexSubImage2DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLsizei, imageSize, const void *, bits); \
HookWrapper8(void, glCompressedMultiTexSubImage1DEXT, GLenum, texunit, GLenum, target, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLsizei, imageSize, const void *, bits); \
HookWrapper4(void, glMultiTexBufferEXT, GLenum, texunit, GLenum, target, GLenum, internalformat, GLuint, buffer); \
HookWrapper4(void, glMultiTexParameterIivEXT, GLenum, texunit, GLenum, target, GLenum, pname, const GLint *, params); \
HookWrapper4(void, glMultiTexParameterIuivEXT, GLenum, texunit, GLenum, target, GLenum, pname, const GLuint *, params); \
HookWrapper2(void, glGenerateMultiTexMipmapEXT, GLenum, texunit, GLenum, target); \
HookWrapper8(void, glVertexArrayVertexAttribOffsetEXT, GLuint, vaobj, GLuint, buffer, GLuint, index, GLint, size, GLenum, type, GLboolean, normalized, GLsizei, stride, GLintptr, offset); \
HookWrapper7(void, glVertexArrayVertexAttribIOffsetEXT, GLuint, vaobj, GLuint, buffer, GLuint, index, GLint, size, GLenum, type, GLsizei, stride, GLintptr, offset); \
HookWrapper2(void, glEnableVertexArrayAttribEXT, GLuint, vaobj, GLuint, index); \
HookWrapper2(void, glDisableVertexArrayAttribEXT, GLuint, vaobj, GLuint, index); \
HookWrapper5(void, glVertexArrayBindVertexBufferEXT, GLuint, vaobj, GLuint, bindingindex, GLuint, buffer, GLintptr, offset, GLsizei, stride); \
HookWrapper6(void, glVertexArrayVertexAttribFormatEXT, GLuint, vaobj, GLuint, attribindex, GLint, size, GLenum, type, GLboolean, normalized, GLuint, relativeoffset); \
HookWrapper5(void, glVertexArrayVertexAttribIFormatEXT, GLuint, vaobj, GLuint, attribindex, GLint, size, GLenum, type, GLuint, relativeoffset); \
HookWrapper5(void, glVertexArrayVertexAttribLFormatEXT, GLuint, vaobj, GLuint, attribindex, GLint, size, GLenum, type, GLuint, relativeoffset); \
HookWrapper3(void, glVertexArrayVertexAttribBindingEXT, GLuint, vaobj, GLuint, attribindex, GLuint, bindingindex); \
HookWrapper3(void, glVertexArrayVertexBindingDivisorEXT, GLuint, vaobj, GLuint, bindingindex, GLuint, divisor); \
HookWrapper7(void, glVertexArrayVertexAttribLOffsetEXT, GLuint, vaobj, GLuint, buffer, GLuint, index, GLint, size, GLenum, type, GLsizei, stride, GLintptr, offset); \
HookWrapper3(void, glVertexArrayVertexAttribDivisorEXT, GLuint, vaobj, GLuint, index, GLuint, divisor); \
+423 -231
View File
@@ -28,9 +28,9 @@
#pragma region Buffers
bool WrappedOpenGL::Serialise_glGenBuffers(GLsizei n, GLuint* textures)
bool WrappedOpenGL::Serialise_glGenBuffers(GLsizei n, GLuint* buffers)
{
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(BufferRes(GetCtx(), *textures)));
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(BufferRes(GetCtx(), *buffers)));
if(m_State == READING)
{
@@ -1499,12 +1499,12 @@ GLboolean WrappedOpenGL::glUnmapBuffer(GLenum target)
return m_Real.glUnmapBuffer(target);
}
bool WrappedOpenGL::Serialise_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
bool WrappedOpenGL::Serialise_glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length)
{
GLResourceRecord *record = NULL;
if(m_State >= WRITING)
record = GetCtxData().m_BufferRecord[BufferIdx(target)];
record = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer));
SERIALISE_ELEMENT(ResourceId, ID, record->GetResourceID());
SERIALISE_ELEMENT(uint64_t, offs, offset);
@@ -1538,9 +1538,9 @@ bool WrappedOpenGL::Serialise_glFlushMappedBufferRange(GLenum target, GLintptr o
return true;
}
void WrappedOpenGL::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
void WrappedOpenGL::glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length)
{
GLResourceRecord *record = GetCtxData().m_BufferRecord[BufferIdx(target)];
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer));
RDCASSERT(record);
// only need to pay attention to flushes when in capframe. Otherwise (see above) we
@@ -1551,7 +1551,7 @@ void WrappedOpenGL::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLs
// note that when we're idle, we only want to flush the range with GL if we've actually
// mapped it. Otherwise the map is 'virtual' and just pointing to our backing store data
if(m_State != WRITING_IDLE || (record && record->Map.status == GLResourceRecord::Mapped_Write_Real))
m_Real.glFlushMappedBufferRange(target, offset, length);
m_Real.glFlushMappedNamedBufferRangeEXT(buffer, offset, length);
if(m_State == WRITING_CAPFRAME)
{
@@ -1588,7 +1588,7 @@ void WrappedOpenGL::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLs
}
SCOPED_SERIALISE_CONTEXT(FLUSHMAP);
Serialise_glFlushMappedBufferRange(target, offset, length);
Serialise_glFlushMappedNamedBufferRangeEXT(buffer, offset, length);
m_ContextRecord->AddChunk(scope.Get());
}
// other statuses are reading
@@ -1596,6 +1596,22 @@ void WrappedOpenGL::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLs
}
}
void WrappedOpenGL::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
{
if(m_State >= WRITING)
{
GLResourceRecord *record = GetCtxData().m_BufferRecord[BufferIdx(target)];
RDCASSERT(record);
if(record)
return glFlushMappedNamedBufferRangeEXT(record->Resource.name, offset, length);
RDCERR("glFlushMappedBufferRange: Couldn't get resource record for target %x - no buffer bound?", target);
}
return m_Real.glFlushMappedBufferRange(target, offset, length);
}
#pragma endregion
#pragma region Transform Feedback
@@ -1852,55 +1868,58 @@ void WrappedOpenGL::glEndTransformFeedback()
#pragma region Vertex Arrays
bool WrappedOpenGL::Serialise_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset)
{
size_t bufidx = BufferIdx(eGL_ARRAY_BUFFER);
ContextData &cd = GetCtxData();
SERIALISE_ELEMENT(uint32_t, Index, index);
SERIALISE_ELEMENT(int32_t, Size, size);
SERIALISE_ELEMENT(GLenum, Type, type);
SERIALISE_ELEMENT(uint8_t, Norm, normalized);
SERIALISE_ELEMENT(uint32_t, Stride, stride);
SERIALISE_ELEMENT(uint64_t, Offset, (uint64_t)pointer);
SERIALISE_ELEMENT(ResourceId, id, cd.m_VertexArrayRecord ? cd.m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, bid, cd.m_BufferRecord[bufidx] ? cd.m_BufferRecord[bufidx]->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(uint64_t, Offset, (uint64_t)offset);
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
SERIALISE_ELEMENT(ResourceId, bid, buffer ? GetResourceManager()->GetID(BufferRes(GetCtx(), buffer)) : ResourceId());
if(m_State < WRITING)
{
// if we're reading, we won't have serialised the glBindVertexArray commands before the captured frame,
// need to apply it here (and the current state doesn't matter, will be completely set at start of the
// frame).
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
if(bid != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(bid);
m_Real.glBindBuffer(eGL_ARRAY_BUFFER, res.name);
}
else
{
m_Real.glBindBuffer(eGL_ARRAY_BUFFER, 0);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
buffer = (bid != ResourceId()) ? GetResourceManager()->GetLiveResource(bid).name : 0;
m_Real.glVertexAttribPointer(Index, Size, Type, Norm, Stride, (const void *)Offset);
m_Real.glVertexArrayVertexAttribOffsetEXT(vaobj, buffer, Index, Size, Type, Norm, Stride, (GLintptr)Offset);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset)
{
m_Real.glVertexArrayVertexAttribOffsetEXT(vaobj, buffer, index, size, type, normalized, stride, offset);
if(m_State >= WRITING)
{
ContextData &cd = GetCtxData();
GLResourceRecord *bufrecord = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer));
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBPOINTER);
Serialise_glVertexArrayVertexAttribOffsetEXT(vaobj, buffer, index, size, type, normalized, stride, offset);
r->AddChunk(scope.Get());
}
if(bufrecord) r->AddParent(bufrecord);
}
}
}
void WrappedOpenGL::glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
{
m_Real.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
@@ -1921,7 +1940,7 @@ void WrappedOpenGL::glVertexAttribPointer(GLuint index, GLint size, GLenum type,
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBPOINTER);
Serialise_glVertexAttribPointer(index, size, type, normalized, stride, pointer);
Serialise_glVertexArrayVertexAttribOffsetEXT(varecord->Resource.name, bufrecord->Resource.name, index, size, type, normalized, stride, (GLintptr)pointer);
r->AddChunk(scope.Get());
}
@@ -1931,54 +1950,57 @@ void WrappedOpenGL::glVertexAttribPointer(GLuint index, GLint size, GLenum type,
}
}
bool WrappedOpenGL::Serialise_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
size_t bufidx = BufferIdx(eGL_ARRAY_BUFFER);
ContextData &cd = GetCtxData();
SERIALISE_ELEMENT(uint32_t, Index, index);
SERIALISE_ELEMENT(int32_t, Size, size);
SERIALISE_ELEMENT(GLenum, Type, type);
SERIALISE_ELEMENT(uint32_t, Stride, stride);
SERIALISE_ELEMENT(uint64_t, Offset, (uint64_t)pointer);
SERIALISE_ELEMENT(ResourceId, id, cd.m_VertexArrayRecord ? cd.m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, bid, cd.m_BufferRecord[bufidx] ? cd.m_BufferRecord[bufidx]->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(uint64_t, Offset, (uint64_t)offset);
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
SERIALISE_ELEMENT(ResourceId, bid, buffer ? GetResourceManager()->GetID(BufferRes(GetCtx(), buffer)) : ResourceId());
if(m_State < WRITING)
{
// if we're reading, we won't have serialised the glBindVertexArray commands before the captured frame,
// need to apply it here (and the current state doesn't matter, will be completely set at start of the
// frame).
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
if(bid != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(bid);
m_Real.glBindBuffer(eGL_ARRAY_BUFFER, res.name);
}
else
{
m_Real.glBindBuffer(eGL_ARRAY_BUFFER, 0);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
buffer = (bid != ResourceId()) ? GetResourceManager()->GetLiveResource(bid).name : 0;
m_Real.glVertexAttribIPointer(Index, Size, Type, Stride, (const void *)Offset);
m_Real.glVertexArrayVertexAttribIOffsetEXT(vaobj, buffer, Index, Size, Type, Stride, (GLintptr)Offset);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribIOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
{
m_Real.glVertexArrayVertexAttribIOffsetEXT(vaobj, buffer, index, size, type, stride, offset);
if(m_State >= WRITING)
{
ContextData &cd = GetCtxData();
GLResourceRecord *bufrecord = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer));
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBIPOINTER);
Serialise_glVertexArrayVertexAttribIOffsetEXT(vaobj, buffer, index, size, type, stride, offset);
r->AddChunk(scope.Get());
}
if(bufrecord) r->AddParent(bufrecord);
}
}
}
void WrappedOpenGL::glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
{
m_Real.glVertexAttribIPointer(index, size, type, stride, pointer);
@@ -1999,7 +2021,7 @@ void WrappedOpenGL::glVertexAttribIPointer(GLuint index, GLint size, GLenum type
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBIPOINTER);
Serialise_glVertexAttribIPointer(index, size, type, stride, pointer);
Serialise_glVertexArrayVertexAttribIOffsetEXT(varecord->Resource.name, bufrecord->Resource.name, index, size, type, stride, (GLintptr)pointer);
r->AddChunk(scope.Get());
}
@@ -2009,54 +2031,57 @@ void WrappedOpenGL::glVertexAttribIPointer(GLuint index, GLint size, GLenum type
}
}
bool WrappedOpenGL::Serialise_glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr pointer)
{
size_t bufidx = BufferIdx(eGL_ARRAY_BUFFER);
ContextData &cd = GetCtxData();
SERIALISE_ELEMENT(uint32_t, Index, index);
SERIALISE_ELEMENT(int32_t, Size, size);
SERIALISE_ELEMENT(GLenum, Type, type);
SERIALISE_ELEMENT(uint32_t, Stride, stride);
SERIALISE_ELEMENT(uint64_t, Offset, (uint64_t)pointer);
SERIALISE_ELEMENT(ResourceId, id, cd.m_VertexArrayRecord ? cd.m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, bid, cd.m_BufferRecord[bufidx] ? cd.m_BufferRecord[bufidx]->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
SERIALISE_ELEMENT(ResourceId, bid, buffer ? GetResourceManager()->GetID(BufferRes(GetCtx(), buffer)) : ResourceId());
if(m_State < WRITING)
{
// if we're reading, we won't have serialised the glBindVertexArray commands before the captured frame,
// need to apply it here (and the current state doesn't matter, will be completely set at start of the
// frame).
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
if(bid != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(bid);
m_Real.glBindBuffer(eGL_ARRAY_BUFFER, res.name);
}
else
{
m_Real.glBindBuffer(eGL_ARRAY_BUFFER, 0);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
buffer = (bid != ResourceId()) ? GetResourceManager()->GetLiveResource(bid).name : 0;
m_Real.glVertexAttribLPointer(Index, Size, Type, Stride, (const void *)Offset);
m_Real.glVertexArrayVertexAttribLOffsetEXT(vaobj, buffer, Index, Size, Type, Stride, (GLintptr)Offset);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr pointer)
{
m_Real.glVertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, pointer);
if(m_State >= WRITING)
{
ContextData &cd = GetCtxData();
GLResourceRecord *bufrecord = GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer));
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBLPOINTER);
Serialise_glVertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, pointer);
r->AddChunk(scope.Get());
}
if(bufrecord) r->AddParent(bufrecord);
}
}
}
void WrappedOpenGL::glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
{
m_Real.glVertexAttribLPointer(index, size, type, stride, pointer);
@@ -2077,7 +2102,7 @@ void WrappedOpenGL::glVertexAttribLPointer(GLuint index, GLint size, GLenum type
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBLPOINTER);
Serialise_glVertexAttribLPointer(index, size, type, stride, pointer);
Serialise_glVertexArrayVertexAttribLOffsetEXT(varecord->Resource.name, bufrecord->Resource.name, index, size, type, stride, (GLintptr)pointer);
r->AddChunk(scope.Get());
}
@@ -2087,32 +2112,46 @@ void WrappedOpenGL::glVertexAttribLPointer(GLuint index, GLint size, GLenum type
}
}
bool WrappedOpenGL::Serialise_glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex)
{
SERIALISE_ELEMENT(uint32_t, aidx, attribindex);
SERIALISE_ELEMENT(uint32_t, bidx, bindingindex);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
m_Real.glVertexAttribBinding(aidx, bidx);
m_Real.glVertexArrayVertexAttribBindingEXT((id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO, aidx, bidx);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex)
{
m_Real.glVertexArrayVertexAttribBindingEXT(vaobj, attribindex, bindingindex);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBBINDING);
Serialise_glVertexArrayVertexAttribBindingEXT(varecord->Resource.name, attribindex, bindingindex);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glVertexAttribBinding(GLuint attribindex, GLuint bindingindex)
{
m_Real.glVertexAttribBinding(attribindex, bindingindex);
@@ -2132,7 +2171,7 @@ void WrappedOpenGL::glVertexAttribBinding(GLuint attribindex, GLuint bindinginde
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBBINDING);
Serialise_glVertexAttribBinding(attribindex, bindingindex);
Serialise_glVertexArrayVertexAttribBindingEXT(varecord->Resource.name, attribindex, bindingindex);
r->AddChunk(scope.Get());
}
@@ -2140,36 +2179,52 @@ void WrappedOpenGL::glVertexAttribBinding(GLuint attribindex, GLuint bindinginde
}
}
bool WrappedOpenGL::Serialise_glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
{
SERIALISE_ELEMENT(uint32_t, Index, attribindex);
SERIALISE_ELEMENT(int32_t, Size, size);
SERIALISE_ELEMENT(bool, Norm, normalized ? true : false);
SERIALISE_ELEMENT(GLenum, Type, type);
SERIALISE_ELEMENT(uint32_t, Offset, relativeoffset);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
m_Real.glVertexAttribFormat(Index, Size, Type, Norm, Offset);
m_Real.glVertexArrayVertexAttribFormatEXT(vaobj, Index, Size, Type, Norm, Offset);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
{
m_Real.glVertexArrayVertexAttribFormatEXT(vaobj, attribindex, size, type, normalized, relativeoffset);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBFORMAT);
Serialise_glVertexArrayVertexAttribFormatEXT(vaobj, attribindex, size, type, normalized, relativeoffset);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
{
m_Real.glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
@@ -2189,7 +2244,7 @@ void WrappedOpenGL::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBFORMAT);
Serialise_glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
Serialise_glVertexArrayVertexAttribFormatEXT(varecord->Resource.name, attribindex, size, type, normalized, relativeoffset);
r->AddChunk(scope.Get());
}
@@ -2197,35 +2252,51 @@ void WrappedOpenGL::glVertexAttribFormat(GLuint attribindex, GLint size, GLenum
}
}
bool WrappedOpenGL::Serialise_glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
SERIALISE_ELEMENT(uint32_t, Index, attribindex);
SERIALISE_ELEMENT(int32_t, Size, size);
SERIALISE_ELEMENT(GLenum, Type, type);
SERIALISE_ELEMENT(uint32_t, Offset, relativeoffset);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
m_Real.glVertexAttribIFormat(Index, Size, Type, Offset);
m_Real.glVertexArrayVertexAttribIFormatEXT(vaobj, Index, Size, Type, Offset);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
m_Real.glVertexArrayVertexAttribIFormatEXT(vaobj, attribindex, size, type, relativeoffset);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBIFORMAT);
Serialise_glVertexArrayVertexAttribIFormatEXT(vaobj, attribindex, size, type, relativeoffset);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
m_Real.glVertexAttribIFormat(attribindex, size, type, relativeoffset);
@@ -2245,7 +2316,7 @@ void WrappedOpenGL::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBIFORMAT);
Serialise_glVertexAttribIFormat(attribindex, size, type, relativeoffset);
Serialise_glVertexArrayVertexAttribIFormatEXT(varecord->Resource.name, attribindex, size, type, relativeoffset);
r->AddChunk(scope.Get());
}
@@ -2253,35 +2324,51 @@ void WrappedOpenGL::glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum
}
}
bool WrappedOpenGL::Serialise_glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
SERIALISE_ELEMENT(uint32_t, Index, attribindex);
SERIALISE_ELEMENT(int32_t, Size, size);
SERIALISE_ELEMENT(GLenum, Type, type);
SERIALISE_ELEMENT(uint32_t, Offset, relativeoffset);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
m_Real.glVertexAttribLFormat(Index, Size, Type, Offset);
m_Real.glVertexArrayVertexAttribLFormatEXT(vaobj, Index, Size, Type, Offset);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
m_Real.glVertexArrayVertexAttribLFormatEXT(vaobj, attribindex, size, type, relativeoffset);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBLFORMAT);
Serialise_glVertexArrayVertexAttribLFormatEXT(vaobj, attribindex, size, type, relativeoffset);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
{
m_Real.glVertexAttribLFormat(attribindex, size, type, relativeoffset);
@@ -2301,7 +2388,7 @@ void WrappedOpenGL::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBLFORMAT);
Serialise_glVertexAttribLFormat(attribindex, size, type, relativeoffset);
Serialise_glVertexArrayVertexAttribLFormatEXT(varecord->Resource.name, attribindex, size, type, relativeoffset);
r->AddChunk(scope.Get());
}
@@ -2309,33 +2396,49 @@ void WrappedOpenGL::glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum
}
}
bool WrappedOpenGL::Serialise_glVertexAttribDivisor(GLuint index, GLuint divisor)
bool WrappedOpenGL::Serialise_glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor)
{
SERIALISE_ELEMENT(uint32_t, Index, index);
SERIALISE_ELEMENT(uint32_t, Divisor, divisor);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
if(m_State == READING)
{
if(id != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
vaobj = (id != ResourceId()) ? GetResourceManager()->GetLiveResource(id).name : m_FakeVAO;
m_Real.glVertexAttribDivisor(Index, Divisor);
m_Real.glVertexArrayVertexAttribDivisorEXT(vaobj, Index, Divisor);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexAttribDivisorEXT(GLuint vaobj, GLuint index, GLuint divisor)
{
m_Real.glVertexArrayVertexAttribDivisorEXT(vaobj, index, divisor);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBDIVISOR);
Serialise_glVertexArrayVertexAttribDivisorEXT(vaobj, index, divisor);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glVertexAttribDivisor(GLuint index, GLuint divisor)
{
m_Real.glVertexAttribDivisor(index, divisor);
@@ -2355,7 +2458,7 @@ void WrappedOpenGL::glVertexAttribDivisor(GLuint index, GLuint divisor)
{
SCOPED_SERIALISE_CONTEXT(VERTEXATTRIBDIVISOR);
Serialise_glVertexAttribDivisor(index, divisor);
Serialise_glVertexArrayVertexAttribDivisorEXT(varecord->Resource.name, index, divisor);
r->AddChunk(scope.Get());
}
@@ -2363,10 +2466,10 @@ void WrappedOpenGL::glVertexAttribDivisor(GLuint index, GLuint divisor)
}
}
bool WrappedOpenGL::Serialise_glEnableVertexAttribArray(GLuint index)
bool WrappedOpenGL::Serialise_glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index)
{
SERIALISE_ELEMENT(uint32_t, Index, index);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
@@ -2388,6 +2491,33 @@ bool WrappedOpenGL::Serialise_glEnableVertexAttribArray(GLuint index)
return true;
}
void WrappedOpenGL::glEnableVertexArrayAttribEXT(GLuint vaobj, GLuint index)
{
m_Real.glEnableVertexArrayAttribEXT(vaobj, index);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(ENABLEVERTEXATTRIBARRAY);
Serialise_glEnableVertexArrayAttribEXT(varecord->Resource.name, index);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glEnableVertexAttribArray(GLuint index)
{
m_Real.glEnableVertexAttribArray(index);
@@ -2407,7 +2537,7 @@ void WrappedOpenGL::glEnableVertexAttribArray(GLuint index)
{
SCOPED_SERIALISE_CONTEXT(ENABLEVERTEXATTRIBARRAY);
Serialise_glEnableVertexAttribArray(index);
Serialise_glEnableVertexArrayAttribEXT(varecord->Resource.name, index);
r->AddChunk(scope.Get());
}
@@ -2415,10 +2545,10 @@ void WrappedOpenGL::glEnableVertexAttribArray(GLuint index)
}
}
bool WrappedOpenGL::Serialise_glDisableVertexAttribArray(GLuint index)
bool WrappedOpenGL::Serialise_glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index)
{
SERIALISE_ELEMENT(uint32_t, Index, index);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, id, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State < WRITING)
{
@@ -2440,6 +2570,33 @@ bool WrappedOpenGL::Serialise_glDisableVertexAttribArray(GLuint index)
return true;
}
void WrappedOpenGL::glDisableVertexArrayAttribEXT(GLuint vaobj, GLuint index)
{
m_Real.glDisableVertexArrayAttribEXT(vaobj, index);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(DISABLEVERTEXATTRIBARRAY);
Serialise_glDisableVertexArrayAttribEXT(varecord->Resource.name, index);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glDisableVertexAttribArray(GLuint index)
{
m_Real.glDisableVertexAttribArray(index);
@@ -2459,7 +2616,7 @@ void WrappedOpenGL::glDisableVertexAttribArray(GLuint index)
{
SCOPED_SERIALISE_CONTEXT(DISABLEVERTEXATTRIBARRAY);
Serialise_glDisableVertexAttribArray(index);
Serialise_glDisableVertexArrayAttribEXT(varecord->Resource.name, index);
r->AddChunk(scope.Get());
}
@@ -2584,39 +2741,58 @@ bool WrappedOpenGL::Serialise_glVertexArrayElementBuffer(GLuint vaobj, GLuint bu
return true;
}
bool WrappedOpenGL::Serialise_glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
bool WrappedOpenGL::Serialise_glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
{
SERIALISE_ELEMENT(uint32_t, idx, bindingindex);
SERIALISE_ELEMENT(ResourceId, id, (buffer ? GetResourceManager()->GetID(BufferRes(GetCtx(), buffer)) : ResourceId()));
SERIALISE_ELEMENT(uint64_t, offs, offset);
SERIALISE_ELEMENT(uint64_t, str, stride);
SERIALISE_ELEMENT(ResourceId, vid, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, vid, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
if(m_State <= EXECUTING)
{
if(m_State == READING)
{
if(vid != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(vid);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
vaobj = (vid != ResourceId()) ? GetResourceManager()->GetLiveResource(vid).name : m_FakeVAO;
GLuint live = 0;
if(id != ResourceId())
live = GetResourceManager()->GetLiveResource(id).name;
m_Real.glBindVertexBuffer(idx, live, (GLintptr)offs, (GLsizei)str);
m_Real.glVertexArrayBindVertexBufferEXT(vaobj, idx, live, (GLintptr)offs, (GLsizei)str);
}
return true;
}
void WrappedOpenGL::glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
{
m_Real.glVertexArrayBindVertexBufferEXT(vaobj, bindingindex, buffer, offset, stride);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(BIND_VERTEXBUFFER);
Serialise_glVertexArrayBindVertexBufferEXT(vaobj, bindingindex, buffer, offset, stride);
r->AddChunk(scope.Get());
}
if(buffer != 0)
r->AddParent(GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer)));
}
}
}
void WrappedOpenGL::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
{
m_Real.glBindVertexBuffer(bindingindex, buffer, offset, stride);
@@ -2636,7 +2812,7 @@ void WrappedOpenGL::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLint
{
SCOPED_SERIALISE_CONTEXT(BIND_VERTEXBUFFER);
Serialise_glBindVertexBuffer(bindingindex, buffer, offset, stride);
Serialise_glVertexArrayBindVertexBufferEXT(varecord->Resource.name, bindingindex, buffer, offset, stride);
r->AddChunk(scope.Get());
}
@@ -2739,33 +2915,49 @@ void WrappedOpenGL::glBindVertexBuffers(GLuint first, GLsizei count, const GLuin
}
}
bool WrappedOpenGL::Serialise_glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
bool WrappedOpenGL::Serialise_glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor)
{
SERIALISE_ELEMENT(uint32_t, idx, bindingindex);
SERIALISE_ELEMENT(uint32_t, d, divisor);
SERIALISE_ELEMENT(ResourceId, vid, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, vid, (vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId()));
if(m_State <= EXECUTING)
{
if(m_State == READING)
{
if(vid != ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(vid);
m_Real.glBindVertexArray(res.name);
}
else
{
m_Real.glBindVertexArray(m_FakeVAO);
}
}
vaobj = (vid != ResourceId()) ? GetResourceManager()->GetLiveResource(vid).name : m_FakeVAO;
m_Real.glVertexBindingDivisor(idx, d);
m_Real.glVertexArrayVertexBindingDivisorEXT(vaobj, idx, d);
}
return true;
}
void WrappedOpenGL::glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor)
{
m_Real.glVertexArrayVertexBindingDivisorEXT(vaobj, bindingindex, divisor);
if(m_State >= WRITING)
{
GLResourceRecord *varecord = GetResourceManager()->GetResourceRecord(VertexArrayRes(GetCtx(), vaobj));
GLResourceRecord *r = m_State == WRITING_CAPFRAME ? m_ContextRecord : varecord;
if(r)
{
if(m_State == WRITING_IDLE && !RecordUpdateCheck(varecord))
return;
if(m_State == WRITING_CAPFRAME && varecord)
GetResourceManager()->MarkResourceFrameReferenced(varecord->GetResourceID(), eFrameRef_Write);
{
SCOPED_SERIALISE_CONTEXT(VERTEXBINDINGDIVISOR);
Serialise_glVertexArrayVertexBindingDivisorEXT(vaobj, bindingindex, divisor);
r->AddChunk(scope.Get());
}
}
}
}
void WrappedOpenGL::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
{
m_Real.glVertexBindingDivisor(bindingindex, divisor);
@@ -2785,7 +2977,7 @@ void WrappedOpenGL::glVertexBindingDivisor(GLuint bindingindex, GLuint divisor)
{
SCOPED_SERIALISE_CONTEXT(VERTEXBINDINGDIVISOR);
Serialise_glVertexBindingDivisor(bindingindex, divisor);
Serialise_glVertexArrayVertexBindingDivisorEXT(varecord->Resource.name, bindingindex, divisor);
r->AddChunk(scope.Get());
}
+40 -8
View File
@@ -1816,9 +1816,9 @@ void WrappedOpenGL::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat dep
}
}
bool WrappedOpenGL::Serialise_glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)
bool WrappedOpenGL::Serialise_glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
{
SERIALISE_ELEMENT(GLenum, Target, target);
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(BufferRes(GetCtx(), buffer)));
SERIALISE_ELEMENT(GLenum, InternalFormat, internalformat);
SERIALISE_ELEMENT(GLenum, Format, format);
SERIALISE_ELEMENT(GLenum, Type, type);
@@ -1882,28 +1882,44 @@ bool WrappedOpenGL::Serialise_glClearBufferData(GLenum target, GLenum internalfo
if(m_State <= EXECUTING)
{
m_Real.glClearBufferData(Target, InternalFormat, Format, Type, (const void *)&val[0]);
m_Real.glClearNamedBufferDataEXT(GetResourceManager()->GetLiveResource(id).name, InternalFormat, Format, Type, (const void *)&val[0]);
}
return true;
}
void WrappedOpenGL::glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
{
m_Real.glClearNamedBufferDataEXT(buffer, internalformat, format, type, data);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERDATA);
Serialise_glClearNamedBufferDataEXT(buffer, internalformat, format, type, data);
m_ContextRecord->AddChunk(scope.Get());
}
}
void WrappedOpenGL::glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)
{
m_Real.glClearBufferData(target, internalformat, format, type, data);
if(m_State == WRITING_CAPFRAME)
{
GLResourceRecord *record = GetCtxData().m_BufferRecord[BufferIdx(target)];
RDCASSERT(record);
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERDATA);
Serialise_glClearBufferData(target, internalformat, format, type, data);
Serialise_glClearNamedBufferDataEXT(record->Resource.name, internalformat, format, type, data);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
bool WrappedOpenGL::Serialise_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
{
SERIALISE_ELEMENT(GLenum, Target, target);
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(BufferRes(GetCtx(), buffer)));
SERIALISE_ELEMENT(GLenum, InternalFormat, internalformat);
SERIALISE_ELEMENT(uint64_t, Offset, (uint64_t)offset);
SERIALISE_ELEMENT(uint64_t, Size, (uint64_t)size);
@@ -1969,20 +1985,36 @@ bool WrappedOpenGL::Serialise_glClearBufferSubData(GLenum target, GLenum interna
if(m_State <= EXECUTING)
{
m_Real.glClearBufferSubData(Target, InternalFormat, (GLintptr)Offset, (GLsizeiptr)Size, Format, Type, (const void *)&val[0]);
m_Real.glClearNamedBufferSubDataEXT(GetResourceManager()->GetLiveResource(id).name, InternalFormat, (GLintptr)Offset, (GLsizeiptr)Size, Format, Type, (const void *)&val[0]);
}
return true;
}
void WrappedOpenGL::glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
{
m_Real.glClearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, data);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERSUBDATA);
Serialise_glClearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, data);
m_ContextRecord->AddChunk(scope.Get());
}
}
void WrappedOpenGL::glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
{
m_Real.glClearBufferSubData(target, internalformat, offset, size, format, type, data);
if(m_State == WRITING_CAPFRAME)
{
GLResourceRecord *record = GetCtxData().m_BufferRecord[BufferIdx(target)];
RDCASSERT(record);
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERSUBDATA);
Serialise_glClearBufferSubData(target, internalformat, offset, size, format, type, data);
Serialise_glClearNamedBufferSubDataEXT(record->Resource.name, internalformat, offset, size, format, type, data);
m_ContextRecord->AddChunk(scope.Get());
}
@@ -699,49 +699,74 @@ void WrappedOpenGL::glFramebufferParameteri(GLenum target, GLenum pname, GLint p
}
}
bool WrappedOpenGL::Serialise_glReadBuffer(GLenum mode)
bool WrappedOpenGL::Serialise_glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode)
{
SERIALISE_ELEMENT(GLenum, m, mode);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_ReadFramebufferRecord ? GetCtxData().m_ReadFramebufferRecord->GetResourceID() : ResourceId());
SERIALISE_ELEMENT(ResourceId, Id, (framebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)) : ResourceId()));
SERIALISE_ELEMENT(GLenum, b, mode);
if(m_State < WRITING)
{
if(id != ResourceId())
if(Id == ResourceId())
{
GLResource res = GetResourceManager()->GetLiveResource(id);
m_Real.glBindFramebuffer(eGL_READ_FRAMEBUFFER, res.name);
// since we are faking the default framebuffer with our own
// to see the results, replace back/front/left/right with color attachment 0
if(b == eGL_BACK_LEFT || b == eGL_BACK_RIGHT || b == eGL_BACK ||
b == eGL_FRONT_LEFT || b == eGL_FRONT_RIGHT || b == eGL_FRONT)
b = eGL_COLOR_ATTACHMENT0;
m_Real.glFramebufferReadBufferEXT(m_FakeBB_FBO, b);
}
else
{
m_Real.glBindFramebuffer(eGL_READ_FRAMEBUFFER, m_FakeBB_FBO);
GLResource res = GetResourceManager()->GetLiveResource(Id);
m_Real.glFramebufferReadBufferEXT(res.name, b);
}
m_Real.glReadBuffer(m);
}
return true;
}
void WrappedOpenGL::glFramebufferReadBufferEXT(GLuint framebuffer, GLenum buf)
{
m_Real.glFramebufferReadBufferEXT(framebuffer, buf);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(READ_BUFFER);
Serialise_glFramebufferReadBufferEXT(framebuffer, buf);
m_ContextRecord->AddChunk(scope.Get());
}
else if(m_State == WRITING_IDLE && framebuffer != 0)
{
SCOPED_SERIALISE_CONTEXT(READ_BUFFER);
Serialise_glFramebufferReadBufferEXT(framebuffer, buf);
ResourceRecord *record = GetResourceManager()->GetResourceRecord(FramebufferRes(GetCtx(), framebuffer));
record->AddChunk(scope.Get());
}
}
void WrappedOpenGL::glReadBuffer(GLenum mode)
{
m_Real.glReadBuffer(mode);
if(m_State >= WRITING)
{
GLResourceRecord *drawrecord = GetCtxData().m_DrawFramebufferRecord;
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(READ_BUFFER);
Serialise_glReadBuffer(mode);
Serialise_glFramebufferReadBufferEXT(drawrecord ? drawrecord->Resource.name : 0, mode);
m_ContextRecord->AddChunk(scope.Get());
}
else
{
GLResourceRecord *readrecord = GetCtxData().m_ReadFramebufferRecord;
if(readrecord)
GetResourceManager()->MarkDirtyResource(readrecord->GetResourceID());
if(drawrecord)
GetResourceManager()->MarkDirtyResource(drawrecord->GetResourceID());
}
}
m_Real.glReadBuffer(mode);
}
bool WrappedOpenGL::Serialise_glBindFramebuffer(GLenum target, GLuint framebuffer)
@@ -786,38 +811,68 @@ void WrappedOpenGL::glBindFramebuffer(GLenum target, GLuint framebuffer)
m_Real.glBindFramebuffer(target, framebuffer);
}
bool WrappedOpenGL::Serialise_glDrawBuffer(GLenum buf)
bool WrappedOpenGL::Serialise_glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum buf)
{
SERIALISE_ELEMENT(ResourceId, Id, (framebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)) : ResourceId()));
SERIALISE_ELEMENT(GLenum, b, buf);
if(m_State < WRITING)
{
// since we are faking the default framebuffer with our own
// to see the results, replace back/front/left/right with color attachment 0
if(b == eGL_BACK_LEFT || b == eGL_BACK_RIGHT || b == eGL_BACK ||
b == eGL_FRONT_LEFT || b == eGL_FRONT_RIGHT || b == eGL_FRONT)
b = eGL_COLOR_ATTACHMENT0;
m_Real.glDrawBuffer(b);
if(Id == ResourceId())
{
// since we are faking the default framebuffer with our own
// to see the results, replace back/front/left/right with color attachment 0
if(b == eGL_BACK_LEFT || b == eGL_BACK_RIGHT || b == eGL_BACK ||
b == eGL_FRONT_LEFT || b == eGL_FRONT_RIGHT || b == eGL_FRONT)
b = eGL_COLOR_ATTACHMENT0;
m_Real.glFramebufferDrawBufferEXT(m_FakeBB_FBO, b);
}
else
{
GLResource res = GetResourceManager()->GetLiveResource(Id);
m_Real.glFramebufferDrawBufferEXT(res.name, b);
}
}
return true;
}
void WrappedOpenGL::glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum buf)
{
m_Real.glFramebufferDrawBufferEXT(framebuffer, buf);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(DRAW_BUFFER);
Serialise_glFramebufferDrawBufferEXT(framebuffer, buf);
m_ContextRecord->AddChunk(scope.Get());
}
else if(m_State == WRITING_IDLE && framebuffer != 0)
{
SCOPED_SERIALISE_CONTEXT(DRAW_BUFFER);
Serialise_glFramebufferDrawBufferEXT(framebuffer, buf);
ResourceRecord *record = GetResourceManager()->GetResourceRecord(FramebufferRes(GetCtx(), framebuffer));
record->AddChunk(scope.Get());
}
}
void WrappedOpenGL::glDrawBuffer(GLenum buf)
{
if(m_State >= WRITING)
{
GLResourceRecord *drawrecord = GetCtxData().m_DrawFramebufferRecord;
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(DRAW_BUFFER);
Serialise_glDrawBuffer(buf);
Serialise_glFramebufferDrawBufferEXT(drawrecord ? drawrecord->Resource.name : 0, buf);
m_ContextRecord->AddChunk(scope.Get());
}
else
{
GLResourceRecord *drawrecord = GetCtxData().m_DrawFramebufferRecord;
if(drawrecord)
GetResourceManager()->MarkDirtyResource(drawrecord->GetResourceID());
}
@@ -1075,9 +1130,9 @@ void WrappedOpenGL::glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers
m_Real.glDeleteRenderbuffers(n, renderbuffers);
}
bool WrappedOpenGL::Serialise_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
bool WrappedOpenGL::Serialise_glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
{
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_Renderbuffer);
SERIALISE_ELEMENT(ResourceId, id, (renderbuffer ? GetResourceManager()->GetID(RenderbufferRes(GetCtx(), renderbuffer)) : ResourceId()));
SERIALISE_ELEMENT(GLenum, Format, internalformat);
SERIALISE_ELEMENT(uint32_t, Width, width);
SERIALISE_ELEMENT(uint32_t, Height, height);
@@ -1096,8 +1151,7 @@ bool WrappedOpenGL::Serialise_glRenderbufferStorage(GLenum target, GLenum intern
GLuint real = GetResourceManager()->GetLiveResource(id).name;
m_Real.glBindRenderbuffer(eGL_RENDERBUFFER, real);
m_Real.glRenderbufferStorage(eGL_RENDERBUFFER, Format, Width, Height);
m_Real.glNamedRenderbufferStorageEXT(real, Format, Width, Height);
// create read-from texture for displaying this render buffer
m_Real.glGenTextures(1, &texDetails.renderbufferReadTex);
@@ -1121,23 +1175,24 @@ bool WrappedOpenGL::Serialise_glRenderbufferStorage(GLenum target, GLenum intern
return true;
}
void WrappedOpenGL::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
void WrappedOpenGL::glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
{
m_Real.glRenderbufferStorage(target, internalformat, width, height);
m_Real.glNamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height);
ResourceId rb = GetResourceManager()->GetID(RenderbufferRes(GetCtx(), renderbuffer));
if(m_State >= WRITING)
{
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(GetCtxData().m_Renderbuffer);
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(rb);
RDCASSERT(record);
SCOPED_SERIALISE_CONTEXT(RENDERBUFFER_STORAGE);
Serialise_glRenderbufferStorage(eGL_RENDERBUFFER, internalformat, width, height);
Serialise_glNamedRenderbufferStorageEXT(record->Resource.name, internalformat, width, height);
record->AddChunk(scope.Get());
}
{
ResourceId rb = GetCtxData().m_Renderbuffer;
m_Textures[rb].width = width;
m_Textures[rb].height = height;
m_Textures[rb].depth = 1;
@@ -1148,13 +1203,41 @@ void WrappedOpenGL::glRenderbufferStorage(GLenum target, GLenum internalformat,
}
}
bool WrappedOpenGL::Serialise_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
void WrappedOpenGL::glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
m_Real.glRenderbufferStorage(target, internalformat, width, height);
ResourceId rb = GetCtxData().m_Renderbuffer;
if(m_State >= WRITING)
{
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(rb);
RDCASSERT(record);
SCOPED_SERIALISE_CONTEXT(RENDERBUFFER_STORAGE);
Serialise_glNamedRenderbufferStorageEXT(record->Resource.name, internalformat, width, height);
record->AddChunk(scope.Get());
}
{
m_Textures[rb].width = width;
m_Textures[rb].height = height;
m_Textures[rb].depth = 1;
m_Textures[rb].samples = 1;
m_Textures[rb].curType = eGL_RENDERBUFFER;
m_Textures[rb].dimension = 2;
m_Textures[rb].internalFormat = internalformat;
}
}
bool WrappedOpenGL::Serialise_glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
SERIALISE_ELEMENT(GLenum, Format, internalformat);
SERIALISE_ELEMENT(uint32_t, Samples, samples);
SERIALISE_ELEMENT(uint32_t, Width, width);
SERIALISE_ELEMENT(uint32_t, Height, height);
SERIALISE_ELEMENT(ResourceId, id, GetCtxData().m_Renderbuffer);
SERIALISE_ELEMENT(ResourceId, id, (renderbuffer ? GetResourceManager()->GetID(RenderbufferRes(GetCtx(), renderbuffer)) : ResourceId()));
if(m_State == READING)
{
@@ -1170,8 +1253,7 @@ bool WrappedOpenGL::Serialise_glRenderbufferStorageMultisample(GLenum target, GL
GLuint real = GetResourceManager()->GetLiveResource(id).name;
m_Real.glBindRenderbuffer(eGL_RENDERBUFFER, GetResourceManager()->GetLiveResource(id).name);
m_Real.glRenderbufferStorageMultisample(eGL_RENDERBUFFER, Samples, Format, Width, Height);
m_Real.glNamedRenderbufferStorageMultisampleEXT(real, Samples, Format, Width, Height);
// create read-from texture for displaying this render buffer
m_Real.glGenTextures(1, &texDetails.renderbufferReadTex);
@@ -1195,23 +1277,52 @@ bool WrappedOpenGL::Serialise_glRenderbufferStorageMultisample(GLenum target, GL
return true;
}
void WrappedOpenGL::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
void WrappedOpenGL::glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
m_Real.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
m_Real.glNamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height);
ResourceId rb = GetResourceManager()->GetID(RenderbufferRes(GetCtx(), renderbuffer));
if(m_State >= WRITING)
{
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(GetCtxData().m_Renderbuffer);
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(rb);
RDCASSERT(record);
SCOPED_SERIALISE_CONTEXT(RENDERBUFFER_STORAGEMS);
Serialise_glRenderbufferStorageMultisample(eGL_RENDERBUFFER, samples, internalformat, width, height);
Serialise_glNamedRenderbufferStorageMultisampleEXT(record->Resource.name, samples, internalformat, width, height);
record->AddChunk(scope.Get());
}
{
m_Textures[rb].width = width;
m_Textures[rb].height = height;
m_Textures[rb].depth = 1;
m_Textures[rb].samples = samples;
m_Textures[rb].curType = eGL_RENDERBUFFER;
m_Textures[rb].dimension = 2;
m_Textures[rb].internalFormat = internalformat;
}
}
void WrappedOpenGL::glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
m_Real.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
ResourceId rb = GetCtxData().m_Renderbuffer;
if(m_State >= WRITING)
{
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(rb);
RDCASSERT(record);
SCOPED_SERIALISE_CONTEXT(RENDERBUFFER_STORAGEMS);
Serialise_glNamedRenderbufferStorageMultisampleEXT(record->Resource.name, samples, internalformat, width, height);
record->AddChunk(scope.Get());
}
{
ResourceId rb = GetCtxData().m_Renderbuffer;
m_Textures[rb].width = width;
m_Textures[rb].height = height;
m_Textures[rb].depth = 1;
+143 -42
View File
@@ -190,21 +190,6 @@ void WrappedOpenGL::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum
m_Real.glGetTexLevelParameteriv(target, level, pname, params);
}
void WrappedOpenGL::glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params)
{
m_Real.glGetTextureParameterivEXT(texture, target, pname, params);
}
void WrappedOpenGL::glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params)
{
m_Real.glGetTextureParameterfvEXT(texture, target, pname, params);
}
void WrappedOpenGL::glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params)
{
m_Real.glGetTextureLevelParameterivEXT(texture, target, level, pname, params);
}
void WrappedOpenGL::glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)
{
m_Real.glGetTexLevelParameterfv(target, level, pname, params);
@@ -265,11 +250,6 @@ void WrappedOpenGL::glGetTexImage(GLenum target, GLint level, GLenum format, GLe
m_Real.glGetTexImage(target, level, format, type, pixels);
}
void WrappedOpenGL::glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
{
m_Real.glGetTextureImageEXT(texture, target, level, format, type, pixels);
}
void WrappedOpenGL::glGetCompressedTexImage(GLenum target, GLint level, void *img)
{
m_Real.glGetCompressedTexImage(target, level, img);
@@ -305,11 +285,6 @@ void WrappedOpenGL::glGetTextureSubImage(GLuint texture, GLint level, GLint xoff
m_Real.glGetTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);
}
void WrappedOpenGL::glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint level, void *img)
{
m_Real.glGetCompressedTextureImageEXT(texture, target, level, img);
}
void WrappedOpenGL::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)
{
m_Real.glGetInternalformativ(target, internalformat, pname, bufSize, params);
@@ -426,11 +401,6 @@ GLenum WrappedOpenGL::glCheckFramebufferStatus(GLenum target)
return m_Real.glCheckFramebufferStatus(target);
}
GLenum WrappedOpenGL::glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target)
{
return m_Real.glCheckNamedFramebufferStatusEXT(framebuffer, target);
}
void WrappedOpenGL::glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params)
{
m_Real.glGetVertexAttribiv(index, pname, params);
@@ -771,29 +741,34 @@ void WrappedOpenGL::glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void *
m_Real.glGetNamedBufferPointerv(buffer, pname, params);
}
void WrappedOpenGL::glGetNamedFramebufferParameteriv(GLuint framebuffer, GLenum pname, GLint *param)
void WrappedOpenGL::glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *param)
{
m_Real.glGetNamedFramebufferParameteriv(framebuffer, pname, param);
m_Real.glGetNamedFramebufferParameterivEXT(framebuffer, pname, param);
}
void WrappedOpenGL::glGetNamedFramebufferAttachmentParameteriv(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)
void WrappedOpenGL::glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)
{
m_Real.glGetNamedFramebufferAttachmentParameteriv(framebuffer, attachment, pname, params);
m_Real.glGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params);
}
void WrappedOpenGL::glGetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint *params)
void WrappedOpenGL::glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint *params)
{
m_Real.glGetNamedRenderbufferParameteriv(renderbuffer, pname, params);
m_Real.glGetNamedRenderbufferParameterivEXT(renderbuffer, pname, params);
}
void WrappedOpenGL::glGetNamedBufferParameteriv(GLuint buffer, GLenum pname, GLint *params)
void WrappedOpenGL::glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
{
m_Real.glGetNamedBufferParameterivEXT(buffer, pname, params);
m_Real.glGetTextureImageEXT(texture, target, level, format, type, pixels);
}
void WrappedOpenGL::glGetNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, void *data)
void WrappedOpenGL::glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint level, void *img)
{
m_Real.glGetNamedBufferSubDataEXT(buffer, offset, size, data);
m_Real.glGetCompressedTextureImageEXT(texture, target, level, img);
}
GLenum WrappedOpenGL::glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target)
{
return m_Real.glCheckNamedFramebufferStatusEXT(framebuffer, target);
}
void WrappedOpenGL::glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params)
@@ -806,7 +781,133 @@ void WrappedOpenGL::glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, G
m_Real.glGetNamedBufferSubDataEXT(buffer, offset, size, data);
}
void WrappedOpenGL::glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)
void WrappedOpenGL::glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params)
{
m_Real.glGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params);
m_Real.glGetTextureParameterivEXT(texture, target, pname, params);
}
void WrappedOpenGL::glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat *params)
{
m_Real.glGetTextureParameterfvEXT(texture, target, pname, params);
}
void WrappedOpenGL::glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint *params)
{
m_Real.glGetTextureParameterIivEXT(texture, target, pname, params);
}
void WrappedOpenGL::glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint *params)
{
m_Real.glGetTextureParameterIuivEXT(texture, target, pname, params);
}
void WrappedOpenGL::glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params)
{
m_Real.glGetTextureLevelParameterivEXT(texture, target, level, pname, params);
}
void WrappedOpenGL::glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params)
{
m_Real.glGetTextureLevelParameterfvEXT(texture, target, level, pname, params);
}
void WrappedOpenGL::glGetPointeri_vEXT(GLenum pname, GLuint index, void **params)
{
m_Real.glGetPointeri_vEXT(pname, index, params);
}
void WrappedOpenGL::glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data)
{
m_Real.glGetDoubleIndexedvEXT(target, index, data);
}
void WrappedOpenGL::glGetPointerIndexedvEXT(GLenum target, GLuint index, void **data)
{
m_Real.glGetPointerIndexedvEXT(target, index, data);
}
void WrappedOpenGL::glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint *data)
{
m_Real.glGetIntegerIndexedvEXT(target, index, data);
}
void WrappedOpenGL::glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean *data)
{
m_Real.glGetBooleanIndexedvEXT(target, index, data);
}
void WrappedOpenGL::glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat *data)
{
m_Real.glGetFloatIndexedvEXT(target, index, data);
}
void WrappedOpenGL::glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
{
m_Real.glGetMultiTexImageEXT(texunit, target, level, format, type, pixels);
}
void WrappedOpenGL::glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat *params)
{
m_Real.glGetMultiTexParameterfvEXT(texunit, target, pname, params);
}
void WrappedOpenGL::glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params)
{
m_Real.glGetMultiTexParameterivEXT(texunit, target, pname, params);
}
void WrappedOpenGL::glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint *params)
{
m_Real.glGetMultiTexParameterIivEXT(texunit, target, pname, params);
}
void WrappedOpenGL::glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint *params)
{
m_Real.glGetMultiTexParameterIuivEXT(texunit, target, pname, params);
}
void WrappedOpenGL::glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params)
{
m_Real.glGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, params);
}
void WrappedOpenGL::glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params)
{
m_Real.glGetMultiTexLevelParameterivEXT(texunit, target, level, pname, params);
}
void WrappedOpenGL::glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, void *img)
{
m_Real.glGetCompressedMultiTexImageEXT(texunit, target, lod, img);
}
void WrappedOpenGL::glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, void **params)
{
m_Real.glGetNamedBufferPointervEXT(buffer, pname, params);
}
void WrappedOpenGL::glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint *params)
{
m_Real.glGetNamedProgramivEXT(program, target, pname, params);
}
void WrappedOpenGL::glGetVertexArrayIntegervEXT(GLuint vaobj, GLenum pname, GLint *param)
{
m_Real.glGetVertexArrayIntegervEXT(vaobj, pname, param);
}
void WrappedOpenGL::glGetVertexArrayPointervEXT(GLuint vaobj, GLenum pname, void **param)
{
m_Real.glGetVertexArrayPointervEXT(vaobj, pname, param);
}
void WrappedOpenGL::glGetVertexArrayIntegeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, GLint *param)
{
m_Real.glGetVertexArrayIntegeri_vEXT(vaobj, index, pname, param);
}
void WrappedOpenGL::glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GLenum pname, void **param)
{
m_Real.glGetVertexArrayPointeri_vEXT(vaobj, index, pname, param);
}
File diff suppressed because it is too large Load Diff