[dx38] Stencil wrap

Raphaël Junqueira fenix at club-internet.fr
Wed May 28 15:59:46 CDT 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le Samedi 24 Mai 2003 16:23, Ann and Jason Edmeades a écrit :
> Changelog
>
> Opengl 1.4 added stencil wrap support as per directx (also in the
> GL_EXT_stencil_wrap extension).
>
> Jason
> Note: Based off my (unapplied) dx36 patch but not including the changes
> Raphael has made under dx37.

Here,

the updated patch without conflict with my dx37 patch 
(now utils functions are in utils.c)

Regards,
Raphael
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)

iD8DBQE+1SNKp7NA3AmQTU4RApWiAJ9irtnSset1tuymEhiPvFov3F/f6ACdFWGC
j5IrFF8v/Oc278s/0NPi3KY=
=D1Gc
-----END PGP SIGNATURE-----
-------------- next part --------------
--- dlls/d3d8/directx.c	2003-05-28 22:53:25.000000000 +0200
+++ ../winepatch/dlls/d3d8/directx.c	2003-05-28 22:27:41.000000000 +0200
@@ -391,8 +391,6 @@
     ICOM_THIS(IDirect3D8Impl,iface);
     TRACE("(%p)->(Adptr:%d, DevType: %x, pCaps: %p)\n", This, Adapter, DeviceType, pCaps);
 
-
-    /* NOTE: Most of the values here are complete garbage for now */
     pCaps->DeviceType = (DeviceType == D3DDEVTYPE_HAL) ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF;  /* Not quite true, but use h/w supported by opengl I suppose */
     pCaps->AdapterOrdinal = Adapter;
 
@@ -508,15 +506,16 @@
 
     pCaps->ExtentsAdjust = 0;
 
-    pCaps->StencilCaps = D3DSTENCILCAPS_DECRSAT | 
-                         D3DSTENCILCAPS_INCRSAT | 
-                         D3DSTENCILCAPS_INVERT  | 
-                         D3DSTENCILCAPS_KEEP    | 
-                         D3DSTENCILCAPS_REPLACE | 
-                         D3DSTENCILCAPS_ZERO;
-                         /* FIXME: Add
-                             D3DSTENCILCAPS_DECR
-                             D3DSTENCILCAPS_INCR */
+    pCaps->StencilCaps =  D3DSTENCILCAPS_DECRSAT | 
+                          D3DSTENCILCAPS_INCRSAT | 
+                          D3DSTENCILCAPS_INVERT  | 
+                          D3DSTENCILCAPS_KEEP    | 
+                          D3DSTENCILCAPS_REPLACE | 
+                          D3DSTENCILCAPS_ZERO;
+#if defined(GL_VERSION_1_4) || defined(GL_EXT_stencil_wrap)
+    pCaps->StencilCaps |= D3DSTENCILCAPS_DECR    |
+                          D3DSTENCILCAPS_INCR;
+#endif
 
     pCaps->FVFCaps = D3DFVFCAPS_PSIZE | 0x80000;
 
--- dlls/d3d8/utils.c	2003-05-28 22:53:25.000000000 +0200
+++ ../winepatch/dlls/d3d8/utils.c	2003-05-28 22:33:42.000000000 +0200
@@ -407,11 +407,19 @@
     case D3DSTENCILOP_REPLACE : return GL_REPLACE;
     case D3DSTENCILOP_INCRSAT : return GL_INCR;
     case D3DSTENCILOP_DECRSAT : return GL_DECR;
-    case D3DSTENCILOP_INVERT  : return GL_INVERT;
+    case D3DSTENCILOP_INVERT  : return GL_INVERT; 
+#if defined(GL_VERSION_1_4)
+    case D3DSTENCILOP_INCR    : return GL_INCR_WRAP;
+    case D3DSTENCILOP_DECR    : return GL_DECR_WRAP;
+#elif defined(GL_EXT_stencil_wrap)
+    case D3DSTENCILOP_INCR    : return GL_INCR_WRAP_EXT;
+    case D3DSTENCILOP_DECR    : return GL_DECR_WRAP_EXT;
+#else
     case D3DSTENCILOP_INCR    : FIXME("Unsupported stencil op D3DSTENCILOP_INCR\n");
                                 return GL_INCR; /* Fixme - needs to support wrap */
     case D3DSTENCILOP_DECR    : FIXME("Unsupported stencil op D3DSTENCILOP_DECR\n");
                                 return GL_DECR; /* Fixme - needs to support wrap */
+#endif
     default:
         FIXME("Invalid stencil op %ld\n", op);
         return GL_ALWAYS;


More information about the wine-patches mailing list