[Bug 34285] New: Vanguard: Saga of Heroes fails with "Couldn't load HLSL shader header 'VS_UIRectangle.fx'"

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Aug 17 18:13:26 CDT 2013


http://bugs.winehq.org/show_bug.cgi?id=34285

             Bug #: 34285
           Summary: Vanguard: Saga of Heroes fails with "Couldn't load
                    HLSL shader header 'VS_UIRectangle.fx'"
           Product: Wine
           Version: 1.7.0
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ntdll
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: focht at gmx.net
    Classification: Unclassified


Hello folks,

as the summary says...

This forum talks about the problem:
https://forums.station.sony.com/vg/index.php?threads/f2p-update-and-wine.68254/

A CodeWeavers ticket:
http://www.codeweavers.com/compatibility/browse/name/?app_id=3023;forum=1;msg=131367

The client log reveals:

--- snip ---
VGClient.log: Logging initialized.
VGClient.log: Init: Name subsystem initialized
VGClient.log: Init: Detected: Microsoft Windows XP 5.1 (Build: 2600)
VGClient.log: Init: Version: 1.238.1.138261
VGClient.log: Init: Compiled: Aug  7 2013 14:39:45
VGClient.log: Init: Threadsafe Core: No
VGClient.log: Init: Base directory: C:\Program Files\Sony Online
Entertainment\Installed Games\Vanguard\bin\.
VGClient.log: Init: Character set: Unicode
VGClient.log: Init: Object subsystem initialized
...
VGClient.log: Critical: Couldn't load HLSL shader header 'VS_UIRectangle.fx'
VGClient.log: Critical: Couldn't load HLSL shader header 'VS_UIRectangle.fx'
VGClient.log: Critical: Windows GetLastError: Success. (0)
VGClient.log: Critical: Windows GetLastError: Success. (0)
VGClient.log: Exit: Executing UObject::StaticShutdownAfterError
VGClient.log: Exit: Executing UObject::StaticShutdownAfterError
VGClient.log: Exit: Executing UWindowsClient::ShutdownAfterError
VGClient.log: Exit: Executing UWindowsClient::ShutdownAfterError
VGClient.log: Exit: OpenAL Audio subsystem shut down.
VGClient.log: Exit: OpenAL Audio subsystem shut down.
VGClient.log: Critical: FD3DHardwareShader::CompileShaderFromFile
VGClient.log: Critical: FD3DHardwareShader::CompileShaderFromFile
VGClient.log: Critical: FD3DHardwareShader::Initialize
VGClient.log: Critical: FD3DHardwareShader::Initialize
VGClient.log: Critical: UD3DRenderDevice::GetVertexShader
VGClient.log: Critical: UD3DRenderDevice::GetVertexShader
--- snip ---

The problem is actually the path retrieved by GetFullPathNameW().

--- snip ---
[~/.wine/drive_c/Program Files/Sony Online Entertainment/Installed
Games/Vanguard/bin] wine ./VGClient.exe --sessionid=foo --commercesessionid=bar
...
0025:Call KERNEL32.GetFullPathNameW(0033e96c L"C:.",00000100,018b7f28,0033e964)
ret=00daacdf
0025:Ret  KERNEL32.GetFullPathNameW() retval=00000047 ret=00daacdf
...
0025:Call KERNEL32.WideCharToMultiByte(00000000,00000000,018b7f28 L"C:\\Program
Files\\Sony Online Entertainment\\Installed
Games\\Vanguard\\bin\\.",ffffffff,00000000,00000000,00000000,00000000)
ret=00ac2fc9
0025:Ret  KERNEL32.WideCharToMultiByte() retval=0000004a ret=00ac2fc9
...
0025:Call KERNEL32.SetCurrentDirectoryA(0033ea60 "C:\\Program Files\\Sony
Online Entertainment\\Installed Games\\Vanguard\\bin\\.") ret=0040e1ed
0025:Ret  KERNEL32.SetCurrentDirectoryA() retval=00000001 ret=0040e1ed 
...
0025:Call KERNEL32.SetCurrentDirectoryW(018b7f28 L"C:\\Program Files\\Sony
Online Entertainment\\Installed Games\\Vanguard\\bin\\.") ret=0040e1a6
0025:Ret  KERNEL32.SetCurrentDirectoryW() retval=00000001 ret=0040e1a6
...
<CompileShaderFromFile>
...
0025:Call KERNEL32.CreateFileW(1396d910 L"C:\\Program Files\\Sony Online
Entertainment\\Installed
Games\\Vanguard\\bin\\.VS_UIRectangle.fx",80000000,00000001,00000000,00000003,40000000,00000000)
ret=0040d7ce
0025:Ret  KERNEL32.CreateFileW() retval=ffffffff ret=0040d7ce 
...
--- snip ---

GetFullPathName( "C:.") should never return a (full) path containing a trailing
dot (add a test case to test_RtlGetFullPathName_U()).

Because of this, the user supplied include callbacks called by (native) shader
compiler from D3DXCompileShaderFromFile() can't correctly deduce/build a
redirected path from the input path.

Note: Wine's shader compiler file loader code is missing this feature (another
bug) hence games which rely on user callbacks to find and load the file
supplied with D3DXCompileShaderFromFile() only work with native d3dx9_3x.dll

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list