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;