Hi, Fallout 3 and maybe other games or D3D apps needs such special
settings, this patch should be ok, it is well tested.

This patch is not hack!

New wine registry settings:
VideoDriver
VideoDescription

Patch is for current (14.03.2009) git.

PS: For Fallout 3 you should use registry settings (or similar):
"VideoDescription"="NVIDIA GeForce 9600 GT"
"VideoDriver"="nv4_disp.dll"

Mirek Slugen

diff -Naur wine.old/dlls/wined3d/directx.c wine/dlls/wined3d/directx.c
--- wine.old/dlls/wined3d/directx.c	2008-11-07 18:01:46.000000000 +0100
+++ wine/dlls/wined3d/directx.c	2008-11-07 18:02:05.000000000 +0100
@@ -4247,8 +4247,19 @@
             goto nogl_adapter;
         }
 
-        adapter->driver = "Display";
-        adapter->description = "Direct3D HAL";
+        /* Use VideoDriver registry setting when set */
+        if(wined3d_settings.video_driver) {
+            adapter->driver = wined3d_settings.video_driver;
+        } else {
+            adapter->driver = "Display";
+        }
+
+        /* Use VideoDescription registry setting when set */
+        if(wined3d_settings.video_description) {
+            adapter->description = wined3d_settings.video_description;
+        } else {
+            adapter->description = "Direct3D HAL";
+        }
 
         /* Use the VideoRamSize registry setting when set */
         if(wined3d_settings.emulated_textureram)
@@ -4450,8 +4461,22 @@
     This->adapters[0].monitorPoint.x = -1;
     This->adapters[0].monitorPoint.y = -1;
 
-    This->adapters[0].driver = "Display";
-    This->adapters[0].description = "WineD3D DirectDraw Emulation";
+
+    /* Use VideoDriver registry setting when set */
+    if(wined3d_settings.video_driver) {
+        This->adapters[0].driver = wined3d_settings.video_driver;
+    } else {
+        This->adapters[0].driver = "Display";
+    }
+
+    /* Use VideoDescription registry setting when set */
+    if(wined3d_settings.video_description) {
+        This->adapters[0].description = wined3d_settings.video_description;
+    } else {
+        This->adapters[0].description = "WineD3D DirectDraw Emulation";
+    }
+
+    /* Use VideoRamSize registry setting when set */
     if(wined3d_settings.emulated_textureram) {
         This->adapters[0].TextureRam = wined3d_settings.emulated_textureram;
     } else {
diff -Naur wine.old/dlls/wined3d/wined3d_main.c wine/dlls/wined3d/wined3d_main.c
--- wine.old/dlls/wined3d/wined3d_main.c	2008-10-24 15:13:40.000000000 +0200
+++ wine/dlls/wined3d/wined3d_main.c	2008-11-07 17:48:16.000000000 +0100
@@ -304,6 +304,18 @@
                 wined3d_settings.allow_multisampling = TRUE;
             }
         }
+        if ( !get_config_key( hkey, appkey, "VideoDriver", buffer, size) )
+        {
+            TRACE("Video Driver name: %s\n",buffer);
+            wined3d_settings.video_driver = HeapAlloc(GetProcessHeap(), 0, strlen(buffer) + 1);
+            if(wined3d_settings.video_driver ) strcpy(wined3d_settings.video_driver, buffer);
+        }
+        if ( !get_config_key( hkey, appkey, "VideoDescription", buffer, size) )
+        {
+            TRACE("Video Description: %s\n",buffer);
+            wined3d_settings.video_description = HeapAlloc(GetProcessHeap(), 0, strlen(buffer) + 1);
+            if(wined3d_settings.video_description ) strcpy(wined3d_settings.video_description, buffer);
+        }
     }
     if (wined3d_settings.vs_mode == VS_HW)
         TRACE("Allow HW vertex shaders\n");
diff -Naur wine.old/dlls/wined3d/wined3d_private.h wine/dlls/wined3d/wined3d_private.h
--- wine.old/dlls/wined3d/wined3d_private.h	2008-10-28 16:02:51.000000000 +0100
+++ wine/dlls/wined3d/wined3d_private.h	2008-11-07 17:56:42.000000000 +0100
@@ -297,6 +297,8 @@
 /* Memory tracking and object counting */
   unsigned int emulated_textureram;
   char *logo;
+  char *video_driver;
+  char *video_description;
   int allow_multisampling;
 } wined3d_settings_t;
 


Reply via email to