Stefan Dösinger : wined3d: Allow SYSTEMMEM textures and surfaces.

Alexandre Julliard julliard at wine.codeweavers.com
Sat May 20 07:27:12 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: ebcbda72c417d5a03995293c5ab46a5e6e200f59
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=ebcbda72c417d5a03995293c5ab46a5e6e200f59

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu May 18 22:59:33 2006 +0200

wined3d: Allow SYSTEMMEM textures and surfaces.

---

 dlls/wined3d/device.c  |   12 +++++-------
 dlls/wined3d/directx.c |    8 ++++++--
 dlls/wined3d/surface.c |    4 ++--
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 776fca6..cdedac0 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5231,11 +5231,9 @@ #endif
     }
 
     if(pTexture != NULL) {
-        /* SetTexture isn't allowed on textures in WINED3DPOOL_SCRATCH; The same is
-        *  the case for WINED3DPOOL_SYSTEMMEM textures unless WINED3DDEVCAPS_TEXTURESYSTEMMORY is set.
-        *  We don't check the caps as GetDeviceCaps is inefficient and we don't set the cap anyway.
-        */
-        if(((IWineD3DTextureImpl*)pTexture)->resource.pool == WINED3DPOOL_SCRATCH || ((IWineD3DTextureImpl*)pTexture)->resource.pool == WINED3DPOOL_SYSTEMMEM) {
+        /* SetTexture isn't allowed on textures in WINED3DPOOL_SCRATCH; 
+         */
+        if(((IWineD3DTextureImpl*)pTexture)->resource.pool == WINED3DPOOL_SCRATCH) {
             WARN("(%p) Attempt to set scratch texture rejected\n", pTexture);
             return WINED3DERR_INVALIDCALL;
         }
@@ -6435,8 +6433,8 @@ HRESULT WINAPI IWineD3DDeviceImpl_ColorF
     DWORD       *data;
     TRACE("(%p) Colour fill Surface: %p rect: %p color: %ld\n", This, pSurface, pRect, color);
 
-    if (surface->resource.pool != WINED3DPOOL_DEFAULT) {
-        FIXME("call to colorfill with non WINED3DPOOL_DEFAULT surface\n");
+    if (surface->resource.pool != WINED3DPOOL_DEFAULT && surface->resource.pool != WINED3DPOOL_SYSTEMMEM) {
+        FIXME("call to colorfill with non WINED3DPOOL_DEFAULT or WINED3DPOOL_SYSTEMMEM surface\n");
         return WINED3DERR_INVALIDCALL;
     }
 
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 788fbf0..b2db4d7 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1471,12 +1471,16 @@ HRESULT WINAPI IWineD3DImpl_GetDeviceCap
     *pCaps->CursorCaps              = 0;
 
 
-    *pCaps->DevCaps                 = WINED3DDEVCAPS_DRAWPRIMTLVERTEX    |
+    *pCaps->DevCaps                 = WINED3DDEVCAPS_EXECUTESYSTEMMEMORY |
+                                      WINED3DDEVCAPS_TLVERTEXSYSTEMMEMORY|
+                                      WINED3DDEVCAPS_TLVERTEXVIDEOMEMORY |
+                                      WINED3DDEVCAPS_DRAWPRIMTLVERTEX    |
                                       WINED3DDEVCAPS_HWTRANSFORMANDLIGHT |
                                       WINED3DDEVCAPS_EXECUTEVIDEOMEMORY  |
                                       WINED3DDEVCAPS_PUREDEVICE          |
                                       WINED3DDEVCAPS_HWRASTERIZATION     |
-                                      WINED3DDEVCAPS_TEXTUREVIDEOMEMORY;
+                                      WINED3DDEVCAPS_TEXTUREVIDEOMEMORY  |
+                                      WINED3DDEVCAPS_TEXTURESYSTEMMEMORY;
 
 
     *pCaps->PrimitiveMiscCaps       = D3DPMISCCAPS_CULLCCW               |
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 5b7198c..7016f5d 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1170,9 +1170,9 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LoadT
     *  In general never store scratch or system mem textures in the video ram. However it is allowed
     *  for system memory textures when WINED3DDEVCAPS_TEXTURESYSTEMMEMORY is set but it isn't right now.
     */
-    if (This->resource.pool == WINED3DPOOL_SCRATCH || This->resource.pool == WINED3DPOOL_SYSTEMMEM)
+    if (This->resource.pool == WINED3DPOOL_SCRATCH)
     {
-        FIXME("(%p) Operation not supported for scratch or SYSTEMMEM textures\n",This);
+        FIXME("(%p) Operation not supported for scratch textures\n",This);
         return WINED3DERR_INVALIDCALL;
     }
 




More information about the wine-cvs mailing list