[D3D8] Added retreival of ATI info

Christian Costa titan.costa at wanadoo.fr
Fri May 21 07:10:39 CDT 2004


Hi,

Changelog:
Added retreival of ATI info.

Christian Costa   titan.costa at wanadoo.fr

-------------- next part --------------
Index: d3dcore_gl.h
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/d3dcore_gl.h,v
retrieving revision 1.15
diff -u -r1.15 d3dcore_gl.h
--- d3dcore_gl.h	10 May 2004 19:57:51 -0000	1.15
+++ d3dcore_gl.h	21 May 2004 10:01:42 -0000
@@ -703,6 +703,7 @@
 typedef enum _GL_Cards {
   CARD_WINE  = 0x0,
   CARD_ATI_RADEON_8500 = 0x514c,
+  CARD_ATI_RADEON_9700PRO = 0x4e44,
   CARD_ATI_RADEON_9800PRO = 0x4e48,
   CARD_NVIDIA_GEFORCE4_TI4600 = 0x0250,
   CARD_NVIDIA_GEFORCEFX_5900ULTRA = 0x0330
Index: directx.c
===================================================================
RCS file: /home/wine/wine/dlls/d3d8/directx.c,v
retrieving revision 1.70
diff -u -r1.70 directx.c
--- directx.c	19 May 2004 04:33:42 -0000	1.70
+++ directx.c	21 May 2004 10:01:46 -0000
@@ -227,7 +227,7 @@
         /* If we don't know the device settings, go query them now */
         if (This->isGLInfoValid == FALSE) {
 	  WineD3D_Context* ctx = WineD3DCreateFakeGLContext();
-	  if (NULL != ctx) IDirect3D8Impl_FillGLCaps(iface, NULL);
+	  if (NULL != ctx) IDirect3D8Impl_FillGLCaps(iface, ctx->display);
 	  WineD3DReleaseFakeGLContext(ctx);
 	}
         if (This->isGLInfoValid == TRUE) {
@@ -884,7 +884,7 @@
     int major, minor;
     ICOM_THIS(IDirect3D8Impl,iface);
 
-    if (This->gl_info.bIsFilled) return ;
+    if (This->gl_info.bIsFilled) return;
     This->gl_info.bIsFilled = 1;
 
     TRACE_(d3d_caps)("(%p, %p)\n", This, display);
@@ -936,12 +936,38 @@
 	break;
       }
     case VENDOR_ATI:
+      major = minor = 0;
+      gl_string_cursor = strchr(gl_string, '-');
+      if (gl_string_cursor++) {
+        int error = 0;
+        /* Check if version number is of the form x.y.z */
+        if (*gl_string_cursor > '9' && *gl_string_cursor < '0')
+          error = 1;
+        if (!error && *(gl_string_cursor+2) > '9' && *(gl_string_cursor+2) < '0')
+          error = 1;
+        if (!error && *(gl_string_cursor+4) > '9' && *(gl_string_cursor+4) < '0')
+          error = 1;
+	if (!error && *(gl_string_cursor+1) != '.' && *(gl_string_cursor+3) != '.')
+          error = 1;
+        /* Mark version number as malformed */
+        if (error)
+          gl_string_cursor = 0;
+      }
+      if (!gl_string_cursor)
+        WARN_(d3d_caps)("malformed GL_VERSION (%s)\n", debugstr_a(gl_string));
+      else {
+        major = *gl_string_cursor - '0';
+        minor = (*(gl_string_cursor+2) - '0') * 256 + (*(gl_string_cursor+4) - '0');
+      }      
+      break;
     default:
       major = 0;
       minor = 9;
     }
     This->gl_info.gl_driver_version = MAKEDWORD_VERSION(major, minor);
 
+    FIXME_(d3d_caps)("found GL_VERSION  (%s)->(0x%08lx)\n", debugstr_a(gl_string), This->gl_info.gl_driver_version);
+
     gl_string = glGetString(GL_RENDERER);
     strcpy(This->gl_info.gl_renderer, gl_string);
 
@@ -956,18 +982,24 @@
       }
       break;
     case VENDOR_ATI:
-      This->gl_info.gl_card = CARD_ATI_RADEON_8500;
+      if (strstr(This->gl_info.gl_renderer, "RADEON 9800 PRO")) {
+        This->gl_info.gl_card = CARD_ATI_RADEON_9800PRO;
+      } else if (strstr(This->gl_info.gl_renderer, "RADEON 9700 PRO")) {
+        This->gl_info.gl_card = CARD_ATI_RADEON_9700PRO;
+      } else {
+        This->gl_info.gl_card = CARD_ATI_RADEON_8500;
+      }
       break;
     default:
       This->gl_info.gl_card = CARD_WINE;
       break;
     }
 
-    FIXME_(d3d_caps)("found GL_VERSION  (0x%08lx)\n", This->gl_info.gl_driver_version);
     FIXME_(d3d_caps)("found GL_RENDERER (%s)->(0x%04x)\n", debugstr_a(This->gl_info.gl_renderer), This->gl_info.gl_card);
-    /* 
+
+    /*
      * Initialize openGL extension related variables
-     *  with Default values 
+     *  with Default values
      */
     memset(&This->gl_info.supported, 0, sizeof(This->gl_info.supported));
     This->gl_info.max_textures   = 1;


More information about the wine-patches mailing list