From fe910c4eab61f4a0371855ec51b2a5fcf92a59e4 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 19 Jun 2018 14:25:53 +0100 Subject: [PATCH] Add support for all GL 4.6 extensions except SPIR-V --- renderdoc/driver/gl/gl_common.h | 18 +++++-- renderdoc/driver/gl/gl_counters.cpp | 30 ++++++----- renderdoc/driver/gl/gl_driver.cpp | 14 +++-- renderdoc/driver/gl/gl_driver.h | 8 +-- renderdoc/driver/gl/gl_hooks_win32.cpp | 2 +- renderdoc/driver/gl/gl_hookset.h | 12 +++-- renderdoc/driver/gl/gl_hookset_defs.h | 38 +++++++------ renderdoc/driver/gl/gl_renderstate.cpp | 8 +-- renderdoc/driver/gl/gl_replay.cpp | 6 +-- renderdoc/driver/gl/gl_replay_linux.cpp | 4 +- renderdoc/driver/gl/gl_replay_win32.cpp | 4 +- renderdoc/driver/gl/official/glcorearb.h | 41 +++++++++++--- renderdoc/driver/gl/official/glext.h | 48 ++++++++++++++--- .../driver/gl/wrappers/gl_draw_funcs.cpp | 53 +++++++++---------- .../driver/gl/wrappers/gl_shader_funcs.cpp | 9 ++++ .../driver/gl/wrappers/gl_state_funcs.cpp | 14 ++--- 16 files changed, 208 insertions(+), 101 deletions(-) diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index cba70a571..59dd33d4b 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -402,6 +402,7 @@ extern bool IsGLES; EXT_TO_CHECK(33, 30, ARB_explicit_attrib_location) \ EXT_TO_CHECK(33, 30, ARB_sampler_objects) \ EXT_TO_CHECK(33, 30, ARB_texture_swizzle) \ + EXT_TO_CHECK(33, 30, ARB_occlusion_query2) \ EXT_TO_CHECK(40, 32, ARB_draw_buffers_blend) \ EXT_TO_CHECK(40, 31, ARB_draw_indirect) \ EXT_TO_CHECK(40, 32, ARB_gpu_shader5) \ @@ -433,13 +434,14 @@ extern bool IsGLES; EXT_TO_CHECK(44, 99, ARB_enhanced_layouts) \ EXT_TO_CHECK(44, 99, ARB_query_buffer_object) \ EXT_TO_CHECK(45, 99, ARB_clip_control) \ + EXT_TO_CHECK(46, 99, ARB_polygon_offset_clamp) \ + EXT_TO_CHECK(46, 99, ARB_texture_filter_anisotropic) \ + EXT_TO_CHECK(46, 99, ARB_pipeline_statistics_query) \ EXT_TO_CHECK(99, 99, ARB_indirect_parameters) \ EXT_TO_CHECK(99, 99, ARB_seamless_cubemap_per_texture) \ EXT_TO_CHECK(99, 99, EXT_depth_bounds_test) \ EXT_TO_CHECK(99, 99, EXT_direct_state_access) \ - EXT_TO_CHECK(99, 99, EXT_polygon_offset_clamp) \ EXT_TO_CHECK(99, 99, EXT_raster_multisample) \ - EXT_TO_CHECK(99, 99, EXT_texture_filter_anisotropic) \ EXT_TO_CHECK(99, 30, EXT_texture_swizzle) \ EXT_TO_CHECK(99, 99, KHR_blend_equation_advanced_coherent) \ /* OpenGL ES extensions */ \ @@ -457,8 +459,12 @@ extern bool IsGLES; EXT_TO_CHECK(99, 99, NV_read_depth_stencil) \ EXT_TO_CHECK(99, 99, EXT_disjoint_timer_query) -// GL extensions and their roughly equivalent GLES alternatives +// GL extensions equivalents +// Either promoted extensions from EXT to ARB, or +// desktop extensions and their roughly equivalent GLES alternatives #define EXTENSION_COMPATIBILITY_CHECKS() \ + EXT_COMP_CHECK(ARB_polygon_offset_clamp, EXT_polygon_offset_clamp) \ + EXT_COMP_CHECK(ARB_texture_filter_anisotropic, EXT_texture_filter_anisotropic) \ EXT_COMP_CHECK(ARB_base_instance, EXT_base_instance) \ EXT_COMP_CHECK(ARB_copy_image, EXT_copy_image) \ EXT_COMP_CHECK(ARB_copy_image, OES_copy_image) \ @@ -1760,6 +1766,12 @@ enum class GLChunk : uint32_t glContextInit, + glMultiDrawArraysIndirectCount, + glMultiDrawElementsIndirectCount, + glPolygonOffsetClamp, + glMaxShaderCompilerThreadsARB, + glMaxShaderCompilerThreadsKHR, + Max, }; diff --git a/renderdoc/driver/gl/gl_counters.cpp b/renderdoc/driver/gl/gl_counters.cpp index a62ea6299..2ffa437b0 100644 --- a/renderdoc/driver/gl/gl_counters.cpp +++ b/renderdoc/driver/gl/gl_counters.cpp @@ -71,18 +71,24 @@ vector GLReplay::EnumerateCounters() vector ret; ret.push_back(GPUCounter::EventGPUDuration); - ret.push_back(GPUCounter::InputVerticesRead); - ret.push_back(GPUCounter::IAPrimitives); - ret.push_back(GPUCounter::GSPrimitives); - ret.push_back(GPUCounter::RasterizerInvocations); - ret.push_back(GPUCounter::RasterizedPrimitives); - ret.push_back(GPUCounter::SamplesPassed); - ret.push_back(GPUCounter::VSInvocations); - ret.push_back(GPUCounter::TCSInvocations); - ret.push_back(GPUCounter::TESInvocations); - ret.push_back(GPUCounter::GSInvocations); - ret.push_back(GPUCounter::PSInvocations); - ret.push_back(GPUCounter::CSInvocations); + + if(HasExt[ARB_occlusion_query2]) + ret.push_back(GPUCounter::SamplesPassed); + + if(HasExt[ARB_pipeline_statistics_query]) + { + ret.push_back(GPUCounter::InputVerticesRead); + ret.push_back(GPUCounter::IAPrimitives); + ret.push_back(GPUCounter::GSPrimitives); + ret.push_back(GPUCounter::RasterizerInvocations); + ret.push_back(GPUCounter::RasterizedPrimitives); + ret.push_back(GPUCounter::VSInvocations); + ret.push_back(GPUCounter::TCSInvocations); + ret.push_back(GPUCounter::TESInvocations); + ret.push_back(GPUCounter::GSInvocations); + ret.push_back(GPUCounter::PSInvocations); + ret.push_back(GPUCounter::CSInvocations); + } if(m_pAMDCounters) { diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 3f1812d4a..da9ea992a 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -94,10 +94,12 @@ void WrappedOpenGL::BuildGLExtensions() m_GLExtensions.push_back("GL_ARB_multitexture"); m_GLExtensions.push_back("GL_ARB_occlusion_query"); m_GLExtensions.push_back("GL_ARB_occlusion_query2"); + m_GLExtensions.push_back("GL_ARB_parallel_shader_compile"); m_GLExtensions.push_back("GL_ARB_pixel_buffer_object"); m_GLExtensions.push_back("GL_ARB_pipeline_statistics_query"); m_GLExtensions.push_back("GL_ARB_point_parameters"); m_GLExtensions.push_back("GL_ARB_point_sprite"); + m_GLExtensions.push_back("GL_ARB_polygon_offset_clamp"); m_GLExtensions.push_back("GL_ARB_post_depth_coverage"); m_GLExtensions.push_back("GL_ARB_program_interface_query"); m_GLExtensions.push_back("GL_ARB_provoking_vertex"); @@ -146,6 +148,7 @@ void WrappedOpenGL::BuildGLExtensions() m_GLExtensions.push_back("GL_ARB_texture_compression_rgtc"); m_GLExtensions.push_back("GL_ARB_texture_cube_map"); m_GLExtensions.push_back("GL_ARB_texture_cube_map_array"); + m_GLExtensions.push_back("GL_ARB_texture_filter_anisotropic"); m_GLExtensions.push_back("GL_ARB_texture_float"); m_GLExtensions.push_back("GL_ARB_texture_gather"); m_GLExtensions.push_back("GL_ARB_texture_mirror_clamp_to_edge"); @@ -240,6 +243,7 @@ void WrappedOpenGL::BuildGLExtensions() m_GLExtensions.push_back("GL_KHR_context_flush_control"); m_GLExtensions.push_back("GL_KHR_debug"); m_GLExtensions.push_back("GL_KHR_no_error"); + m_GLExtensions.push_back("GL_KHR_parallel_shader_compile"); m_GLExtensions.push_back("GL_KHR_robustness"); m_GLExtensions.push_back("GL_KHR_robust_buffer_access_behavior"); @@ -272,7 +276,6 @@ void WrappedOpenGL::BuildGLExtensions() support if it's supported on replaying driver'? * GL_ARB_ES3_2_compatibility * GL_ARB_gpu_shader_int64 - * GL_ARB_parallel_shader_compile * GL_ARB_sample_locations * GL_ARB_texture_filter_minmax @@ -3212,9 +3215,11 @@ bool WrappedOpenGL::ProcessChunk(ReadSerialiser &ser, GLChunk chunk) case GLChunk::glMultiDrawElementsIndirect: return Serialise_glMultiDrawElementsIndirect(ser, eGL_NONE, eGL_NONE, 0, 0, 0); case GLChunk::glMultiDrawArraysIndirectCountARB: - return Serialise_glMultiDrawArraysIndirectCountARB(ser, eGL_NONE, 0, 0, 0, 0); + case GLChunk::glMultiDrawArraysIndirectCount: + return Serialise_glMultiDrawArraysIndirectCount(ser, eGL_NONE, 0, 0, 0, 0); case GLChunk::glMultiDrawElementsIndirectCountARB: - return Serialise_glMultiDrawElementsIndirectCountARB(ser, eGL_NONE, eGL_NONE, 0, 0, 0, 0); + case GLChunk::glMultiDrawElementsIndirectCount: + return Serialise_glMultiDrawElementsIndirectCount(ser, eGL_NONE, eGL_NONE, 0, 0, 0, 0); case GLChunk::glClearBufferfv: case GLChunk::glClearNamedFramebufferfv: return Serialise_glClearNamedFramebufferfv(ser, 0, eGL_NONE, 0, 0); @@ -3526,7 +3531,8 @@ bool WrappedOpenGL::ProcessChunk(ReadSerialiser &ser, GLChunk chunk) case GLChunk::glScissorArrayv: return Serialise_glScissorArrayv(ser, 0, 0, 0); case GLChunk::glPolygonMode: return Serialise_glPolygonMode(ser, eGL_NONE, eGL_NONE); case GLChunk::glPolygonOffset: return Serialise_glPolygonOffset(ser, 0, 0); - case GLChunk::glPolygonOffsetClampEXT: return Serialise_glPolygonOffsetClampEXT(ser, 0, 0, 0); + case GLChunk::glPolygonOffsetClampEXT: + case GLChunk::glPolygonOffsetClamp: return Serialise_glPolygonOffsetClamp(ser, 0, 0, 0); case GLChunk::glPrimitiveBoundingBoxEXT: case GLChunk::glPrimitiveBoundingBoxOES: case GLChunk::glPrimitiveBoundingBox: diff --git a/renderdoc/driver/gl/gl_driver.h b/renderdoc/driver/gl/gl_driver.h index b9ff3b2a7..0819ebd4b 100644 --- a/renderdoc/driver/gl/gl_driver.h +++ b/renderdoc/driver/gl/gl_driver.h @@ -716,7 +716,7 @@ public: IMPLEMENT_FUNCTION_SERIALISED(void, glPixelStoref, GLenum pname, GLfloat param); IMPLEMENT_FUNCTION_SERIALISED(void, glPolygonMode, GLenum face, GLenum mode); IMPLEMENT_FUNCTION_SERIALISED(void, glPolygonOffset, GLfloat factor, GLfloat units); - IMPLEMENT_FUNCTION_SERIALISED(void, glPolygonOffsetClampEXT, GLfloat factor, GLfloat units, + IMPLEMENT_FUNCTION_SERIALISED(void, glPolygonOffsetClamp, GLfloat factor, GLfloat units, GLfloat clamp); IMPLEMENT_FUNCTION_SERIALISED(void, glPatchParameteri, GLenum pname, GLint param); IMPLEMENT_FUNCTION_SERIALISED(void, glPatchParameterfv, GLenum pname, const GLfloat *params); @@ -1688,10 +1688,10 @@ public: GLsizei drawcount, GLsizei stride); IMPLEMENT_FUNCTION_SERIALISED(void, glMultiDrawElementsIndirect, GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); - IMPLEMENT_FUNCTION_SERIALISED(void, glMultiDrawArraysIndirectCountARB, GLenum mode, + IMPLEMENT_FUNCTION_SERIALISED(void, glMultiDrawArraysIndirectCount, GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); - IMPLEMENT_FUNCTION_SERIALISED(void, glMultiDrawElementsIndirectCountARB, GLenum mode, GLenum type, + IMPLEMENT_FUNCTION_SERIALISED(void, glMultiDrawElementsIndirectCount, GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); IMPLEMENT_FUNCTION_SERIALISED(void, glDrawArraysIndirect, GLenum mode, const void *indirect); @@ -2232,6 +2232,8 @@ public: GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); + void glMaxShaderCompilerThreadsKHR(GLuint count); + template bool Serialise_glFramebufferTexture2DMultisampleEXT(SerialiserType &ser, GLuint framebuffer, GLenum target, GLenum attachment, diff --git a/renderdoc/driver/gl/gl_hooks_win32.cpp b/renderdoc/driver/gl/gl_hooks_win32.cpp index ad6870ab0..f463f4178 100644 --- a/renderdoc/driver/gl/gl_hooks_win32.cpp +++ b/renderdoc/driver/gl/gl_hooks_win32.cpp @@ -54,7 +54,7 @@ { \ if(glhooks.GL.function == NULL) \ glhooks.GL.function = (funcPtrType)realFunc; \ - return (PROC)&glhooks.CONCAT(function, _hooked); \ + return (PROC)&glhooks.CONCAT(alias, _hooked); \ } #if 0 // debug print for each unsupported function requested (but not used) diff --git a/renderdoc/driver/gl/gl_hookset.h b/renderdoc/driver/gl/gl_hookset.h index 35ba1d858..2c738df10 100644 --- a/renderdoc/driver/gl/gl_hookset.h +++ b/renderdoc/driver/gl/gl_hookset.h @@ -630,8 +630,8 @@ struct GLHookSet PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glDispatchComputeGroupSizeARB; // ARB_indirect_parameters - PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glMultiDrawArraysIndirectCountARB; - PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glMultiDrawElementsIndirectCountARB; + PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC glMultiDrawArraysIndirectCount; // aliases glMultiDrawArraysIndirectCountARB + PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glMultiDrawElementsIndirectCount; // aliases glMultiDrawElementsIndirectCountARB // EXT_raster_multisample PFNGLRASTERSAMPLESEXTPROC glRasterSamplesEXT; @@ -639,8 +639,8 @@ struct GLHookSet // EXT_depth_bounds_test PFNGLDEPTHBOUNDSEXTPROC glDepthBoundsEXT; - // EXT_polygon_offset_clamp - PFNGLPOLYGONOFFSETCLAMPEXTPROC glPolygonOffsetClampEXT; + // EXT/ARB_polygon_offset_clamp + PFNGLPOLYGONOFFSETCLAMPPROC glPolygonOffsetClamp; // aliases glPolygonOffsetClampEXT // EXT_debug_marker PFNGLINSERTEVENTMARKEREXTPROC glInsertEventMarkerEXT; @@ -659,6 +659,10 @@ struct GLHookSet // OVR_multiview_multisampled_render_to_texture PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC glFramebufferTextureMultisampleMultiviewOVR; + // ARB_parallel_shader_compile + PFNGLMAXSHADERCOMPILERTHREADSKHRPROC glMaxShaderCompilerThreadsKHR; // aliases glMaxShaderCompilerThreadsARB + + // EXT_direct_state_access below here. We only include the functions relevant for core 3.2+ GL, // not any // functions for legacy functionality. diff --git a/renderdoc/driver/gl/gl_hookset_defs.h b/renderdoc/driver/gl/gl_hookset_defs.h index a74626614..c166f3d61 100644 --- a/renderdoc/driver/gl/gl_hookset_defs.h +++ b/renderdoc/driver/gl/gl_hookset_defs.h @@ -1082,9 +1082,15 @@ HookExtensionAlias(PFNGLREADNPIXELSPROC, glReadnPixels, glReadnPixelsARB); \ HookExtensionAlias(PFNGLREADNPIXELSPROC, glReadnPixels, glReadnPixelsEXT); \ HookExtension(PFNGLTEXTUREBARRIERPROC, glTextureBarrier); \ + HookExtension(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC, glMultiDrawArraysIndirectCount); \ + HookExtensionAlias(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC, glMultiDrawArraysIndirectCount, glMultiDrawArraysIndirectCountARB); \ + HookExtension(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC, glMultiDrawElementsIndirectCount); \ + HookExtensionAlias(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC, glMultiDrawElementsIndirectCount, glMultiDrawElementsIndirectCountARB); \ + HookExtension(PFNGLPOLYGONOFFSETCLAMPPROC, glPolygonOffsetClamp); \ + HookExtensionAlias(PFNGLPOLYGONOFFSETCLAMPPROC, glPolygonOffsetClamp, glPolygonOffsetClampEXT); \ HookExtension(PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC, glDispatchComputeGroupSizeARB); \ - HookExtension(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC, glMultiDrawArraysIndirectCountARB); \ - HookExtension(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC, glMultiDrawElementsIndirectCountARB); \ + HookExtension(PFNGLMAXSHADERCOMPILERTHREADSARBPROC, glMaxShaderCompilerThreadsKHR); \ + HookExtensionAlias(PFNGLMAXSHADERCOMPILERTHREADSARBPROC, glMaxShaderCompilerThreadsKHR, glMaxShaderCompilerThreadsARB); \ HookExtension(PFNGLNAMEDSTRINGARBPROC, glNamedStringARB); \ HookExtension(PFNGLDELETENAMEDSTRINGARBPROC, glDeleteNamedStringARB); \ HookExtension(PFNGLCOMPILESHADERINCLUDEARBPROC, glCompileShaderIncludeARB); \ @@ -1196,7 +1202,6 @@ HookExtension(PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC, glTextureStorage3DMultisampleEXT); \ HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC, glVertexArrayVertexAttribLOffsetEXT); \ HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC, glVertexArrayVertexAttribDivisorEXT); \ - HookExtension(PFNGLPOLYGONOFFSETCLAMPEXTPROC, glPolygonOffsetClampEXT); \ HookExtension(PFNGLRASTERSAMPLESEXTPROC, glRasterSamplesEXT); \ HookExtension(PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC, glFramebufferTextureMultiviewOVR); \ HookExtension(PFNGLDEPTHBOUNDSEXTPROC, glDepthBoundsEXT); \ @@ -2337,9 +2342,15 @@ HookAliasWrapper8(void, glReadnPixelsEXT, glReadnPixels, GLint, x, GLint, y, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, GLsizei, bufSize, void *, data); \ HookWrapper8(void, glReadnPixels, GLint, x, GLint, y, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, GLsizei, bufSize, void *, data); \ HookWrapper0(void, glTextureBarrier); \ + HookAliasWrapper5(void, glMultiDrawArraysIndirectCountARB, glMultiDrawArraysIndirectCount, GLenum, mode, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ + HookWrapper5(void, glMultiDrawArraysIndirectCount, GLenum, mode, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ + HookAliasWrapper6(void, glMultiDrawElementsIndirectCountARB, glMultiDrawElementsIndirectCount, GLenum, mode, GLenum, type, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ + HookWrapper6(void, glMultiDrawElementsIndirectCount, GLenum, mode, GLenum, type, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ + HookAliasWrapper3(void, glPolygonOffsetClampEXT, glPolygonOffsetClamp, GLfloat, factor, GLfloat, units, GLfloat, clamp); \ + HookWrapper3(void, glPolygonOffsetClamp, GLfloat, factor, GLfloat, units, GLfloat, clamp); \ HookWrapper6(void, glDispatchComputeGroupSizeARB, GLuint, num_groups_x, GLuint, num_groups_y, GLuint, num_groups_z, GLuint, group_size_x, GLuint, group_size_y, GLuint, group_size_z); \ - HookWrapper5(void, glMultiDrawArraysIndirectCountARB, GLenum, mode, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ - HookWrapper6(void, glMultiDrawElementsIndirectCountARB, GLenum, mode, GLenum, type, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ + HookAliasWrapper1(void, glMaxShaderCompilerThreadsARB, glMaxShaderCompilerThreadsKHR, GLuint, count); \ + HookWrapper1(void, glMaxShaderCompilerThreadsKHR, GLuint, count); \ HookWrapper5(void, glNamedStringARB, GLenum, type, GLint, namelen, const GLchar *, name, GLint, stringlen, const GLchar *, string); \ HookWrapper2(void, glDeleteNamedStringARB, GLint, namelen, const GLchar *, name); \ HookWrapper4(void, glCompileShaderIncludeARB, GLuint, shader, GLsizei, count, const GLchar *const*, path, const GLint *, length); \ @@ -2451,7 +2462,6 @@ HookWrapper8(void, glTextureStorage3DMultisampleEXT, GLuint, texture, GLenum, target, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, fixedsamplelocations); \ 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); \ HookWrapper2(void, glRasterSamplesEXT, GLuint, samples, GLboolean, fixedsamplelocations); \ HookWrapper6(void, glFramebufferTextureMultiviewOVR, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level, GLint, baseViewIndex, GLsizei, numViews); \ HookWrapper2(void, glDepthBoundsEXT, GLclampd, zmin, GLclampd, zmax); \ @@ -2482,9 +2492,6 @@ // unsupported entry points - used for dummy functions #define DefineUnsupportedDummies() \ HookWrapper5(void, glSpecializeShader, GLuint, shader, const GLchar *, pEntryPoint, GLuint, numSpecializationConstants, const GLuint *, pConstantIndex, const GLuint *, pConstantValue); \ - HookWrapper5(void, glMultiDrawArraysIndirectCount, GLenum, mode, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ - HookWrapper6(void, glMultiDrawElementsIndirectCount, GLenum, mode, GLenum, type, const void *, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \ - HookWrapper3(void, glPolygonOffsetClamp, GLfloat, factor, GLfloat, units, GLfloat, clamp); \ HookWrapper8(void, glPrimitiveBoundingBoxARB, GLfloat, minX, GLfloat, minY, GLfloat, minZ, GLfloat, minW, GLfloat, maxX, GLfloat, maxY, GLfloat, maxZ, GLfloat, maxW); \ HookWrapper1(GLuint64, glGetTextureHandleARB, GLuint, texture); \ HookWrapper2(GLuint64, glGetTextureSamplerHandleARB, GLuint, texture, GLuint, sampler); \ @@ -2541,7 +2548,6 @@ HookWrapper4(void, glProgramUniform2ui64vARB, GLuint, program, GLint, location, GLsizei, count, const GLuint64 *, value); \ HookWrapper4(void, glProgramUniform3ui64vARB, GLuint, program, GLint, location, GLsizei, count, const GLuint64 *, value); \ HookWrapper4(void, glProgramUniform4ui64vARB, GLuint, program, GLint, location, GLsizei, count, const GLuint64 *, value); \ - HookWrapper1(void, glMaxShaderCompilerThreadsARB, GLuint, count); \ HookWrapper4(void, glFramebufferSampleLocationsfvARB, GLenum, target, GLuint, start, GLsizei, count, const GLfloat *, v); \ HookWrapper4(void, glNamedFramebufferSampleLocationsfvARB, GLuint, framebuffer, GLuint, start, GLsizei, count, const GLfloat *, v); \ HookWrapper0(void, glEvaluateDepthValuesARB); \ @@ -2549,7 +2555,6 @@ HookWrapper4(void, glNamedBufferPageCommitmentEXT, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, GLboolean, commit); \ HookWrapper4(void, glNamedBufferPageCommitmentARB, GLuint, buffer, GLintptr, offset, GLsizeiptr, size, GLboolean, commit); \ HookWrapper9(void, glTexPageCommitmentARB, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLboolean, commit); \ - HookWrapper1(void, glMaxShaderCompilerThreadsKHR, GLuint, count); \ HookWrapper3(void, glGetPerfMonitorGroupsAMD, GLint *, numGroups, GLsizei, groupsSize, GLuint *, groups); \ HookWrapper5(void, glGetPerfMonitorCountersAMD, GLuint, group, GLint *, numCounters, GLint *, maxActiveCounters, GLsizei, counterSize, GLuint *, counters); \ HookWrapper4(void, glGetPerfMonitorGroupStringAMD, GLuint, group, GLsizei, bufSize, GLsizei *, length, GLchar *, groupString); \ @@ -2561,6 +2566,8 @@ HookWrapper1(void, glBeginPerfMonitorAMD, GLuint, monitor); \ HookWrapper1(void, glEndPerfMonitorAMD, GLuint, monitor); \ HookWrapper5(void, glGetPerfMonitorCounterDataAMD, GLuint, monitor, GLenum, pname, GLsizei, dataSize, GLuint *, data, GLint *, bytesWritten); \ + HookWrapper3(void, glEGLImageTargetTexStorageEXT, GLenum, target, GLeglImageOES, image, const GLint*, attrib_list); \ + HookWrapper3(void, glEGLImageTargetTextureStorageEXT, GLuint, texture, GLeglImageOES, image, const GLint*, attrib_list); \ HookWrapper2(void, glMatrixLoadfEXT, GLenum, mode, const GLfloat *, m); \ HookWrapper2(void, glMatrixLoaddEXT, GLenum, mode, const GLdouble *, m); \ HookWrapper2(void, glMatrixMultfEXT, GLenum, mode, const GLfloat *, m); \ @@ -2638,6 +2645,7 @@ HookWrapper2(void, glUseShaderProgramEXT, GLenum, type, GLuint, program); \ HookWrapper1(void, glActiveProgramEXT, GLuint, program); \ HookWrapper2(GLuint, glCreateShaderProgramEXT, GLenum, type, const GLchar *, string); \ + HookWrapper0(void, glFramebufferFetchBarrierEXT); \ HookWrapper3(void, glWindowRectanglesEXT, GLenum, mode, GLsizei, count, const GLint *, box); \ HookWrapper0(void, glApplyFramebufferAttachmentCMAAINTEL); \ HookWrapper1(void, glBeginPerfQueryINTEL, GLuint, queryHandle); \ @@ -4463,9 +4471,6 @@ #define CheckUnsupported() \ HandleUnsupported(PFNGLSPECIALIZESHADERPROC, glSpecializeShader); \ - HandleUnsupported(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC, glMultiDrawArraysIndirectCount); \ - HandleUnsupported(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC, glMultiDrawElementsIndirectCount); \ - HandleUnsupported(PFNGLPOLYGONOFFSETCLAMPPROC, glPolygonOffsetClamp); \ HandleUnsupported(PFNGLPRIMITIVEBOUNDINGBOXARBPROC, glPrimitiveBoundingBoxARB); \ HandleUnsupported(PFNGLGETTEXTUREHANDLEARBPROC, glGetTextureHandleARB); \ HandleUnsupported(PFNGLGETTEXTURESAMPLERHANDLEARBPROC, glGetTextureSamplerHandleARB); \ @@ -4522,7 +4527,6 @@ HandleUnsupported(PFNGLPROGRAMUNIFORM2UI64VARBPROC, glProgramUniform2ui64vARB); \ HandleUnsupported(PFNGLPROGRAMUNIFORM3UI64VARBPROC, glProgramUniform3ui64vARB); \ HandleUnsupported(PFNGLPROGRAMUNIFORM4UI64VARBPROC, glProgramUniform4ui64vARB); \ - HandleUnsupported(PFNGLMAXSHADERCOMPILERTHREADSARBPROC, glMaxShaderCompilerThreadsARB); \ HandleUnsupported(PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC, glFramebufferSampleLocationsfvARB); \ HandleUnsupported(PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC, glNamedFramebufferSampleLocationsfvARB); \ HandleUnsupported(PFNGLEVALUATEDEPTHVALUESARBPROC, glEvaluateDepthValuesARB); \ @@ -4530,7 +4534,6 @@ HandleUnsupported(PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC, glNamedBufferPageCommitmentEXT); \ HandleUnsupported(PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC, glNamedBufferPageCommitmentARB); \ HandleUnsupported(PFNGLTEXPAGECOMMITMENTARBPROC, glTexPageCommitmentARB); \ - HandleUnsupported(PFNGLMAXSHADERCOMPILERTHREADSKHRPROC, glMaxShaderCompilerThreadsKHR); \ HandleUnsupported(PFNGLGETPERFMONITORGROUPSAMDPROC, glGetPerfMonitorGroupsAMD); \ HandleUnsupported(PFNGLGETPERFMONITORCOUNTERSAMDPROC, glGetPerfMonitorCountersAMD); \ HandleUnsupported(PFNGLGETPERFMONITORGROUPSTRINGAMDPROC, glGetPerfMonitorGroupStringAMD); \ @@ -4542,6 +4545,8 @@ HandleUnsupported(PFNGLBEGINPERFMONITORAMDPROC, glBeginPerfMonitorAMD); \ HandleUnsupported(PFNGLENDPERFMONITORAMDPROC, glEndPerfMonitorAMD); \ HandleUnsupported(PFNGLGETPERFMONITORCOUNTERDATAAMDPROC, glGetPerfMonitorCounterDataAMD); \ + HandleUnsupported(PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC, glEGLImageTargetTexStorageEXT); \ + HandleUnsupported(PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC, glEGLImageTargetTextureStorageEXT); \ HandleUnsupported(PFNGLMATRIXLOADFEXTPROC, glMatrixLoadfEXT); \ HandleUnsupported(PFNGLMATRIXLOADDEXTPROC, glMatrixLoaddEXT); \ HandleUnsupported(PFNGLMATRIXMULTFEXTPROC, glMatrixMultfEXT); \ @@ -4619,6 +4624,7 @@ HandleUnsupported(PFNGLUSESHADERPROGRAMEXTPROC, glUseShaderProgramEXT); \ HandleUnsupported(PFNGLACTIVEPROGRAMEXTPROC, glActiveProgramEXT); \ HandleUnsupported(PFNGLCREATESHADERPROGRAMEXTPROC, glCreateShaderProgramEXT); \ + HandleUnsupported(PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC, glFramebufferFetchBarrierEXT); \ HandleUnsupported(PFNGLWINDOWRECTANGLESEXTPROC, glWindowRectanglesEXT); \ HandleUnsupported(PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC, glApplyFramebufferAttachmentCMAAINTEL); \ HandleUnsupported(PFNGLBEGINPERFQUERYINTELPROC, glBeginPerfQueryINTEL); \ diff --git a/renderdoc/driver/gl/gl_renderstate.cpp b/renderdoc/driver/gl/gl_renderstate.cpp index da0bd841c..a46ebb0a4 100644 --- a/renderdoc/driver/gl/gl_renderstate.cpp +++ b/renderdoc/driver/gl/gl_renderstate.cpp @@ -1257,8 +1257,8 @@ void GLRenderState::FetchState(WrappedOpenGL *gl) m_Real->glGetFloatv(eGL_POLYGON_OFFSET_FACTOR, &PolygonOffset[0]); m_Real->glGetFloatv(eGL_POLYGON_OFFSET_UNITS, &PolygonOffset[1]); - if(HasExt[EXT_polygon_offset_clamp]) - m_Real->glGetFloatv(eGL_POLYGON_OFFSET_CLAMP_EXT, &PolygonOffset[2]); + if(HasExt[ARB_polygon_offset_clamp]) + m_Real->glGetFloatv(eGL_POLYGON_OFFSET_CLAMP, &PolygonOffset[2]); else PolygonOffset[2] = 0.0f; @@ -1646,8 +1646,8 @@ void GLRenderState::ApplyState(WrappedOpenGL *gl) if(!IsGLES) m_Real->glPolygonMode(eGL_FRONT_AND_BACK, PolygonMode); - if(HasExt[EXT_polygon_offset_clamp] && m_Real->glPolygonOffsetClampEXT) - m_Real->glPolygonOffsetClampEXT(PolygonOffset[0], PolygonOffset[1], PolygonOffset[2]); + if(HasExt[ARB_polygon_offset_clamp]) + m_Real->glPolygonOffsetClamp(PolygonOffset[0], PolygonOffset[1], PolygonOffset[2]); else m_Real->glPolygonOffset(PolygonOffset[0], PolygonOffset[1]); diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index 90f8f602c..e9b1eb565 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -1209,13 +1209,13 @@ void GLReplay::SavePipelineState() else gl.glGetTexParameteriv(target, eGL_TEXTURE_MAG_FILTER, &magf); - if(HasExt[EXT_texture_filter_anisotropic]) + if(HasExt[ARB_texture_filter_anisotropic]) { if(samp != 0) - gl.glGetSamplerParameterfv(samp, eGL_TEXTURE_MAX_ANISOTROPY_EXT, + gl.glGetSamplerParameterfv(samp, eGL_TEXTURE_MAX_ANISOTROPY, &pipe.samplers[unit].maxAnisotropy); else - gl.glGetTexParameterfv(target, eGL_TEXTURE_MAX_ANISOTROPY_EXT, + gl.glGetTexParameterfv(target, eGL_TEXTURE_MAX_ANISOTROPY, &pipe.samplers[unit].maxAnisotropy); } else diff --git a/renderdoc/driver/gl/gl_replay_linux.cpp b/renderdoc/driver/gl/gl_replay_linux.cpp index 68761619a..56a441506 100644 --- a/renderdoc/driver/gl/gl_replay_linux.cpp +++ b/renderdoc/driver/gl/gl_replay_linux.cpp @@ -175,14 +175,14 @@ ReplayStatus GL_CreateReplayDevice(RDCFile *rdc, IReplayDriver **driver) GLXContext ctx = NULL; - // try to create all versions from 4.5 down to 3.2 in order to get the + // try to create all versions from 4.6 down to 3.2 in order to get the // highest versioned context we can struct { int major; int minor; } versions[] = { - {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {4, 0}, {3, 3}, {3, 2}, + {4, 6}, {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {4, 0}, {3, 3}, {3, 2}, }; { diff --git a/renderdoc/driver/gl/gl_replay_win32.cpp b/renderdoc/driver/gl/gl_replay_win32.cpp index 660a01ce2..e6540ea22 100644 --- a/renderdoc/driver/gl/gl_replay_win32.cpp +++ b/renderdoc/driver/gl/gl_replay_win32.cpp @@ -236,14 +236,14 @@ ReplayStatus GL_CreateReplayDevice(RDCFile *rdc, IReplayDriver **driver) attribs[i++] = WGL_CONTEXT_PROFILE_MASK_ARB; attribs[i++] = WGL_CONTEXT_CORE_PROFILE_BIT_ARB; - // try to create all versions from 4.5 down to 3.2 in order to get the + // try to create all versions from 4.6 down to 3.2 in order to get the // highest versioned context we can struct { int major; int minor; } versions[] = { - {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {4, 0}, {3, 3}, {3, 2}, + {4, 6}, {4, 5}, {4, 4}, {4, 3}, {4, 2}, {4, 1}, {4, 0}, {3, 3}, {3, 2}, }; rc = NULL; diff --git a/renderdoc/driver/gl/official/glcorearb.h b/renderdoc/driver/gl/official/glcorearb.h index c89572766..b402141ee 100644 --- a/renderdoc/driver/gl/official/glcorearb.h +++ b/renderdoc/driver/gl/official/glcorearb.h @@ -1,12 +1,12 @@ -#ifndef __glcorearb_h_ -#define __glcorearb_h_ 1 +#ifndef __gl_glcorearb_h_ +#define __gl_glcorearb_h_ 1 #ifdef __cplusplus extern "C" { #endif /* -** Copyright (c) 2013-2017 The Khronos Group Inc. +** Copyright (c) 2013-2018 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -618,9 +618,9 @@ GLAPI void APIENTRY glBlendEquation (GLenum mode); #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 -#include -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; +#include "khrplatform.h" +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; #define GL_BUFFER_SIZE 0x8764 #define GL_BUFFER_USAGE 0x8765 #define GL_QUERY_COUNTER_BITS 0x8864 @@ -4006,6 +4006,17 @@ GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname #define GL_RGB_RAW_422_APPLE 0x8A51 #endif /* GL_APPLE_rgb_422 */ +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void *GLeglImageOES; +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + #ifndef GL_EXT_debug_label #define GL_EXT_debug_label 1 #define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F @@ -4604,6 +4615,19 @@ GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *strin #endif #endif /* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + #ifndef GL_EXT_shader_integer_mix #define GL_EXT_shader_integer_mix 1 #endif /* GL_EXT_shader_integer_mix */ @@ -4643,6 +4667,11 @@ GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLi #endif #endif /* GL_EXT_window_rectangles */ +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + #ifndef GL_INTEL_conservative_rasterization #define GL_INTEL_conservative_rasterization 1 #define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE diff --git a/renderdoc/driver/gl/official/glext.h b/renderdoc/driver/gl/official/glext.h index 178537971..3f24c93d4 100644 --- a/renderdoc/driver/gl/official/glext.h +++ b/renderdoc/driver/gl/official/glext.h @@ -1,12 +1,12 @@ -#ifndef __glext_h_ -#define __glext_h_ 1 +#ifndef __gl_glext_h_ +#define __gl_glext_h_ 1 #ifdef __cplusplus extern "C" { #endif /* -** Copyright (c) 2013-2017 The Khronos Group Inc. +** Copyright (c) 2013-2018 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -51,7 +51,7 @@ extern "C" { #define GLAPI extern #endif -#define GL_GLEXT_VERSION 20180114 +#define GL_GLEXT_VERSION 20180525 /* Generated C header for: * API: gl @@ -464,9 +464,9 @@ GLAPI void APIENTRY glBlendEquation (GLenum mode); #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 -#include -typedef ptrdiff_t GLsizeiptr; -typedef ptrdiff_t GLintptr; +#include "khrplatform.h" +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; #define GL_BUFFER_SIZE 0x8764 #define GL_BUFFER_USAGE 0x8765 #define GL_QUERY_COUNTER_BITS 0x8864 @@ -4713,6 +4713,7 @@ GLAPI void APIENTRY glVertexBlendARB (GLint count); #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 +#include typedef ptrdiff_t GLsizeiptrARB; typedef ptrdiff_t GLintptrARB; #define GL_BUFFER_SIZE_ARB 0x8764 @@ -5704,6 +5705,10 @@ GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLf #define GL_AMD_shader_explicit_vertex_parameter 1 #endif /* GL_AMD_shader_explicit_vertex_parameter */ +#ifndef GL_AMD_shader_gpu_shader_half_float_fetch +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +#endif /* GL_AMD_shader_gpu_shader_half_float_fetch */ + #ifndef GL_AMD_shader_image_load_store_lod #define GL_AMD_shader_image_load_store_lod 1 #endif /* GL_AMD_shader_image_load_store_lod */ @@ -6451,6 +6456,17 @@ GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param); #define GL_422_REV_AVERAGE_EXT 0x80CF #endif /* GL_EXT_422_pixels */ +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void *GLeglImageOES; +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + #ifndef GL_EXT_abgr #define GL_EXT_abgr 1 #define GL_ABGR_EXT 0x8000 @@ -8065,6 +8081,19 @@ GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *strin #define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA #endif /* GL_EXT_separate_specular_color */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif /* GL_EXT_shader_framebuffer_fetch */ + +#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +typedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + #ifndef GL_EXT_shader_image_load_formatted #define GL_EXT_shader_image_load_formatted 1 #endif /* GL_EXT_shader_image_load_formatted */ @@ -9128,6 +9157,11 @@ GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRG #define GL_INTERLACE_READ_INGR 0x8568 #endif /* GL_INGR_interlace_read */ +#ifndef GL_INTEL_blackhole_render +#define GL_INTEL_blackhole_render 1 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#endif /* GL_INTEL_blackhole_render */ + #ifndef GL_INTEL_conservative_rasterization #define GL_INTEL_conservative_rasterization 1 #define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE diff --git a/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp index c1ffb8594..5b2f1793e 100644 --- a/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_draw_funcs.cpp @@ -2722,10 +2722,10 @@ void WrappedOpenGL::glMultiDrawElementsIndirect(GLenum mode, GLenum type, const } template -bool WrappedOpenGL::Serialise_glMultiDrawArraysIndirectCountARB(SerialiserType &ser, GLenum mode, - const void *indirect, - GLintptr drawcountPtr, - GLsizei maxdrawcount, GLsizei stride) +bool WrappedOpenGL::Serialise_glMultiDrawArraysIndirectCount(SerialiserType &ser, GLenum mode, + const void *indirect, + GLintptr drawcountPtr, + GLsizei maxdrawcount, GLsizei stride) { SERIALISE_ELEMENT(mode); SERIALISE_ELEMENT_LOCAL(offset, (uint64_t)indirect); @@ -2748,8 +2748,8 @@ bool WrappedOpenGL::Serialise_glMultiDrawArraysIndirectCountARB(SerialiserType & if(IsLoading(m_State)) { - m_Real.glMultiDrawArraysIndirectCountARB(mode, (const void *)offset, (GLintptr)drawcount, - maxdrawcount, stride); + m_Real.glMultiDrawArraysIndirectCount(mode, (const void *)offset, (GLintptr)drawcount, + maxdrawcount, stride); DrawcallDescription draw; draw.name = StringFormat::Fmt("%s(<%i>)", ToStr(gl_CurChunk).c_str(), realdrawcount); @@ -2890,14 +2890,14 @@ bool WrappedOpenGL::Serialise_glMultiDrawArraysIndirectCountARB(SerialiserType & return true; } -void WrappedOpenGL::glMultiDrawArraysIndirectCountARB(GLenum mode, const void *indirect, - GLintptr drawcount, GLsizei maxdrawcount, - GLsizei stride) +void WrappedOpenGL::glMultiDrawArraysIndirectCount(GLenum mode, const void *indirect, + GLintptr drawcount, GLsizei maxdrawcount, + GLsizei stride) { CoherentMapImplicitBarrier(); SERIALISE_TIME_CALL( - m_Real.glMultiDrawArraysIndirectCountARB(mode, indirect, drawcount, maxdrawcount, stride)); + m_Real.glMultiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride)); if(IsActiveCapturing(m_State)) { @@ -2905,7 +2905,7 @@ void WrappedOpenGL::glMultiDrawArraysIndirectCountARB(GLenum mode, const void *i ser.SetDrawChunk(); SCOPED_SERIALISE_CHUNK(gl_CurChunk); - Serialise_glMultiDrawArraysIndirectCountARB(ser, mode, indirect, drawcount, maxdrawcount, stride); + Serialise_glMultiDrawArraysIndirectCount(ser, mode, indirect, drawcount, maxdrawcount, stride); GetContextRecord()->AddChunk(scope.Get()); @@ -2921,11 +2921,10 @@ void WrappedOpenGL::glMultiDrawArraysIndirectCountARB(GLenum mode, const void *i } template -bool WrappedOpenGL::Serialise_glMultiDrawElementsIndirectCountARB(SerialiserType &ser, GLenum mode, - GLenum type, const void *indirect, - GLintptr drawcountPtr, - GLsizei maxdrawcount, - GLsizei stride) +bool WrappedOpenGL::Serialise_glMultiDrawElementsIndirectCount(SerialiserType &ser, GLenum mode, + GLenum type, const void *indirect, + GLintptr drawcountPtr, + GLsizei maxdrawcount, GLsizei stride) { SERIALISE_ELEMENT(mode); SERIALISE_ELEMENT(type); @@ -2951,8 +2950,8 @@ bool WrappedOpenGL::Serialise_glMultiDrawElementsIndirectCountARB(SerialiserType if(IsLoading(m_State)) { - m_Real.glMultiDrawElementsIndirectCountARB(mode, type, (const void *)offset, - (GLintptr)drawcount, maxdrawcount, stride); + m_Real.glMultiDrawElementsIndirectCount(mode, type, (const void *)offset, (GLintptr)drawcount, + maxdrawcount, stride); DrawcallDescription draw; draw.name = StringFormat::Fmt("%s(<%i>)", ToStr(gl_CurChunk).c_str(), realdrawcount); @@ -3099,14 +3098,14 @@ bool WrappedOpenGL::Serialise_glMultiDrawElementsIndirectCountARB(SerialiserType return true; } -void WrappedOpenGL::glMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type, - const void *indirect, GLintptr drawcount, - GLsizei maxdrawcount, GLsizei stride) +void WrappedOpenGL::glMultiDrawElementsIndirectCount(GLenum mode, GLenum type, const void *indirect, + GLintptr drawcount, GLsizei maxdrawcount, + GLsizei stride) { CoherentMapImplicitBarrier(); - SERIALISE_TIME_CALL(m_Real.glMultiDrawElementsIndirectCountARB(mode, type, indirect, drawcount, - maxdrawcount, stride)); + SERIALISE_TIME_CALL(m_Real.glMultiDrawElementsIndirectCount(mode, type, indirect, drawcount, + maxdrawcount, stride)); if(IsActiveCapturing(m_State)) { @@ -3114,8 +3113,8 @@ void WrappedOpenGL::glMultiDrawElementsIndirectCountARB(GLenum mode, GLenum type ser.SetDrawChunk(); SCOPED_SERIALISE_CHUNK(gl_CurChunk); - Serialise_glMultiDrawElementsIndirectCountARB(ser, mode, type, indirect, drawcount, - maxdrawcount, stride); + Serialise_glMultiDrawElementsIndirectCount(ser, mode, type, indirect, drawcount, maxdrawcount, + stride); GetContextRecord()->AddChunk(scope.Get()); @@ -4312,10 +4311,10 @@ INSTANTIATE_FUNCTION_SERIALISED(void, glMultiDrawArraysIndirect, GLenum mode, co GLsizei drawcount, GLsizei stride); INSTANTIATE_FUNCTION_SERIALISED(void, glMultiDrawElementsIndirect, GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); -INSTANTIATE_FUNCTION_SERIALISED(void, glMultiDrawArraysIndirectCountARB, GLenum mode, +INSTANTIATE_FUNCTION_SERIALISED(void, glMultiDrawArraysIndirectCount, GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); -INSTANTIATE_FUNCTION_SERIALISED(void, glMultiDrawElementsIndirectCountARB, GLenum mode, GLenum type, +INSTANTIATE_FUNCTION_SERIALISED(void, glMultiDrawElementsIndirectCount, GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); INSTANTIATE_FUNCTION_SERIALISED(void, glClearNamedFramebufferfv, GLuint framebufferHandle, diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index 505d9c2c7..a044bc86a 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -1711,6 +1711,15 @@ void WrappedOpenGL::glDeleteNamedStringARB(GLint namelen, const GLchar *name) #pragma endregion +void WrappedOpenGL::glMaxShaderCompilerThreadsKHR(GLuint count) +{ + // pass through, don't record + m_Real.glMaxShaderCompilerThreadsKHR(count); +} + +{ +} + INSTANTIATE_FUNCTION_SERIALISED(void, glCreateShader, GLenum type, GLuint shader); INSTANTIATE_FUNCTION_SERIALISED(void, glShaderSource, GLuint shaderHandle, GLsizei count, const GLchar *const *source, const GLint *length); diff --git a/renderdoc/driver/gl/wrappers/gl_state_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_state_funcs.cpp index 58a93112d..b91982d9b 100644 --- a/renderdoc/driver/gl/wrappers/gl_state_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_state_funcs.cpp @@ -1904,8 +1904,8 @@ void WrappedOpenGL::glPolygonOffset(GLfloat factor, GLfloat units) } template -bool WrappedOpenGL::Serialise_glPolygonOffsetClampEXT(SerialiserType &ser, GLfloat factor, - GLfloat units, GLfloat clamp) +bool WrappedOpenGL::Serialise_glPolygonOffsetClamp(SerialiserType &ser, GLfloat factor, + GLfloat units, GLfloat clamp) { SERIALISE_ELEMENT(factor); SERIALISE_ELEMENT(units); @@ -1915,21 +1915,21 @@ bool WrappedOpenGL::Serialise_glPolygonOffsetClampEXT(SerialiserType &ser, GLflo if(IsReplayingAndReading()) { - m_Real.glPolygonOffsetClampEXT(factor, units, clamp); + m_Real.glPolygonOffsetClamp(factor, units, clamp); } return true; } -void WrappedOpenGL::glPolygonOffsetClampEXT(GLfloat factor, GLfloat units, GLfloat clamp) +void WrappedOpenGL::glPolygonOffsetClamp(GLfloat factor, GLfloat units, GLfloat clamp) { - SERIALISE_TIME_CALL(m_Real.glPolygonOffsetClampEXT(factor, units, clamp)); + SERIALISE_TIME_CALL(m_Real.glPolygonOffsetClamp(factor, units, clamp)); if(IsActiveCapturing(m_State)) { USE_SCRATCH_SERIALISER(); SCOPED_SERIALISE_CHUNK(gl_CurChunk); - Serialise_glPolygonOffsetClampEXT(ser, factor, units, clamp); + Serialise_glPolygonOffsetClamp(ser, factor, units, clamp); GetContextRecord()->AddChunk(scope.Get()); } @@ -2042,7 +2042,7 @@ INSTANTIATE_FUNCTION_SERIALISED(void, glScissor, GLint x, GLint y, GLsizei width INSTANTIATE_FUNCTION_SERIALISED(void, glScissorArrayv, GLuint first, GLsizei count, const GLint *v); INSTANTIATE_FUNCTION_SERIALISED(void, glPolygonMode, GLenum face, GLenum mode); INSTANTIATE_FUNCTION_SERIALISED(void, glPolygonOffset, GLfloat factor, GLfloat units); -INSTANTIATE_FUNCTION_SERIALISED(void, glPolygonOffsetClampEXT, GLfloat factor, GLfloat units, +INSTANTIATE_FUNCTION_SERIALISED(void, glPolygonOffsetClamp, GLfloat factor, GLfloat units, GLfloat clamp); INSTANTIATE_FUNCTION_SERIALISED(void, glPrimitiveBoundingBox, GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY,