From 3886ee9fae0a90cb783127ca1db2e1f029d8d655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sun, 1 Jun 2014 22:55:11 +0200 Subject: [PATCH] Add patch to detect direct rendering in Wine applications. --- ...cate-direct-rendering-through-OpenGL.patch | 51 +++++++++++++++++++ .../255473fa-4e0a-4f51-952b-4deecc1a2181.def | 4 ++ patches/patch-list.patch | 3 +- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 patches/97-Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch create mode 100644 patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def diff --git a/patches/97-Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch b/patches/97-Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch new file mode 100644 index 00000000..e10b6f08 --- /dev/null +++ b/patches/97-Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch @@ -0,0 +1,51 @@ +From b6bd496bacbe8eb82dfa53148e92474c9a7511bb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Sun, 1 Jun 2014 22:51:32 +0200 +Subject: winex11.drv: Indicate direct rendering through OpenGL extension + +--- + dlls/winex11.drv/opengl.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c +index 71af3db..6f3aca0 100644 +--- a/dlls/winex11.drv/opengl.c ++++ b/dlls/winex11.drv/opengl.c +@@ -440,6 +440,7 @@ static int GLXErrorHandler(Display *dpy, XErrorEvent *event, void *arg) + static BOOL X11DRV_WineGL_InitOpenglInfo(void) + { + static const char legacy_extensions[] = " WGL_EXT_extensions_string WGL_EXT_swap_control"; ++ static const char direct_extension[] = " WINE_EXT_direct_rendering"; + + int screen = DefaultScreen(gdi_display); + Window win = 0, root = 0; +@@ -491,10 +492,16 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void) + } + gl_renderer = (const char *)opengl_funcs.gl.p_glGetString(GL_RENDERER); + WineGLInfo.glVersion = (const char *) opengl_funcs.gl.p_glGetString(GL_VERSION); ++ WineGLInfo.glxDirect = pglXIsDirect(gdi_display, ctx); + str = (const char *) opengl_funcs.gl.p_glGetString(GL_EXTENSIONS); +- WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions)); ++ if (WineGLInfo.glxDirect) ++ WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions)+sizeof(direct_extension)); ++ else ++ WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions)); + strcpy(WineGLInfo.glExtensions, str); + strcat(WineGLInfo.glExtensions, legacy_extensions); ++ if (WineGLInfo.glxDirect) ++ strcat(WineGLInfo.glExtensions, direct_extension); + + /* Get the common GLX version supported by GLX client and server ( major/minor) */ + pglXQueryVersion(gdi_display, &WineGLInfo.glxVersion[0], &WineGLInfo.glxVersion[1]); +@@ -508,7 +515,7 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void) + WineGLInfo.glxClientExtensions = pglXGetClientString(gdi_display, GLX_EXTENSIONS); + + WineGLInfo.glxExtensions = pglXQueryExtensionsString(gdi_display, screen); +- WineGLInfo.glxDirect = pglXIsDirect(gdi_display, ctx); ++ + + TRACE("GL version : %s.\n", WineGLInfo.glVersion); + TRACE("GL renderer : %s.\n", gl_renderer); +-- +1.8.3.2 + diff --git a/patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def b/patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def new file mode 100644 index 00000000..6c7c0b74 --- /dev/null +++ b/patches/97-Pipelight/255473fa-4e0a-4f51-952b-4deecc1a2181.def @@ -0,0 +1,4 @@ +Revision: 1 +Author: Michael Müller +Title: Indicate direct rendering through OpenGL extension. + diff --git a/patches/patch-list.patch b/patches/patch-list.patch index 50d532ef..1a411c30 100644 --- a/patches/patch-list.patch +++ b/patches/patch-list.patch @@ -6,7 +6,7 @@ diff --git a/libs/wine/config.c b/libs/wine/config.c index a273502..5fa0cd5 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c -@@ -478,6 +478,44 @@ const char *wine_get_version(void) +@@ -478,6 +478,45 @@ const char *wine_get_version(void) return PACKAGE_VERSION; } @@ -32,6 +32,7 @@ index a273502..5fa0cd5 100644 + { "e7581ed7-12b3-4ed3-835b-5a62afbf9c85:3", "Sebastian Lackner", "Use lockfree implementation for get_cached_fd." }, + { "0b21d7ac-0387-4493-aa38-fbafe3e749f5:2", "Michael Müller", "Decrease minimum SetTimer interval to 5 ms." }, + { "2394843e-2bc4-4fa4-8368-1ef32093b89e:1", "Michael Müller", "Allow changing strict draw ordering through an exported function." }, ++ { "255473fa-4e0a-4f51-952b-4deecc1a2181:1", "Michael Müller", "Indicate direct rendering through OpenGL extension." }, + { "59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0:1", "Sebastian Lackner", "Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command." }, + { "325645ba-d39d-4de4-9c94-3fe694eedaab:1", "Sebastian Lackner", "kernel32: Silence repeated CompareStringEx FIXME." }, + { "acff3012-0f75-4710-9941-08b5ce4c61f3:2", "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME." },