Roderick Colenbrander : wgl: Add more OpenGL diagnosing checks.

Alexandre Julliard julliard at winehq.org
Mon Mar 15 12:19:31 CDT 2010


Module: wine
Branch: master
Commit: 22a247047dd5b20ae074902eecad0a9b86499812
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=22a247047dd5b20ae074902eecad0a9b86499812

Author: Roderick Colenbrander <thunderbird2k at gmail.com>
Date:   Thu Mar 11 14:10:51 2010 +0100

wgl: Add more OpenGL diagnosing checks.

---

 dlls/winex11.drv/opengl.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index e784844..859cf94 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -375,6 +375,21 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void)
         if(!getsockname(fd, (struct sockaddr *)&uaddr, &uaddrlen) && uaddr.sun_family == AF_UNIX)
             ERR_(winediag)("Direct rendering is disabled, most likely your OpenGL drivers haven't been installed correctly\n");
     }
+    else
+    {
+        /* In general you would expect that if direct rendering is returned, that you receive hardware
+         * accelerated OpenGL rendering. The definition of direct rendering is that rendering is performed
+         * client side without sending all GL commands to X using the GLX protocol. When Mesa falls back to
+         * software rendering, it shows direct rendering.
+         *
+         * Depending on the cause of software rendering a different rendering string is shown. In case Mesa fails
+         * to load a DRI module 'Software Rasterizer' is returned. When Mesa is compiled as a OpenGL reference driver
+         * it shows 'Mesa X11'.
+         */
+        const char *gl_renderer = (const char *)pglGetString(GL_RENDERER);
+        if(!strcmp(gl_renderer, "Software Rasterizer") || !strcmp(gl_renderer, "Mesa X11"))
+            ERR_(winediag)("The Mesa OpenGL driver is using software rendering, most likely your OpenGL drivers haven't been installed correctly\n");
+    }
 
     if(vis) XFree(vis);
     if(ctx) {




More information about the wine-cvs mailing list