mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-26 00:16:45 +00:00
ARB_dsa part 1 - hook DSA functions, implement all but tex* & create*
* Doesn't compile yet! Just splitting this up logically so the change is a bit easier to digest. * I've commented and organised a bit better the gl_hookset.h hook list. * The function hooks are set up for all of the ARB_dsa entry points. Those that are semnatically identical to EXT_dsa are set up as aliases (with EXT_ being canonical, so we can fall back if ARB_dsa isn't supported - see comments in gl_hookset.h). * Implemented the new functions except for the glTexture* family and the glCreate* family. No deduplication of code yet. * As with EXT_dsa we "promote" to the DSA function for serialisation, but since unlike EXT_dsa we can't assume ARB_dsa is present, instead we emulate those functions that we might use unconditionally but may not be present.
This commit is contained in:
@@ -47,6 +47,7 @@ driver/gl/gl_renderstate.o \
|
||||
driver/gl/wrappers/gl_buffer_funcs.o \
|
||||
driver/gl/wrappers/gl_debug_funcs.o \
|
||||
driver/gl/wrappers/gl_draw_funcs.o \
|
||||
driver/gl/wrappers/gl_emulated.o \
|
||||
driver/gl/wrappers/gl_framebuffer_funcs.o \
|
||||
driver/gl/wrappers/gl_get_funcs.o \
|
||||
driver/gl/wrappers/gl_query_funcs.o \
|
||||
|
||||
@@ -2577,16 +2577,16 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
Serialise_glClear(0);
|
||||
break;
|
||||
case CLEARBUFFERF:
|
||||
Serialise_glClearBufferfv(eGL_NONE, 0, NULL);
|
||||
Serialise_glClearNamedFramebufferfv(0, eGL_NONE, 0, NULL);
|
||||
break;
|
||||
case CLEARBUFFERI:
|
||||
Serialise_glClearBufferiv(eGL_NONE, 0, NULL);
|
||||
Serialise_glClearNamedFramebufferiv(0, eGL_NONE, 0, NULL);
|
||||
break;
|
||||
case CLEARBUFFERUI:
|
||||
Serialise_glClearBufferuiv(eGL_NONE, 0, NULL);
|
||||
Serialise_glClearNamedFramebufferuiv(0, eGL_NONE, 0, NULL);
|
||||
break;
|
||||
case CLEARBUFFERFI:
|
||||
Serialise_glClearBufferfi(eGL_NONE, 0, 0, 0);
|
||||
Serialise_glClearNamedFramebufferfi(0, eGL_NONE, 0, 0);
|
||||
break;
|
||||
case CLEARBUFFERDATA:
|
||||
Serialise_glClearNamedBufferDataEXT(0, eGL_NONE, eGL_NONE, eGL_NONE, NULL);
|
||||
@@ -2772,7 +2772,7 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
Serialise_glVertexArrayBindVertexBufferEXT(0, 0, 0, 0, 0);
|
||||
break;
|
||||
case BIND_VERTEXBUFFERS:
|
||||
Serialise_glBindVertexBuffers(0, 0, NULL, NULL, NULL);
|
||||
Serialise_glVertexArrayVertexBuffers(0, 0, 0, NULL, NULL, NULL);
|
||||
break;
|
||||
case VERTEXBINDINGDIVISOR:
|
||||
Serialise_glVertexArrayVertexBindingDivisorEXT(0, 0, 0);
|
||||
@@ -2905,7 +2905,7 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
Serialise_glFramebufferDrawBuffersEXT(0, 0, NULL);
|
||||
break;
|
||||
case BLIT_FRAMEBUFFER:
|
||||
Serialise_glBlitFramebuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, eGL_NONE);
|
||||
Serialise_glBlitNamedFramebuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, eGL_NONE);
|
||||
break;
|
||||
|
||||
case GEN_RENDERBUFFERS:
|
||||
|
||||
@@ -55,7 +55,7 @@ struct GLInitParams : public RDCInitParams
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
|
||||
static const uint32_t GL_SERIALISE_VERSION = 0x0000007;
|
||||
static const uint32_t GL_SERIALISE_VERSION = 0x0000008;
|
||||
|
||||
// version number internal to opengl stream
|
||||
uint32_t SerialiseVersion;
|
||||
@@ -682,11 +682,6 @@ class WrappedOpenGL
|
||||
|
||||
bool Serialise_glVertexAttrib(GLuint index, int count, GLenum type, GLboolean normalized, const void *value, int attribtype);
|
||||
|
||||
// hack for now until ARB_dsa is serialised
|
||||
bool Serialise_glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer);
|
||||
bool Serialise_glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer);
|
||||
bool Serialise_glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexAttrib1d(GLuint index, GLdouble x));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexAttrib1dv(GLuint index, const GLdouble *v));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexAttrib1f(GLuint index, GLfloat x));
|
||||
@@ -850,6 +845,10 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryObjectiv(GLuint id, GLenum pname, GLint *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetQueryiv(GLenum target, GLenum pname, GLint *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, void *data));
|
||||
@@ -912,8 +911,6 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, GLint64 *params));
|
||||
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));
|
||||
|
||||
enum UniformType
|
||||
@@ -1104,7 +1101,6 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits));
|
||||
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, glGetPointeri_vEXT(GLenum pname, GLuint index, void **params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble *data));
|
||||
@@ -1157,6 +1153,7 @@ class WrappedOpenGL
|
||||
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, glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum *bufs));
|
||||
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));
|
||||
@@ -1224,6 +1221,67 @@ class WrappedOpenGL
|
||||
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));
|
||||
|
||||
// ARB_direct_state_access
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateTransformFeedbacks(GLsizei n, GLuint *ids));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateBuffers(GLsizei n, GLuint *buffers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateFramebuffers(GLsizei n, GLuint *framebuffers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateRenderbuffers(GLsizei n, GLuint *renderbuffers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateTextures(GLenum target, GLsizei n, GLuint *textures));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateVertexArrays(GLsizei n, GLuint *arrays));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateSamplers(GLsizei n, GLuint *samplers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateProgramPipelines(GLsizei n, GLuint *pipelines));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateQueries(GLenum target, GLsizei n, GLuint *ids));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferData(GLuint buffer, GLsizei size, const void *data, GLenum usage));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferStorage(GLuint buffer, GLsizei size, const void *data, GLbitfield flags));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, const void *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizei size, GLenum format, GLenum type, const void *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void *, glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureBuffer(GLuint texture, GLenum internalformat, GLuint buffer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureBufferRange(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizei size));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorage2D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorage2DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorage3DMultisample(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureSubImage3D(GLuint texture, 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, glCopyTextureSubImage1D(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureSubImage2D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glCopyTextureSubImage3D(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureParameterf(GLuint texture, GLenum pname, GLfloat param));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureParameterfv(GLuint texture, GLenum pname, const GLfloat *param));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureParameteri(GLuint texture, GLenum pname, GLint param));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureParameterIiv(GLuint texture, GLenum pname, const GLint *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureParameterIuiv(GLuint texture, GLenum pname, const GLuint *params));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureParameteriv(GLuint texture, GLenum pname, const GLint *param));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGenerateTextureMipmap(GLuint texture));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glBindTextureUnit(GLuint unit, GLuint texture));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides));
|
||||
|
||||
};
|
||||
|
||||
class ScopedDebugContext
|
||||
|
||||
@@ -29,6 +29,12 @@
|
||||
|
||||
struct GLHookSet
|
||||
{
|
||||
// first we list all the core functions. 1.1 functions are separate under 'dllexport' for
|
||||
// different handling on windows. Extensions come after
|
||||
// Any corefunctions that are semantically identical to extension variants are listed as
|
||||
// 'aliases' such that if the 'alias' is requested via *GetProcAddress, the core function
|
||||
// will be returned and used.
|
||||
|
||||
// ++ dllexport
|
||||
PFNGLBINDTEXTUREPROC glBindTexture;
|
||||
PFNGLBLENDFUNCPROC glBlendFunc;
|
||||
@@ -94,6 +100,10 @@ struct GLHookSet
|
||||
PFNGLVIEWPORTPROC glViewport;
|
||||
// --
|
||||
|
||||
// this just means 'functions not dllexport on windows', not necessarily extensions.
|
||||
// note that for ARB_direct_state_access there is special treatment due to interaction with
|
||||
// EXT_direct_state_access, so those functions are listed later in the extension section
|
||||
// rather than here in the core section where you'd expect
|
||||
// ++ glext
|
||||
PFNGLACTIVETEXTUREPROC glActiveTexture; // aliases glActiveTextureARB
|
||||
PFNGLTEXSTORAGE1DPROC glTexStorage1D;
|
||||
@@ -138,8 +148,6 @@ struct GLHookSet
|
||||
PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
|
||||
PFNGLGETSHADERSOURCEPROC glGetShaderSource;
|
||||
PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
|
||||
PFNGLGETNAMEDSTRINGARBPROC glGetNamedStringARB;
|
||||
PFNGLGETNAMEDSTRINGIVARBPROC glGetNamedStringivARB;
|
||||
PFNGLGETPROGRAMIVPROC glGetProgramiv;
|
||||
PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
|
||||
PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
|
||||
@@ -172,17 +180,7 @@ struct GLHookSet
|
||||
PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
|
||||
PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage; // aliases glGetCompressedTexImageARB
|
||||
PFNGLGETNCOMPRESSEDTEXIMAGEPROC glGetnCompressedTexImage; // aliases glGetnCompressedTexImageARB
|
||||
PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glGetCompressedTextureImage;
|
||||
PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glGetCompressedTextureSubImage;
|
||||
PFNGLGETNTEXIMAGEPROC glGetnTexImage; // aliases glGetnTexImageARB
|
||||
PFNGLGETTEXTUREIMAGEPROC glGetTextureImage;
|
||||
PFNGLGETTEXTURELEVELPARAMETERFVPROC glGetTextureLevelParameterfv;
|
||||
PFNGLGETTEXTURELEVELPARAMETERIVPROC glGetTextureLevelParameteriv;
|
||||
PFNGLGETTEXTUREPARAMETERIIVPROC glGetTextureParameterIiv;
|
||||
PFNGLGETTEXTUREPARAMETERIUIVPROC glGetTextureParameterIuiv;
|
||||
PFNGLGETTEXTUREPARAMETERFVPROC glGetTextureParameterfv;
|
||||
PFNGLGETTEXTUREPARAMETERIVPROC glGetTextureParameteriv;
|
||||
PFNGLGETTEXTURESUBIMAGEPROC glGetTextureSubImage;
|
||||
PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv; // aliases glGetTexParameterIivEXT
|
||||
PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv; // aliases glGetTexParameterIuivEXT
|
||||
PFNGLCLAMPCOLORPROC glClampColor; // aliases glClampColorARB
|
||||
@@ -192,9 +190,6 @@ struct GLHookSet
|
||||
PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
|
||||
PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
|
||||
PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying; // aliases glGetTransformFeedbackVaryingEXT
|
||||
PFNGLGETTRANSFORMFEEDBACKI64_VPROC glGetTransformFeedbacki64_v;
|
||||
PFNGLGETTRANSFORMFEEDBACKI_VPROC glGetTransformFeedbacki_v;
|
||||
PFNGLGETTRANSFORMFEEDBACKIVPROC glGetTransformFeedbackiv;
|
||||
PFNGLGETSUBROUTINEINDEXPROC glGetSubroutineIndex;
|
||||
PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glGetSubroutineUniformLocation;
|
||||
PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
|
||||
@@ -220,16 +215,11 @@ struct GLHookSet
|
||||
PFNGLGETNUNIFORMFVPROC glGetnUniformfv; // aliases glGetnUniformfvARB
|
||||
PFNGLGETNUNIFORMIVPROC glGetnUniformiv; // aliases glGetnUniformivARB
|
||||
PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv; // aliases glGetnUniformuivARB
|
||||
PFNGLGETVERTEXARRAYIVPROC glGetVertexArrayiv;
|
||||
PFNGLGETVERTEXARRAYINDEXED64IVPROC glGetVertexArrayIndexed64iv;
|
||||
PFNGLGETVERTEXARRAYINDEXEDIVPROC glGetVertexArrayIndexediv;
|
||||
PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv; // aliases glGetVertexAttribIivEXT
|
||||
PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv; // aliases glGetVertexAttribIuivEXT
|
||||
PFNGLGETVERTEXATTRIBLDVPROC glGetVertexAttribLdv; // aliases glGetVertexAttribLdvEXT
|
||||
PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
|
||||
PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
|
||||
PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v;
|
||||
PFNGLGETNAMEDBUFFERPOINTERVPROC glGetNamedBufferPointerv;
|
||||
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; // aliases glCheckFramebufferStatusEXT
|
||||
PFNGLBLENDCOLORPROC glBlendColor; // aliases glBlendColorEXT
|
||||
PFNGLBLENDFUNCIPROC glBlendFunci; // aliases glBlendFunciARB
|
||||
@@ -245,14 +235,11 @@ struct GLHookSet
|
||||
PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
|
||||
PFNGLCOLORMASKIPROC glColorMaski; // aliases glColorMaskIndexedEXT
|
||||
PFNGLSAMPLEMASKIPROC glSampleMaski;
|
||||
PFNGLRASTERSAMPLESEXTPROC glRasterSamplesEXT;
|
||||
PFNGLSAMPLECOVERAGEPROC glSampleCoverage; // aliases glSampleCoverageARB
|
||||
PFNGLMINSAMPLESHADINGPROC glMinSampleShading; // aliases glMinSampleShadingARB
|
||||
PFNGLDEPTHRANGEFPROC glDepthRangef;
|
||||
PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
|
||||
PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
|
||||
PFNGLDEPTHBOUNDSEXTPROC glDepthBoundsEXT;
|
||||
PFNGLPOLYGONOFFSETCLAMPEXTPROC glPolygonOffsetClampEXT;
|
||||
PFNGLCLIPCONTROLPROC glClipControl;
|
||||
PFNGLPROVOKINGVERTEXPROC glProvokingVertex; // aliases glProvokingVertexEXT
|
||||
PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
|
||||
@@ -271,9 +258,6 @@ struct GLHookSet
|
||||
PFNGLUSEPROGRAMPROC glUseProgram;
|
||||
PFNGLSHADERBINARYPROC glShaderBinary;
|
||||
PFNGLPROGRAMBINARYPROC glProgramBinary;
|
||||
PFNGLNAMEDSTRINGARBPROC glNamedStringARB;
|
||||
PFNGLDELETENAMEDSTRINGARBPROC glDeleteNamedStringARB;
|
||||
PFNGLCOMPILESHADERINCLUDEARBPROC glCompileShaderIncludeARB;
|
||||
PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
|
||||
PFNGLVALIDATEPROGRAMPROC glValidateProgram;
|
||||
PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
|
||||
@@ -286,9 +270,6 @@ struct GLHookSet
|
||||
PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert; // aliases glDebugMessageInsertARB
|
||||
PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
|
||||
PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
|
||||
PFNGLPUSHGROUPMARKEREXTPROC glPushGroupMarkerEXT;
|
||||
PFNGLPOPGROUPMARKEREXTPROC glPopGroupMarkerEXT;
|
||||
PFNGLINSERTEVENTMARKEREXTPROC glInsertEventMarkerEXT;
|
||||
PFNGLOBJECTLABELPROC glObjectLabel; // aliases glLabelObjectEXT
|
||||
PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
|
||||
PFNGLENABLEIPROC glEnablei; // aliases glEnableIndexedEXT
|
||||
@@ -305,7 +286,6 @@ struct GLHookSet
|
||||
PFNGLISSYNCPROC glIsSync;
|
||||
PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
|
||||
PFNGLISVERTEXARRAYPROC glIsVertexArray;
|
||||
PFNGLISNAMEDSTRINGARBPROC glIsNamedStringARB;
|
||||
PFNGLGENBUFFERSPROC glGenBuffers; // aliases glGenBuffersARB
|
||||
PFNGLBINDBUFFERPROC glBindBuffer; // aliases glBindBufferARB
|
||||
PFNGLDRAWBUFFERSPROC glDrawBuffers; // aliases glDrawBuffersARB
|
||||
@@ -473,7 +453,6 @@ struct GLHookSet
|
||||
PFNGLPOINTPARAMETERIPROC glPointParameteri;
|
||||
PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
|
||||
PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
|
||||
PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glDispatchComputeGroupSizeARB;
|
||||
PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
|
||||
PFNGLMEMORYBARRIERPROC glMemoryBarrier; // aliases glMemoryBarrierEXT
|
||||
PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
|
||||
@@ -616,19 +595,68 @@ struct GLHookSet
|
||||
PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
|
||||
PFNGLMULTIDRAWARRAYSINDIRECTPROC glMultiDrawArraysIndirect;
|
||||
PFNGLMULTIDRAWELEMENTSINDIRECTPROC glMultiDrawElementsIndirect;
|
||||
PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glMultiDrawArraysIndirectCountARB;
|
||||
PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glMultiDrawElementsIndirectCountARB;
|
||||
PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
|
||||
PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
|
||||
PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer; // aliases glBlitFramebufferEXT
|
||||
PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glCheckNamedFramebufferStatusEXT;
|
||||
|
||||
// ARB_shading_language_include
|
||||
PFNGLNAMEDSTRINGARBPROC glNamedStringARB;
|
||||
PFNGLDELETENAMEDSTRINGARBPROC glDeleteNamedStringARB;
|
||||
PFNGLCOMPILESHADERINCLUDEARBPROC glCompileShaderIncludeARB;
|
||||
PFNGLISNAMEDSTRINGARBPROC glIsNamedStringARB;
|
||||
PFNGLGETNAMEDSTRINGARBPROC glGetNamedStringARB;
|
||||
PFNGLGETNAMEDSTRINGIVARBPROC glGetNamedStringivARB;
|
||||
|
||||
// ARB_compute_variable_group_size
|
||||
PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glDispatchComputeGroupSizeARB;
|
||||
|
||||
// ARB_indirect_parameters
|
||||
PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glMultiDrawArraysIndirectCountARB;
|
||||
PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glMultiDrawElementsIndirectCountARB;
|
||||
|
||||
// EXT_raster_multisample
|
||||
PFNGLRASTERSAMPLESEXTPROC glRasterSamplesEXT;
|
||||
|
||||
// EXT_depth_bounds_test
|
||||
PFNGLDEPTHBOUNDSEXTPROC glDepthBoundsEXT;
|
||||
|
||||
// EXT_polygon_offset_clamp
|
||||
PFNGLPOLYGONOFFSETCLAMPEXTPROC glPolygonOffsetClampEXT;
|
||||
|
||||
// EXT_debug_marker
|
||||
PFNGLINSERTEVENTMARKEREXTPROC glInsertEventMarkerEXT;
|
||||
PFNGLPUSHGROUPMARKEREXTPROC glPushGroupMarkerEXT;
|
||||
PFNGLPOPGROUPMARKEREXTPROC glPopGroupMarkerEXT;
|
||||
|
||||
// GREMEDY_frame_terminator
|
||||
PFNGLFRAMETERMINATORGREMEDYPROC glFrameTerminatorGREMEDY;
|
||||
|
||||
// GREMEDY_string_marker
|
||||
PFNGLSTRINGMARKERGREMEDYPROC glStringMarkerGREMEDY;
|
||||
|
||||
// EXT_direct_state_access below here. We only include the functions relevant for core 3.2+ GL, not any
|
||||
// functions for legacy functionality.
|
||||
//
|
||||
// NOTE: we set up ARB_dsa functions as aliases of EXT_dsa functions where they are identical.
|
||||
// This breaks our 'rule' of making core functions the canonical versions, but for good reason.
|
||||
//
|
||||
// As with other aliases, this assumes the functions defined to have identical semantics are safe to substitute
|
||||
// for each other (which in theory should be true). We do it this way around rather than have EXT_dsa as aliases
|
||||
// of ARB_dsa - which is usually what we do for EXT extension variants. The reason being we want to support hw/sw
|
||||
// configurations where ARB_dsa is not present, so we need to fall back on EXT_dsa. If the EXT functions are the
|
||||
// aliases, we will never fetch them when getting function pointers, so if ARB_dsa functions aren't present then
|
||||
// we just get NULL. In theory EXT_dsa supported cases should be a strict superset of ARB_dsa supported cases, so
|
||||
// it's safe to always use the EXT variant when they're identical.
|
||||
//
|
||||
// Where a function is different, or unique to ARB_dsa, we include both separately. For ARB_dsa unique functions
|
||||
// these are at the end, noted by comments.
|
||||
|
||||
PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glCompressedTextureImage1DEXT;
|
||||
PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glCompressedTextureImage2DEXT;
|
||||
PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glCompressedTextureImage3DEXT;
|
||||
PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glCompressedTextureSubImage1DEXT;
|
||||
PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glCompressedTextureSubImage2DEXT;
|
||||
PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glCompressedTextureSubImage3DEXT;
|
||||
PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glFramebufferDrawBuffersEXT;
|
||||
PFNGLGENERATETEXTUREMIPMAPEXTPROC glGenerateTextureMipmapEXT;
|
||||
PFNGLGETPOINTERI_VEXTPROC glGetPointeri_vEXT;
|
||||
PFNGLGETDOUBLEINDEXEDVEXTPROC glGetDoubleIndexedvEXT;
|
||||
@@ -644,13 +672,12 @@ struct GLHookSet
|
||||
PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glGetMultiTexLevelParameterfvEXT;
|
||||
PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glGetMultiTexLevelParameterivEXT;
|
||||
PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glGetCompressedMultiTexImageEXT;
|
||||
PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glGetNamedBufferPointervEXT;
|
||||
PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glGetNamedBufferPointervEXT; // aliases glGetNamedBufferPointerv
|
||||
PFNGLGETNAMEDPROGRAMIVEXTPROC glGetNamedProgramivEXT;
|
||||
PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetNamedFramebufferAttachmentParameterivEXT; // aliases glGetNamedFramebufferAttachmentParameteriv
|
||||
PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glGetNamedBufferParameterivEXT; // aliases glGetNamedBufferParameteriv
|
||||
// these functions are not aliases only by the size parameter being different types
|
||||
PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glCheckNamedFramebufferStatusEXT; // aliases glCheckNamedFramebufferStatus
|
||||
PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glGetNamedBufferSubDataEXT;
|
||||
PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
|
||||
PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glGetNamedFramebufferParameterivEXT; // aliases glGetFramebufferParameterivEXT, glGetNamedFramebufferParameteriv
|
||||
PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glGetNamedRenderbufferParameterivEXT; // aliases glGetNamedRenderbufferParameteriv
|
||||
PFNGLGETVERTEXARRAYINTEGERVEXTPROC glGetVertexArrayIntegervEXT;
|
||||
@@ -666,27 +693,28 @@ struct GLHookSet
|
||||
PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glGetTextureLevelParameterivEXT;
|
||||
PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glGetTextureLevelParameterfvEXT;
|
||||
PFNGLBINDMULTITEXTUREEXTPROC glBindMultiTextureEXT;
|
||||
PFNGLMAPNAMEDBUFFEREXTPROC glMapNamedBufferEXT;
|
||||
PFNGLMAPNAMEDBUFFEREXTPROC glMapNamedBufferEXT; // aliases glMapNamedBuffer
|
||||
PFNGLMAPNAMEDBUFFERRANGEEXTPROC glMapNamedBufferRangeEXT;
|
||||
PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glFlushMappedNamedBufferRangeEXT;
|
||||
PFNGLUNMAPNAMEDBUFFEREXTPROC glUnmapNamedBufferEXT;
|
||||
PFNGLCLEARNAMEDBUFFERDATAEXTPROC glClearNamedBufferDataEXT;
|
||||
PFNGLUNMAPNAMEDBUFFEREXTPROC glUnmapNamedBufferEXT; // aliases glUnmapNamedBuffer
|
||||
PFNGLCLEARNAMEDBUFFERDATAEXTPROC glClearNamedBufferDataEXT; // aliases glClearNamedBufferData
|
||||
PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glClearNamedBufferSubDataEXT;
|
||||
PFNGLNAMEDBUFFERDATAEXTPROC glNamedBufferDataEXT;
|
||||
PFNGLNAMEDBUFFERSTORAGEEXTPROC glNamedBufferStorageEXT;
|
||||
PFNGLNAMEDBUFFERSUBDATAEXTPROC glNamedBufferSubDataEXT;
|
||||
PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glNamedCopyBufferSubDataEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glNamedFramebufferTextureEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glNamedFramebufferTextureEXT; // aliases glNamedFramebufferTexture
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glNamedFramebufferTexture1DEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glNamedFramebufferTexture2DEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glNamedFramebufferTexture3DEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glNamedFramebufferRenderbufferEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glNamedFramebufferTextureLayerEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glNamedFramebufferParameteriEXT;
|
||||
PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glNamedRenderbufferStorageEXT;
|
||||
PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glNamedRenderbufferStorageMultisampleEXT;
|
||||
PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glFramebufferDrawBufferEXT;
|
||||
PFNGLFRAMEBUFFERREADBUFFEREXTPROC glFramebufferReadBufferEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glNamedFramebufferRenderbufferEXT; // aliases glNamedFramebufferRenderbuffer
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glNamedFramebufferTextureLayerEXT; // aliases glNamedFramebufferTextureLayer
|
||||
PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glNamedFramebufferParameteriEXT; // aliases glNamedFramebufferParameteri
|
||||
PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glNamedRenderbufferStorageEXT; // aliases glNamedRenderbufferStorage
|
||||
PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glNamedRenderbufferStorageMultisampleEXT; // aliases glNamedRenderbufferStorageMultisample
|
||||
PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glFramebufferDrawBufferEXT; // aliases glNamedFramebufferDrawBuffer
|
||||
PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glFramebufferDrawBuffersEXT; // aliases glNamedFramebufferDrawBuffers
|
||||
PFNGLFRAMEBUFFERREADBUFFEREXTPROC glFramebufferReadBufferEXT; // aliases glNamedFramebufferReadBuffer
|
||||
PFNGLTEXTUREBUFFEREXTPROC glTextureBufferEXT;
|
||||
PFNGLTEXTUREBUFFERRANGEEXTPROC glTextureBufferRangeEXT;
|
||||
PFNGLTEXTUREIMAGE1DEXTPROC glTextureImage1DEXT;
|
||||
@@ -738,17 +766,98 @@ struct GLHookSet
|
||||
PFNGLGENERATEMULTITEXMIPMAPEXTPROC glGenerateMultiTexMipmapEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glVertexArrayVertexAttribOffsetEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glVertexArrayVertexAttribIOffsetEXT;
|
||||
PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glEnableVertexArrayAttribEXT;
|
||||
PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glDisableVertexArrayAttribEXT;
|
||||
PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glVertexArrayBindVertexBufferEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glVertexArrayVertexAttribFormatEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glVertexArrayVertexAttribIFormatEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glVertexArrayVertexAttribLFormatEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glVertexArrayVertexAttribBindingEXT;
|
||||
PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glVertexArrayVertexBindingDivisorEXT;
|
||||
PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glEnableVertexArrayAttribEXT; // aliases glEnableVertexArrayAttrib
|
||||
PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glDisableVertexArrayAttribEXT; // aliases glDisableVertexArrayAttrib
|
||||
PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glVertexArrayBindVertexBufferEXT; // aliases glVertexArrayVertexBuffer
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glVertexArrayVertexAttribFormatEXT; // aliases glVertexArrayAttribFormat
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glVertexArrayVertexAttribIFormatEXT; // aliases glVertexArrayAttribIFormat
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glVertexArrayVertexAttribLFormatEXT; // aliases glVertexArrayAttribLFormat
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glVertexArrayVertexAttribBindingEXT; // aliases glVertexArrayAttribBinding
|
||||
PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glVertexArrayVertexBindingDivisorEXT; // aliases glVertexArrayBindingDivisor
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glVertexArrayVertexAttribLOffsetEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glVertexArrayVertexAttribDivisorEXT;
|
||||
PFNGLFRAMETERMINATORGREMEDYPROC glFrameTerminatorGREMEDY;
|
||||
PFNGLSTRINGMARKERGREMEDYPROC glStringMarkerGREMEDY;
|
||||
|
||||
// ARB_direct_state_access unique functions (others will be listed as aliases of EXT_dsa, see above).
|
||||
|
||||
PFNGLCREATETRANSFORMFEEDBACKSPROC glCreateTransformFeedbacks;
|
||||
PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glTransformFeedbackBufferBase;
|
||||
PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glTransformFeedbackBufferRange;
|
||||
PFNGLGETTRANSFORMFEEDBACKI64_VPROC glGetTransformFeedbacki64_v;
|
||||
PFNGLGETTRANSFORMFEEDBACKI_VPROC glGetTransformFeedbacki_v;
|
||||
PFNGLGETTRANSFORMFEEDBACKIVPROC glGetTransformFeedbackiv;
|
||||
PFNGLCREATEBUFFERSPROC glCreateBuffers;
|
||||
|
||||
// these functions aren't aliases only because the size parameter is a different type
|
||||
PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
|
||||
PFNGLNAMEDBUFFERSTORAGEPROC glNamedBufferStorage;
|
||||
PFNGLNAMEDBUFFERDATAPROC glNamedBufferData;
|
||||
PFNGLNAMEDBUFFERSUBDATAPROC glNamedBufferSubData;
|
||||
PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData;
|
||||
PFNGLCLEARNAMEDBUFFERSUBDATAPROC glClearNamedBufferSubData;
|
||||
PFNGLMAPNAMEDBUFFERRANGEPROC glMapNamedBufferRange;
|
||||
PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glFlushMappedNamedBufferRange;
|
||||
|
||||
PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v;
|
||||
PFNGLCREATEFRAMEBUFFERSPROC glCreateFramebuffers;
|
||||
PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glInvalidateNamedFramebufferData;
|
||||
PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glInvalidateNamedFramebufferSubData;
|
||||
PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glClearNamedFramebufferiv;
|
||||
PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glClearNamedFramebufferuiv;
|
||||
PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glClearNamedFramebufferfv;
|
||||
PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glClearNamedFramebufferfi;
|
||||
PFNGLBLITNAMEDFRAMEBUFFERPROC glBlitNamedFramebuffer;
|
||||
PFNGLCREATERENDERBUFFERSPROC glCreateRenderbuffers;
|
||||
PFNGLCREATETEXTURESPROC glCreateTextures;
|
||||
// many of these texture functions only vary by the lack of target parameter from the EXT_dsa
|
||||
// variants. The handling of this is generally to pipe through the EXT_dsa variant with a target
|
||||
// of GL_NONE, and that signifies the ARB_dsa function should be used. See gl_texture_funcs.cpp
|
||||
PFNGLTEXTUREBUFFERPROC glTextureBuffer;
|
||||
PFNGLTEXTUREBUFFERRANGEPROC glTextureBufferRange;
|
||||
PFNGLTEXTURESTORAGE1DPROC glTextureStorage1D;
|
||||
PFNGLTEXTURESTORAGE2DPROC glTextureStorage2D;
|
||||
PFNGLTEXTURESTORAGE3DPROC glTextureStorage3D;
|
||||
PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glTextureStorage2DMultisample;
|
||||
PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glTextureStorage3DMultisample;
|
||||
PFNGLTEXTURESUBIMAGE1DPROC glTextureSubImage1D;
|
||||
PFNGLTEXTURESUBIMAGE2DPROC glTextureSubImage2D;
|
||||
PFNGLTEXTURESUBIMAGE3DPROC glTextureSubImage3D;
|
||||
PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glCompressedTextureSubImage1D;
|
||||
PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glCompressedTextureSubImage2D;
|
||||
PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glCompressedTextureSubImage3D;
|
||||
PFNGLCOPYTEXTURESUBIMAGE1DPROC glCopyTextureSubImage1D;
|
||||
PFNGLCOPYTEXTURESUBIMAGE2DPROC glCopyTextureSubImage2D;
|
||||
PFNGLCOPYTEXTURESUBIMAGE3DPROC glCopyTextureSubImage3D;
|
||||
PFNGLTEXTUREPARAMETERFPROC glTextureParameterf;
|
||||
PFNGLTEXTUREPARAMETERFVPROC glTextureParameterfv;
|
||||
PFNGLTEXTUREPARAMETERIPROC glTextureParameteri;
|
||||
PFNGLTEXTUREPARAMETERIIVPROC glTextureParameterIiv;
|
||||
PFNGLTEXTUREPARAMETERIUIVPROC glTextureParameterIuiv;
|
||||
PFNGLTEXTUREPARAMETERIVPROC glTextureParameteriv;
|
||||
PFNGLGENERATETEXTUREMIPMAPPROC glGenerateTextureMipmap;
|
||||
PFNGLBINDTEXTUREUNITPROC glBindTextureUnit;
|
||||
PFNGLGETTEXTUREIMAGEPROC glGetTextureImage;
|
||||
PFNGLGETTEXTURESUBIMAGEPROC glGetTextureSubImage;
|
||||
PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glGetCompressedTextureImage;
|
||||
PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glGetCompressedTextureSubImage;
|
||||
PFNGLGETTEXTURELEVELPARAMETERFVPROC glGetTextureLevelParameterfv;
|
||||
PFNGLGETTEXTURELEVELPARAMETERIVPROC glGetTextureLevelParameteriv;
|
||||
PFNGLGETTEXTUREPARAMETERIIVPROC glGetTextureParameterIiv;
|
||||
PFNGLGETTEXTUREPARAMETERIUIVPROC glGetTextureParameterIuiv;
|
||||
PFNGLGETTEXTUREPARAMETERFVPROC glGetTextureParameterfv;
|
||||
PFNGLGETTEXTUREPARAMETERIVPROC glGetTextureParameteriv;
|
||||
PFNGLCREATEVERTEXARRAYSPROC glCreateVertexArrays;
|
||||
PFNGLCREATESAMPLERSPROC glCreateSamplers;
|
||||
PFNGLCREATEPROGRAMPIPELINESPROC glCreateProgramPipelines;
|
||||
PFNGLCREATEQUERIESPROC glCreateQueries;
|
||||
PFNGLVERTEXARRAYELEMENTBUFFERPROC glVertexArrayElementBuffer;
|
||||
PFNGLVERTEXARRAYVERTEXBUFFERSPROC glVertexArrayVertexBuffers;
|
||||
PFNGLGETVERTEXARRAYIVPROC glGetVertexArrayiv;
|
||||
PFNGLGETVERTEXARRAYINDEXED64IVPROC glGetVertexArrayIndexed64iv;
|
||||
PFNGLGETVERTEXARRAYINDEXEDIVPROC glGetVertexArrayIndexediv;
|
||||
PFNGLGETQUERYBUFFEROBJECTI64VPROC glGetQueryBufferObjecti64v;
|
||||
PFNGLGETQUERYBUFFEROBJECTIVPROC glGetQueryBufferObjectiv;
|
||||
PFNGLGETQUERYBUFFEROBJECTUI64VPROC glGetQueryBufferObjectui64v;
|
||||
PFNGLGETQUERYBUFFEROBJECTUIVPROC glGetQueryBufferObjectuiv;
|
||||
|
||||
// --
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 Crytek
|
||||
* Copyright (c) 2015 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -769,21 +769,93 @@
|
||||
HookExtension(PFNGLBINDIMAGETEXTURESPROC, glBindImageTextures); \
|
||||
HookExtension(PFNGLBINDVERTEXBUFFERSPROC, glBindVertexBuffers); \
|
||||
HookExtension(PFNGLCLIPCONTROLPROC, glClipControl); \
|
||||
HookExtension(PFNGLCREATETRANSFORMFEEDBACKSPROC, glCreateTransformFeedbacks); \
|
||||
HookExtension(PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC, glTransformFeedbackBufferBase); \
|
||||
HookExtension(PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC, glTransformFeedbackBufferRange); \
|
||||
HookExtension(PFNGLGETTRANSFORMFEEDBACKIVPROC, glGetTransformFeedbackiv); \
|
||||
HookExtension(PFNGLGETTRANSFORMFEEDBACKI_VPROC, glGetTransformFeedbacki_v); \
|
||||
HookExtension(PFNGLGETTRANSFORMFEEDBACKI64_VPROC, glGetTransformFeedbacki64_v); \
|
||||
HookExtension(PFNGLCREATEBUFFERSPROC, glCreateBuffers); \
|
||||
HookExtension(PFNGLNAMEDBUFFERSTORAGEPROC, glNamedBufferStorage); \
|
||||
HookExtension(PFNGLNAMEDBUFFERDATAPROC, glNamedBufferData); \
|
||||
HookExtension(PFNGLNAMEDBUFFERSUBDATAPROC, glNamedBufferSubData); \
|
||||
HookExtension(PFNGLCOPYNAMEDBUFFERSUBDATAPROC, glCopyNamedBufferSubData); \
|
||||
HookExtension(PFNGLCLEARNAMEDBUFFERDATAPROC, glClearNamedBufferDataEXT); \
|
||||
HookExtensionAlias(PFNGLCLEARNAMEDBUFFERDATAPROC, glClearNamedBufferDataEXT, glClearNamedBufferData); \
|
||||
HookExtension(PFNGLCLEARNAMEDBUFFERSUBDATAPROC, glClearNamedBufferSubData); \
|
||||
HookExtension(PFNGLMAPNAMEDBUFFERPROC, glMapNamedBufferEXT); \
|
||||
HookExtensionAlias(PFNGLMAPNAMEDBUFFERPROC, glMapNamedBufferEXT, glMapNamedBuffer); \
|
||||
HookExtension(PFNGLMAPNAMEDBUFFERRANGEPROC, glMapNamedBufferRange); \
|
||||
HookExtension(PFNGLUNMAPNAMEDBUFFERPROC, glUnmapNamedBufferEXT); \
|
||||
HookExtensionAlias(PFNGLUNMAPNAMEDBUFFERPROC, glUnmapNamedBufferEXT, glUnmapNamedBuffer); \
|
||||
HookExtension(PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC, glFlushMappedNamedBufferRange); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERPARAMETERIVPROC, glGetNamedBufferParameterivEXT); \
|
||||
HookExtensionAlias(PFNGLGETNAMEDBUFFERPARAMETERIVPROC, glGetNamedBufferParameterivEXT, glGetNamedBufferParameteriv); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERPARAMETERI64VPROC, glGetNamedBufferParameteri64v); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERPOINTERVPROC, glGetNamedBufferPointerv); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERPOINTERVPROC, glGetNamedBufferPointervEXT); \
|
||||
HookExtensionAlias(PFNGLGETNAMEDBUFFERPOINTERVPROC, glGetNamedBufferPointervEXT, glGetNamedBufferPointerv); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERSUBDATAPROC, glGetNamedBufferSubData); \
|
||||
HookExtension(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC, glNamedFramebufferRenderbufferEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC, glNamedFramebufferRenderbufferEXT, glNamedFramebufferRenderbuffer); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC, glNamedFramebufferParameteriEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC, glNamedFramebufferParameteriEXT, glNamedFramebufferParameteri); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTextureEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTextureEXT, glNamedFramebufferTexture); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC, glNamedFramebufferTextureLayerEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC, glNamedFramebufferTextureLayerEXT, glNamedFramebufferTextureLayer); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC, glFramebufferDrawBufferEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC, glFramebufferDrawBufferEXT, glNamedFramebufferDrawBuffer); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC, glFramebufferDrawBuffersEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC, glFramebufferDrawBuffersEXT, glNamedFramebufferDrawBuffers); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC, glFramebufferReadBufferEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC, glFramebufferReadBufferEXT, glNamedFramebufferReadBuffer); \
|
||||
HookExtension(PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC, glInvalidateNamedFramebufferData); \
|
||||
HookExtension(PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC, glInvalidateNamedFramebufferSubData); \
|
||||
HookExtension(PFNGLCLEARNAMEDFRAMEBUFFERIVPROC, glClearNamedFramebufferiv); \
|
||||
HookExtension(PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC, glClearNamedFramebufferuiv); \
|
||||
HookExtension(PFNGLCLEARNAMEDFRAMEBUFFERFVPROC, glClearNamedFramebufferfv); \
|
||||
HookExtension(PFNGLCLEARNAMEDFRAMEBUFFERFIPROC, glClearNamedFramebufferfi); \
|
||||
HookExtension(PFNGLBLITNAMEDFRAMEBUFFERPROC, glBlitNamedFramebuffer); \
|
||||
HookExtension(PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC, glCheckNamedFramebufferStatusEXT); \
|
||||
HookExtensionAlias(PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC, glCheckNamedFramebufferStatusEXT, glCheckNamedFramebufferStatus); \
|
||||
HookExtension(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC, glGetNamedFramebufferParameterivEXT); \
|
||||
HookExtensionAlias(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC, glGetNamedFramebufferParameterivEXT, glGetFramebufferParameterivEXT); \
|
||||
HookExtensionAlias(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC, glGetNamedFramebufferParameterivEXT, glGetNamedFramebufferParameteriv); \
|
||||
HookExtension(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetNamedFramebufferAttachmentParameterivEXT); \
|
||||
HookExtensionAlias(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetNamedFramebufferAttachmentParameterivEXT, glGetNamedFramebufferAttachmentParameteriv); \
|
||||
HookExtension(PFNGLCREATERENDERBUFFERSPROC, glCreateRenderbuffers); \
|
||||
HookExtension(PFNGLNAMEDRENDERBUFFERSTORAGEPROC, glNamedRenderbufferStorageEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDRENDERBUFFERSTORAGEPROC, glNamedRenderbufferStorageEXT, glNamedRenderbufferStorage); \
|
||||
HookExtension(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC, glNamedRenderbufferStorageMultisampleEXT); \
|
||||
HookExtensionAlias(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC, glNamedRenderbufferStorageMultisampleEXT, glNamedRenderbufferStorageMultisample); \
|
||||
HookExtension(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC, glGetNamedRenderbufferParameterivEXT); \
|
||||
HookExtensionAlias(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC, glGetNamedRenderbufferParameterivEXT, glGetNamedRenderbufferParameteriv); \
|
||||
HookExtension(PFNGLCREATETEXTURESPROC, glCreateTextures); \
|
||||
HookExtension(PFNGLTEXTUREBUFFERPROC, glTextureBuffer); \
|
||||
HookExtension(PFNGLTEXTUREBUFFERRANGEPROC, glTextureBufferRange); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE1DPROC, glTextureStorage1D); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE2DPROC, glTextureStorage2D); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE3DPROC, glTextureStorage3D); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC, glTextureStorage2DMultisample); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC, glTextureStorage3DMultisample); \
|
||||
HookExtension(PFNGLTEXTURESUBIMAGE1DPROC, glTextureSubImage1D); \
|
||||
HookExtension(PFNGLTEXTURESUBIMAGE2DPROC, glTextureSubImage2D); \
|
||||
HookExtension(PFNGLTEXTURESUBIMAGE3DPROC, glTextureSubImage3D); \
|
||||
HookExtension(PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC, glCompressedTextureSubImage1D); \
|
||||
HookExtension(PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC, glCompressedTextureSubImage2D); \
|
||||
HookExtension(PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC, glCompressedTextureSubImage3D); \
|
||||
HookExtension(PFNGLCOPYTEXTURESUBIMAGE1DPROC, glCopyTextureSubImage1D); \
|
||||
HookExtension(PFNGLCOPYTEXTURESUBIMAGE2DPROC, glCopyTextureSubImage2D); \
|
||||
HookExtension(PFNGLCOPYTEXTURESUBIMAGE3DPROC, glCopyTextureSubImage3D); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERFPROC, glTextureParameterf); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERFVPROC, glTextureParameterfv); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERIPROC, glTextureParameteri); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERIIVPROC, glTextureParameterIiv); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERIUIVPROC, glTextureParameterIuiv); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERIVPROC, glTextureParameteriv); \
|
||||
HookExtension(PFNGLGENERATETEXTUREMIPMAPPROC, glGenerateTextureMipmap); \
|
||||
HookExtension(PFNGLBINDTEXTUREUNITPROC, glBindTextureUnit); \
|
||||
HookExtension(PFNGLGETTEXTUREIMAGEPROC, glGetTextureImage); \
|
||||
HookExtension(PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC, glGetCompressedTextureImage); \
|
||||
HookExtension(PFNGLGETTEXTURELEVELPARAMETERFVPROC, glGetTextureLevelParameterfv); \
|
||||
@@ -792,9 +864,35 @@
|
||||
HookExtension(PFNGLGETTEXTUREPARAMETERIIVPROC, glGetTextureParameterIiv); \
|
||||
HookExtension(PFNGLGETTEXTUREPARAMETERIUIVPROC, glGetTextureParameterIuiv); \
|
||||
HookExtension(PFNGLGETTEXTUREPARAMETERIVPROC, glGetTextureParameteriv); \
|
||||
HookExtension(PFNGLCREATEVERTEXARRAYSPROC, glCreateVertexArrays); \
|
||||
HookExtension(PFNGLDISABLEVERTEXARRAYATTRIBPROC, glDisableVertexArrayAttribEXT); \
|
||||
HookExtensionAlias(PFNGLDISABLEVERTEXARRAYATTRIBPROC, glDisableVertexArrayAttribEXT, glDisableVertexArrayAttrib); \
|
||||
HookExtension(PFNGLENABLEVERTEXARRAYATTRIBPROC, glEnableVertexArrayAttribEXT); \
|
||||
HookExtensionAlias(PFNGLENABLEVERTEXARRAYATTRIBPROC, glEnableVertexArrayAttribEXT, glEnableVertexArrayAttrib); \
|
||||
HookExtension(PFNGLVERTEXARRAYELEMENTBUFFERPROC, glVertexArrayElementBuffer); \
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXBUFFERPROC, glVertexArrayBindVertexBufferEXT); \
|
||||
HookExtensionAlias(PFNGLVERTEXARRAYVERTEXBUFFERPROC, glVertexArrayBindVertexBufferEXT, glVertexArrayVertexBuffer); \
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXBUFFERSPROC, glVertexArrayVertexBuffers); \
|
||||
HookExtension(PFNGLVERTEXARRAYATTRIBBINDINGPROC, glVertexArrayVertexAttribBindingEXT); \
|
||||
HookExtensionAlias(PFNGLVERTEXARRAYATTRIBBINDINGPROC, glVertexArrayVertexAttribBindingEXT, glVertexArrayAttribBinding); \
|
||||
HookExtension(PFNGLVERTEXARRAYATTRIBFORMATPROC, glVertexArrayVertexAttribFormatEXT); \
|
||||
HookExtensionAlias(PFNGLVERTEXARRAYATTRIBFORMATPROC, glVertexArrayVertexAttribFormatEXT, glVertexArrayAttribFormat); \
|
||||
HookExtension(PFNGLVERTEXARRAYATTRIBIFORMATPROC, glVertexArrayVertexAttribIFormatEXT); \
|
||||
HookExtensionAlias(PFNGLVERTEXARRAYATTRIBIFORMATPROC, glVertexArrayVertexAttribIFormatEXT, glVertexArrayAttribIFormat); \
|
||||
HookExtension(PFNGLVERTEXARRAYATTRIBLFORMATPROC, glVertexArrayVertexAttribLFormatEXT); \
|
||||
HookExtensionAlias(PFNGLVERTEXARRAYATTRIBLFORMATPROC, glVertexArrayVertexAttribLFormatEXT, glVertexArrayAttribLFormat); \
|
||||
HookExtension(PFNGLVERTEXARRAYBINDINGDIVISORPROC, glVertexArrayVertexBindingDivisorEXT); \
|
||||
HookExtensionAlias(PFNGLVERTEXARRAYBINDINGDIVISORPROC, glVertexArrayVertexBindingDivisorEXT, glVertexArrayBindingDivisor); \
|
||||
HookExtension(PFNGLGETVERTEXARRAYIVPROC, glGetVertexArrayiv); \
|
||||
HookExtension(PFNGLGETVERTEXARRAYINDEXEDIVPROC, glGetVertexArrayIndexediv); \
|
||||
HookExtension(PFNGLGETVERTEXARRAYINDEXED64IVPROC, glGetVertexArrayIndexed64iv); \
|
||||
HookExtension(PFNGLCREATESAMPLERSPROC, glCreateSamplers); \
|
||||
HookExtension(PFNGLCREATEPROGRAMPIPELINESPROC, glCreateProgramPipelines); \
|
||||
HookExtension(PFNGLCREATEQUERIESPROC, glCreateQueries); \
|
||||
HookExtension(PFNGLGETQUERYBUFFEROBJECTI64VPROC, glGetQueryBufferObjecti64v); \
|
||||
HookExtension(PFNGLGETQUERYBUFFEROBJECTIVPROC, glGetQueryBufferObjectiv); \
|
||||
HookExtension(PFNGLGETQUERYBUFFEROBJECTUI64VPROC, glGetQueryBufferObjectui64v); \
|
||||
HookExtension(PFNGLGETQUERYBUFFEROBJECTUIVPROC, glGetQueryBufferObjectuiv); \
|
||||
HookExtension(PFNGLMEMORYBARRIERBYREGIONPROC, glMemoryBarrierByRegion); \
|
||||
HookExtension(PFNGLGETTEXTURESUBIMAGEPROC, glGetTextureSubImage); \
|
||||
HookExtension(PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC, glGetCompressedTextureSubImage); \
|
||||
@@ -891,9 +989,6 @@
|
||||
HookExtension(PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC, glGetCompressedMultiTexImageEXT); \
|
||||
HookExtension(PFNGLNAMEDBUFFERDATAEXTPROC, glNamedBufferDataEXT); \
|
||||
HookExtension(PFNGLNAMEDBUFFERSUBDATAEXTPROC, glNamedBufferSubDataEXT); \
|
||||
HookExtension(PFNGLMAPNAMEDBUFFEREXTPROC, glMapNamedBufferEXT); \
|
||||
HookExtension(PFNGLUNMAPNAMEDBUFFEREXTPROC, glUnmapNamedBufferEXT); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERPOINTERVEXTPROC, glGetNamedBufferPointervEXT); \
|
||||
HookExtension(PFNGLGETNAMEDBUFFERSUBDATAEXTPROC, glGetNamedBufferSubDataEXT); \
|
||||
HookExtension(PFNGLTEXTUREBUFFEREXTPROC, glTextureBufferEXT); \
|
||||
HookExtension(PFNGLMULTITEXBUFFEREXTPROC, glMultiTexBufferEXT); \
|
||||
@@ -907,25 +1002,14 @@
|
||||
HookExtension(PFNGLGETMULTITEXPARAMETERIUIVEXTPROC, glGetMultiTexParameterIuivEXT); \
|
||||
HookExtension(PFNGLGETPOINTERI_VEXTPROC, glGetPointeri_vEXT); \
|
||||
HookExtension(PFNGLGETNAMEDPROGRAMIVEXTPROC, glGetNamedProgramivEXT); \
|
||||
HookExtension(PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC, glNamedRenderbufferStorageEXT); \
|
||||
HookExtension(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glNamedRenderbufferStorageMultisampleEXT); \
|
||||
HookExtension(PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC, glCheckNamedFramebufferStatusEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC, glNamedFramebufferTexture1DEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC, glNamedFramebufferTexture2DEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC, glNamedFramebufferTexture3DEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC, glNamedFramebufferRenderbufferEXT); \
|
||||
HookExtension(PFNGLGENERATETEXTUREMIPMAPEXTPROC, glGenerateTextureMipmapEXT); \
|
||||
HookExtension(PFNGLGENERATEMULTITEXMIPMAPEXTPROC, glGenerateMultiTexMipmapEXT); \
|
||||
HookExtension(PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC, glFramebufferDrawBufferEXT); \
|
||||
HookExtension(PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC, glFramebufferDrawBuffersEXT); \
|
||||
HookExtension(PFNGLFRAMEBUFFERREADBUFFEREXTPROC, glFramebufferReadBufferEXT); \
|
||||
HookExtension(PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC, glNamedCopyBufferSubDataEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC, glNamedFramebufferTextureEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC, glNamedFramebufferTextureLayerEXT); \
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC, glVertexArrayVertexAttribOffsetEXT); \
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC, glVertexArrayVertexAttribIOffsetEXT); \
|
||||
HookExtension(PFNGLENABLEVERTEXARRAYATTRIBEXTPROC, glEnableVertexArrayAttribEXT); \
|
||||
HookExtension(PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC, glDisableVertexArrayAttribEXT); \
|
||||
HookExtension(PFNGLGETVERTEXARRAYINTEGERVEXTPROC, glGetVertexArrayIntegervEXT); \
|
||||
HookExtension(PFNGLGETVERTEXARRAYPOINTERVEXTPROC, glGetVertexArrayPointervEXT); \
|
||||
HookExtension(PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC, glGetVertexArrayIntegeri_vEXT); \
|
||||
@@ -933,21 +1017,13 @@
|
||||
HookExtension(PFNGLMAPNAMEDBUFFERRANGEEXTPROC, glMapNamedBufferRangeEXT); \
|
||||
HookExtension(PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC, glFlushMappedNamedBufferRangeEXT); \
|
||||
HookExtension(PFNGLNAMEDBUFFERSTORAGEEXTPROC, glNamedBufferStorageEXT); \
|
||||
HookExtension(PFNGLCLEARNAMEDBUFFERDATAEXTPROC, glClearNamedBufferDataEXT); \
|
||||
HookExtension(PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC, glClearNamedBufferSubDataEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC, glNamedFramebufferParameteriEXT); \
|
||||
HookExtension(PFNGLTEXTUREBUFFERRANGEEXTPROC, glTextureBufferRangeEXT); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE1DEXTPROC, glTextureStorage1DEXT); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE2DEXTPROC, glTextureStorage2DEXT); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE3DEXTPROC, glTextureStorage3DEXT); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC, glTextureStorage2DMultisampleEXT); \
|
||||
HookExtension(PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC, glTextureStorage3DMultisampleEXT); \
|
||||
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(PFNGLPOLYGONOFFSETCLAMPEXTPROC, glPolygonOffsetClampEXT); \
|
||||
@@ -1570,16 +1646,74 @@
|
||||
HookWrapper3(void, glBindImageTextures, GLuint, first, GLsizei, count, const GLuint *, textures); \
|
||||
HookWrapper5(void, glBindVertexBuffers, GLuint, first, GLsizei, count, const GLuint *, buffers, const GLintptr *, offsets, const GLsizei *, strides); \
|
||||
HookWrapper2(void, glClipControl, GLenum, origin, GLenum, depth); \
|
||||
HookWrapper2(void, glCreateTransformFeedbacks, GLsizei, n, GLuint *, ids); \
|
||||
HookWrapper3(void, glTransformFeedbackBufferBase, GLuint, xfb, GLuint, index, GLuint, buffer); \
|
||||
HookWrapper5(void, glTransformFeedbackBufferRange, GLuint, xfb, GLuint, index, GLuint, buffer, GLintptr, offset, GLsizei, size); \
|
||||
HookWrapper3(void, glGetTransformFeedbackiv, GLuint, xfb, GLenum, pname, GLint *, param); \
|
||||
HookWrapper4(void, glGetTransformFeedbacki_v, GLuint, xfb, GLenum, pname, GLuint, index, GLint *, param); \
|
||||
HookWrapper4(void, glGetTransformFeedbacki64_v, GLuint, xfb, GLenum, pname, GLuint, index, GLint64 *, param); \
|
||||
HookWrapper2(void, glCreateBuffers, GLsizei, n, GLuint *, buffers); \
|
||||
HookWrapper4(void, glNamedBufferStorage, GLuint, buffer, GLsizei, size, const void *, data, GLbitfield, flags); \
|
||||
HookWrapper4(void, glNamedBufferData, GLuint, buffer, GLsizei, size, const void *, data, GLenum, usage); \
|
||||
HookWrapper4(void, glNamedBufferSubData, GLuint, buffer, GLintptr, offset, GLsizei, size, const void *, data); \
|
||||
HookWrapper5(void, glCopyNamedBufferSubData, GLuint, readBuffer, GLuint, writeBuffer, GLintptr, readOffset, GLintptr, writeOffset, GLsizei, size); \
|
||||
HookWrapper5(void, glClearNamedBufferDataEXT, GLuint, buffer, GLenum, internalformat, GLenum, format, GLenum, type, const void *, data); \
|
||||
HookWrapper7(void, glClearNamedBufferSubData, GLuint, buffer, GLenum, internalformat, GLintptr, offset, GLsizei, size, GLenum, format, GLenum, type, const void *, data); \
|
||||
HookWrapper2(void *, glMapNamedBufferEXT, GLuint, buffer, GLenum, access); \
|
||||
HookWrapper4(void *, glMapNamedBufferRange, GLuint, buffer, GLintptr, offset, GLsizei, length, GLbitfield, access); \
|
||||
HookWrapper1(GLboolean, glUnmapNamedBufferEXT, GLuint, buffer); \
|
||||
HookWrapper3(void, glFlushMappedNamedBufferRange, GLuint, buffer, GLintptr, offset, GLsizei, length); \
|
||||
HookWrapper3(void, glGetNamedBufferParameterivEXT, GLuint, buffer, GLenum, pname, GLint *, params); \
|
||||
HookWrapper3(void, glGetNamedBufferParameteri64v, GLuint, buffer, GLenum, pname, GLint64 *, params); \
|
||||
HookWrapper3(void, glGetNamedBufferPointerv, GLuint, buffer, GLenum, pname, void **, params); \
|
||||
HookWrapper3(void, glGetNamedBufferPointervEXT, GLuint, buffer, GLenum, pname, void **, params); \
|
||||
HookWrapper4(void, glGetNamedBufferSubData, GLuint, buffer, GLintptr, offset, GLsizei, size, void *, data); \
|
||||
HookWrapper2(void, glCreateFramebuffers, GLsizei, n, GLuint *, framebuffers); \
|
||||
HookWrapper4(void, glNamedFramebufferRenderbufferEXT, GLuint, framebuffer, GLenum, attachment, GLenum, renderbuffertarget, GLuint, renderbuffer); \
|
||||
HookWrapper3(void, glNamedFramebufferParameteriEXT, GLuint, framebuffer, GLenum, pname, GLint, param); \
|
||||
HookWrapper4(void, glNamedFramebufferTextureEXT, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level); \
|
||||
HookWrapper5(void, glNamedFramebufferTextureLayerEXT, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
|
||||
HookWrapper2(void, glFramebufferDrawBufferEXT, GLuint, framebuffer, GLenum, buf); \
|
||||
HookWrapper3(void, glFramebufferDrawBuffersEXT, GLuint, framebuffer, GLsizei, n, const GLenum *, bufs); \
|
||||
HookWrapper2(void, glFramebufferReadBufferEXT, GLuint, framebuffer, GLenum, src); \
|
||||
HookWrapper3(void, glInvalidateNamedFramebufferData, GLuint, framebuffer, GLsizei, numAttachments, const GLenum *, attachments); \
|
||||
HookWrapper7(void, glInvalidateNamedFramebufferSubData, GLuint, framebuffer, GLsizei, numAttachments, const GLenum *, attachments, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper4(void, glClearNamedFramebufferiv, GLuint, framebuffer, GLenum, buffer, GLint, drawbuffer, const GLint *, value); \
|
||||
HookWrapper4(void, glClearNamedFramebufferuiv, GLuint, framebuffer, GLenum, buffer, GLint, drawbuffer, const GLuint *, value); \
|
||||
HookWrapper4(void, glClearNamedFramebufferfv, GLuint, framebuffer, GLenum, buffer, GLint, drawbuffer, const GLfloat *, value); \
|
||||
HookWrapper4(void, glClearNamedFramebufferfi, GLuint, framebuffer, GLenum, buffer, const GLfloat, depth, GLint, stencil); \
|
||||
HookWrapper12(void, glBlitNamedFramebuffer, GLuint, readFramebuffer, GLuint, drawFramebuffer, GLint, srcX0, GLint, srcY0, GLint, srcX1, GLint, srcY1, GLint, dstX0, GLint, dstY0, GLint, dstX1, GLint, dstY1, GLbitfield, mask, GLenum, filter); \
|
||||
HookWrapper2(GLenum, glCheckNamedFramebufferStatusEXT, GLuint, framebuffer, GLenum, target); \
|
||||
HookWrapper3(void, glGetNamedFramebufferParameterivEXT, GLuint, framebuffer, GLenum, pname, GLint *, param); \
|
||||
HookWrapper4(void, glGetNamedFramebufferAttachmentParameterivEXT, GLuint, framebuffer, GLenum, attachment, GLenum, pname, GLint *, params); \
|
||||
HookWrapper2(void, glCreateRenderbuffers, GLsizei, n, GLuint *, renderbuffers); \
|
||||
HookWrapper4(void, glNamedRenderbufferStorageEXT, GLuint, renderbuffer, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper5(void, glNamedRenderbufferStorageMultisampleEXT, GLuint, renderbuffer, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper3(void, glGetNamedRenderbufferParameterivEXT, GLuint, renderbuffer, GLenum, pname, GLint *, params); \
|
||||
HookWrapper3(void, glCreateTextures, GLenum, target, GLsizei, n, GLuint *, textures); \
|
||||
HookWrapper3(void, glTextureBuffer, GLuint, texture, GLenum, internalformat, GLuint, buffer); \
|
||||
HookWrapper5(void, glTextureBufferRange, GLuint, texture, GLenum, internalformat, GLuint, buffer, GLintptr, offset, GLsizei, size); \
|
||||
HookWrapper4(void, glTextureStorage1D, GLuint, texture, GLsizei, levels, GLenum, internalformat, GLsizei, width); \
|
||||
HookWrapper5(void, glTextureStorage2D, GLuint, texture, GLsizei, levels, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper6(void, glTextureStorage3D, GLuint, texture, GLsizei, levels, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth); \
|
||||
HookWrapper6(void, glTextureStorage2DMultisample, GLuint, texture, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper7(void, glTextureStorage3DMultisample, GLuint, texture, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper7(void, glTextureSubImage1D, GLuint, texture, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
HookWrapper9(void, glTextureSubImage2D, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
HookWrapper11(void, glTextureSubImage3D, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
HookWrapper7(void, glCompressedTextureSubImage1D, GLuint, texture, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLsizei, imageSize, const void *, data); \
|
||||
HookWrapper9(void, glCompressedTextureSubImage2D, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLsizei, imageSize, const void *, data); \
|
||||
HookWrapper11(void, glCompressedTextureSubImage3D, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLsizei, imageSize, const void *, data); \
|
||||
HookWrapper6(void, glCopyTextureSubImage1D, GLuint, texture, GLint, level, GLint, xoffset, GLint, x, GLint, y, GLsizei, width); \
|
||||
HookWrapper8(void, glCopyTextureSubImage2D, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper9(void, glCopyTextureSubImage3D, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper3(void, glTextureParameterf, GLuint, texture, GLenum, pname, GLfloat, param); \
|
||||
HookWrapper3(void, glTextureParameterfv, GLuint, texture, GLenum, pname, const GLfloat *, param); \
|
||||
HookWrapper3(void, glTextureParameteri, GLuint, texture, GLenum, pname, GLint, param); \
|
||||
HookWrapper3(void, glTextureParameterIiv, GLuint, texture, GLenum, pname, const GLint *, params); \
|
||||
HookWrapper3(void, glTextureParameterIuiv, GLuint, texture, GLenum, pname, const GLuint *, params); \
|
||||
HookWrapper3(void, glTextureParameteriv, GLuint, texture, GLenum, pname, const GLint *, param); \
|
||||
HookWrapper1(void, glGenerateTextureMipmap, GLuint, texture); \
|
||||
HookWrapper2(void, glBindTextureUnit, GLuint, unit, GLuint, texture); \
|
||||
HookWrapper6(void, glGetTextureImage, GLuint, texture, GLint, level, GLenum, format, GLenum, type, GLsizei, bufSize, void *, pixels); \
|
||||
HookWrapper4(void, glGetCompressedTextureImage, GLuint, texture, GLint, level, GLsizei, bufSize, void *, pixels); \
|
||||
HookWrapper4(void, glGetTextureLevelParameterfv, GLuint, texture, GLint, level, GLenum, pname, GLfloat *, params); \
|
||||
@@ -1588,9 +1722,27 @@
|
||||
HookWrapper3(void, glGetTextureParameterIiv, GLuint, texture, GLenum, pname, GLint *, params); \
|
||||
HookWrapper3(void, glGetTextureParameterIuiv, GLuint, texture, GLenum, pname, GLuint *, params); \
|
||||
HookWrapper3(void, glGetTextureParameteriv, GLuint, texture, GLenum, pname, GLint *, params); \
|
||||
HookWrapper2(void, glCreateVertexArrays, GLsizei, n, GLuint *, arrays); \
|
||||
HookWrapper2(void, glDisableVertexArrayAttribEXT, GLuint, vaobj, GLuint, index); \
|
||||
HookWrapper2(void, glEnableVertexArrayAttribEXT, GLuint, vaobj, GLuint, index); \
|
||||
HookWrapper2(void, glVertexArrayElementBuffer, GLuint, vaobj, GLuint, buffer); \
|
||||
HookWrapper5(void, glVertexArrayBindVertexBufferEXT, GLuint, vaobj, GLuint, bindingindex, GLuint, buffer, GLintptr, offset, GLsizei, stride); \
|
||||
HookWrapper6(void, glVertexArrayVertexBuffers, GLuint, vaobj, GLuint, first, GLsizei, count, const GLuint *, buffers, const GLintptr *, offsets, const GLsizei *, strides); \
|
||||
HookWrapper3(void, glVertexArrayVertexAttribBindingEXT, GLuint, vaobj, GLuint, attribindex, GLuint, bindingindex); \
|
||||
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, glVertexArrayVertexBindingDivisorEXT, GLuint, vaobj, GLuint, bindingindex, GLuint, divisor); \
|
||||
HookWrapper3(void, glGetVertexArrayiv, GLuint, vaobj, GLenum, pname, GLint *, param); \
|
||||
HookWrapper4(void, glGetVertexArrayIndexediv, GLuint, vaobj, GLuint, index, GLenum, pname, GLint *, param); \
|
||||
HookWrapper4(void, glGetVertexArrayIndexed64iv, GLuint, vaobj, GLuint, index, GLenum, pname, GLint64 *, param); \
|
||||
HookWrapper2(void, glCreateSamplers, GLsizei, n, GLuint *, samplers); \
|
||||
HookWrapper2(void, glCreateProgramPipelines, GLsizei, n, GLuint *, pipelines); \
|
||||
HookWrapper3(void, glCreateQueries, GLenum, target, GLsizei, n, GLuint *, ids); \
|
||||
HookWrapper4(void, glGetQueryBufferObjecti64v, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper4(void, glGetQueryBufferObjectiv, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper4(void, glGetQueryBufferObjectui64v, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper4(void, glGetQueryBufferObjectuiv, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper1(void, glMemoryBarrierByRegion, GLbitfield, barriers); \
|
||||
HookWrapper12(void, glGetTextureSubImage, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLenum, type, GLsizei, bufSize, void *, pixels); \
|
||||
HookWrapper10(void, glGetCompressedTextureSubImage, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLsizei, bufSize, void *, pixels); \
|
||||
@@ -1679,9 +1831,6 @@
|
||||
HookWrapper4(void, glGetCompressedMultiTexImageEXT, GLenum, texunit, GLenum, target, GLint, lod, void *, img); \
|
||||
HookWrapper4(void, glNamedBufferDataEXT, GLuint, buffer, GLsizeiptr, size, const void *, data, GLenum, usage); \
|
||||
HookWrapper4(void, glNamedBufferSubDataEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, const void *, data); \
|
||||
HookWrapper2(void *, glMapNamedBufferEXT, GLuint, buffer, GLenum, access); \
|
||||
HookWrapper1(GLboolean, glUnmapNamedBufferEXT, GLuint, buffer); \
|
||||
HookWrapper3(void, glGetNamedBufferPointervEXT, GLuint, buffer, GLenum, pname, void **, params); \
|
||||
HookWrapper4(void, glGetNamedBufferSubDataEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, void *, data); \
|
||||
HookWrapper4(void, glTextureBufferEXT, GLuint, texture, GLenum, target, GLenum, internalformat, GLuint, buffer); \
|
||||
HookWrapper4(void, glMultiTexBufferEXT, GLenum, texunit, GLenum, target, GLenum, internalformat, GLuint, buffer); \
|
||||
@@ -1695,25 +1844,14 @@
|
||||
HookWrapper4(void, glGetMultiTexParameterIuivEXT, GLenum, texunit, GLenum, target, GLenum, pname, GLuint *, params); \
|
||||
HookWrapper3(void, glGetPointeri_vEXT, GLenum, pname, GLuint, index, void **, params); \
|
||||
HookWrapper4(void, glGetNamedProgramivEXT, GLuint, program, GLenum, target, GLenum, pname, GLint *, params); \
|
||||
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(GLenum, glCheckNamedFramebufferStatusEXT, GLuint, framebuffer, GLenum, target); \
|
||||
HookWrapper5(void, glNamedFramebufferTexture1DEXT, GLuint, framebuffer, GLenum, attachment, GLenum, textarget, GLuint, texture, GLint, level); \
|
||||
HookWrapper5(void, glNamedFramebufferTexture2DEXT, GLuint, framebuffer, GLenum, attachment, GLenum, textarget, GLuint, texture, GLint, level); \
|
||||
HookWrapper6(void, glNamedFramebufferTexture3DEXT, GLuint, framebuffer, GLenum, attachment, GLenum, textarget, GLuint, texture, GLint, level, GLint, zoffset); \
|
||||
HookWrapper4(void, glNamedFramebufferRenderbufferEXT, GLuint, framebuffer, GLenum, attachment, GLenum, renderbuffertarget, GLuint, renderbuffer); \
|
||||
HookWrapper2(void, glGenerateTextureMipmapEXT, GLuint, texture, GLenum, target); \
|
||||
HookWrapper2(void, glGenerateMultiTexMipmapEXT, GLenum, texunit, GLenum, target); \
|
||||
HookWrapper2(void, glFramebufferDrawBufferEXT, GLuint, framebuffer, GLenum, mode); \
|
||||
HookWrapper3(void, glFramebufferDrawBuffersEXT, GLuint, framebuffer, GLsizei, n, const GLenum *, bufs); \
|
||||
HookWrapper2(void, glFramebufferReadBufferEXT, GLuint, framebuffer, GLenum, mode); \
|
||||
HookWrapper5(void, glNamedCopyBufferSubDataEXT, GLuint, readBuffer, GLuint, writeBuffer, GLintptr, readOffset, GLintptr, writeOffset, GLsizeiptr, size); \
|
||||
HookWrapper4(void, glNamedFramebufferTextureEXT, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level); \
|
||||
HookWrapper5(void, glNamedFramebufferTextureLayerEXT, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
|
||||
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); \
|
||||
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); \
|
||||
@@ -1721,21 +1859,13 @@
|
||||
HookWrapper4(void *, glMapNamedBufferRangeEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, length, GLbitfield, access); \
|
||||
HookWrapper3(void, glFlushMappedNamedBufferRangeEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, length); \
|
||||
HookWrapper4(void, glNamedBufferStorageEXT, GLuint, buffer, GLsizeiptr, size, const void *, data, GLbitfield, flags); \
|
||||
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); \
|
||||
HookWrapper3(void, glNamedFramebufferParameteriEXT, GLuint, framebuffer, GLenum, pname, GLint, param); \
|
||||
HookWrapper6(void, glTextureBufferRangeEXT, GLuint, texture, GLenum, target, GLenum, internalformat, GLuint, buffer, GLintptr, offset, GLsizeiptr, size); \
|
||||
HookWrapper5(void, glTextureStorage1DEXT, GLuint, texture, GLenum, target, GLsizei, levels, GLenum, internalformat, GLsizei, width); \
|
||||
HookWrapper6(void, glTextureStorage2DEXT, GLuint, texture, GLenum, target, GLsizei, levels, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper7(void, glTextureStorage3DEXT, GLuint, texture, GLenum, target, GLsizei, levels, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth); \
|
||||
HookWrapper7(void, glTextureStorage2DMultisampleEXT, GLuint, texture, GLenum, target, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper8(void, glTextureStorage3DMultisampleEXT, GLuint, texture, GLenum, target, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedsamplelocations); \
|
||||
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); \
|
||||
HookWrapper3(void, glPolygonOffsetClampEXT, GLfloat, factor, GLfloat, units, GLfloat, clamp); \
|
||||
@@ -1747,82 +1877,6 @@
|
||||
|
||||
// unsupported entry points - used for dummy functions
|
||||
#define DefineUnsupportedDummies() \
|
||||
HookWrapper2(void, glcreatetransformfeedbacks, GLsizei, n, GLuint *, ids); \
|
||||
HookWrapper3(void, gltransformfeedbackbufferbase, GLuint, xfb, GLuint, index, GLuint, buffer); \
|
||||
HookWrapper5(void, gltransformfeedbackbufferrange, GLuint, xfb, GLuint, index, GLuint, buffer, GLintptr, offset, GLsizei, size); \
|
||||
HookWrapper2(void, glcreatebuffers, GLsizei, n, GLuint *, buffers); \
|
||||
HookWrapper4(void, glnamedbufferstorage, GLuint, buffer, GLsizei, size, const void *, data, GLbitfield, flags); \
|
||||
HookWrapper4(void, glnamedbufferdata, GLuint, buffer, GLsizei, size, const void *, data, GLenum, usage); \
|
||||
HookWrapper4(void, glnamedbuffersubdata, GLuint, buffer, GLintptr, offset, GLsizei, size, const void *, data); \
|
||||
HookWrapper5(void, glcopynamedbuffersubdata, GLuint, readBuffer, GLuint, writeBuffer, GLintptr, readOffset, GLintptr, writeOffset, GLsizei, size); \
|
||||
HookWrapper5(void, glclearnamedbufferdata, GLuint, buffer, GLenum, internalformat, GLenum, format, GLenum, type, const void *, data); \
|
||||
HookWrapper7(void, glclearnamedbuffersubdata, GLuint, buffer, GLenum, internalformat, GLintptr, offset, GLsizei, size, GLenum, format, GLenum, type, const void *, data); \
|
||||
HookWrapper2(void *, glmapnamedbuffer, GLuint, buffer, GLenum, access); \
|
||||
HookWrapper4(void *, glmapnamedbufferrange, GLuint, buffer, GLintptr, offset, GLsizei, length, GLbitfield, access); \
|
||||
HookWrapper1(GLboolean, glunmapnamedbuffer, GLuint, buffer); \
|
||||
HookWrapper3(void, glflushmappednamedbufferrange, GLuint, buffer, GLintptr, offset, GLsizei, length); \
|
||||
HookWrapper2(void, glcreateframebuffers, GLsizei, n, GLuint *, framebuffers); \
|
||||
HookWrapper4(void, glnamedframebufferrenderbuffer, GLuint, framebuffer, GLenum, attachment, GLenum, renderbuffertarget, GLuint, renderbuffer); \
|
||||
HookWrapper3(void, glnamedframebufferparameteri, GLuint, framebuffer, GLenum, pname, GLint, param); \
|
||||
HookWrapper4(void, glnamedframebuffertexture, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level); \
|
||||
HookWrapper5(void, glnamedframebuffertexturelayer, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
|
||||
HookWrapper2(void, glnamedframebufferdrawbuffer, GLuint, framebuffer, GLenum, buf); \
|
||||
HookWrapper3(void, glnamedframebufferdrawbuffers, GLuint, framebuffer, GLsizei, n, const GLenum *, bufs); \
|
||||
HookWrapper2(void, glnamedframebufferreadbuffer, GLuint, framebuffer, GLenum, src); \
|
||||
HookWrapper3(void, glinvalidatenamedframebufferdata, GLuint, framebuffer, GLsizei, numAttachments, const GLenum *, attachments); \
|
||||
HookWrapper7(void, glinvalidatenamedframebuffersubdata, GLuint, framebuffer, GLsizei, numAttachments, const GLenum *, attachments, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper4(void, glclearnamedframebufferiv, GLuint, framebuffer, GLenum, buffer, GLint, drawbuffer, const GLint *, value); \
|
||||
HookWrapper4(void, glclearnamedframebufferuiv, GLuint, framebuffer, GLenum, buffer, GLint, drawbuffer, const GLuint *, value); \
|
||||
HookWrapper4(void, glclearnamedframebufferfv, GLuint, framebuffer, GLenum, buffer, GLint, drawbuffer, const GLfloat *, value); \
|
||||
HookWrapper4(void, glclearnamedframebufferfi, GLuint, framebuffer, GLenum, buffer, const GLfloat, depth, GLint, stencil); \
|
||||
HookWrapper12(void, glblitnamedframebuffer, GLuint, readFramebuffer, GLuint, drawFramebuffer, GLint, srcX0, GLint, srcY0, GLint, srcX1, GLint, srcY1, GLint, dstX0, GLint, dstY0, GLint, dstX1, GLint, dstY1, GLbitfield, mask, GLenum, filter); \
|
||||
HookWrapper2(GLenum, glchecknamedframebufferstatus, GLuint, framebuffer, GLenum, target); \
|
||||
HookWrapper2(void, glcreaterenderbuffers, GLsizei, n, GLuint *, renderbuffers); \
|
||||
HookWrapper4(void, glnamedrenderbufferstorage, GLuint, renderbuffer, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper5(void, glnamedrenderbufferstoragemultisample, GLuint, renderbuffer, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper3(void, glcreatetextures, GLenum, target, GLsizei, n, GLuint *, textures); \
|
||||
HookWrapper3(void, gltexturebuffer, GLuint, texture, GLenum, internalformat, GLuint, buffer); \
|
||||
HookWrapper5(void, gltexturebufferrange, GLuint, texture, GLenum, internalformat, GLuint, buffer, GLintptr, offset, GLsizei, size); \
|
||||
HookWrapper4(void, gltexturestorage1d, GLuint, texture, GLsizei, levels, GLenum, internalformat, GLsizei, width); \
|
||||
HookWrapper5(void, gltexturestorage2d, GLuint, texture, GLsizei, levels, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper6(void, gltexturestorage3d, GLuint, texture, GLsizei, levels, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth); \
|
||||
HookWrapper6(void, gltexturestorage2dmultisample, GLuint, texture, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper7(void, gltexturestorage3dmultisample, GLuint, texture, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedsamplelocations); \
|
||||
HookWrapper7(void, gltexturesubimage1d, GLuint, texture, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
HookWrapper9(void, gltexturesubimage2d, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
HookWrapper11(void, gltexturesubimage3d, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
HookWrapper7(void, glcompressedtexturesubimage1d, GLuint, texture, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLsizei, imageSize, const void *, data); \
|
||||
HookWrapper9(void, glcompressedtexturesubimage2d, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLsizei, imageSize, const void *, data); \
|
||||
HookWrapper11(void, glcompressedtexturesubimage3d, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLsizei, imageSize, const void *, data); \
|
||||
HookWrapper6(void, glcopytexturesubimage1d, GLuint, texture, GLint, level, GLint, xoffset, GLint, x, GLint, y, GLsizei, width); \
|
||||
HookWrapper8(void, glcopytexturesubimage2d, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper9(void, glcopytexturesubimage3d, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLint, x, GLint, y, GLsizei, width, GLsizei, height); \
|
||||
HookWrapper3(void, gltextureparameterf, GLuint, texture, GLenum, pname, GLfloat, param); \
|
||||
HookWrapper3(void, gltextureparameterfv, GLuint, texture, GLenum, pname, const GLfloat *, param); \
|
||||
HookWrapper3(void, gltextureparameteri, GLuint, texture, GLenum, pname, GLint, param); \
|
||||
HookWrapper3(void, gltextureparameteriiv, GLuint, texture, GLenum, pname, const GLint *, params); \
|
||||
HookWrapper3(void, gltextureparameteriuiv, GLuint, texture, GLenum, pname, const GLuint *, params); \
|
||||
HookWrapper3(void, gltextureparameteriv, GLuint, texture, GLenum, pname, const GLint *, param); \
|
||||
HookWrapper1(void, glgeneratetexturemipmap, GLuint, texture); \
|
||||
HookWrapper2(void, glbindtextureunit, GLuint, unit, GLuint, texture); \
|
||||
HookWrapper2(void, glcreatevertexarrays, GLsizei, n, GLuint *, arrays); \
|
||||
HookWrapper2(void, gldisablevertexarrayattrib, GLuint, vaobj, GLuint, index); \
|
||||
HookWrapper2(void, glenablevertexarrayattrib, GLuint, vaobj, GLuint, index); \
|
||||
HookWrapper2(void, glvertexarrayelementbuffer, GLuint, vaobj, GLuint, buffer); \
|
||||
HookWrapper5(void, glvertexarrayvertexbuffer, GLuint, vaobj, GLuint, bindingindex, GLuint, buffer, GLintptr, offset, GLsizei, stride); \
|
||||
HookWrapper6(void, glvertexarrayvertexbuffers, GLuint, vaobj, GLuint, first, GLsizei, count, const GLuint *, buffers, const GLintptr *, offsets, const GLsizei *, strides); \
|
||||
HookWrapper3(void, glvertexarrayattribbinding, GLuint, vaobj, GLuint, attribindex, GLuint, bindingindex); \
|
||||
HookWrapper6(void, glvertexarrayattribformat, GLuint, vaobj, GLuint, attribindex, GLint, size, GLenum, type, GLboolean, normalized, GLuint, relativeoffset); \
|
||||
HookWrapper5(void, glvertexarrayattribiformat, GLuint, vaobj, GLuint, attribindex, GLint, size, GLenum, type, GLuint, relativeoffset); \
|
||||
HookWrapper5(void, glvertexarrayattriblformat, GLuint, vaobj, GLuint, attribindex, GLint, size, GLenum, type, GLuint, relativeoffset); \
|
||||
HookWrapper3(void, glvertexarraybindingdivisor, GLuint, vaobj, GLuint, bindingindex, GLuint, divisor); \
|
||||
HookWrapper2(void, glcreatesamplers, GLsizei, n, GLuint *, samplers); \
|
||||
HookWrapper2(void, glcreateprogrampipelines, GLsizei, n, GLuint *, pipelines); \
|
||||
HookWrapper3(void, glcreatequeries, GLenum, target, GLsizei, n, GLuint *, ids); \
|
||||
HookWrapper4(void, glgetquerybufferobjecti64v, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper4(void, glgetquerybufferobjectiv, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper4(void, glgetquerybufferobjectui64v, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper4(void, glgetquerybufferobjectuiv, GLuint, id, GLuint, buffer, GLenum, pname, GLintptr, offset); \
|
||||
HookWrapper1(GLuint64, glgettexturehandlearb, GLuint, texture); \
|
||||
HookWrapper2(GLuint64, glgettexturesamplerhandlearb, GLuint, texture, GLuint, sampler); \
|
||||
HookWrapper1(void, glmaketexturehandleresidentarb, GLuint64, handle); \
|
||||
@@ -3354,82 +3408,6 @@
|
||||
|
||||
|
||||
#define CheckUnsupported() \
|
||||
HandleUnsupported(PFNGLCREATETRANSFORMFEEDBACKSPROC, glcreatetransformfeedbacks); \
|
||||
HandleUnsupported(PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC, gltransformfeedbackbufferbase); \
|
||||
HandleUnsupported(PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC, gltransformfeedbackbufferrange); \
|
||||
HandleUnsupported(PFNGLCREATEBUFFERSPROC, glcreatebuffers); \
|
||||
HandleUnsupported(PFNGLNAMEDBUFFERSTORAGEPROC, glnamedbufferstorage); \
|
||||
HandleUnsupported(PFNGLNAMEDBUFFERDATAPROC, glnamedbufferdata); \
|
||||
HandleUnsupported(PFNGLNAMEDBUFFERSUBDATAPROC, glnamedbuffersubdata); \
|
||||
HandleUnsupported(PFNGLCOPYNAMEDBUFFERSUBDATAPROC, glcopynamedbuffersubdata); \
|
||||
HandleUnsupported(PFNGLCLEARNAMEDBUFFERDATAPROC, glclearnamedbufferdata); \
|
||||
HandleUnsupported(PFNGLCLEARNAMEDBUFFERSUBDATAPROC, glclearnamedbuffersubdata); \
|
||||
HandleUnsupported(PFNGLMAPNAMEDBUFFERPROC, glmapnamedbuffer); \
|
||||
HandleUnsupported(PFNGLMAPNAMEDBUFFERRANGEPROC, glmapnamedbufferrange); \
|
||||
HandleUnsupported(PFNGLUNMAPNAMEDBUFFERPROC, glunmapnamedbuffer); \
|
||||
HandleUnsupported(PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC, glflushmappednamedbufferrange); \
|
||||
HandleUnsupported(PFNGLCREATEFRAMEBUFFERSPROC, glcreateframebuffers); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC, glnamedframebufferrenderbuffer); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC, glnamedframebufferparameteri); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glnamedframebuffertexture); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC, glnamedframebuffertexturelayer); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC, glnamedframebufferdrawbuffer); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC, glnamedframebufferdrawbuffers); \
|
||||
HandleUnsupported(PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC, glnamedframebufferreadbuffer); \
|
||||
HandleUnsupported(PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC, glinvalidatenamedframebufferdata); \
|
||||
HandleUnsupported(PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC, glinvalidatenamedframebuffersubdata); \
|
||||
HandleUnsupported(PFNGLCLEARNAMEDFRAMEBUFFERIVPROC, glclearnamedframebufferiv); \
|
||||
HandleUnsupported(PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC, glclearnamedframebufferuiv); \
|
||||
HandleUnsupported(PFNGLCLEARNAMEDFRAMEBUFFERFVPROC, glclearnamedframebufferfv); \
|
||||
HandleUnsupported(PFNGLCLEARNAMEDFRAMEBUFFERFIPROC, glclearnamedframebufferfi); \
|
||||
HandleUnsupported(PFNGLBLITNAMEDFRAMEBUFFERPROC, glblitnamedframebuffer); \
|
||||
HandleUnsupported(PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC, glchecknamedframebufferstatus); \
|
||||
HandleUnsupported(PFNGLCREATERENDERBUFFERSPROC, glcreaterenderbuffers); \
|
||||
HandleUnsupported(PFNGLNAMEDRENDERBUFFERSTORAGEPROC, glnamedrenderbufferstorage); \
|
||||
HandleUnsupported(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC, glnamedrenderbufferstoragemultisample); \
|
||||
HandleUnsupported(PFNGLCREATETEXTURESPROC, glcreatetextures); \
|
||||
HandleUnsupported(PFNGLTEXTUREBUFFERPROC, gltexturebuffer); \
|
||||
HandleUnsupported(PFNGLTEXTUREBUFFERRANGEPROC, gltexturebufferrange); \
|
||||
HandleUnsupported(PFNGLTEXTURESTORAGE1DPROC, gltexturestorage1d); \
|
||||
HandleUnsupported(PFNGLTEXTURESTORAGE2DPROC, gltexturestorage2d); \
|
||||
HandleUnsupported(PFNGLTEXTURESTORAGE3DPROC, gltexturestorage3d); \
|
||||
HandleUnsupported(PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC, gltexturestorage2dmultisample); \
|
||||
HandleUnsupported(PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC, gltexturestorage3dmultisample); \
|
||||
HandleUnsupported(PFNGLTEXTURESUBIMAGE1DPROC, gltexturesubimage1d); \
|
||||
HandleUnsupported(PFNGLTEXTURESUBIMAGE2DPROC, gltexturesubimage2d); \
|
||||
HandleUnsupported(PFNGLTEXTURESUBIMAGE3DPROC, gltexturesubimage3d); \
|
||||
HandleUnsupported(PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC, glcompressedtexturesubimage1d); \
|
||||
HandleUnsupported(PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC, glcompressedtexturesubimage2d); \
|
||||
HandleUnsupported(PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC, glcompressedtexturesubimage3d); \
|
||||
HandleUnsupported(PFNGLCOPYTEXTURESUBIMAGE1DPROC, glcopytexturesubimage1d); \
|
||||
HandleUnsupported(PFNGLCOPYTEXTURESUBIMAGE2DPROC, glcopytexturesubimage2d); \
|
||||
HandleUnsupported(PFNGLCOPYTEXTURESUBIMAGE3DPROC, glcopytexturesubimage3d); \
|
||||
HandleUnsupported(PFNGLTEXTUREPARAMETERFPROC, gltextureparameterf); \
|
||||
HandleUnsupported(PFNGLTEXTUREPARAMETERFVPROC, gltextureparameterfv); \
|
||||
HandleUnsupported(PFNGLTEXTUREPARAMETERIPROC, gltextureparameteri); \
|
||||
HandleUnsupported(PFNGLTEXTUREPARAMETERIIVPROC, gltextureparameteriiv); \
|
||||
HandleUnsupported(PFNGLTEXTUREPARAMETERIUIVPROC, gltextureparameteriuiv); \
|
||||
HandleUnsupported(PFNGLTEXTUREPARAMETERIVPROC, gltextureparameteriv); \
|
||||
HandleUnsupported(PFNGLGENERATETEXTUREMIPMAPPROC, glgeneratetexturemipmap); \
|
||||
HandleUnsupported(PFNGLBINDTEXTUREUNITPROC, glbindtextureunit); \
|
||||
HandleUnsupported(PFNGLCREATEVERTEXARRAYSPROC, glcreatevertexarrays); \
|
||||
HandleUnsupported(PFNGLDISABLEVERTEXARRAYATTRIBPROC, gldisablevertexarrayattrib); \
|
||||
HandleUnsupported(PFNGLENABLEVERTEXARRAYATTRIBPROC, glenablevertexarrayattrib); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYELEMENTBUFFERPROC, glvertexarrayelementbuffer); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYVERTEXBUFFERPROC, glvertexarrayvertexbuffer); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYVERTEXBUFFERSPROC, glvertexarrayvertexbuffers); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYATTRIBBINDINGPROC, glvertexarrayattribbinding); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYATTRIBFORMATPROC, glvertexarrayattribformat); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYATTRIBIFORMATPROC, glvertexarrayattribiformat); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYATTRIBLFORMATPROC, glvertexarrayattriblformat); \
|
||||
HandleUnsupported(PFNGLVERTEXARRAYBINDINGDIVISORPROC, glvertexarraybindingdivisor); \
|
||||
HandleUnsupported(PFNGLCREATESAMPLERSPROC, glcreatesamplers); \
|
||||
HandleUnsupported(PFNGLCREATEPROGRAMPIPELINESPROC, glcreateprogrampipelines); \
|
||||
HandleUnsupported(PFNGLCREATEQUERIESPROC, glcreatequeries); \
|
||||
HandleUnsupported(PFNGLGETQUERYBUFFEROBJECTI64VPROC, glgetquerybufferobjecti64v); \
|
||||
HandleUnsupported(PFNGLGETQUERYBUFFEROBJECTIVPROC, glgetquerybufferobjectiv); \
|
||||
HandleUnsupported(PFNGLGETQUERYBUFFEROBJECTUI64VPROC, glgetquerybufferobjectui64v); \
|
||||
HandleUnsupported(PFNGLGETQUERYBUFFEROBJECTUIVPROC, glgetquerybufferobjectuiv); \
|
||||
HandleUnsupported(PFNGLGETTEXTUREHANDLEARBPROC, glgettexturehandlearb); \
|
||||
HandleUnsupported(PFNGLGETTEXTURESAMPLERHANDLEARBPROC, glgettexturesamplerhandlearb); \
|
||||
HandleUnsupported(PFNGLMAKETEXTUREHANDLERESIDENTARBPROC, glmaketexturehandleresidentarb); \
|
||||
|
||||
@@ -53,7 +53,7 @@ while(<HOOKSET>)
|
||||
$current = \@dllexport if $1 eq "dllexport";
|
||||
$current = \@glext if $1 eq "glext";
|
||||
}
|
||||
elsif($line =~ /^\s*\/\/ .*/)
|
||||
elsif($line =~ /^\s*\/\/.*/)
|
||||
{
|
||||
# skip comments
|
||||
}
|
||||
@@ -182,7 +182,7 @@ print <<ENDOFHEADER;
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 Crytek
|
||||
* Copyright (c) 2015 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -322,6 +322,12 @@ void WrappedOpenGL::glNamedBufferStorageEXT(GLuint buffer, GLsizeiptr size, cons
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glNamedBufferStorage(GLuint buffer, GLsizei size, const void *data, GLbitfield flags)
|
||||
{
|
||||
// only difference to EXT function is size parameter, so just upcast
|
||||
glNamedBufferStorageEXT(buffer, (GLsizeiptr)size, data, flags);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glBufferStorage(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
|
||||
{
|
||||
m_Real.glBufferStorage(target, size, data, flags);
|
||||
@@ -498,6 +504,12 @@ void WrappedOpenGL::glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const v
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glNamedBufferData(GLuint buffer, GLsizei size, const void *data, GLenum usage)
|
||||
{
|
||||
// only difference to EXT function is size parameter, so just upcast
|
||||
glNamedBufferDataEXT(buffer, (GLsizeiptr)size, data, usage);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage)
|
||||
{
|
||||
m_Real.glBufferData(target, size, data, usage);
|
||||
@@ -655,6 +667,12 @@ void WrappedOpenGL::glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsi
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glNamedBufferSubData(GLuint buffer, GLintptr offset, GLsizei size, const void *data)
|
||||
{
|
||||
// only difference to EXT function is size parameter, so just upcast
|
||||
glNamedBufferSubDataEXT(buffer, offset, (GLsizeiptr)size, data);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data)
|
||||
{
|
||||
m_Real.glBufferSubData(target, offset, size, data);
|
||||
@@ -735,6 +753,11 @@ void WrappedOpenGL::glNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeB
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glCopyNamedBufferSubData(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizei size)
|
||||
{
|
||||
glNamedCopyBufferSubDataEXT(readBuffer, writeBuffer, readOffset, writeOffset, (GLsizeiptr)size);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
|
||||
{
|
||||
m_Real.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
|
||||
@@ -1537,6 +1560,12 @@ void *WrappedOpenGL::glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GL
|
||||
return m_Real.glMapNamedBufferRangeEXT(buffer, offset, length, access);
|
||||
}
|
||||
|
||||
void *WrappedOpenGL::glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length, GLbitfield access)
|
||||
{
|
||||
// only difference to EXT function is size parameter, so just upcast
|
||||
return glMapNamedBufferRangeEXT(buffer, offset, (GLsizeiptr)length, access);
|
||||
}
|
||||
|
||||
void *WrappedOpenGL::glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
|
||||
{
|
||||
if(m_State >= WRITING)
|
||||
@@ -1817,6 +1846,12 @@ void WrappedOpenGL::glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr off
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glFlushMappedNamedBufferRange(GLuint buffer, GLintptr offset, GLsizei length)
|
||||
{
|
||||
// only difference to EXT function is size parameter, so just upcast
|
||||
glFlushMappedNamedBufferRangeEXT(buffer, offset, (GLsizeiptr)length);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
|
||||
{
|
||||
if(m_State >= WRITING)
|
||||
@@ -1914,17 +1949,46 @@ bool WrappedOpenGL::Serialise_glTransformFeedbackBufferBase(GLuint xfb, GLuint i
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
m_Real.glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, GetResourceManager()->GetLiveResource(xid).name);
|
||||
|
||||
xfb = GetResourceManager()->GetLiveResource(xid).name;
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the trivial way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
if(bid == ResourceId())
|
||||
m_Real.glBindBufferBase(eGL_TRANSFORM_FEEDBACK_BUFFER, idx, 0);
|
||||
m_Real.glTransformFeedbackBufferBase(xfb, idx, 0);
|
||||
else
|
||||
m_Real.glBindBufferBase(eGL_TRANSFORM_FEEDBACK_BUFFER, idx, GetResourceManager()->GetLiveResource(bid).name);
|
||||
m_Real.glTransformFeedbackBufferBase(xfb, idx, GetResourceManager()->GetLiveResource(bid).name);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer)
|
||||
{
|
||||
m_Real.glTransformFeedbackBufferBase(xfb, index, buffer);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(FEEDBACK_BUFFER_BASE);
|
||||
Serialise_glTransformFeedbackBufferBase(xfb, index, buffer);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(xfb != 0)
|
||||
{
|
||||
GLResourceRecord *fbrecord = GetResourceManager()->GetResourceRecord(FeedbackRes(GetCtx(), xfb));
|
||||
|
||||
fbrecord->AddChunk(scope.Get());
|
||||
|
||||
if(buffer != 0)
|
||||
fbrecord->AddParent(GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, idx, index);
|
||||
@@ -1935,17 +1999,46 @@ bool WrappedOpenGL::Serialise_glTransformFeedbackBufferRange(GLuint xfb, GLuint
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
m_Real.glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, GetResourceManager()->GetLiveResource(xid).name);
|
||||
|
||||
xfb = GetResourceManager()->GetLiveResource(xid).name;
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
if(bid == ResourceId())
|
||||
m_Real.glBindBufferBase(eGL_TRANSFORM_FEEDBACK_BUFFER, idx, 0); // if we're unbinding, offset/size don't matter
|
||||
m_Real.glTransformFeedbackBufferBase(xfb, idx, 0); // if we're unbinding, offset/size don't matter
|
||||
else
|
||||
m_Real.glBindBufferRange(eGL_TRANSFORM_FEEDBACK_BUFFER, idx, GetResourceManager()->GetLiveResource(bid).name, (GLintptr)offs, (GLsizei)sz);
|
||||
m_Real.glTransformFeedbackBufferRange(xfb, idx, GetResourceManager()->GetLiveResource(bid).name, (GLintptr)offs, (GLsizei)sz);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size)
|
||||
{
|
||||
m_Real.glTransformFeedbackBufferRange(xfb, index, buffer, offset, size);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(FEEDBACK_BUFFER_RANGE);
|
||||
Serialise_glTransformFeedbackBufferRange(xfb, index, buffer, offset, size);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(xfb != 0)
|
||||
{
|
||||
GLResourceRecord *fbrecord = GetResourceManager()->GetResourceRecord(FeedbackRes(GetCtx(), xfb));
|
||||
|
||||
fbrecord->AddChunk(scope.Get());
|
||||
|
||||
if(buffer != 0)
|
||||
fbrecord->AddParent(GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glBindTransformFeedback(GLenum target, GLuint id)
|
||||
{
|
||||
SERIALISE_ELEMENT(GLenum, Target, target);
|
||||
@@ -3007,16 +3100,47 @@ bool WrappedOpenGL::Serialise_glVertexArrayElementBuffer(GLuint vaobj, GLuint bu
|
||||
|
||||
buffer = 0;
|
||||
if(bid != ResourceId()) buffer = GetResourceManager()->GetLiveResource(bid).name;
|
||||
|
||||
// hack for now, since we don't properly serialise ARB_dsa, this is just used from
|
||||
// glBindBuffer as a utility serialise function
|
||||
m_Real.glBindVertexArray(vaobj);
|
||||
m_Real.glBindBuffer(eGL_ELEMENT_ARRAY_BUFFER, buffer);
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
m_Real.glVertexArrayElementBuffer(vaobj, buffer);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer)
|
||||
{
|
||||
m_Real.glVertexArrayElementBuffer(vaobj, buffer);
|
||||
|
||||
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(VAO_ELEMENT_BUFFER);
|
||||
Serialise_glVertexArrayElementBuffer(vaobj, buffer);
|
||||
|
||||
r->AddChunk(scope.Get());
|
||||
}
|
||||
|
||||
if(buffer != 0)
|
||||
r->AddParent(GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffer)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, idx, bindingindex);
|
||||
@@ -3099,11 +3223,11 @@ void WrappedOpenGL::glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLint
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
|
||||
bool WrappedOpenGL::Serialise_glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, First, first);
|
||||
SERIALISE_ELEMENT(int32_t, Count, count);
|
||||
SERIALISE_ELEMENT(ResourceId, vid, GetCtxData().m_VertexArrayRecord ? GetCtxData().m_VertexArrayRecord->GetResourceID() : ResourceId());
|
||||
SERIALISE_ELEMENT(ResourceId, vid, vaobj ? GetResourceManager()->GetID(VertexArrayRes(GetCtx(), vaobj)) : ResourceId());
|
||||
|
||||
GLuint *bufs = NULL;
|
||||
GLintptr *offs = NULL;
|
||||
@@ -3135,20 +3259,16 @@ bool WrappedOpenGL::Serialise_glBindVertexBuffers(GLuint first, GLsizei count, c
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
if(m_State == READING && m_CurEventID == 0)
|
||||
{
|
||||
if(vid != ResourceId())
|
||||
{
|
||||
GLResource res = GetResourceManager()->GetLiveResource(vid);
|
||||
m_Real.glBindVertexArray(res.name);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Real.glBindVertexArray(m_FakeVAO);
|
||||
}
|
||||
}
|
||||
|
||||
m_Real.glBindVertexBuffers(First, Count, bufs, offs, str);
|
||||
if(vid != ResourceId())
|
||||
vaobj = GetResourceManager()->GetLiveResource(vid).name;
|
||||
else
|
||||
vaobj = m_FakeVAO;
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
m_Real.glVertexArrayVertexBuffers(vaobj, First, Count, bufs, offs, str);
|
||||
|
||||
delete[] bufs;
|
||||
delete[] offs;
|
||||
@@ -3158,6 +3278,39 @@ bool WrappedOpenGL::Serialise_glBindVertexBuffers(GLuint first, GLsizei count, c
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
|
||||
{
|
||||
m_Real.glVertexArrayVertexBuffers(vaobj, first, count, buffers, offsets, strides);
|
||||
|
||||
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_VERTEXBUFFERS);
|
||||
Serialise_glVertexArrayVertexBuffers(vaobj, first, count, buffers, offsets, strides);
|
||||
|
||||
r->AddChunk(scope.Get());
|
||||
}
|
||||
|
||||
for(GLsizei i=0; i < count; i++)
|
||||
{
|
||||
if(buffers[i] != 0)
|
||||
r->AddParent(GetResourceManager()->GetResourceRecord(BufferRes(GetCtx(), buffers[i])));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glBindVertexBuffers(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
|
||||
{
|
||||
m_Real.glBindVertexBuffers(first, count, buffers, offsets, strides);
|
||||
@@ -3177,7 +3330,7 @@ void WrappedOpenGL::glBindVertexBuffers(GLuint first, GLsizei count, const GLuin
|
||||
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(BIND_VERTEXBUFFERS);
|
||||
Serialise_glBindVertexBuffers(first, count, buffers, offsets, strides);
|
||||
Serialise_glVertexArrayVertexBuffers(varecord ? varecord->Resource.name : 0, first, count, buffers, offsets, strides);
|
||||
|
||||
r->AddChunk(scope.Get());
|
||||
}
|
||||
|
||||
@@ -2316,11 +2316,22 @@ void WrappedOpenGL::glMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
|
||||
bool WrappedOpenGL::Serialise_glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, Id, (framebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)) : ResourceId()));
|
||||
SERIALISE_ELEMENT(GLenum, buf, buffer);
|
||||
SERIALISE_ELEMENT(int32_t, draw, drawbuffer);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
if(Id == ResourceId())
|
||||
framebuffer = m_FakeBB_FBO;
|
||||
else
|
||||
framebuffer = GetResourceManager()->GetLiveResource(Id).name;
|
||||
}
|
||||
|
||||
string name;
|
||||
|
||||
if(buf != eGL_DEPTH)
|
||||
{
|
||||
Vec4f v;
|
||||
@@ -2328,15 +2339,34 @@ bool WrappedOpenGL::Serialise_glClearBufferfv(GLenum buffer, GLint drawbuffer, c
|
||||
|
||||
m_pSerialiser->Serialise<4>("value", (float *)&v.x);
|
||||
|
||||
if(m_State == READING)
|
||||
name = "glClearBufferfv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ", " +
|
||||
ToStr::Get(v.x) + ", " +
|
||||
ToStr::Get(v.y) + ", " +
|
||||
ToStr::Get(v.z) + ", " +
|
||||
ToStr::Get(v.w) + ")";
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearBufferfv(buf, draw, &v.x);
|
||||
m_Real.glClearNamedFramebufferfv(framebuffer, buf, draw, &v.x);
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIALISE_ELEMENT(float, val, *value);
|
||||
|
||||
if(m_State == READING)
|
||||
name = "glClearBufferfv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ", " +
|
||||
ToStr::Get(val) + ")";
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearBufferfv(buf, draw, &val);
|
||||
m_Real.glClearNamedFramebufferfv(framebuffer, buf, draw, &val);
|
||||
}
|
||||
|
||||
const string desc = m_pSerialiser->GetDebugStr();
|
||||
@@ -2346,9 +2376,6 @@ bool WrappedOpenGL::Serialise_glClearBufferfv(GLenum buffer, GLint drawbuffer, c
|
||||
if(m_State == READING)
|
||||
{
|
||||
AddEvent(CLEARBUFFERF, desc);
|
||||
string name = "glClearBufferfv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ")";
|
||||
|
||||
FetchDrawcall draw;
|
||||
draw.name = name;
|
||||
@@ -2361,24 +2388,52 @@ bool WrappedOpenGL::Serialise_glClearBufferfv(GLenum buffer, GLint drawbuffer, c
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)
|
||||
{
|
||||
m_Real.glClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERF);
|
||||
Serialise_glClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
|
||||
{
|
||||
m_Real.glClearBufferfv(buffer, drawbuffer, value);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
GLuint framebuffer = 0;
|
||||
if(GetCtxData().m_DrawFramebufferRecord)
|
||||
framebuffer = GetCtxData().m_DrawFramebufferRecord->Resource.name;
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERF);
|
||||
Serialise_glClearBufferfv(buffer, drawbuffer, value);
|
||||
Serialise_glClearNamedFramebufferfv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
|
||||
bool WrappedOpenGL::Serialise_glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, Id, (framebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)) : ResourceId()));
|
||||
SERIALISE_ELEMENT(GLenum, buf, buffer);
|
||||
SERIALISE_ELEMENT(int32_t, draw, drawbuffer);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
if(Id == ResourceId())
|
||||
framebuffer = m_FakeBB_FBO;
|
||||
else
|
||||
framebuffer = GetResourceManager()->GetLiveResource(Id).name;
|
||||
}
|
||||
|
||||
string name;
|
||||
|
||||
if(buf != eGL_STENCIL)
|
||||
{
|
||||
int32_t v[4];
|
||||
@@ -2386,15 +2441,34 @@ bool WrappedOpenGL::Serialise_glClearBufferiv(GLenum buffer, GLint drawbuffer, c
|
||||
|
||||
m_pSerialiser->Serialise<4>("value", v);
|
||||
|
||||
if(m_State == READING)
|
||||
name = "glClearBufferiv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ", " +
|
||||
ToStr::Get(v[0]) + ", " +
|
||||
ToStr::Get(v[1]) + ", " +
|
||||
ToStr::Get(v[2]) + ", " +
|
||||
ToStr::Get(v[3]) + ")";
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearBufferiv(buf, draw, v);
|
||||
m_Real.glClearNamedFramebufferiv(framebuffer, buf, draw, v);
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIALISE_ELEMENT(int32_t, val, *value);
|
||||
|
||||
if(m_State == READING)
|
||||
name = "glClearBufferiv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ", " +
|
||||
ToStr::Get(val) + ")";
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearBufferiv(buf, draw, &val);
|
||||
m_Real.glClearNamedFramebufferiv(framebuffer, buf, draw, &val);
|
||||
}
|
||||
|
||||
const string desc = m_pSerialiser->GetDebugStr();
|
||||
@@ -2404,9 +2478,6 @@ bool WrappedOpenGL::Serialise_glClearBufferiv(GLenum buffer, GLint drawbuffer, c
|
||||
if(m_State == READING)
|
||||
{
|
||||
AddEvent(CLEARBUFFERI, desc);
|
||||
string name = "glClearBufferiv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ")";
|
||||
|
||||
FetchDrawcall draw;
|
||||
draw.name = name;
|
||||
@@ -2419,32 +2490,73 @@ bool WrappedOpenGL::Serialise_glClearBufferiv(GLenum buffer, GLint drawbuffer, c
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)
|
||||
{
|
||||
m_Real.glClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERI);
|
||||
Serialise_glClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
|
||||
{
|
||||
m_Real.glClearBufferiv(buffer, drawbuffer, value);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
GLuint framebuffer = 0;
|
||||
if(GetCtxData().m_DrawFramebufferRecord)
|
||||
framebuffer = GetCtxData().m_DrawFramebufferRecord->Resource.name;
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERI);
|
||||
Serialise_glClearBufferiv(buffer, drawbuffer, value);
|
||||
Serialise_glClearNamedFramebufferiv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
|
||||
bool WrappedOpenGL::Serialise_glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, Id, (framebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)) : ResourceId()));
|
||||
SERIALISE_ELEMENT(GLenum, buf, buffer);
|
||||
SERIALISE_ELEMENT(int32_t, draw, drawbuffer);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
if(Id == ResourceId())
|
||||
framebuffer = m_FakeBB_FBO;
|
||||
else
|
||||
framebuffer = GetResourceManager()->GetLiveResource(Id).name;
|
||||
}
|
||||
|
||||
string name;
|
||||
|
||||
{
|
||||
uint32_t v[4];
|
||||
if(value) memcpy(v, value, sizeof(v));
|
||||
|
||||
m_pSerialiser->Serialise<4>("value", v);
|
||||
|
||||
if(m_State == READING)
|
||||
name = "glClearBufferuiv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ", " +
|
||||
ToStr::Get(v[0]) + ", " +
|
||||
ToStr::Get(v[1]) + ", " +
|
||||
ToStr::Get(v[2]) + ", " +
|
||||
ToStr::Get(v[3]) + ")";
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearBufferuiv(buf, draw, v);
|
||||
m_Real.glClearNamedFramebufferuiv(framebuffer, buf, draw, v);
|
||||
}
|
||||
|
||||
const string desc = m_pSerialiser->GetDebugStr();
|
||||
@@ -2454,9 +2566,6 @@ bool WrappedOpenGL::Serialise_glClearBufferuiv(GLenum buffer, GLint drawbuffer,
|
||||
if(m_State == READING)
|
||||
{
|
||||
AddEvent(CLEARBUFFERUI, desc);
|
||||
string name = "glClearBufferuiv(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ")";
|
||||
|
||||
FetchDrawcall draw;
|
||||
draw.name = name;
|
||||
@@ -2468,28 +2577,57 @@ bool WrappedOpenGL::Serialise_glClearBufferuiv(GLenum buffer, GLint drawbuffer,
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)
|
||||
{
|
||||
m_Real.glClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERUI);
|
||||
Serialise_glClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
|
||||
{
|
||||
m_Real.glClearBufferuiv(buffer, drawbuffer, value);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
GLuint framebuffer = 0;
|
||||
if(GetCtxData().m_DrawFramebufferRecord)
|
||||
framebuffer = GetCtxData().m_DrawFramebufferRecord->Resource.name;
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERUI);
|
||||
Serialise_glClearBufferuiv(buffer, drawbuffer, value);
|
||||
Serialise_glClearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, value);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
|
||||
bool WrappedOpenGL::Serialise_glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, Id, (framebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)) : ResourceId()));
|
||||
SERIALISE_ELEMENT(GLenum, buf, buffer);
|
||||
SERIALISE_ELEMENT(int32_t, draw, drawbuffer);
|
||||
SERIALISE_ELEMENT(float, d, depth);
|
||||
SERIALISE_ELEMENT(int32_t, s, stencil);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearBufferfi(buf, draw, d, s);
|
||||
{
|
||||
if(Id == ResourceId())
|
||||
framebuffer = m_FakeBB_FBO;
|
||||
else
|
||||
framebuffer = GetResourceManager()->GetLiveResource(Id).name;
|
||||
}
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
if(m_State <= EXECUTING)
|
||||
m_Real.glClearNamedFramebufferfi(framebuffer, buf, d, s);
|
||||
|
||||
const string desc = m_pSerialiser->GetDebugStr();
|
||||
|
||||
@@ -2499,8 +2637,8 @@ bool WrappedOpenGL::Serialise_glClearBufferfi(GLenum buffer, GLint drawbuffer, G
|
||||
{
|
||||
AddEvent(CLEARBUFFERFI, desc);
|
||||
string name = "glClearBufferfi(" +
|
||||
ToStr::Get(buf) + ", " +
|
||||
ToStr::Get(draw) + ")";
|
||||
ToStr::Get(d) +
|
||||
ToStr::Get(s) + ")";
|
||||
|
||||
FetchDrawcall draw;
|
||||
draw.name = name;
|
||||
@@ -2512,14 +2650,32 @@ bool WrappedOpenGL::Serialise_glClearBufferfi(GLenum buffer, GLint drawbuffer, G
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, GLfloat depth, GLint stencil)
|
||||
{
|
||||
m_Real.glClearNamedFramebufferfi(framebuffer, buffer, depth, stencil);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERFI);
|
||||
Serialise_glClearNamedFramebufferfi(framebuffer, buffer, depth, stencil);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
|
||||
{
|
||||
m_Real.glClearBufferfi(buffer, drawbuffer, depth, stencil);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
GLuint framebuffer = 0;
|
||||
if(GetCtxData().m_DrawFramebufferRecord)
|
||||
framebuffer = GetCtxData().m_DrawFramebufferRecord->Resource.name;
|
||||
|
||||
// drawbuffer is ignored, as it must be 0 anyway
|
||||
SCOPED_SERIALISE_CONTEXT(CLEARBUFFERFI);
|
||||
Serialise_glClearBufferfi(buffer, drawbuffer, depth, stencil);
|
||||
Serialise_glClearNamedFramebufferfi(framebuffer, buffer, depth, stencil);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
@@ -2713,6 +2869,12 @@ void WrappedOpenGL::glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalf
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glClearNamedBufferSubData(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizei size, GLenum format, GLenum type, const void *data)
|
||||
{
|
||||
// only difference to EXT function is size parameter, so just upcast
|
||||
glClearNamedBufferSubDataEXT(buffer, internalformat, offset, (GLsizeiptr)size, format, type, data);
|
||||
}
|
||||
|
||||
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);
|
||||
@@ -2742,7 +2904,7 @@ bool WrappedOpenGL::Serialise_glClear(GLbitfield mask)
|
||||
|
||||
if(m_State == READING)
|
||||
{
|
||||
AddEvent(CLEARBUFFERF, desc);
|
||||
AddEvent(CLEAR, desc);
|
||||
string name = "glClear(";
|
||||
if(Mask & GL_COLOR_BUFFER_BIT)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2015 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
// in some cases we might need some functions (notably ARB_direct_state_access)
|
||||
// emulated where possible, so we can simplify most codepaths by just assuming they're
|
||||
// present elsewhere and using them unconditionally.
|
||||
|
||||
#include "driver/gl/gl_common.h"
|
||||
#include "driver/gl/gl_hookset.h"
|
||||
|
||||
namespace glEmulate {
|
||||
|
||||
GLHookSet *hookset = NULL;
|
||||
|
||||
void APIENTRY _glTransformFeedbackBufferBase(GLuint xfb, GLuint index, GLuint buffer)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_TRANSFORM_FEEDBACK_BINDING, (GLint *)&old);
|
||||
hookset->glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, xfb);
|
||||
hookset->glBindBufferBase(eGL_TRANSFORM_FEEDBACK_BUFFER, index, buffer);
|
||||
hookset->glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, old);
|
||||
}
|
||||
|
||||
void APIENTRY _glTransformFeedbackBufferRange(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizei size)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_TRANSFORM_FEEDBACK_BINDING, (GLint *)&old);
|
||||
hookset->glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, xfb);
|
||||
hookset->glBindBufferRange(eGL_TRANSFORM_FEEDBACK_BUFFER, index, buffer, offset, size);
|
||||
hookset->glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, old);
|
||||
}
|
||||
|
||||
void APIENTRY _glClearNamedFramebufferiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&old);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, framebuffer);
|
||||
hookset->glClearBufferiv(buffer, drawbuffer, value);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, old);
|
||||
}
|
||||
|
||||
void APIENTRY _glClearNamedFramebufferuiv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&old);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, framebuffer);
|
||||
hookset->glClearBufferuiv(buffer, drawbuffer, value);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, old);
|
||||
}
|
||||
|
||||
void APIENTRY _glClearNamedFramebufferfv(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&old);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, framebuffer);
|
||||
hookset->glClearBufferfv(buffer, drawbuffer, value);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, old);
|
||||
}
|
||||
|
||||
void APIENTRY _glClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&old);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, framebuffer);
|
||||
hookset->glClearBufferfi(buffer, 0, depth, stencil);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, old);
|
||||
}
|
||||
|
||||
void APIENTRY _glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer,
|
||||
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
||||
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
|
||||
GLbitfield mask, GLenum filter)
|
||||
{
|
||||
GLuint oldR = 0, oldD = 0;
|
||||
hookset->glGetIntegerv(eGL_READ_FRAMEBUFFER_BINDING, (GLint *)&oldR);
|
||||
hookset->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&oldD);
|
||||
|
||||
hookset->glBindFramebuffer(eGL_READ_FRAMEBUFFER, readFramebuffer);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, drawFramebuffer);
|
||||
|
||||
hookset->glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
|
||||
hookset->glBindFramebuffer(eGL_READ_FRAMEBUFFER, oldR);
|
||||
hookset->glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, oldD);
|
||||
}
|
||||
|
||||
void APIENTRY _glVertexArrayElementBuffer(GLuint vaobj, GLuint buffer)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_VERTEX_ARRAY_BINDING, (GLint *)&old);
|
||||
hookset->glBindVertexArray(vaobj);
|
||||
hookset->glBindBuffer(eGL_ELEMENT_ARRAY_BUFFER, buffer);
|
||||
hookset->glBindVertexArray(old);
|
||||
}
|
||||
|
||||
void APIENTRY _glVertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
|
||||
{
|
||||
GLuint old = 0;
|
||||
hookset->glGetIntegerv(eGL_VERTEX_ARRAY_BINDING, (GLint *)&old);
|
||||
hookset->glBindVertexArray(vaobj);
|
||||
hookset->glBindVertexBuffers(first, count, buffers, offsets, strides);
|
||||
hookset->glBindVertexArray(old);
|
||||
}
|
||||
|
||||
void EmulateUnsupportedFunctions(GLHookSet *hooks)
|
||||
{
|
||||
hookset = hooks;
|
||||
|
||||
#define EMULATE_UNSUPPORTED(func) if(!hooks->func) hooks->func = &CONCAT(_, func);
|
||||
|
||||
EMULATE_UNSUPPORTED(glTransformFeedbackBufferBase)
|
||||
EMULATE_UNSUPPORTED(glTransformFeedbackBufferRange)
|
||||
EMULATE_UNSUPPORTED(glClearNamedFramebufferiv)
|
||||
EMULATE_UNSUPPORTED(glClearNamedFramebufferuiv)
|
||||
EMULATE_UNSUPPORTED(glClearNamedFramebufferfv)
|
||||
EMULATE_UNSUPPORTED(glClearNamedFramebufferfi)
|
||||
EMULATE_UNSUPPORTED(glBlitNamedFramebuffer)
|
||||
EMULATE_UNSUPPORTED(glVertexArrayVertexBuffers)
|
||||
}
|
||||
|
||||
}; // namespace glEmulate
|
||||
@@ -1120,6 +1120,19 @@ void WrappedOpenGL::glInvalidateFramebuffer(GLenum target, GLsizei numAttachment
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments)
|
||||
{
|
||||
m_Real.glInvalidateNamedFramebufferData(framebuffer, numAttachments, attachments);
|
||||
|
||||
if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(FramebufferRes(GetCtx(), framebuffer));
|
||||
|
||||
if(record)
|
||||
record->MarkParentsDirty(GetResourceManager());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
m_Real.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
|
||||
@@ -1144,8 +1157,26 @@ void WrappedOpenGL::glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachm
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
|
||||
void WrappedOpenGL::glInvalidateNamedFramebufferSubData(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
m_Real.glInvalidateNamedFramebufferSubData(framebuffer, numAttachments, attachments, x, y, width, height);
|
||||
|
||||
if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(FramebufferRes(GetCtx(), framebuffer));
|
||||
|
||||
if(record)
|
||||
record->MarkParentsDirty(GetResourceManager());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer,
|
||||
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
||||
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
|
||||
GLbitfield mask, GLenum filter)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, readId, (readFramebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), readFramebuffer)) : ResourceId()));
|
||||
SERIALISE_ELEMENT(ResourceId, drawId, (drawFramebuffer ? GetResourceManager()->GetID(FramebufferRes(GetCtx(), drawFramebuffer)) : ResourceId()));
|
||||
SERIALISE_ELEMENT(int32_t, sX0, srcX0);
|
||||
SERIALISE_ELEMENT(int32_t, sY0, srcY0);
|
||||
SERIALISE_ELEMENT(int32_t, sX1, srcX1);
|
||||
@@ -1159,18 +1190,57 @@ bool WrappedOpenGL::Serialise_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
m_Real.glBlitFramebuffer(sX0, sY0, sX1, sY1, dX0, dY0, dX1, dY1, msk, flt);
|
||||
if(readId == ResourceId())
|
||||
readFramebuffer = m_FakeBB_FBO;
|
||||
else
|
||||
readFramebuffer = GetResourceManager()->GetLiveResource(readId).name;
|
||||
|
||||
if(drawId == ResourceId())
|
||||
drawFramebuffer = m_FakeBB_FBO;
|
||||
else
|
||||
drawFramebuffer = GetResourceManager()->GetLiveResource(drawId).name;
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
m_Real.glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, sX0, sY0, sX1, sY1, dX0, dY0, dX1, dY1, msk, flt);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glBlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer,
|
||||
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
||||
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
|
||||
GLbitfield mask, GLenum filter)
|
||||
{
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(BLIT_FRAMEBUFFER);
|
||||
Serialise_glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
|
||||
// use ARB_direct_state_access functions here as we use EXT_direct_state_access elsewhere. If
|
||||
// we are running without ARB_dsa support, these functions are emulated in the obvious way. This is
|
||||
// necessary since these functions can be serialised even if ARB_dsa was not used originally, and
|
||||
// we need to support this case.
|
||||
m_Real.glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
|
||||
{
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
GLuint readFramebuffer = 0, drawFramebuffer = 0;
|
||||
|
||||
if(GetCtxData().m_ReadFramebufferRecord) readFramebuffer = GetCtxData().m_ReadFramebufferRecord->Resource.name;
|
||||
if(GetCtxData().m_DrawFramebufferRecord) drawFramebuffer = GetCtxData().m_DrawFramebufferRecord->Resource.name;
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(BLIT_FRAMEBUFFER);
|
||||
Serialise_glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
Serialise_glBlitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
|
||||
@@ -399,6 +399,26 @@ void WrappedOpenGL::glGetQueryiv(GLenum target, GLenum pname, GLint *params)
|
||||
m_Real.glGetQueryiv(target, pname, params);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetQueryBufferObjectui64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
|
||||
{
|
||||
m_Real.glGetQueryBufferObjectui64v(id, buffer, pname, offset);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetQueryBufferObjectuiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
|
||||
{
|
||||
m_Real.glGetQueryBufferObjectuiv(id, buffer, pname, offset);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetQueryBufferObjecti64v(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
|
||||
{
|
||||
m_Real.glGetQueryBufferObjecti64v(id, buffer, pname, offset);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetQueryBufferObjectiv(GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
|
||||
{
|
||||
m_Real.glGetQueryBufferObjectiv(id, buffer, pname, offset);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
|
||||
{
|
||||
m_Real.glGetSynciv(sync, pname, bufSize, length, values);
|
||||
@@ -780,11 +800,6 @@ void WrappedOpenGL::glGetNamedBufferParameteri64v(GLuint buffer, GLenum pname, G
|
||||
m_Real.glGetNamedBufferParameteri64v(buffer, pname, params);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetNamedBufferPointerv(GLuint buffer, GLenum pname, void **params)
|
||||
{
|
||||
m_Real.glGetNamedBufferPointerv(buffer, pname, params);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint *param)
|
||||
{
|
||||
m_Real.glGetNamedFramebufferParameterivEXT(framebuffer, pname, param);
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
#include "common/threading.h"
|
||||
#include "common/string_utils.h"
|
||||
|
||||
namespace glEmulate { void EmulateUnsupportedFunctions(GLHookSet *hooks); }
|
||||
|
||||
// bit of a hack
|
||||
namespace Keyboard { extern Display *CurrentXDisplay; }
|
||||
|
||||
@@ -849,6 +851,9 @@ bool OpenGLHook::PopulateHooks()
|
||||
DLLExportHooks();
|
||||
HookCheckGLExtensions();
|
||||
|
||||
// see gl_emulated.cpp
|
||||
if(RenderDoc::Inst().IsReplayApp()) glEmulate::EmulateUnsupportedFunctions(&GL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
|
||||
#include "hooks.h"
|
||||
|
||||
namespace glEmulate { void EmulateUnsupportedFunctions(GLHookSet *hooks); }
|
||||
|
||||
#define DLL_NAME "opengl32.dll"
|
||||
|
||||
#define HookInit(function) \
|
||||
@@ -654,6 +656,9 @@ class OpenGLHook : LibraryHook
|
||||
DLLExportHooks();
|
||||
HookCheckGLExtensions();
|
||||
|
||||
// see gl_emulated.cpp
|
||||
if(RenderDoc::Inst().IsReplayApp()) glEmulate::EmulateUnsupportedFunctions(&GL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -328,6 +328,7 @@
|
||||
<ClCompile Include="driver\gl\wrappers\gl_buffer_funcs.cpp" />
|
||||
<ClCompile Include="driver\gl\wrappers\gl_debug_funcs.cpp" />
|
||||
<ClCompile Include="driver\gl\wrappers\gl_draw_funcs.cpp" />
|
||||
<ClCompile Include="driver\gl\wrappers\gl_emulated.cpp" />
|
||||
<ClCompile Include="driver\gl\wrappers\gl_framebuffer_funcs.cpp" />
|
||||
<ClCompile Include="driver\gl\wrappers\gl_get_funcs.cpp" />
|
||||
<ClCompile Include="driver\gl\wrappers\gl_query_funcs.cpp" />
|
||||
|
||||
@@ -551,6 +551,9 @@
|
||||
<ClCompile Include="driver\gl\gl_counters.cpp">
|
||||
<Filter>Drivers\OpenGL</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="driver\gl\wrappers\gl_emulated.cpp">
|
||||
<Filter>Drivers\OpenGL\Function Wrappers</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="os\win32\comexport.def">
|
||||
|
||||
Reference in New Issue
Block a user