[Bug 24207] New: Nvidia drivers and stupid fpu

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Aug 30 00:54:49 CDT 2010


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

           Summary: Nvidia drivers and stupid fpu
           Product: Wine
           Version: 1.3.1
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P2
         Component: -unknown
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: thunder_8888 at mail.ru


At all, it's not a wine bug, but bug of nvidia driver and bad code of windows
programm.
When i start some games from tasofro, shows black window and game hang up. It's
bug appears only on Nvidia drivers, because they use not safe code in
libGLcore. During glXCreateContext it does this:
        leal        0x2ac(%esp),%esi
        leal        0x2b0(%esp),%ecx
        ...
195230: movl        0x2a8(%esp),%eax
195237: movl        %eax,0x2a4(%esp)
19523e: flds        0x2a8(%esp)
195245: fmul        %st(1),%st 
195247: fstps       0x2a8(%esp)
19524e: flds        0x2b0(%esp)      
195255: flds        0x2a8(%esp)      
19525c: faddp       %st,%st(1)    
19525e: fstps       0x2ac(%esp)   
195265: movl        0x0(%esi),%edx
195267: movl        0x0(%ecx),%eax
195269: cmpl        %eax,%edx
19526b: jnz 195230

While this exact code is called on every context creation, it clearly doesn't
cause anything problematic for most non-Tasofro apps. This is because of the
FPU rounding mode. In the default setting, it will always converge because the
two values are constants. However, Tasofro sets the FPU Control Word to 0A7F at
some point, which means it always rounds up rather than rounds to nearest. This
means that the value will never converge. So it just gets stuck in an infinite
loop.
(If i patch exe for rounding mode - game starts normally)

Well, i think wine may reset rounding mode before call glXCreateContext

-- 
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