From: Rémi Bernon rbernon@codeweavers.com
--- dlls/wineandroid.drv/opengl.c | 309 +--------------------------------- 1 file changed, 1 insertion(+), 308 deletions(-)
diff --git a/dlls/wineandroid.drv/opengl.c b/dlls/wineandroid.drv/opengl.c index 7d25b28acad..ba71c717f4a 100644 --- a/dlls/wineandroid.drv/opengl.c +++ b/dlls/wineandroid.drv/opengl.c @@ -446,293 +446,6 @@ static const char *android_init_wgl_extensions(void) return wgl_extensions; }
-static void init_opengl_funcs(void) -{ - void *ptr; - - /* load standard functions and extensions exported from the OpenGL library */ - -#define USE_GL_FUNC(func) if ((ptr = dlsym( opengl_handle, #func ))) egl_funcs.p_##func = ptr; - ALL_GL_FUNCS -#undef USE_GL_FUNC - -#define LOAD_FUNCPTR(func) egl_funcs.p_##func = dlsym( opengl_handle, #func ) - LOAD_FUNCPTR( glActiveShaderProgram ); - LOAD_FUNCPTR( glActiveTexture ); - LOAD_FUNCPTR( glAttachShader ); - LOAD_FUNCPTR( glBeginQuery ); - LOAD_FUNCPTR( glBeginTransformFeedback ); - LOAD_FUNCPTR( glBindAttribLocation ); - LOAD_FUNCPTR( glBindBuffer ); - LOAD_FUNCPTR( glBindBufferBase ); - LOAD_FUNCPTR( glBindBufferRange ); - LOAD_FUNCPTR( glBindFramebuffer ); - LOAD_FUNCPTR( glBindImageTexture ); - LOAD_FUNCPTR( glBindProgramPipeline ); - LOAD_FUNCPTR( glBindRenderbuffer ); - LOAD_FUNCPTR( glBindSampler ); - LOAD_FUNCPTR( glBindTransformFeedback ); - LOAD_FUNCPTR( glBindVertexArray ); - LOAD_FUNCPTR( glBindVertexBuffer ); - LOAD_FUNCPTR( glBlendBarrierKHR ); - LOAD_FUNCPTR( glBlendColor ); - LOAD_FUNCPTR( glBlendEquation ); - LOAD_FUNCPTR( glBlendEquationSeparate ); - LOAD_FUNCPTR( glBlendFuncSeparate ); - LOAD_FUNCPTR( glBlitFramebuffer ); - LOAD_FUNCPTR( glBufferData ); - LOAD_FUNCPTR( glBufferSubData ); - LOAD_FUNCPTR( glCheckFramebufferStatus ); - LOAD_FUNCPTR( glClearBufferfi ); - LOAD_FUNCPTR( glClearBufferfv ); - LOAD_FUNCPTR( glClearBufferiv ); - LOAD_FUNCPTR( glClearBufferuiv ); - LOAD_FUNCPTR( glClearDepthf ); - LOAD_FUNCPTR( glClientWaitSync ); - LOAD_FUNCPTR( glCompileShader ); - LOAD_FUNCPTR( glCompressedTexImage2D ); - LOAD_FUNCPTR( glCompressedTexImage3D ); - LOAD_FUNCPTR( glCompressedTexSubImage2D ); - LOAD_FUNCPTR( glCompressedTexSubImage3D ); - LOAD_FUNCPTR( glCopyBufferSubData ); - LOAD_FUNCPTR( glCopyTexSubImage3D ); - LOAD_FUNCPTR( glCreateProgram ); - LOAD_FUNCPTR( glCreateShader ); - LOAD_FUNCPTR( glCreateShaderProgramv ); - LOAD_FUNCPTR( glDeleteBuffers ); - LOAD_FUNCPTR( glDeleteFramebuffers ); - LOAD_FUNCPTR( glDeleteProgram ); - LOAD_FUNCPTR( glDeleteProgramPipelines ); - LOAD_FUNCPTR( glDeleteQueries ); - LOAD_FUNCPTR( glDeleteRenderbuffers ); - LOAD_FUNCPTR( glDeleteSamplers ); - LOAD_FUNCPTR( glDeleteShader ); - LOAD_FUNCPTR( glDeleteSync ); - LOAD_FUNCPTR( glDeleteTransformFeedbacks ); - LOAD_FUNCPTR( glDeleteVertexArrays ); - LOAD_FUNCPTR( glDepthRangef ); - LOAD_FUNCPTR( glDetachShader ); - LOAD_FUNCPTR( glDisableVertexAttribArray ); - LOAD_FUNCPTR( glDispatchCompute ); - LOAD_FUNCPTR( glDispatchComputeIndirect ); - LOAD_FUNCPTR( glDrawArraysIndirect ); - LOAD_FUNCPTR( glDrawArraysInstanced ); - LOAD_FUNCPTR( glDrawBuffers ); - LOAD_FUNCPTR( glDrawElementsIndirect ); - LOAD_FUNCPTR( glDrawElementsInstanced ); - LOAD_FUNCPTR( glDrawRangeElements ); - LOAD_FUNCPTR( glEnableVertexAttribArray ); - LOAD_FUNCPTR( glEndQuery ); - LOAD_FUNCPTR( glEndTransformFeedback ); - LOAD_FUNCPTR( glFenceSync ); - LOAD_FUNCPTR( glFlushMappedBufferRange ); - LOAD_FUNCPTR( glFramebufferParameteri ); - LOAD_FUNCPTR( glFramebufferRenderbuffer ); - LOAD_FUNCPTR( glFramebufferTexture2D ); - LOAD_FUNCPTR( glFramebufferTextureEXT ); - LOAD_FUNCPTR( glFramebufferTextureLayer ); - LOAD_FUNCPTR( glGenBuffers ); - LOAD_FUNCPTR( glGenFramebuffers ); - LOAD_FUNCPTR( glGenProgramPipelines ); - LOAD_FUNCPTR( glGenQueries ); - LOAD_FUNCPTR( glGenRenderbuffers ); - LOAD_FUNCPTR( glGenSamplers ); - LOAD_FUNCPTR( glGenTransformFeedbacks ); - LOAD_FUNCPTR( glGenVertexArrays ); - LOAD_FUNCPTR( glGenerateMipmap ); - LOAD_FUNCPTR( glGetActiveAttrib ); - LOAD_FUNCPTR( glGetActiveUniform ); - LOAD_FUNCPTR( glGetActiveUniformBlockName ); - LOAD_FUNCPTR( glGetActiveUniformBlockiv ); - LOAD_FUNCPTR( glGetActiveUniformsiv ); - LOAD_FUNCPTR( glGetAttachedShaders ); - LOAD_FUNCPTR( glGetAttribLocation ); - LOAD_FUNCPTR( glGetBooleani_v ); - LOAD_FUNCPTR( glGetBufferParameteri64v ); - LOAD_FUNCPTR( glGetBufferParameteriv ); - LOAD_FUNCPTR( glGetBufferPointerv ); - LOAD_FUNCPTR( glGetFragDataLocation ); - LOAD_FUNCPTR( glGetFramebufferAttachmentParameteriv ); - LOAD_FUNCPTR( glGetFramebufferParameteriv ); - LOAD_FUNCPTR( glGetInteger64i_v ); - LOAD_FUNCPTR( glGetInteger64v ); - LOAD_FUNCPTR( glGetIntegeri_v ); - LOAD_FUNCPTR( glGetInternalformativ ); - LOAD_FUNCPTR( glGetMultisamplefv ); - LOAD_FUNCPTR( glGetProgramBinary ); - LOAD_FUNCPTR( glGetProgramInfoLog ); - LOAD_FUNCPTR( glGetProgramInterfaceiv ); - LOAD_FUNCPTR( glGetProgramPipelineInfoLog ); - LOAD_FUNCPTR( glGetProgramPipelineiv ); - LOAD_FUNCPTR( glGetProgramResourceIndex ); - LOAD_FUNCPTR( glGetProgramResourceLocation ); - LOAD_FUNCPTR( glGetProgramResourceName ); - LOAD_FUNCPTR( glGetProgramResourceiv ); - LOAD_FUNCPTR( glGetProgramiv ); - LOAD_FUNCPTR( glGetQueryObjectuiv ); - LOAD_FUNCPTR( glGetQueryiv ); - LOAD_FUNCPTR( glGetRenderbufferParameteriv ); - LOAD_FUNCPTR( glGetSamplerParameterfv ); - LOAD_FUNCPTR( glGetSamplerParameteriv ); - LOAD_FUNCPTR( glGetShaderInfoLog ); - LOAD_FUNCPTR( glGetShaderPrecisionFormat ); - LOAD_FUNCPTR( glGetShaderSource ); - LOAD_FUNCPTR( glGetShaderiv ); - LOAD_FUNCPTR( glGetStringi ); - LOAD_FUNCPTR( glGetSynciv ); - LOAD_FUNCPTR( glGetTexParameterIivEXT ); - LOAD_FUNCPTR( glGetTexParameterIuivEXT ); - LOAD_FUNCPTR( glGetTransformFeedbackVarying ); - LOAD_FUNCPTR( glGetUniformBlockIndex ); - LOAD_FUNCPTR( glGetUniformIndices ); - LOAD_FUNCPTR( glGetUniformLocation ); - LOAD_FUNCPTR( glGetUniformfv ); - LOAD_FUNCPTR( glGetUniformiv ); - LOAD_FUNCPTR( glGetUniformuiv ); - LOAD_FUNCPTR( glGetVertexAttribIiv ); - LOAD_FUNCPTR( glGetVertexAttribIuiv ); - LOAD_FUNCPTR( glGetVertexAttribPointerv ); - LOAD_FUNCPTR( glGetVertexAttribfv ); - LOAD_FUNCPTR( glGetVertexAttribiv ); - LOAD_FUNCPTR( glInvalidateFramebuffer ); - LOAD_FUNCPTR( glInvalidateSubFramebuffer ); - LOAD_FUNCPTR( glIsBuffer ); - LOAD_FUNCPTR( glIsFramebuffer ); - LOAD_FUNCPTR( glIsProgram ); - LOAD_FUNCPTR( glIsProgramPipeline ); - LOAD_FUNCPTR( glIsQuery ); - LOAD_FUNCPTR( glIsRenderbuffer ); - LOAD_FUNCPTR( glIsSampler ); - LOAD_FUNCPTR( glIsShader ); - LOAD_FUNCPTR( glIsSync ); - LOAD_FUNCPTR( glIsTransformFeedback ); - LOAD_FUNCPTR( glIsVertexArray ); - LOAD_FUNCPTR( glLinkProgram ); - LOAD_FUNCPTR( glMapBufferRange ); - LOAD_FUNCPTR( glMemoryBarrier ); - LOAD_FUNCPTR( glMemoryBarrierByRegion ); - LOAD_FUNCPTR( glPauseTransformFeedback ); - LOAD_FUNCPTR( glProgramBinary ); - LOAD_FUNCPTR( glProgramParameteri ); - LOAD_FUNCPTR( glProgramUniform1f ); - LOAD_FUNCPTR( glProgramUniform1fv ); - LOAD_FUNCPTR( glProgramUniform1i ); - LOAD_FUNCPTR( glProgramUniform1iv ); - LOAD_FUNCPTR( glProgramUniform1ui ); - LOAD_FUNCPTR( glProgramUniform1uiv ); - LOAD_FUNCPTR( glProgramUniform2f ); - LOAD_FUNCPTR( glProgramUniform2fv ); - LOAD_FUNCPTR( glProgramUniform2i ); - LOAD_FUNCPTR( glProgramUniform2iv ); - LOAD_FUNCPTR( glProgramUniform2ui ); - LOAD_FUNCPTR( glProgramUniform2uiv ); - LOAD_FUNCPTR( glProgramUniform3f ); - LOAD_FUNCPTR( glProgramUniform3fv ); - LOAD_FUNCPTR( glProgramUniform3i ); - LOAD_FUNCPTR( glProgramUniform3iv ); - LOAD_FUNCPTR( glProgramUniform3ui ); - LOAD_FUNCPTR( glProgramUniform3uiv ); - LOAD_FUNCPTR( glProgramUniform4f ); - LOAD_FUNCPTR( glProgramUniform4fv ); - LOAD_FUNCPTR( glProgramUniform4i ); - LOAD_FUNCPTR( glProgramUniform4iv ); - LOAD_FUNCPTR( glProgramUniform4ui ); - LOAD_FUNCPTR( glProgramUniform4uiv ); - LOAD_FUNCPTR( glProgramUniformMatrix2fv ); - LOAD_FUNCPTR( glProgramUniformMatrix2x3fv ); - LOAD_FUNCPTR( glProgramUniformMatrix2x4fv ); - LOAD_FUNCPTR( glProgramUniformMatrix3fv ); - LOAD_FUNCPTR( glProgramUniformMatrix3x2fv ); - LOAD_FUNCPTR( glProgramUniformMatrix3x4fv ); - LOAD_FUNCPTR( glProgramUniformMatrix4fv ); - LOAD_FUNCPTR( glProgramUniformMatrix4x2fv ); - LOAD_FUNCPTR( glProgramUniformMatrix4x3fv ); - LOAD_FUNCPTR( glReleaseShaderCompiler ); - LOAD_FUNCPTR( glRenderbufferStorage ); - LOAD_FUNCPTR( glRenderbufferStorageMultisample ); - LOAD_FUNCPTR( glResumeTransformFeedback ); - LOAD_FUNCPTR( glSampleCoverage ); - LOAD_FUNCPTR( glSampleMaski ); - LOAD_FUNCPTR( glSamplerParameterf ); - LOAD_FUNCPTR( glSamplerParameterfv ); - LOAD_FUNCPTR( glSamplerParameteri ); - LOAD_FUNCPTR( glSamplerParameteriv ); - LOAD_FUNCPTR( glShaderBinary ); - LOAD_FUNCPTR( glShaderSource ); - LOAD_FUNCPTR( glStencilFuncSeparate ); - LOAD_FUNCPTR( glStencilMaskSeparate ); - LOAD_FUNCPTR( glStencilOpSeparate ); - LOAD_FUNCPTR( glTexBufferEXT ); - LOAD_FUNCPTR( glTexImage3D ); - LOAD_FUNCPTR( glTexParameterIivEXT ); - LOAD_FUNCPTR( glTexParameterIuivEXT ); - LOAD_FUNCPTR( glTexStorage2D ); - LOAD_FUNCPTR( glTexStorage2DMultisample ); - LOAD_FUNCPTR( glTexStorage3D ); - LOAD_FUNCPTR( glTexSubImage3D ); - LOAD_FUNCPTR( glTransformFeedbackVaryings ); - LOAD_FUNCPTR( glUniform1f ); - LOAD_FUNCPTR( glUniform1fv ); - LOAD_FUNCPTR( glUniform1i ); - LOAD_FUNCPTR( glUniform1iv ); - LOAD_FUNCPTR( glUniform1ui ); - LOAD_FUNCPTR( glUniform1uiv ); - LOAD_FUNCPTR( glUniform2f ); - LOAD_FUNCPTR( glUniform2fv ); - LOAD_FUNCPTR( glUniform2i ); - LOAD_FUNCPTR( glUniform2iv ); - LOAD_FUNCPTR( glUniform2ui ); - LOAD_FUNCPTR( glUniform2uiv ); - LOAD_FUNCPTR( glUniform3f ); - LOAD_FUNCPTR( glUniform3fv ); - LOAD_FUNCPTR( glUniform3i ); - LOAD_FUNCPTR( glUniform3iv ); - LOAD_FUNCPTR( glUniform3ui ); - LOAD_FUNCPTR( glUniform3uiv ); - LOAD_FUNCPTR( glUniform4f ); - LOAD_FUNCPTR( glUniform4fv ); - LOAD_FUNCPTR( glUniform4i ); - LOAD_FUNCPTR( glUniform4iv ); - LOAD_FUNCPTR( glUniform4ui ); - LOAD_FUNCPTR( glUniform4uiv ); - LOAD_FUNCPTR( glUniformBlockBinding ); - LOAD_FUNCPTR( glUniformMatrix2fv ); - LOAD_FUNCPTR( glUniformMatrix2x3fv ); - LOAD_FUNCPTR( glUniformMatrix2x4fv ); - LOAD_FUNCPTR( glUniformMatrix3fv ); - LOAD_FUNCPTR( glUniformMatrix3x2fv ); - LOAD_FUNCPTR( glUniformMatrix3x4fv ); - LOAD_FUNCPTR( glUniformMatrix4fv ); - LOAD_FUNCPTR( glUniformMatrix4x2fv ); - LOAD_FUNCPTR( glUniformMatrix4x3fv ); - LOAD_FUNCPTR( glUnmapBuffer ); - LOAD_FUNCPTR( glUseProgram ); - LOAD_FUNCPTR( glUseProgramStages ); - LOAD_FUNCPTR( glValidateProgram ); - LOAD_FUNCPTR( glValidateProgramPipeline ); - LOAD_FUNCPTR( glVertexAttrib1f ); - LOAD_FUNCPTR( glVertexAttrib1fv ); - LOAD_FUNCPTR( glVertexAttrib2f ); - LOAD_FUNCPTR( glVertexAttrib2fv ); - LOAD_FUNCPTR( glVertexAttrib3f ); - LOAD_FUNCPTR( glVertexAttrib3fv ); - LOAD_FUNCPTR( glVertexAttrib4f ); - LOAD_FUNCPTR( glVertexAttrib4fv ); - LOAD_FUNCPTR( glVertexAttribBinding ); - LOAD_FUNCPTR( glVertexAttribDivisor ); - LOAD_FUNCPTR( glVertexAttribFormat ); - LOAD_FUNCPTR( glVertexAttribI4i ); - LOAD_FUNCPTR( glVertexAttribI4iv ); - LOAD_FUNCPTR( glVertexAttribI4ui ); - LOAD_FUNCPTR( glVertexAttribI4uiv ); - LOAD_FUNCPTR( glVertexAttribIFormat ); - LOAD_FUNCPTR( glVertexAttribIPointer ); - LOAD_FUNCPTR( glVertexAttribPointer ); - LOAD_FUNCPTR( glVertexBindingDivisor ); - LOAD_FUNCPTR( glWaitSync ); -#undef LOAD_FUNCPTR -} - static UINT android_init_pixel_formats( UINT *onscreen_count ) { EGLConfig *configs; @@ -844,29 +557,9 @@ UINT ANDROID_OpenGLInit( UINT version, struct opengl_funcs **funcs, const struct if (!p_eglInitialize( display, &major, &minor )) return 0; TRACE( "display %p version %u.%u\n", display, major, minor );
- init_opengl_funcs(); *funcs = &egl_funcs; *driver_funcs = &android_driver_funcs; return STATUS_SUCCESS; }
- -/* generate stubs for GL functions that are not exported on Android */ - -#define USE_GL_FUNC(name) \ -static void glstub_##name(void) \ -{ \ - ERR( #name " called\n" ); \ - assert( 0 ); \ - ExitProcess( 1 ); \ -} - -ALL_GL_FUNCS -#undef USE_GL_FUNC - -static struct opengl_funcs egl_funcs = -{ -#define USE_GL_FUNC(name) .p_##name = (void *)glstub_##name, - ALL_GL_FUNCS -#undef USE_GL_FUNC -}; +static struct opengl_funcs egl_funcs;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/opengl.c | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 0f6a65b0ec6..1f42ebbd6f4 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -436,9 +436,9 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void) "installed correctly\n", is_win64 ? "64-bit" : "32-bit" ); goto done; } - gl_renderer = (const char *)opengl_funcs.p_glGetString(GL_RENDERER); - gl_version = (const char *)opengl_funcs.p_glGetString(GL_VERSION); - str = (const char *) opengl_funcs.p_glGetString(GL_EXTENSIONS); + gl_renderer = (const char *)pglGetString(GL_RENDERER); + gl_version = (const char *)pglGetString(GL_VERSION); + str = (const char *) pglGetString(GL_EXTENSIONS); glExtensions = malloc( strlen(str) + sizeof(legacy_extensions) ); strcpy(glExtensions, str); strcat(glExtensions, legacy_extensions); @@ -530,31 +530,18 @@ UINT X11DRV_OpenGLInit( UINT version, struct opengl_funcs **funcs, const struct return STATUS_NOT_SUPPORTED; }
-#define USE_GL_FUNC(func) \ - if (!(opengl_funcs.p_##func = dlsym( opengl_handle, #func ))) \ + /* redirect some standard OpenGL functions */ +#define LOAD_FUNCPTR(func) \ + if (!(p##func = dlsym( opengl_handle, #func ))) \ { \ ERR( "%s not found in libGL, disabling OpenGL.\n", #func ); \ goto failed; \ } - ALL_GL_FUNCS -#undef USE_GL_FUNC - -#define LOAD_FUNCPTR( func ) \ - if (!(p##func = dlsym( opengl_handle, #func ))) \ - { \ - ERR( "%s not found in libGL, disabling OpenGL.\n", #func ); \ - goto failed; \ - } LOAD_FUNCPTR( glFinish ); LOAD_FUNCPTR( glFlush ); + LOAD_FUNCPTR( glGetString ); #undef LOAD_FUNCPTR
- /* redirect some standard OpenGL functions */ -#define REDIRECT(func) \ - do { p##func = opengl_funcs.p_##func; opengl_funcs.p_##func = w##func; } while(0) - REDIRECT( glGetString ); -#undef REDIRECT - pglXGetProcAddressARB = dlsym(opengl_handle, "glXGetProcAddressARB"); if (pglXGetProcAddressARB == NULL) { ERR("Could not find glXGetProcAddressARB in libGL, disabling OpenGL.\n"); @@ -1571,6 +1558,10 @@ static BOOL x11drv_context_destroy(void *private) static void *x11drv_get_proc_address( const char *name ) { void *ptr; + + /* redirect some standard OpenGL functions */ + if (!strcmp( name, "glGetString" )) return wglGetString; + if ((ptr = dlsym( opengl_handle, name ))) return ptr; return pglXGetProcAddressARB( (const GLubyte *)name ); }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winemac.drv/opengl.c | 59 +++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 34 deletions(-)
diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c index da748777055..522170b1a7e 100644 --- a/dlls/winemac.drv/opengl.c +++ b/dlls/winemac.drv/opengl.c @@ -97,6 +97,7 @@ static void (*pglCopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GL static void (*pglFlush)(void); static void (*pglFlushRenderAPPLE)(void); static const GLubyte *(*pglGetString)(GLenum name); +static PFN_glGetIntegerv pglGetIntegerv; static void (*pglReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); static void (*pglViewport)(GLint x, GLint y, GLsizei width, GLsizei height); @@ -1261,7 +1262,7 @@ static BOOL init_gl_info(void) return FALSE; }
- str = (const char*)opengl_funcs.p_glGetString(GL_EXTENSIONS); + str = (const char*)pglGetString(GL_EXTENSIONS); length = strlen(str) + sizeof(legacy_extensions); if (allow_vsync) length += strlen(legacy_ext_swap_control); @@ -1271,12 +1272,12 @@ static BOOL init_gl_info(void) if (allow_vsync) strcat(gl_info.glExtensions, legacy_ext_swap_control);
- opengl_funcs.p_glGetIntegerv(GL_MAX_VIEWPORT_DIMS, gl_info.max_viewport_dims); + pglGetIntegerv(GL_MAX_VIEWPORT_DIMS, gl_info.max_viewport_dims);
- str = (const char*)opengl_funcs.p_glGetString(GL_VERSION); + str = (const char*)pglGetString(GL_VERSION); sscanf(str, "%u.%u", &gl_info.max_major, &gl_info.max_minor); TRACE("GL version : %s\n", str); - TRACE("GL renderer : %s\n", opengl_funcs.p_glGetString(GL_RENDERER)); + TRACE("GL renderer : %s\n", pglGetString(GL_RENDERER));
CGLSetCurrentContext(old_context); CGLReleaseContext(context); @@ -1307,7 +1308,7 @@ static BOOL init_gl_info(void) return TRUE; }
- str = (const char*)opengl_funcs.p_glGetString(GL_VERSION); + str = (const char*)pglGetString(GL_VERSION); TRACE("Core context GL version: %s\n", str); sscanf(str, "%u.%u", &gl_info.max_major, &gl_info.max_minor); CGLSetCurrentContext(old_context); @@ -1761,7 +1762,7 @@ static const char* get_gl_string(CGLPixelFormatObj pixel_format, GLenum name) err = CGLSetCurrentContext(context); if (err == kCGLNoError) { - ret = (const char*)opengl_funcs.p_glGetString(name); + ret = (const char*)pglGetString(name); CGLSetCurrentContext(old_context); } else @@ -2503,7 +2504,7 @@ static BOOL macdrv_wglQueryCurrentRendererIntegerWINE(GLenum attribute, GLuint *
if (attribute == WGL_RENDERER_VERSION_WINE) { - if (!parse_renderer_version((const char*)opengl_funcs.p_glGetString(GL_VERSION), value)) + if (!parse_renderer_version((const char*)pglGetString(GL_VERSION), value)) get_fallback_renderer_version(value); TRACE("WGL_RENDERER_VERSION_WINE -> %u.%u.%u\n", value[0], value[1], value[2]); return TRUE; @@ -2577,14 +2578,14 @@ static const char *macdrv_wglQueryCurrentRendererStringWINE(GLenum attribute) { case WGL_RENDERER_DEVICE_ID_WINE: { - ret = (const char*)opengl_funcs.p_glGetString(GL_RENDERER); + ret = (const char*)pglGetString(GL_RENDERER); TRACE("WGL_RENDERER_DEVICE_ID_WINE -> %s\n", debugstr_a(ret)); break; }
case WGL_RENDERER_VENDOR_ID_WINE: { - ret = (const char*)opengl_funcs.p_glGetString(GL_VENDOR); + ret = (const char*)pglGetString(GL_VENDOR); TRACE("WGL_RENDERER_VENDOR_ID_WINE -> %s\n", debugstr_a(ret)); break; } @@ -2791,39 +2792,21 @@ UINT macdrv_OpenGLInit(UINT version, struct opengl_funcs **funcs, const struct o return STATUS_NOT_SUPPORTED; }
-#define USE_GL_FUNC(func) \ - if (!(opengl_funcs.p_##func = dlsym(opengl_handle, #func))) \ - { \ - ERR( "%s not found in OpenGL, disabling.\n", #func ); \ - goto failed; \ - } - ALL_GL_FUNCS -#undef USE_GL_FUNC - if (!init_gl_info()) goto failed;
- /* redirect some standard OpenGL functions */ -#define REDIRECT(func) \ - do { p##func = opengl_funcs.p_##func; opengl_funcs.p_##func = macdrv_##func; } while(0) - REDIRECT(glCopyPixels); - REDIRECT(glGetString); - REDIRECT(glReadPixels); - REDIRECT(glViewport); -#undef REDIRECT - - /* redirect some OpenGL extension functions */ -#define REDIRECT(func) \ - do { if ((p##func = dlsym(opengl_handle, #func))) { opengl_funcs.p_##func = macdrv_##func; } } while(0) - REDIRECT(glCopyColorTable); -#undef REDIRECT - #define LOAD_FUNCPTR(func) \ if (!(p##func = dlsym(opengl_handle, #func))) \ { \ - ERR( "%s not found in OpenGL, disabling.\n", #func ); \ + ERR( "%s not found in libGL, disabling OpenGL.\n", #func ); \ goto failed; \ } + LOAD_FUNCPTR(glCopyPixels); + LOAD_FUNCPTR(glGetIntegerv); + LOAD_FUNCPTR(glGetString); + LOAD_FUNCPTR(glReadPixels); + LOAD_FUNCPTR(glViewport); + LOAD_FUNCPTR(glCopyColorTable); LOAD_FUNCPTR(glFlush); if (gluCheckExtension((GLubyte*)"GL_APPLE_flush_render", (GLubyte*)gl_info.glExtensions)) LOAD_FUNCPTR(glFlushRenderAPPLE); @@ -3034,6 +3017,14 @@ static BOOL macdrv_context_share(void *src_private, void *dst_private)
static void *macdrv_get_proc_address(const char *name) { + /* redirect some standard OpenGL functions */ + if (!strcmp(name, "glCopyPixels")) return macdrv_glCopyPixels; + if (!strcmp(name, "glGetString")) return macdrv_glGetString; + if (!strcmp(name, "glReadPixels")) return macdrv_glReadPixels; + if (!strcmp(name, "glViewport")) return macdrv_glViewport; + + /* redirect some OpenGL extension functions */ + if (!strcmp(name, "glCopyColorTable")) return macdrv_glCopyColorTable; return dlsym(opengl_handle, name); }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winewayland.drv/opengl.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/dlls/winewayland.drv/opengl.c b/dlls/winewayland.drv/opengl.c index f7c68b6a2e3..ef7c348a584 100644 --- a/dlls/winewayland.drv/opengl.c +++ b/dlls/winewayland.drv/opengl.c @@ -517,6 +517,8 @@ static BOOL wayland_context_destroy(void *private)
static void *wayland_get_proc_address(const char *name) { + if (!strcmp(name, "glClear")) return wayland_glClear; + return p_eglGetProcAddress(name); }
@@ -805,18 +807,7 @@ static void register_extension(const char *ext)
static BOOL init_opengl_funcs(void) { -#define USE_GL_FUNC(func) \ - if (!(opengl_funcs.p_##func = (void *)p_eglGetProcAddress(#func))) \ - { \ - ERR("%s not found, disabling OpenGL.\n", #func); \ - return FALSE; \ - } - ALL_GL_FUNCS -#undef USE_GL_FUNC - - p_glClear = opengl_funcs.p_glClear; - opengl_funcs.p_glClear = wayland_glClear; - + p_glClear = (void *)p_eglGetProcAddress("glClear"); return TRUE; }