http://bugs.winehq.org/show_bug.cgi?id=33552
Bug #: 33552 Summary: Dragon Age 2 doesn't detect my graphic card VRAM and driver Product: Wine Version: 1.5.29 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: scrimekiler@yahoo.fr Classification: Unclassified
Created attachment 44410 --> http://bugs.winehq.org/attachment.cgi?id=44410 Screenshot of the detection problem
Using a wine patch (which will be included in 1.5.30) made me able to have my graphic card name detected.
However, Dragon Age 2 doesn't detect my nvidia graphic driver and tells it's too old to make me able to change some graphic options.
Card : Nvidia Gefore GT 630, driver 313.30 Gentoo 32 bits, kernel 3.7.10
http://bugs.winehq.org/show_bug.cgi?id=33552
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |directx-d3d Severity|normal |minor
--- Comment #1 from Austin English austinenglish@gmail.com 2013-05-09 13:31:28 CDT --- You can set the video memory in the registry.
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #2 from Someone scrimekiler@yahoo.fr 2013-05-09 13:55:49 CDT --- (In reply to comment #1)
You can set the video memory in the registry.
Already set, also the vendorID and modelID
http://bugs.winehq.org/show_bug.cgi?id=33552
Someone scrimekiler@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #3 from Someone scrimekiler@yahoo.fr 2013-07-13 06:25:39 CDT --- Fixed with a patch from Austin English applied wine since one of the 1.5 versions :)
http://bugs.winehq.org/show_bug.cgi?id=33552
Someone scrimekiler@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED Status|RESOLVED |UNCONFIRMED Resolution|FIXED |
--- Comment #3 from Someone scrimekiler@yahoo.fr 2013-07-13 06:25:39 CDT --- Fixed with a patch from Austin English applied wine since one of the 1.5 versions :)
--- Comment #4 from Someone scrimekiler@yahoo.fr 2013-07-13 06:36:22 CDT --- Sorry, not 100% fixed, my VRAM is not detected correctly
http://bugs.winehq.org/show_bug.cgi?id=33552
Someone scrimekiler@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- Platform|x86 |x86-64
http://bugs.winehq.org/show_bug.cgi?id=33552
Someone scrimekiler@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|1.5.29 |1.6-rc5
http://bugs.winehq.org/show_bug.cgi?id=33552
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|1.6-rc5 |1.5.29
http://bugs.winehq.org/show_bug.cgi?id=33552
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #5 from Anastasius Focht focht@gmx.net 2013-12-05 11:45:20 CST --- @Someone
--- quote --- Card : Nvidia Gefore GT 630, driver 313.30 --- quote ---
--- quote --- Sorry, not 100% fixed, my VRAM is not detected correctly --- quote ---
Your card is listed here: http://source.winehq.org/git/wine.git/blob/57d7f74d34f2ce0968af2eb14c7e866d6...
--- snip --- 1249 {HW_VENDOR_NVIDIA, CARD_NVIDIA_GEFORCE_GT630, "NVIDIA GeForce GT 630", DRIVER_NVIDIA_GEFORCE6, 1024}, --- snip ---
CARD_NVIDIA_GEFORCE_GT630 -> pci deviceid = 0x0f00
Verify (it should display the same id):
--- snip --- $ lspci -nn | grep VGA | grep NVIDIA | cut -d: -f 4 | cut -d ']' -f 1 --- snip ---
It seems this graphics card series comes with 1 GiB, 2 GiB and 4 GiB DDR3 SDRAM. If you have more than 1 GiB you have to put an override in registry to tell Wine.
For example 2 GiB (to override Wine's default value of 1 GiB for GT630 entry):
--- quote --- [HKEY_CURRENT_USER\Software\Wine\Direct3D] "VideoMemorySize"=dword:00000800 --- quote ---
Regards
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #6 from Someone scrimekiler@yahoo.fr 2013-12-05 15:41:20 CST ---
--- snip --- $ lspci -nn | grep VGA | grep NVIDIA | cut -d: -f 4 | cut -d ']' -f 1 --- snip ---
Yes, result of lspci is 0f00
It seems this graphics card series comes with 1 GiB, 2 GiB and 4 GiB DDR3 SDRAM. If you have more than 1 GiB you have to put an override in registry to tell Wine.
Yes, I have 2GB
For example 2 GiB (to override Wine's default value of 1 GiB for GT630 entry):
--- quote --- [HKEY_CURRENT_USER\Software\Wine\Direct3D] "VideoMemorySize"=dword:00000800 --- quote ---
Added VideoMemorySize as "string" with value : "2000"
Game still detect "VRAM=-2147483648 bytes" and driver : 266.58 while I'm actually now using 331.20 and wine 1.7.4
Anyway it's not a big deal, only the game hardware dectection summary.The game works very fast for me without any graphic issue.
This bug could even be affected to "trivial" instead of "minor"
On the other side, bugs 33545 and 33553 are affecting me and are really more annoying.
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #7 from Anastasius Focht focht@gmx.net 2013-12-05 16:00:31 CST --- Hello Someone,
--- quote --- Added VideoMemorySize as "string" with value : "2000" --- quote ---
yes, vram is of 'string' type not dword, sorry.
Verify with the following command in your WINEPREFIX if the vram override is active:
--- snip --- $ WINEDEBUG=+d3d wine dxdiag 2>&1 | grep emulated_textureram trace:d3d:wined3d_dll_init Use 2000MB = 2097152000 byte for emulated_textureram --- snip ---
You can do the same with the Dragon Age 2 diagnostics tool by replacing 'dxdiag' with the name of DA2 system info executable.
Regards
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #8 from Someone scrimekiler@yahoo.fr 2013-12-05 16:08:24 CST --- (In reply to comment #7)
WINEDEBUG=+d3d wine dxdiag 2>&1 | grep emulated_textureram result : trace:d3d:wined3d_dll_init Use 2000MB = 2097152000 byte for emulated_textureram
You can do the same with the Dragon Age 2 diagnostics tool by replacing 'dxdiag' with the name of DA2 system info executable.
Do you mean DA2 is using dxdiag to give hardware/drivers info ? Or do you mean I should try to do it to see if it gives the same result ?
Wine dxdiag results in a lot of error messages
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #9 from Anastasius Focht focht@gmx.net 2013-12-05 19:14:13 CST --- Hello Someone,
after investigating a bit more I think your 2 GB setting triggers either a bug in the diagnostics tool or Wine. There seems to be some LONG type overflow/mishandling.
The maximum value without overflow: 1953 MB -> "1.99 GB"
--- snip --- $ WINEDEBUG=+d3d wine DragonAge2Config.exe 2>&1 | grep emulated_textureram trace:d3d:wined3d_dll_init Use = 2047868928 byte for emulated_textureram --- snip ---
With 1954 MB it overflows, shown as "-2147483648 bytes"
--- snip --- $ WINEDEBUG=+d3d wine DragonAge2Config.exe 2>&1 | grep emulated_textureram trace:d3d:wined3d_dll_init Use 1954MB = 2048917504 byte for emulated_textureram --- snip ---
"vram.desc": "2048.9 MB" (dxdiagn "szDisplayMemoryEnglish" 2048917504/1000000.0f)
Do you have a Windows machine with a graphics card >= 2 GB VRAM where you can run the tool? I think the tool is stand-alone and you can copy it over without the need to install the game. It would save some time if you are able to verify that Windows shows the correct value or same overflow.
Regards
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #10 from Henri Verbeet hverbeet@gmail.com 2013-12-05 19:50:50 CST --- (In reply to comment #9)
after investigating a bit more I think your 2 GB setting triggers either a bug in the diagnostics tool or Wine. There seems to be some LONG type overflow/mishandling.
The maximum value without overflow: 1953 MB -> "1.99 GB"
--- snip --- $ WINEDEBUG=+d3d wine DragonAge2Config.exe 2>&1 | grep emulated_textureram trace:d3d:wined3d_dll_init Use = 2047868928 byte for emulated_textureram --- snip ---
With 1954 MB it overflows, shown as "-2147483648 bytes"
Well, the TRACE uses %d, which is wrong of course, although I'm not sure why that would overflow at 1954 instead of 2048. (Unless that's from the diagnostics tool, in which case 1954 MiB is about 2048 MB.)
Most of the actual APIs like IDirectDraw7::GetAvailableVidMem() and IDirect3DDevice9::GetAvailableTextureMem() return a number of bytes in a DWORD or UINT, which should work up to about 4 GiB.
http://bugs.winehq.org/show_bug.cgi?id=33552
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Summary|Dragon Age 2 doesn't detect |BioWare 'DragonAge2Config' |my graphic card VRAM and |tool doesn't detect |driver |graphics card VRAM properly Ever Confirmed|0 |1
--- Comment #11 from Anastasius Focht focht@gmx.net 2013-12-06 08:08:58 CST --- Hello Henri
--- quote --- Most of the actual APIs like IDirectDraw7::GetAvailableVidMem() and IDirect3DDevice9::GetAvailableTextureMem() return a number of bytes in a DWORD or UINT, which should work up to about 4 GiB. --- quote ---
it seems the tool uses more than one method to query the card properties (device name, -id, description, manufacturer, refresh rate, resolution, vram) ... from a quick glance:
- WMI - DXGI - dxdiag - DirectDraw/D3D9
For example WMI:
--- snip --- ... trace:wbemprox:wbem_services_ExecQuery 0x1fabc8, L"WQL", L"SELECT * FROM Win32_VideoController", 0x00000030, (nil), 0xe1cbb8 trace:wbemprox:grab_table returning 0x7c780230 trace:wbemprox:parse_query wql_parse returned 0 fixme:win:EnumDisplayDevicesW ((null),0,0xe1c100,0x00000000), stub! trace:wbemprox:fill_videocontroller created 1 rows trace:wbemprox:EnumWbemClassObject_create (nil), 0xe1cbb8 trace:wbemprox:EnumWbemClassObject_create returning iface 0x1cc2d0 trace:wbemprox:enum_class_object_Next 0x1cc2d0, -1, 1, 0xe1cbb0, 0xe1cbb4 trace:wbemprox:create_class_object L"Win32_VideoController", 0xe1cbb0 trace:wbemprox:create_class_object returning iface 0x1cc2e8 trace:wbemprox:class_object_Get 0x1cc2e8, L"PNPDeviceID", 00000000, 0xe1cba0, (nil), (nil) trace:wbemprox:class_object_Get 0x1cc2e8, L"AdapterRAM", 00000000, 0xe1cb88, (nil), (nil) trace:wbemprox:enum_class_object_Next 0x1cc2d0, -1, 1, 0xe1cbb0, 0xe1cbb4 trace:wbemprox:wbem_services_Release destroying 0x1fabc8 trace:wbemprox:wbem_locator_Release destroying 0x1fa950 fixme:win:EnumDisplayDevicesW ((null),0,0xe1db30,0x00000000), stub! fixme:win:EnumDisplayDevicesW (L"\\.\DISPLAY1",0,0xe1c8b4,0x00000000), stub! trace:wbemprox:class_object_Release destroying 0x1cc2e8 trace:wbemprox:enum_class_object_Release destroying 0x1cc2d0 ... --- snip ---
--- snip --- Wine-dbg>b fill_videocontroller
Wine-dbg>p desc {Description={0x4e, 0x56, 0x49, 0x44, 0x49, 0x41, 0x20, 0x47, 0x65, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x20, 0x38, 0x38, 0x30, 0x30, 0x20, 0x47, 0x54, 0x58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, VendorId=0x10de, DeviceId=0x191, SubSysId=0, Revision=0, DedicatedVideoMemory=0x7a200000, DedicatedSystemMemory=0, SharedSystemMemory=0, AdapterLuid={LowPart=0x3f6, HighPart=0}} --- snip ---
-> 2048917504
The WMI value seems to be ignored/skipped for some reason.
In "dxdiag" case it queries "szDisplayMemoryEnglish" property as "2048.9 MB" and converts this to float and later back to int?
At one point it calls StrFormatByteSizeW() API (non-overflow case with 1953 MiB)
--- snip --- 0024:Call shlwapi.StrFormatByteSizeW(7ffe6680,00000000,00921ad8,00000020) ret=00437ef8 0024:Call KERNEL32.GetLocaleInfoW(00000400,20000012,0033f4ec,00000002) ret=7e7491a6 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7491a6 0024:Call KERNEL32.GetLocaleInfoW(00000400,20001010,0033f4ec,00000002) ret=7e7491cf 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7491cf 0024:Call KERNEL32.GetLocaleInfoW(00000400,0000000e,0033f4d8,00000008) ret=7e7491fd 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e7491fd 0024:Call KERNEL32.GetLocaleInfoW(00000400,0000000f,0033f4c8,00000008) ret=7e749222 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000002 ret=7e749222 0024:Call KERNEL32.GetLocaleInfoW(00000400,00000010,0033f40c,00000040) ret=7e749267 0024:Ret KERNEL32.GetLocaleInfoW() retval=00000004 ret=7e749267 0024:Call KERNEL32.GetNumberFormatW(00000400,00000000,0033f500 L"1.990000",0033f4e8,00921ad8,00000020) ret=7e749501 0024:Ret KERNEL32.GetNumberFormatW() retval=00000005 ret=7e749501 0024:Ret shlwapi.StrFormatByteSizeW() retval=00921ad8 ret=00437ef8 0024:Call user32.SetWindowTextW(000100b2,00921ad8 L"1.99 GB") ret=00437f21 0024:Call window proc 0x4a7b85 (hwnd=0x100b2,msg=WM_SETTEXT,wp=00000000,lp=00921ad8) --- snip ---
0x7FFE6680,0x00000000 = 2147378816
--- snip --- Address Hex dump UNICODE 00963D40 31 00 2E 00|39 00 39 00|20 00 47 00|42 00 00 00| 1.99 GB. --- snip ---
For the overflow case:
--- snip --- 0009:trace:shell:StrFormatByteSizeW (0xffffffff80000000,0x9592d8,32) --- snip ---
0x80000000,0xFFFFFFFF = -2147483648
--- snip --- Address Hex dump UNICODE 00963EF0 2D 00 32 00|31 00 34 00|37 00 34 00|38 00 33 00| -2147483 00963F00 36 00 34 00|38 00 20 00|62 00 79 00|74 00 65 00| 648 byte 00963F10 73 00 00 00| s. --- snip ---
Not sure where this integer overflow comes from. Maybe some internal conversion went wrong.
Another thing I noticed the tool tries to match (dx) device id from multiple query sources (dxgi, wmi, ...) and this somehow doesn't work out. Maybe there is an inconsistency (incomplete/fake data) somewhere so the app skips some code paths, discarding some values it earlier retrieved.
Regards
http://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #12 from Henri Verbeet hverbeet@gmail.com 2013-12-06 10:13:10 CST --- (In reply to comment #11)
In "dxdiag" case it queries "szDisplayMemoryEnglish" property as "2048.9 MB" and converts this to float and later back to int?
...
Not sure where this integer overflow comes from. Maybe some internal conversion went wrong.
My guess would be that it takes the "2048.9 MB" from dxdiag, interprets that as "2048.9 MiB", converts it back to bytes (by multiplying with 1024 * 1024, resulting in a value >= 0x80000000), and displays it as a signed integer. Perhaps the value dxdiag returns should be in MiB, I'm not that familiar with dxdiag, but the main issue seems to be that the tool display the value as a signed integer for whatever reason.
Another thing I noticed the tool tries to match (dx) device id from multiple query sources (dxgi, wmi, ...) and this somehow doesn't work out. Maybe there is an inconsistency (incomplete/fake data) somewhere so the app skips some code paths, discarding some values it earlier retrieved.
IIRC WMI actually uses DXGI. I do know that the device names from winex11/user32 and wined3d don't quite match up, but anything that originally comes from wined3d should be consistent with each other.
http://bugs.winehq.org/show_bug.cgi?id=33552
Jarkko K jarkko_korpi@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jarkko_korpi@hotmail.com
--- Comment #13 from Jarkko K jarkko_korpi@hotmail.com --- Also Crysis 2 has similar problem.
There is a file called Game.log in Crysis 2 install. It shows how crysis sees your situation.
I found there this:
Renderer initialization Unsupported GPU configuration! - AMD Radeon HD 7800 Series (vendor = 0x1002, device = 0x6819) - Video memory: 0 MB - Minimum SM 3.0 support: yes - Rating: 0 Asking user if they wish to continue... User chose to continue despite unsupported GPU! used GeomInstancingThreshold is 2
http://bugs.winehq.org/show_bug.cgi?id=33552
Berillions berillions@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |berillions@gmail.com
--- Comment #14 from Berillions berillions@gmail.com --- Created attachment 48093 --> http://bugs.winehq.org/attachment.cgi?id=48093 Wrong graphic VRAM on real Win8.1
Hi,
I don't think that it's a problem on Wine because i have the same problem on real Windows 8.1 (see screenshot)
I tried to change the compatibility mode for "MassEffect2Config.exe" from WinXP to Win7. Result : I still have the same wrong graphic card VRAM.
Cheers, Max
http://bugs.winehq.org/show_bug.cgi?id=33552
Felix Yan felixonmars@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |felixonmars@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #15 from Austin English austinenglish@gmail.com --- This is your friendly reminder that there has been no bug activity for over a year. Is this still an issue in current (1.7.51 or newer) wine?
https://bugs.winehq.org/show_bug.cgi?id=33552
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #16 from joaopa jeremielapuree@yahoo.fr --- Created attachment 63260 --> https://bugs.winehq.org/attachment.cgi?id=63260 Screenshot
Fixed with the demo. Masseffect2Config is version 1.03. The bug was also present in real Windows box with older Masseffect2Config. I think this bug can be closed as INVALID or at least NOTOURBUG. I will test later DragonAge2Config soon, but it is the same software customized for DragonAge2, so the result should be the same.
https://bugs.winehq.org/show_bug.cgi?id=33552
--- Comment #17 from joaopa jeremielapuree@yahoo.fr --- Created attachment 63261 --> https://bugs.winehq.org/attachment.cgi?id=63261 screenshot for DragonAge2Config
As foreseen, the bug does not occur with the 1.03 version of config tool for DragonAge2
https://bugs.winehq.org/show_bug.cgi?id=33552
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|BioWare 'DragonAge2Config' |BioWare 'DragonAge2Config' |tool doesn't detect |and 'Masseffect2Config' |graphics card VRAM properly |tools < v1.03 fail to | |detect graphics card VRAM | |properly (broken apps) Status|NEW |RESOLVED Resolution|--- |INVALID
--- Comment #18 from Anastasius Focht focht@gmx.net --- Hello folks,
based on last comments resolving as 'invalid' here. Refining summary accordingly.
Regards
https://bugs.winehq.org/show_bug.cgi?id=33552
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #19 from Austin English austinenglish@gmail.com --- Closing.