=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: d3d8: Implement FPUSETUP for msvc.

Alexandre Julliard julliard at winehq.org
Mon Sep 26 16:15:12 CDT 2011


Module: wine
Branch: master
Commit: 14a245690d333ed6ee7837b4d547790d50821c5d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=14a245690d333ed6ee7837b4d547790d50821c5d

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Sat Sep 24 12:45:37 2011 +0200

d3d8: Implement FPUSETUP for msvc.

---

 dlls/d3d8/device.c       |    5 +++++
 dlls/d3d8/tests/device.c |   11 ++++++++++-
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 51c4ad7..8aeca94 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -3032,6 +3032,11 @@ static void setup_fpu(void)
     __asm__ volatile ("fnstcw %0" : "=m" (cw));
     cw = (cw & ~0xf3f) | 0x3f;
     __asm__ volatile ("fldcw %0" : : "m" (cw));
+#elif defined(__i386__) && defined(_MSC_VER)
+    WORD cw;
+    __asm fnstcw cw;
+    cw = (cw & ~0xf3f) | 0x3f;
+    __asm fldcw cw;
 #else
     FIXME("FPU setup not implemented for this platform.\n");
 #endif
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index 42726aa..42d4dd0 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -2416,8 +2416,13 @@ done:
 static inline void set_fpu_cw(WORD cw)
 {
 #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#define D3D8_TEST_SET_FPU_CW 1
     __asm__ volatile ("fnclex");
     __asm__ volatile ("fldcw %0" : : "m" (cw));
+#elif defined(__i386__) && defined(_MSC_VER)
+#define D3D8_TEST_SET_FPU_CW 1
+    __asm fnclex;
+    __asm fldcw cw;
 #endif
 }
 
@@ -2425,14 +2430,18 @@ static inline WORD get_fpu_cw(void)
 {
     WORD cw = 0;
 #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#define D3D8_TEST_GET_FPU_CW 1
     __asm__ volatile ("fnstcw %0" : "=m" (cw));
+#elif defined(__i386__) && defined(_MSC_VER)
+#define D3D8_TEST_GET_FPU_CW 1
+    __asm fnstcw cw;
 #endif
     return cw;
 }
 
 static void test_fpu_setup(void)
 {
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#if defined(D3D8_TEST_SET_FPU_CW) && defined(D3D8_TEST_GET_FPU_CW)
     D3DPRESENT_PARAMETERS present_parameters;
     IDirect3DDevice8 *device;
     D3DDISPLAYMODE d3ddm;




More information about the wine-cvs mailing list