https://bugs.winehq.org/show_bug.cgi?id=37371
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW URL| |http://files.eveprobe.ccpga | |mes.com/eveprobe-0.82.6614. | |0.msi CC| |focht@gmx.net Summary|EVE Probe: ALError: |EVE Probe reports 'ALError: |ALResult(80004005) E_FAIL: |ALResult(80004005) E_FAIL' |An undetermined error |(NV Optimus detection |occurred |doesn't work) Ever confirmed|0 |1
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/CCP/EVE Probe/launcher
$ wine ./eveprobe.exe ... fixme:d3d11:D3D11CreateDevice stub: adapter 0x13e030, driver_type D3D_DRIVER_TYPE_UNKNOWN, swrast (nil), flags 0, feature_levels 0x338e84, levels 0x1, sdk_version 7, device 0x338e9c, feature_level 0x338e80, context 0x338e90 No handlers could be found for logger "trinity" Starting up Trinity through _trinity_dx9_deploy ... fixme:win:EnumDisplayDevicesW ((null),0,0x3385d0,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),0,0x33902c,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),1,0x33902c,0x00000000), stub! Unhandled exception in run() Traceback (most recent call last): File "autoexec.py", line 414, in run File "autoexec.py", line 396, in run_protected File "infogatherer__init__.py", line 110, in gather_info File "infogatherer__init__.py", line 103, in getGpuInfo File "infogatherer__init__.py", line 87, in getGpuDriverInfo ALError: ALResult(80004005) E_FAIL: An undetermined error occurred An exception has occurred. It has been logged in the log server as exception #1 --- snip ---
You can skip the wrapper using the following command line:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/CCP/EVE Probe
$ wine ./bin/exefile.exe /lib=code.ccp /NoConsole --- snip ---
The EVE Online client code is compiled stackless python and encrypted. Unwrapping (https://bugs.winehq.org/show_bug.cgi?id=5657#c13) yields the following:
--- snip --- ... def getGpuDriverInfo(adapterInfo): driverInfo = adapterInfo.GetDriverInfo() results['gpu']['driver']['Version'] = unicode(driverInfo.driverVersionString) results['gpu']['driver']['Date'] = unicode(driverInfo.driverDate) results['gpu']['driver']['Vendor'] = unicode(driverInfo.driverVendor) results['gpu']['driver']['IsOptimus'] = u'Yes' if driverInfo.isOptimus else u'No' results['gpu']['driver']['IsAmdSwitchable'] = u'Yes' if driverInfo.isAmdDynamicSwitchable else u'No'
def getGpuInfo(): adapters = trinity.adapters adapterInfo = adapters.GetAdapterInfo(adapters.DEFAULT_ADAPTER) results['gpu']['Description'] = unicode(adapterInfo.description) results['gpu']['Driver'] = unicode(adapterInfo.driver) results['gpu']['VendorId'] = unicode(adapterInfo.vendorID) results['gpu']['DeviceId'] = unicode(adapterInfo.deviceID) results['gpu']['TrinityPlatform'] = unicode(trinity.platform) getGpuDriverInfo(adapterInfo)
def gather_info(): getOsVersion() getProcessorInfo() getRAMInfo() getGpuInfo() return results
__all__ = ['gather_info'] --- snip ---
line 87:
--- snip --- results['gpu']['driver']['IsOptimus'] = u'Yes' if driverInfo.isOptimus else u'No' --- snip ---
The property for NVIDIA Optimus detection is not set.
The native code that does the job is likely located in 'd3dinfo.pyd' and one of these '_trinity_dx9_deploy.dll', '_trinity_dx9_internal.dll' components.
--- snip --- Wine-dbg>bt Backtrace: =>0 0xf70fef48 D3D11CreateDevice(adapter=0x12fa60, driver_type=D3D_DRIVER_TYPE_UNKNOWN, swrast=(nil), flags=0, feature_levels=0x338e84, levels=0x1, sdk_version=0x7, device=0x338e9c, feature_level=0x338e80, context=0x338e90) [/home/focht/projects/wine/wine.repo/src/dlls/d3d11/d3d11_main.c:51] in d3d11 (0x003390c8) 1 0x046ecd23 in d3dinfo.pyd (+0xcd22) (0x00339114) 2 0x046ededc in d3dinfo.pyd (+0xdedb) (0x00339164) 3 0x046ee41e in d3dinfo.pyd (+0xe41d) (0x003391c0) 4 0x046f070c in d3dinfo.pyd (+0x1070b) (0x003391f0) 5 0x1e0268e6 in python27 (+0x268e5) (0x025bddd0)
Wine-dbg>info share Module Address Debug info Name (107 modules) PE 340000- 376000 Export _yaml.pyd PE 400000- 431000 Export exefile PE 46e0000- 477f000 Export d3dinfo.pyd PE 10000000-10330000 Export blue PE 1e000000-1e3b0000 Export python27 --- snip ---
You could ask them how they did NV Optimus detection since there are several more are less documented ways ('EnumDisplayDevices' with 'IDXGIAdapter::GetDesc' adapter order comparison, 'IDirect3D9::GetAdapterIdentifier' etc.).
But even if Wine doesn't behave correctly, the property should be still non-null. I guess this is rather crappy coding on the client side hence I don't see a compelling reason to waste more time with this.
'IsAmdSwitchable' property might suffer from similar problem.
Regards