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