Add support for GL_external_objects family of extensions

* This allows sharing between Vulkan and GL.
This commit is contained in:
baldurk
2018-08-13 17:50:57 +01:00
parent 4da8c71a14
commit eaa763d748
9 changed files with 1816 additions and 71 deletions
+35
View File
@@ -1993,6 +1993,41 @@ enum class GLChunk : uint32_t
glUniformMatrix3fvARB,
glUniformMatrix4fvARB,
glGetUnsignedBytevEXT,
glGetUnsignedBytei_vEXT,
glDeleteMemoryObjectsEXT,
glIsMemoryObjectEXT,
glCreateMemoryObjectsEXT,
glMemoryObjectParameterivEXT,
glGetMemoryObjectParameterivEXT,
glTexStorageMem2DEXT,
glTexStorageMem2DMultisampleEXT,
glTexStorageMem3DEXT,
glTexStorageMem3DMultisampleEXT,
glBufferStorageMemEXT,
glTextureStorageMem2DEXT,
glTextureStorageMem2DMultisampleEXT,
glTextureStorageMem3DEXT,
glTextureStorageMem3DMultisampleEXT,
glNamedBufferStorageMemEXT,
glTexStorageMem1DEXT,
glTextureStorageMem1DEXT,
glGenSemaphoresEXT,
glDeleteSemaphoresEXT,
glIsSemaphoreEXT,
glSemaphoreParameterui64vEXT,
glGetSemaphoreParameterui64vEXT,
glWaitSemaphoreEXT,
glSignalSemaphoreEXT,
glImportMemoryFdEXT,
glImportSemaphoreFdEXT,
glImportMemoryWin32HandleEXT,
glImportMemoryWin32NameEXT,
glImportSemaphoreWin32HandleEXT,
glImportSemaphoreWin32NameEXT,
glAcquireKeyedMutexWin32EXT,
glReleaseKeyedMutexWin32EXT,
Max,
};
+42
View File
@@ -672,6 +672,48 @@ struct GLDispatchTable
// ARB_gl_spirv
PFNGLSPECIALIZESHADERPROC glSpecializeShader; // aliases glSpecializeShaderARB
// EXT_external_objects
PFNGLGETUNSIGNEDBYTEVEXTPROC glGetUnsignedBytevEXT;
PFNGLGETUNSIGNEDBYTEI_VEXTPROC glGetUnsignedBytei_vEXT;
PFNGLDELETEMEMORYOBJECTSEXTPROC glDeleteMemoryObjectsEXT;
PFNGLISMEMORYOBJECTEXTPROC glIsMemoryObjectEXT;
PFNGLCREATEMEMORYOBJECTSEXTPROC glCreateMemoryObjectsEXT;
PFNGLMEMORYOBJECTPARAMETERIVEXTPROC glMemoryObjectParameterivEXT;
PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC glGetMemoryObjectParameterivEXT;
PFNGLTEXSTORAGEMEM2DEXTPROC glTexStorageMem2DEXT;
PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC glTexStorageMem2DMultisampleEXT;
PFNGLTEXSTORAGEMEM3DEXTPROC glTexStorageMem3DEXT;
PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC glTexStorageMem3DMultisampleEXT;
PFNGLBUFFERSTORAGEMEMEXTPROC glBufferStorageMemEXT;
PFNGLTEXTURESTORAGEMEM2DEXTPROC glTextureStorageMem2DEXT;
PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC glTextureStorageMem2DMultisampleEXT;
PFNGLTEXTURESTORAGEMEM3DEXTPROC glTextureStorageMem3DEXT;
PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC glTextureStorageMem3DMultisampleEXT;
PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC glNamedBufferStorageMemEXT;
PFNGLTEXSTORAGEMEM1DEXTPROC glTexStorageMem1DEXT;
PFNGLTEXTURESTORAGEMEM1DEXTPROC glTextureStorageMem1DEXT;
PFNGLGENSEMAPHORESEXTPROC glGenSemaphoresEXT;
PFNGLDELETESEMAPHORESEXTPROC glDeleteSemaphoresEXT;
PFNGLISSEMAPHOREEXTPROC glIsSemaphoreEXT;
PFNGLSEMAPHOREPARAMETERUI64VEXTPROC glSemaphoreParameterui64vEXT;
PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC glGetSemaphoreParameterui64vEXT;
PFNGLWAITSEMAPHOREEXTPROC glWaitSemaphoreEXT;
PFNGLSIGNALSEMAPHOREEXTPROC glSignalSemaphoreEXT;
// EXT_external_objects_fd
PFNGLIMPORTMEMORYFDEXTPROC glImportMemoryFdEXT;
PFNGLIMPORTSEMAPHOREFDEXTPROC glImportSemaphoreFdEXT;
// EXT_external_objects_win32
PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC glImportMemoryWin32HandleEXT;
PFNGLIMPORTMEMORYWIN32NAMEEXTPROC glImportMemoryWin32NameEXT;
PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC glImportSemaphoreWin32HandleEXT;
PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC glImportSemaphoreWin32NameEXT;
// EXT_win32_keyed_mutex
PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC glAcquireKeyedMutexWin32EXT;
PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC glReleaseKeyedMutexWin32EXT;
// EXT_direct_state_access below here. We only include the functions relevant for core 3.2+ GL,
// not any functions for legacy functionality.
//
+68 -68
View File
@@ -1010,6 +1010,40 @@
FUNC(glMaxShaderCompilerThreadsKHR, glMaxShaderCompilerThreadsARB); \
FUNC(glSpecializeShader, glSpecializeShader); \
FUNC(glSpecializeShader, glSpecializeShaderARB); \
FUNC(glGetUnsignedBytevEXT, glGetUnsignedBytevEXT); \
FUNC(glGetUnsignedBytei_vEXT, glGetUnsignedBytei_vEXT); \
FUNC(glDeleteMemoryObjectsEXT, glDeleteMemoryObjectsEXT); \
FUNC(glIsMemoryObjectEXT, glIsMemoryObjectEXT); \
FUNC(glCreateMemoryObjectsEXT, glCreateMemoryObjectsEXT); \
FUNC(glMemoryObjectParameterivEXT, glMemoryObjectParameterivEXT); \
FUNC(glGetMemoryObjectParameterivEXT, glGetMemoryObjectParameterivEXT); \
FUNC(glTexStorageMem2DEXT, glTexStorageMem2DEXT); \
FUNC(glTexStorageMem2DMultisampleEXT, glTexStorageMem2DMultisampleEXT); \
FUNC(glTexStorageMem3DEXT, glTexStorageMem3DEXT); \
FUNC(glTexStorageMem3DMultisampleEXT, glTexStorageMem3DMultisampleEXT); \
FUNC(glBufferStorageMemEXT, glBufferStorageMemEXT); \
FUNC(glTextureStorageMem2DEXT, glTextureStorageMem2DEXT); \
FUNC(glTextureStorageMem2DMultisampleEXT, glTextureStorageMem2DMultisampleEXT); \
FUNC(glTextureStorageMem3DEXT, glTextureStorageMem3DEXT); \
FUNC(glTextureStorageMem3DMultisampleEXT, glTextureStorageMem3DMultisampleEXT); \
FUNC(glNamedBufferStorageMemEXT, glNamedBufferStorageMemEXT); \
FUNC(glTexStorageMem1DEXT, glTexStorageMem1DEXT); \
FUNC(glTextureStorageMem1DEXT, glTextureStorageMem1DEXT); \
FUNC(glGenSemaphoresEXT, glGenSemaphoresEXT); \
FUNC(glDeleteSemaphoresEXT, glDeleteSemaphoresEXT); \
FUNC(glIsSemaphoreEXT, glIsSemaphoreEXT); \
FUNC(glSemaphoreParameterui64vEXT, glSemaphoreParameterui64vEXT); \
FUNC(glGetSemaphoreParameterui64vEXT, glGetSemaphoreParameterui64vEXT); \
FUNC(glWaitSemaphoreEXT, glWaitSemaphoreEXT); \
FUNC(glSignalSemaphoreEXT, glSignalSemaphoreEXT); \
FUNC(glImportMemoryFdEXT, glImportMemoryFdEXT); \
FUNC(glImportSemaphoreFdEXT, glImportSemaphoreFdEXT); \
FUNC(glImportMemoryWin32HandleEXT, glImportMemoryWin32HandleEXT); \
FUNC(glImportMemoryWin32NameEXT, glImportMemoryWin32NameEXT); \
FUNC(glImportSemaphoreWin32HandleEXT, glImportSemaphoreWin32HandleEXT); \
FUNC(glImportSemaphoreWin32NameEXT, glImportSemaphoreWin32NameEXT); \
FUNC(glAcquireKeyedMutexWin32EXT, glAcquireKeyedMutexWin32EXT); \
FUNC(glReleaseKeyedMutexWin32EXT, glReleaseKeyedMutexWin32EXT); \
FUNC(glCompressedTextureImage1DEXT, glCompressedTextureImage1DEXT); \
FUNC(glCompressedTextureImage2DEXT, glCompressedTextureImage2DEXT); \
FUNC(glCompressedTextureImage3DEXT, glCompressedTextureImage3DEXT); \
@@ -2223,6 +2257,40 @@
AliasWrapper1(void, glMaxShaderCompilerThreadsARB, glMaxShaderCompilerThreadsKHR, GLuint, count); \
FuncWrapper5(void, glSpecializeShader, GLuint, shader, const GLchar *, pEntryPoint, GLuint, numSpecializationConstants, const GLuint *, pConstantIndex, const GLuint *, pConstantValue); \
AliasWrapper5(void, glSpecializeShaderARB, glSpecializeShader, GLuint, shader, const GLchar *, pEntryPoint, GLuint, numSpecializationConstants, const GLuint *, pConstantIndex, const GLuint *, pConstantValue); \
FuncWrapper2(void, glGetUnsignedBytevEXT, GLenum, pname, GLubyte *, data); \
FuncWrapper3(void, glGetUnsignedBytei_vEXT, GLenum, target, GLuint, index, GLubyte *, data); \
FuncWrapper2(void, glDeleteMemoryObjectsEXT, GLsizei, n, const GLuint *, memoryObjects); \
FuncWrapper1(GLboolean, glIsMemoryObjectEXT, GLuint, memoryObject); \
FuncWrapper2(void, glCreateMemoryObjectsEXT, GLsizei, n, GLuint *, memoryObjects); \
FuncWrapper3(void, glMemoryObjectParameterivEXT, GLuint, memoryObject, GLenum, pname, const GLint *, params); \
FuncWrapper3(void, glGetMemoryObjectParameterivEXT, GLuint, memoryObject, GLenum, pname, GLint *, params); \
FuncWrapper7(void, glTexStorageMem2DEXT, GLenum, target, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLuint, memory, GLuint64, offset); \
FuncWrapper8(void, glTexStorageMem2DMultisampleEXT, GLenum, target, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
FuncWrapper8(void, glTexStorageMem3DEXT, GLenum, target, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLuint, memory, GLuint64, offset); \
FuncWrapper9(void, glTexStorageMem3DMultisampleEXT, GLenum, target, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
FuncWrapper4(void, glBufferStorageMemEXT, GLenum, target, GLsizeiptr, size, GLuint, memory, GLuint64, offset); \
FuncWrapper7(void, glTextureStorageMem2DEXT, GLuint, texture, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLuint, memory, GLuint64, offset); \
FuncWrapper8(void, glTextureStorageMem2DMultisampleEXT, GLuint, texture, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
FuncWrapper8(void, glTextureStorageMem3DEXT, GLuint, texture, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLuint, memory, GLuint64, offset); \
FuncWrapper9(void, glTextureStorageMem3DMultisampleEXT, GLuint, texture, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
FuncWrapper4(void, glNamedBufferStorageMemEXT, GLuint, buffer, GLsizeiptr, size, GLuint, memory, GLuint64, offset); \
FuncWrapper6(void, glTexStorageMem1DEXT, GLenum, target, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLuint, memory, GLuint64, offset); \
FuncWrapper6(void, glTextureStorageMem1DEXT, GLuint, texture, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLuint, memory, GLuint64, offset); \
FuncWrapper2(void, glGenSemaphoresEXT, GLsizei, n, GLuint *, semaphores); \
FuncWrapper2(void, glDeleteSemaphoresEXT, GLsizei, n, const GLuint *, semaphores); \
FuncWrapper1(GLboolean, glIsSemaphoreEXT, GLuint, semaphore); \
FuncWrapper3(void, glSemaphoreParameterui64vEXT, GLuint, semaphore, GLenum, pname, const GLuint64 *, params); \
FuncWrapper3(void, glGetSemaphoreParameterui64vEXT, GLuint, semaphore, GLenum, pname, GLuint64 *, params); \
FuncWrapper6(void, glWaitSemaphoreEXT, GLuint, semaphore, GLuint, numBufferBarriers, const GLuint *, buffers, GLuint, numTextureBarriers, const GLuint *, textures, const GLenum *, srcLayouts); \
FuncWrapper6(void, glSignalSemaphoreEXT, GLuint, semaphore, GLuint, numBufferBarriers, const GLuint *, buffers, GLuint, numTextureBarriers, const GLuint *, textures, const GLenum *, dstLayouts); \
FuncWrapper4(void, glImportMemoryFdEXT, GLuint, memory, GLuint64, size, GLenum, handleType, GLint, fd); \
FuncWrapper3(void, glImportSemaphoreFdEXT, GLuint, semaphore, GLenum, handleType, GLint, fd); \
FuncWrapper4(void, glImportMemoryWin32HandleEXT, GLuint, memory, GLuint64, size, GLenum, handleType, void *, handle); \
FuncWrapper4(void, glImportMemoryWin32NameEXT, GLuint, memory, GLuint64, size, GLenum, handleType, const void *, name); \
FuncWrapper3(void, glImportSemaphoreWin32HandleEXT, GLuint, semaphore, GLenum, handleType, void *, handle); \
FuncWrapper3(void, glImportSemaphoreWin32NameEXT, GLuint, semaphore, GLenum, handleType, const void *, name); \
FuncWrapper3(GLboolean, glAcquireKeyedMutexWin32EXT, GLuint, memory, GLuint64, key, GLuint, timeout); \
FuncWrapper2(GLboolean, glReleaseKeyedMutexWin32EXT, GLuint, memory, GLuint64, key); \
FuncWrapper8(void, glCompressedTextureImage1DEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, internalformat, GLsizei, width, GLint, border, GLsizei, imageSize, const void *, bits); \
FuncWrapper9(void, glCompressedTextureImage2DEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, internalformat, GLsizei, width, GLsizei, height, GLint, border, GLsizei, imageSize, const void *, bits); \
FuncWrapper10(void, glCompressedTextureImage3DEXT, GLuint, texture, GLenum, target, GLint, level, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLint, border, GLsizei, imageSize, const void *, bits); \
@@ -3449,28 +3517,6 @@
FUNC(glApplyTextureEXT); \
FUNC(glTextureLightEXT); \
FUNC(glTextureMaterialEXT); \
FUNC(glGetUnsignedBytevEXT); \
FUNC(glGetUnsignedBytei_vEXT); \
FUNC(glDeleteMemoryObjectsEXT); \
FUNC(glIsMemoryObjectEXT); \
FUNC(glCreateMemoryObjectsEXT); \
FUNC(glMemoryObjectParameterivEXT); \
FUNC(glGetMemoryObjectParameterivEXT); \
FUNC(glTexStorageMem2DEXT); \
FUNC(glTexStorageMem2DMultisampleEXT); \
FUNC(glTexStorageMem3DEXT); \
FUNC(glTexStorageMem3DMultisampleEXT); \
FUNC(glBufferStorageMemEXT); \
FUNC(glTextureStorageMem2DEXT); \
FUNC(glTextureStorageMem2DMultisampleEXT); \
FUNC(glTextureStorageMem3DEXT); \
FUNC(glTextureStorageMem3DMultisampleEXT); \
FUNC(glNamedBufferStorageMemEXT); \
FUNC(glTexStorageMem1DEXT); \
FUNC(glTextureStorageMem1DEXT); \
FUNC(glImportMemoryFdEXT); \
FUNC(glImportMemoryWin32HandleEXT); \
FUNC(glImportMemoryWin32NameEXT); \
FUNC(glMultiDrawElementsEXT); \
FUNC(glSampleMaskEXT); \
FUNC(glSamplePatternEXT); \
@@ -3502,16 +3548,6 @@
FUNC(glSecondaryColor3usEXT); \
FUNC(glSecondaryColor3usvEXT); \
FUNC(glSecondaryColorPointerEXT); \
FUNC(glGenSemaphoresEXT); \
FUNC(glDeleteSemaphoresEXT); \
FUNC(glIsSemaphoreEXT); \
FUNC(glSemaphoreParameterui64vEXT); \
FUNC(glGetSemaphoreParameterui64vEXT); \
FUNC(glWaitSemaphoreEXT); \
FUNC(glSignalSemaphoreEXT); \
FUNC(glImportSemaphoreFdEXT); \
FUNC(glImportSemaphoreWin32HandleEXT); \
FUNC(glImportSemaphoreWin32NameEXT); \
FUNC(glStencilClearTagEXT); \
FUNC(glActiveStencilFaceEXT); \
FUNC(glTexSubImage1DEXT); \
@@ -3581,8 +3617,6 @@
FUNC(glVertexWeightfEXT); \
FUNC(glVertexWeightfvEXT); \
FUNC(glVertexWeightPointerEXT); \
FUNC(glAcquireKeyedMutexWin32EXT); \
FUNC(glReleaseKeyedMutexWin32EXT); \
FUNC(glImportSyncEXT); \
FUNC(glImageTransformParameteriHP); \
FUNC(glImageTransformParameterfHP); \
@@ -5408,28 +5442,6 @@
UnsupportedWrapper1(void, glApplyTextureEXT, GLenum, mode); \
UnsupportedWrapper1(void, glTextureLightEXT, GLenum, pname); \
UnsupportedWrapper2(void, glTextureMaterialEXT, GLenum, face, GLenum, mode); \
UnsupportedWrapper2(void, glGetUnsignedBytevEXT, GLenum, pname, GLubyte *, data); \
UnsupportedWrapper3(void, glGetUnsignedBytei_vEXT, GLenum, target, GLuint, index, GLubyte *, data); \
UnsupportedWrapper2(void, glDeleteMemoryObjectsEXT, GLsizei, n, const GLuint *, memoryObjects); \
UnsupportedWrapper1(GLboolean, glIsMemoryObjectEXT, GLuint, memoryObject); \
UnsupportedWrapper2(void, glCreateMemoryObjectsEXT, GLsizei, n, GLuint *, memoryObjects); \
UnsupportedWrapper3(void, glMemoryObjectParameterivEXT, GLuint, memoryObject, GLenum, pname, const GLint *, params); \
UnsupportedWrapper3(void, glGetMemoryObjectParameterivEXT, GLuint, memoryObject, GLenum, pname, GLint *, params); \
UnsupportedWrapper7(void, glTexStorageMem2DEXT, GLenum, target, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper8(void, glTexStorageMem2DMultisampleEXT, GLenum, target, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper8(void, glTexStorageMem3DEXT, GLenum, target, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper9(void, glTexStorageMem3DMultisampleEXT, GLenum, target, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper4(void, glBufferStorageMemEXT, GLenum, target, GLsizeiptr, size, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper7(void, glTextureStorageMem2DEXT, GLuint, texture, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper8(void, glTextureStorageMem2DMultisampleEXT, GLuint, texture, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper8(void, glTextureStorageMem3DEXT, GLuint, texture, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper9(void, glTextureStorageMem3DMultisampleEXT, GLuint, texture, GLsizei, samples, GLenum, internalFormat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedSampleLocations, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper4(void, glNamedBufferStorageMemEXT, GLuint, buffer, GLsizeiptr, size, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper6(void, glTexStorageMem1DEXT, GLenum, target, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper6(void, glTextureStorageMem1DEXT, GLuint, texture, GLsizei, levels, GLenum, internalFormat, GLsizei, width, GLuint, memory, GLuint64, offset); \
UnsupportedWrapper4(void, glImportMemoryFdEXT, GLuint, memory, GLuint64, size, GLenum, handleType, GLint, fd); \
UnsupportedWrapper4(void, glImportMemoryWin32HandleEXT, GLuint, memory, GLuint64, size, GLenum, handleType, void *, handle); \
UnsupportedWrapper4(void, glImportMemoryWin32NameEXT, GLuint, memory, GLuint64, size, GLenum, handleType, const void *, name); \
UnsupportedWrapper5(void, glMultiDrawElementsEXT, GLenum, mode, const GLsizei *, count, GLenum, type, const void *const*, indices, GLsizei, primcount); \
UnsupportedWrapper2(void, glSampleMaskEXT, GLclampf, value, GLboolean, invert); \
UnsupportedWrapper1(void, glSamplePatternEXT, GLenum, pattern); \
@@ -5461,16 +5473,6 @@
UnsupportedWrapper3(void, glSecondaryColor3usEXT, GLushort, red, GLushort, green, GLushort, blue); \
UnsupportedWrapper1(void, glSecondaryColor3usvEXT, const GLushort *, v); \
UnsupportedWrapper4(void, glSecondaryColorPointerEXT, GLint, size, GLenum, type, GLsizei, stride, const void *, pointer); \
UnsupportedWrapper2(void, glGenSemaphoresEXT, GLsizei, n, GLuint *, semaphores); \
UnsupportedWrapper2(void, glDeleteSemaphoresEXT, GLsizei, n, const GLuint *, semaphores); \
UnsupportedWrapper1(GLboolean, glIsSemaphoreEXT, GLuint, semaphore); \
UnsupportedWrapper3(void, glSemaphoreParameterui64vEXT, GLuint, semaphore, GLenum, pname, const GLuint64 *, params); \
UnsupportedWrapper3(void, glGetSemaphoreParameterui64vEXT, GLuint, semaphore, GLenum, pname, GLuint64 *, params); \
UnsupportedWrapper6(void, glWaitSemaphoreEXT, GLuint, semaphore, GLuint, numBufferBarriers, const GLuint *, buffers, GLuint, numTextureBarriers, const GLuint *, textures, const GLenum *, srcLayouts); \
UnsupportedWrapper6(void, glSignalSemaphoreEXT, GLuint, semaphore, GLuint, numBufferBarriers, const GLuint *, buffers, GLuint, numTextureBarriers, const GLuint *, textures, const GLenum *, dstLayouts); \
UnsupportedWrapper3(void, glImportSemaphoreFdEXT, GLuint, semaphore, GLenum, handleType, GLint, fd); \
UnsupportedWrapper3(void, glImportSemaphoreWin32HandleEXT, GLuint, semaphore, GLenum, handleType, void *, handle); \
UnsupportedWrapper3(void, glImportSemaphoreWin32NameEXT, GLuint, semaphore, GLenum, handleType, const void *, name); \
UnsupportedWrapper2(void, glStencilClearTagEXT, GLsizei, stencilTagBits, GLuint, stencilClearTag); \
UnsupportedWrapper1(void, glActiveStencilFaceEXT, GLenum, face); \
UnsupportedWrapper7(void, glTexSubImage1DEXT, GLenum, target, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLenum, type, const void *, pixels); \
@@ -5540,8 +5542,6 @@
UnsupportedWrapper1(void, glVertexWeightfEXT, GLfloat, weight); \
UnsupportedWrapper1(void, glVertexWeightfvEXT, const GLfloat *, weight); \
UnsupportedWrapper4(void, glVertexWeightPointerEXT, GLint, size, GLenum, type, GLsizei, stride, const void *, pointer); \
UnsupportedWrapper3(GLboolean, glAcquireKeyedMutexWin32EXT, GLuint, memory, GLuint64, key, GLuint, timeout); \
UnsupportedWrapper2(GLboolean, glReleaseKeyedMutexWin32EXT, GLuint, memory, GLuint64, key); \
UnsupportedWrapper3(GLsync, glImportSyncEXT, GLenum, external_sync_type, GLintptr, external_sync, GLbitfield, flags); \
UnsupportedWrapper3(void, glImageTransformParameteriHP, GLenum, target, GLenum, pname, GLint, param); \
UnsupportedWrapper3(void, glImageTransformParameterfHP, GLenum, target, GLenum, pname, GLfloat, param); \
+65 -2
View File
@@ -201,6 +201,9 @@ void WrappedOpenGL::BuildGLExtensions()
m_GLExtensions.push_back("GL_EXT_framebuffer_object");
m_GLExtensions.push_back("GL_EXT_framebuffer_sRGB");
m_GLExtensions.push_back("GL_EXT_gpu_shader4");
m_GLExtensions.push_back("GL_EXT_memory_object");
m_GLExtensions.push_back("GL_EXT_memory_object_fd");
m_GLExtensions.push_back("GL_EXT_memory_object_win32");
m_GLExtensions.push_back("GL_EXT_multisample");
m_GLExtensions.push_back("GL_EXT_multi_draw_arrays");
m_GLExtensions.push_back("GL_EXT_packed_depth_stencil");
@@ -212,6 +215,9 @@ void WrappedOpenGL::BuildGLExtensions()
m_GLExtensions.push_back("GL_EXT_post_depth_coverage");
m_GLExtensions.push_back("GL_EXT_provoking_vertex");
m_GLExtensions.push_back("GL_EXT_raster_multisample");
m_GLExtensions.push_back("GL_EXT_semaphore");
m_GLExtensions.push_back("GL_EXT_semaphore_fd");
m_GLExtensions.push_back("GL_EXT_semaphore_win32");
m_GLExtensions.push_back("GL_EXT_shader_image_load_store");
m_GLExtensions.push_back("GL_EXT_shader_image_load_formatted");
m_GLExtensions.push_back("GL_EXT_shader_integer_mix");
@@ -238,6 +244,7 @@ void WrappedOpenGL::BuildGLExtensions()
m_GLExtensions.push_back("GL_EXT_timer_query");
m_GLExtensions.push_back("GL_EXT_transform_feedback");
m_GLExtensions.push_back("GL_EXT_vertex_attrib_64bit");
m_GLExtensions.push_back("GL_EXT_win32_keyed_mutex");
m_GLExtensions.push_back("GL_GREMEDY_frame_terminator");
m_GLExtensions.push_back("GL_GREMEDY_string_marker");
m_GLExtensions.push_back("GL_KHR_blend_equation_advanced");
@@ -2320,6 +2327,8 @@ void WrappedOpenGL::ReleaseResource(GLResource res)
case eResFeedback: GL.glDeleteTransformFeedbacks(1, &res.name); break;
case eResQuery: GL.glDeleteQueries(1, &res.name); break;
case eResSync: GL.glDeleteSync(GetResourceManager()->GetSync(res.name)); break;
case eResExternalMemory: GL.glDeleteMemoryObjectsEXT(1, &res.name); break;
case eResExternalSemaphore: GL.glDeleteSemaphoresEXT(1, &res.name); break;
}
}
@@ -3913,8 +3922,52 @@ bool WrappedOpenGL::ProcessChunk(ReadSerialiser &ser, GLChunk chunk)
return Serialise_glSpecializeShader(ser, 0, NULL, 0, NULL, NULL);
case GLChunk::glFinish: return Serialise_glFinish(ser);
case GLChunk::glFlush:
return Serialise_glFlush(ser);
case GLChunk::glFlush: return Serialise_glFlush(ser);
case GLChunk::glCreateMemoryObjectsEXT: return Serialise_glCreateMemoryObjectsEXT(ser, 0, NULL);
case GLChunk::glMemoryObjectParameterivEXT:
return Serialise_glMemoryObjectParameterivEXT(ser, 0, eGL_NONE, 0);
case GLChunk::glTexStorageMem1DEXT:
case GLChunk::glTextureStorageMem1DEXT:
return Serialise_glTextureStorageMem1DEXT(ser, 0, 0, eGL_NONE, 0, 0, 0);
case GLChunk::glTexStorageMem2DEXT:
case GLChunk::glTextureStorageMem2DEXT:
return Serialise_glTextureStorageMem2DEXT(ser, 0, 0, eGL_NONE, 0, 0, 0, 0);
case GLChunk::glTexStorageMem2DMultisampleEXT:
case GLChunk::glTextureStorageMem2DMultisampleEXT:
return Serialise_glTextureStorageMem2DMultisampleEXT(ser, 0, 0, eGL_NONE, 0, 0, GL_FALSE, 0, 0);
case GLChunk::glTexStorageMem3DEXT:
case GLChunk::glTextureStorageMem3DEXT:
return Serialise_glTextureStorageMem3DEXT(ser, 0, 0, eGL_NONE, 0, 0, 0, 0, 0);
case GLChunk::glTexStorageMem3DMultisampleEXT:
case GLChunk::glTextureStorageMem3DMultisampleEXT:
return Serialise_glTextureStorageMem3DMultisampleEXT(ser, 0, 0, eGL_NONE, 0, 0, 0, GL_FALSE,
0, 0);
case GLChunk::glBufferStorageMemEXT:
case GLChunk::glNamedBufferStorageMemEXT:
return Serialise_glNamedBufferStorageMemEXT(ser, 0, 0, 0, 0);
case GLChunk::glGenSemaphoresEXT: return Serialise_glGenSemaphoresEXT(ser, 0, NULL);
case GLChunk::glSemaphoreParameterui64vEXT:
return Serialise_glSemaphoreParameterui64vEXT(ser, 0, eGL_NONE, NULL);
case GLChunk::glWaitSemaphoreEXT:
return Serialise_glWaitSemaphoreEXT(ser, 0, 0, NULL, 0, NULL, NULL);
case GLChunk::glSignalSemaphoreEXT:
return Serialise_glSignalSemaphoreEXT(ser, 0, 0, NULL, 0, NULL, NULL);
case GLChunk::glImportMemoryFdEXT: return Serialise_glImportMemoryFdEXT(ser, 0, 0, eGL_NONE, 0);
case GLChunk::glImportSemaphoreFdEXT:
return Serialise_glImportSemaphoreFdEXT(ser, 0, eGL_NONE, 0);
case GLChunk::glImportMemoryWin32HandleEXT:
return Serialise_glImportMemoryWin32HandleEXT(ser, 0, 0, eGL_NONE, NULL);
case GLChunk::glImportMemoryWin32NameEXT:
return Serialise_glImportMemoryWin32NameEXT(ser, 0, 0, eGL_NONE, NULL);
case GLChunk::glImportSemaphoreWin32HandleEXT:
return Serialise_glImportSemaphoreWin32HandleEXT(ser, 0, eGL_NONE, NULL);
case GLChunk::glImportSemaphoreWin32NameEXT:
return Serialise_glImportSemaphoreWin32NameEXT(ser, 0, eGL_NONE, NULL);
case GLChunk::glAcquireKeyedMutexWin32EXT:
return Serialise_glAcquireKeyedMutexWin32EXT(ser, 0, 0, 0);
case GLChunk::glReleaseKeyedMutexWin32EXT:
return Serialise_glReleaseKeyedMutexWin32EXT(ser, 0, 0);
// these functions are not currently serialised - they do nothing on replay and are not
// serialised for information (it would be harmless and perhaps useful for the user to see
@@ -4230,6 +4283,16 @@ bool WrappedOpenGL::ProcessChunk(ReadSerialiser &ser, GLChunk chunk)
case GLChunk::wglDXUnlockObjectsNV:
case GLChunk::glMaxShaderCompilerThreadsARB:
case GLChunk::glMaxShaderCompilerThreadsKHR:
case GLChunk::glGetUnsignedBytevEXT:
case GLChunk::glGetUnsignedBytei_vEXT:
case GLChunk::glDeleteMemoryObjectsEXT:
case GLChunk::glIsMemoryObjectEXT:
case GLChunk::glGetMemoryObjectParameterivEXT:
case GLChunk::glDeleteSemaphoresEXT:
case GLChunk::glIsSemaphoreEXT:
case GLChunk::glGetSemaphoreParameterui64vEXT:
case GLChunk::Max:
RDCERR("Unexpected chunk %s, or missing case for processing! Skipping...",
ToStr(chunk).c_str());
+74
View File
@@ -2272,6 +2272,80 @@ public:
IMPLEMENT_FUNCTION_SERIALISED(void, glSpecializeShader, GLuint shader, const GLchar *pEntryPoint,
GLuint numSpecializationConstants, const GLuint *pConstantIndex,
const GLuint *pConstantValue);
IMPLEMENT_FUNCTION_SERIALISED(void, glGetUnsignedBytevEXT, GLenum pname, GLubyte *data);
IMPLEMENT_FUNCTION_SERIALISED(void, glGetUnsignedBytei_vEXT, GLenum target, GLuint index,
GLubyte *data);
IMPLEMENT_FUNCTION_SERIALISED(void, glDeleteMemoryObjectsEXT, GLsizei n,
const GLuint *memoryObjects);
IMPLEMENT_FUNCTION_SERIALISED(GLboolean, glIsMemoryObjectEXT, GLuint memoryObject);
IMPLEMENT_FUNCTION_SERIALISED(void, glCreateMemoryObjectsEXT, GLsizei n, GLuint *memoryObjects);
IMPLEMENT_FUNCTION_SERIALISED(void, glMemoryObjectParameterivEXT, GLuint memoryObject,
GLenum pname, const GLint *params);
IMPLEMENT_FUNCTION_SERIALISED(void, glGetMemoryObjectParameterivEXT, GLuint memoryObject,
GLenum pname, GLint *params);
IMPLEMENT_FUNCTION_SERIALISED(void, glTexStorageMem1DEXT, GLenum target, GLsizei levels,
GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTexStorageMem2DEXT, GLenum target, GLsizei levels,
GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory,
GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTexStorageMem2DMultisampleEXT, GLenum target,
GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height,
GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTexStorageMem3DEXT, GLenum target, GLsizei levels,
GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth,
GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTexStorageMem3DMultisampleEXT, GLenum target, GLsizei samples,
GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth,
GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorageMem1DEXT, GLuint texture, GLsizei levels,
GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorageMem2DEXT, GLuint texture, GLsizei levels,
GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory,
GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorageMem2DMultisampleEXT, GLuint texture,
GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height,
GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorageMem3DEXT, GLuint texture, GLsizei levels,
GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth,
GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureStorageMem3DMultisampleEXT, GLuint texture,
GLsizei samples, GLenum internalFormat, GLsizei width,
GLsizei height, GLsizei depth, GLboolean fixedSampleLocations,
GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glBufferStorageMemEXT, GLenum target, GLsizeiptr size,
GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedBufferStorageMemEXT, GLuint buffer, GLsizeiptr size,
GLuint memory, GLuint64 offset);
IMPLEMENT_FUNCTION_SERIALISED(void, glGenSemaphoresEXT, GLsizei n, GLuint *semaphores);
IMPLEMENT_FUNCTION_SERIALISED(void, glDeleteSemaphoresEXT, GLsizei n, const GLuint *semaphores);
IMPLEMENT_FUNCTION_SERIALISED(GLboolean, glIsSemaphoreEXT, GLuint semaphore);
IMPLEMENT_FUNCTION_SERIALISED(void, glSemaphoreParameterui64vEXT, GLuint semaphore, GLenum pname,
const GLuint64 *params);
IMPLEMENT_FUNCTION_SERIALISED(void, glGetSemaphoreParameterui64vEXT, GLuint semaphore,
GLenum pname, GLuint64 *params);
IMPLEMENT_FUNCTION_SERIALISED(void, glWaitSemaphoreEXT, GLuint semaphore, GLuint numBufferBarriers,
const GLuint *buffers, GLuint numTextureBarriers,
const GLuint *textures, const GLenum *srcLayouts);
IMPLEMENT_FUNCTION_SERIALISED(void, glSignalSemaphoreEXT, GLuint semaphore,
GLuint numBufferBarriers, const GLuint *buffers,
GLuint numTextureBarriers, const GLuint *textures,
const GLenum *dstLayouts);
IMPLEMENT_FUNCTION_SERIALISED(void, glImportMemoryFdEXT, GLuint memory, GLuint64 size,
GLenum handleType, GLint fd);
IMPLEMENT_FUNCTION_SERIALISED(void, glImportSemaphoreFdEXT, GLuint semaphore, GLenum handleType,
GLint fd);
IMPLEMENT_FUNCTION_SERIALISED(void, glImportMemoryWin32HandleEXT, GLuint memory, GLuint64 size,
GLenum handleType, void *handle);
IMPLEMENT_FUNCTION_SERIALISED(void, glImportMemoryWin32NameEXT, GLuint memory, GLuint64 size,
GLenum handleType, const void *name);
IMPLEMENT_FUNCTION_SERIALISED(void, glImportSemaphoreWin32HandleEXT, GLuint semaphore,
GLenum handleType, void *handle);
IMPLEMENT_FUNCTION_SERIALISED(void, glImportSemaphoreWin32NameEXT, GLuint semaphore,
GLenum handleType, const void *name);
IMPLEMENT_FUNCTION_SERIALISED(GLboolean, glAcquireKeyedMutexWin32EXT, GLuint memory, GLuint64 key,
GLuint timeout);
IMPLEMENT_FUNCTION_SERIALISED(GLboolean, glReleaseKeyedMutexWin32EXT, GLuint memory, GLuint64 key);
};
class ScopedDebugContext
+2
View File
@@ -46,6 +46,8 @@ std::string DoStringise(const GLNamespace &el)
STRINGISE_ENUM_NAMED(eResFeedback, "Transform Feedback");
STRINGISE_ENUM_NAMED(eResQuery, "Query");
STRINGISE_ENUM_NAMED(eResSync, "Sync");
STRINGISE_ENUM_NAMED(eResExternalMemory, "External Memory");
STRINGISE_ENUM_NAMED(eResExternalSemaphore, "External Semaphore");
}
END_ENUM_STRINGISE();
}
+10
View File
@@ -77,6 +77,8 @@ enum GLNamespace
eResFeedback,
eResQuery,
eResSync,
eResExternalMemory,
eResExternalSemaphore,
};
DECLARE_REFLECTION_ENUM(GLNamespace);
@@ -195,6 +197,14 @@ inline GLResource SyncRes(const ContextPair &c, GLuint i)
{
return GLResource(c.shareGroup, eResSync, i);
}
inline GLResource ExtMemRes(const ContextPair &c, GLuint i)
{
return GLResource(c.ctx, eResExternalMemory, i);
}
inline GLResource ExtSemRes(const ContextPair &c, GLuint i)
{
return GLResource(c.ctx, eResExternalSemaphore, i);
}
struct GLResourceRecord : public ResourceRecord
{
@@ -126,6 +126,16 @@ GLboolean WrappedOpenGL::glIsNamedStringARB(GLint namelen, const GLchar *name)
return GL.glIsNamedStringARB(namelen, name);
}
GLboolean WrappedOpenGL::glIsMemoryObjectEXT(GLuint memoryObject)
{
return GL.glIsMemoryObjectEXT(memoryObject);
}
GLboolean WrappedOpenGL::glIsSemaphoreEXT(GLuint semaphore)
{
return GL.glIsSemaphoreEXT(semaphore);
}
void WrappedOpenGL::glGetFloatv(GLenum pname, GLfloat *params)
{
GL.glGetFloatv(pname, params);
@@ -241,6 +251,16 @@ void WrappedOpenGL::glGetInteger64i_v(GLenum pname, GLuint index, GLint64 *data)
GL.glGetInteger64i_v(pname, index, data);
}
void WrappedOpenGL::glGetUnsignedBytevEXT(GLenum pname, GLubyte *data)
{
GL.glGetUnsignedBytevEXT(pname, data);
}
void WrappedOpenGL::glGetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data)
{
GL.glGetUnsignedBytei_vEXT(target, index, data);
}
void WrappedOpenGL::glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
{
GL.glGetTexLevelParameteriv(target, level, pname, params);
@@ -1175,3 +1195,13 @@ void WrappedOpenGL::glGetVertexArrayPointeri_vEXT(GLuint vaobj, GLuint index, GL
{
GL.glGetVertexArrayPointeri_vEXT(vaobj, index, pname, param);
}
void WrappedOpenGL::glGetMemoryObjectParameterivEXT(GLuint memoryObject, GLenum pname, GLint *params)
{
GL.glGetMemoryObjectParameterivEXT(memoryObject, pname, params);
}
void WrappedOpenGL::glGetSemaphoreParameterui64vEXT(GLuint semaphore, GLenum pname, GLuint64 *params)
{
GL.glGetSemaphoreParameterui64vEXT(semaphore, pname, params);
}
File diff suppressed because it is too large Load Diff