[PATCH 3/5] wined3d: Introduce basetexture_get_sub_resource() to simplify retrieving texture sub-resources.

Henri Verbeet hverbeet at codeweavers.com
Thu Apr 22 11:55:59 CDT 2010


---
 dlls/wined3d/basetexture.c     |   17 ++++++
 dlls/wined3d/cubetexture.c     |   70 +++++++++---------------
 dlls/wined3d/texture.c         |  118 +++++++++++++++++++++++-----------------
 dlls/wined3d/volumetexture.c   |   50 ++++++++++-------
 dlls/wined3d/wined3d_private.h |    2 +
 5 files changed, 142 insertions(+), 115 deletions(-)

diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c
index 0390cb7..35a78a4 100644
--- a/dlls/wined3d/basetexture.c
+++ b/dlls/wined3d/basetexture.c
@@ -81,6 +81,23 @@ void basetexture_cleanup(IWineD3DBaseTexture *iface)
     resource_cleanup((IWineD3DResource *)iface);
 }
 
+IWineD3DResourceImpl *basetexture_get_sub_resource(IWineD3DBaseTextureImpl *texture, UINT layer, UINT level)
+{
+    if (layer >= texture->baseTexture.layer_count)
+    {
+        WARN("layer %u >= layer_count %u.\n", layer, texture->baseTexture.layer_count);
+        return NULL;
+    }
+
+    if (level >= texture->baseTexture.level_count)
+    {
+        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        return NULL;
+    }
+
+    return texture->baseTexture.sub_resources[layer * texture->baseTexture.level_count + level];
+}
+
 /* A GL context is provided by the caller */
 static void gltexture_delete(struct gl_texture *tex)
 {
diff --git a/dlls/wined3d/cubetexture.c b/dlls/wined3d/cubetexture.c
index 19c7a76..e2865b2 100644
--- a/dlls/wined3d/cubetexture.c
+++ b/dlls/wined3d/cubetexture.c
@@ -319,42 +319,37 @@ static BOOL WINAPI IWineD3DCubeTextureImpl_IsCondNP2(IWineD3DCubeTexture *iface)
 static HRESULT WINAPI IWineD3DCubeTextureImpl_GetLevelDesc(IWineD3DCubeTexture *iface,
         UINT level, WINED3DSURFACE_DESC *desc)
 {
-    IWineD3DCubeTextureImpl *texture = (IWineD3DCubeTextureImpl *)iface;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
 
     TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
 
-    if (level >= texture->baseTexture.level_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    return IWineD3DSurface_GetDesc((IWineD3DSurface *)texture->baseTexture.sub_resources[level], desc);
+    return IWineD3DSurface_GetDesc(surface, desc);
 }
 
 static HRESULT WINAPI IWineD3DCubeTextureImpl_GetCubeMapSurface(IWineD3DCubeTexture *iface,
         WINED3DCUBEMAP_FACES face, UINT level, IWineD3DSurface **surface)
 {
-    IWineD3DCubeTextureImpl *texture = (IWineD3DCubeTextureImpl *)iface;
-    UINT idx = face * texture->baseTexture.level_count + level;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *s;
 
     TRACE("iface %p, face %u, level %u, surface %p.\n",
             iface, face, level, surface);
 
-    if (level >= texture->baseTexture.level_count)
+    if (!(s = (IWineD3DSurface *)basetexture_get_sub_resource(texture, face, level)))
     {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    if (face >= texture->baseTexture.layer_count)
-    {
-        WARN("face %u >= layer_count %u.\n", face, texture->baseTexture.layer_count);
-        return WINED3DERR_INVALIDCALL;
-    }
-
-    *surface = (IWineD3DSurface *)texture->baseTexture.sub_resources[idx];
-    IWineD3DSurface_AddRef(*surface);
+    IWineD3DSurface_AddRef(s);
+    *surface = s;
 
     TRACE("Returning surface %p.\n", *surface);
 
@@ -364,70 +359,57 @@ static HRESULT WINAPI IWineD3DCubeTextureImpl_GetCubeMapSurface(IWineD3DCubeText
 static HRESULT WINAPI IWineD3DCubeTextureImpl_LockRect(IWineD3DCubeTexture *iface,
         WINED3DCUBEMAP_FACES face, UINT level, WINED3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
 {
-    IWineD3DCubeTextureImpl *texture = (IWineD3DCubeTextureImpl *)iface;
-    UINT idx = face * texture->baseTexture.level_count + level;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
 
     TRACE("iface %p, face %u, level %u, locked_rect %p, rect %s, flags %#x.\n",
             iface, face, level, locked_rect, wine_dbgstr_rect(rect), flags);
 
-    if (level >= texture->baseTexture.level_count)
-    {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
-        return WINED3DERR_INVALIDCALL;
-    }
-
-    if (face >= texture->baseTexture.layer_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, face, level)))
     {
-        WARN("face %u >= layer_count %u.\n", face, texture->baseTexture.layer_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    return IWineD3DSurface_LockRect((IWineD3DSurface *)texture->baseTexture.sub_resources[idx],
-            locked_rect, rect, flags);
+    return IWineD3DSurface_LockRect(surface, locked_rect, rect, flags);
 }
 
 static HRESULT WINAPI IWineD3DCubeTextureImpl_UnlockRect(IWineD3DCubeTexture *iface,
         WINED3DCUBEMAP_FACES face, UINT level)
 {
-    IWineD3DCubeTextureImpl *texture = (IWineD3DCubeTextureImpl *)iface;
-    UINT idx = face * texture->baseTexture.level_count + level;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
 
     TRACE("iface %p, face %u, level %u.\n",
             iface, face, level);
 
-    if (level >= texture->baseTexture.level_count)
-    {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
-        return WINED3DERR_INVALIDCALL;
-    }
-
-    if (face >= texture->baseTexture.layer_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, face, level)))
     {
-        WARN("face %u >= layer_count %u.\n", face, texture->baseTexture.layer_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    return IWineD3DSurface_UnlockRect((IWineD3DSurface *)texture->baseTexture.sub_resources[idx]);
+    return IWineD3DSurface_UnlockRect(surface);
 }
 
 static HRESULT WINAPI IWineD3DCubeTextureImpl_AddDirtyRect(IWineD3DCubeTexture *iface,
         WINED3DCUBEMAP_FACES face, const RECT *dirty_rect)
 {
-    IWineD3DCubeTextureImpl *texture = (IWineD3DCubeTextureImpl *)iface;
-    UINT idx = face * texture->baseTexture.level_count;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
 
     TRACE("iface %p, face %u, dirty_rect %s.\n",
             iface, face, wine_dbgstr_rect(dirty_rect));
 
-    if (face >= texture->baseTexture.layer_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, face, 0)))
     {
-        WARN("face %u >= layer_count %u.\n", face, texture->baseTexture.layer_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
     texture->baseTexture.texture_rgb.dirty = TRUE;
     texture->baseTexture.texture_srgb.dirty = TRUE;
-    surface_add_dirty_rect((IWineD3DSurface *)texture->baseTexture.sub_resources[idx], dirty_rect);
+    surface_add_dirty_rect(surface, dirty_rect);
 
     return WINED3D_OK;
 }
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 0cd8efd..bcbcfa9 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -333,78 +333,94 @@ static BOOL WINAPI IWineD3DTextureImpl_IsCondNP2(IWineD3DTexture *iface) {
 /* *******************************************
    IWineD3DTexture IWineD3DTexture parts follow
    ******************************************* */
-static HRESULT WINAPI IWineD3DTextureImpl_GetLevelDesc(IWineD3DTexture *iface, UINT Level, WINED3DSURFACE_DESC* pDesc) {
-    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
+static HRESULT WINAPI IWineD3DTextureImpl_GetLevelDesc(IWineD3DTexture *iface, UINT level, WINED3DSURFACE_DESC *desc)
+{
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
+
+    TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
 
-    if (Level < This->baseTexture.level_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        TRACE("(%p) Level (%d)\n", This, Level);
-        return IWineD3DSurface_GetDesc((IWineD3DSurface *)This->baseTexture.sub_resources[Level], pDesc);
+        WARN("Failed to get sub-resource.\n");
+        return WINED3DERR_INVALIDCALL;
     }
-    WARN("(%p) level %u >= level_count %u.\n", This, Level, This->baseTexture.level_count);
-    return WINED3DERR_INVALIDCALL;
+
+    return IWineD3DSurface_GetDesc(surface, desc);
 }
 
-static HRESULT WINAPI IWineD3DTextureImpl_GetSurfaceLevel(IWineD3DTexture *iface, UINT Level, IWineD3DSurface** ppSurfaceLevel) {
-    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
-    HRESULT hr = WINED3DERR_INVALIDCALL;
+static HRESULT WINAPI IWineD3DTextureImpl_GetSurfaceLevel(IWineD3DTexture *iface,
+        UINT level, IWineD3DSurface **surface)
+{
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *s;
 
-    if (Level < This->baseTexture.level_count)
+    TRACE("iface %p, level %u, surface %p.\n", iface, level, surface);
+
+    if (!(s = (IWineD3DSurface *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        *ppSurfaceLevel = (IWineD3DSurface *)This->baseTexture.sub_resources[Level];
-        IWineD3DSurface_AddRef(*ppSurfaceLevel);
-        hr = WINED3D_OK;
-        TRACE("(%p) : returning %p for level %d\n", This, *ppSurfaceLevel, Level);
-    }
-    if (WINED3D_OK != hr) {
-        WARN("(%p) level %u >= level_count %u.\n", This, Level, This->baseTexture.level_count);
-        *ppSurfaceLevel = NULL; /* Just to be on the safe side.. */
+        WARN("Failed to get sub-resource.\n");
+        return WINED3DERR_INVALIDCALL;
     }
-    return hr;
+
+    IWineD3DSurface_AddRef(s);
+    *surface = s;
+
+    TRACE("Returning surface %p.\n", *surface);
+
+    return WINED3D_OK;
 }
 
-static HRESULT WINAPI IWineD3DTextureImpl_LockRect(IWineD3DTexture *iface, UINT Level, WINED3DLOCKED_RECT *pLockedRect,
-                                            CONST RECT *pRect, DWORD Flags) {
-    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
-    HRESULT hr = WINED3DERR_INVALIDCALL;
+static HRESULT WINAPI IWineD3DTextureImpl_LockRect(IWineD3DTexture *iface,
+        UINT level, WINED3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
+{
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
+
+    TRACE("iface %p, level %u, locked_rect %p, rect %s, flags %#x.\n",
+            iface, level, locked_rect, wine_dbgstr_rect(rect), flags);
 
-    if (Level < This->baseTexture.level_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        IWineD3DSurface *surface = (IWineD3DSurface *)This->baseTexture.sub_resources[Level];
-        hr = IWineD3DSurface_LockRect(surface, pLockedRect, pRect, Flags);
-    }
-    if (WINED3D_OK == hr) {
-        TRACE("(%p) Level (%d) success\n", This, Level);
-    } else {
-        WARN("(%p) level %u >= level_count %u.\n", This, Level, This->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
+        return WINED3DERR_INVALIDCALL;
     }
 
-    return hr;
+    return IWineD3DSurface_LockRect(surface, locked_rect, rect, flags);
 }
 
-static HRESULT WINAPI IWineD3DTextureImpl_UnlockRect(IWineD3DTexture *iface, UINT Level) {
-   IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
-    HRESULT hr = WINED3DERR_INVALIDCALL;
+static HRESULT WINAPI IWineD3DTextureImpl_UnlockRect(IWineD3DTexture *iface, UINT level)
+{
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
+
+    TRACE("iface %p, level %u.\n", iface, level);
 
-    if (Level < This->baseTexture.level_count)
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        IWineD3DSurface *surface = (IWineD3DSurface *)This->baseTexture.sub_resources[Level];
-        hr = IWineD3DSurface_UnlockRect(surface);
-    }
-    if ( WINED3D_OK == hr) {
-        TRACE("(%p) Level (%d) success\n", This, Level);
-    } else {
-        WARN("(%p) level %u >= level_count %u.\n", This, Level, This->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
+        return WINED3DERR_INVALIDCALL;
     }
-    return hr;
+
+    return IWineD3DSurface_UnlockRect(surface);
 }
 
-static HRESULT WINAPI IWineD3DTextureImpl_AddDirtyRect(IWineD3DTexture *iface, CONST RECT* pDirtyRect) {
-    IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
-    This->baseTexture.texture_rgb.dirty = TRUE;
-    This->baseTexture.texture_srgb.dirty = TRUE;
-    TRACE("(%p) : dirtyfication of surface Level (0)\n", This);
-    surface_add_dirty_rect((IWineD3DSurface *)This->baseTexture.sub_resources[0], pDirtyRect);
+static HRESULT WINAPI IWineD3DTextureImpl_AddDirtyRect(IWineD3DTexture *iface, const RECT *dirty_rect)
+{
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DSurface *surface;
+
+    TRACE("iface %p, dirty_rect %s.\n", iface, wine_dbgstr_rect(dirty_rect));
+
+    if (!(surface = (IWineD3DSurface *)basetexture_get_sub_resource(texture, 0, 0)))
+    {
+        WARN("Failed to get sub-resource.\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
+    texture->baseTexture.texture_rgb.dirty = TRUE;
+    texture->baseTexture.texture_srgb.dirty = TRUE;
+    surface_add_dirty_rect(surface, dirty_rect);
 
     return WINED3D_OK;
 }
diff --git a/dlls/wined3d/volumetexture.c b/dlls/wined3d/volumetexture.c
index 6e5703a..ee453d0 100644
--- a/dlls/wined3d/volumetexture.c
+++ b/dlls/wined3d/volumetexture.c
@@ -256,82 +256,92 @@ static BOOL WINAPI IWineD3DVolumeTextureImpl_IsCondNP2(IWineD3DVolumeTexture *if
 static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetLevelDesc(IWineD3DVolumeTexture *iface,
         UINT level, WINED3DVOLUME_DESC *desc)
 {
-    IWineD3DVolumeTextureImpl *texture = (IWineD3DVolumeTextureImpl *)iface;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DVolume *volume;
 
     TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
 
-    if (level >= texture->baseTexture.level_count)
+    if (!(volume = (IWineD3DVolume *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    return IWineD3DVolume_GetDesc((IWineD3DVolume *)texture->baseTexture.sub_resources[level], desc);
+    return IWineD3DVolume_GetDesc(volume, desc);
 }
 
 static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetVolumeLevel(IWineD3DVolumeTexture *iface,
         UINT level, IWineD3DVolume **volume)
 {
-    IWineD3DVolumeTextureImpl *texture = (IWineD3DVolumeTextureImpl *)iface;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DVolume *v;
 
     TRACE("iface %p, level %u, volume %p.\n", iface, level, volume);
 
-    if (level >= texture->baseTexture.level_count)
+    if (!(v = (IWineD3DVolume *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    *volume = (IWineD3DVolume *)texture->baseTexture.sub_resources[level];
-    IWineD3DVolume_AddRef(*volume);
+    IWineD3DVolume_AddRef(v);
+    *volume = v;
 
     TRACE("Returning volume %p.\n", *volume);
 
     return WINED3D_OK;
-
 }
 
 static HRESULT WINAPI IWineD3DVolumeTextureImpl_LockBox(IWineD3DVolumeTexture *iface,
         UINT level, WINED3DLOCKED_BOX *locked_box, const WINED3DBOX *box, DWORD flags)
 {
-    IWineD3DVolumeTextureImpl *texture = (IWineD3DVolumeTextureImpl *)iface;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DVolume *volume;
 
     TRACE("iface %p, level %u, locked_box %p, box %p, flags %#x.\n",
             iface, level, locked_box, box, flags);
 
-    if (level >= texture->baseTexture.level_count)
+    if (!(volume = (IWineD3DVolume *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    return IWineD3DVolume_LockBox((IWineD3DVolume *)texture->baseTexture.sub_resources[level], locked_box, box, flags);
+    return IWineD3DVolume_LockBox(volume, locked_box, box, flags);
 }
 
 static HRESULT WINAPI IWineD3DVolumeTextureImpl_UnlockBox(IWineD3DVolumeTexture *iface, UINT level)
 {
-    IWineD3DVolumeTextureImpl *texture = (IWineD3DVolumeTextureImpl *)iface;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DVolume *volume;
 
     TRACE("iface %p, level %u.\n", iface, level);
 
-    if (level >= texture->baseTexture.level_count)
+    if (!(volume = (IWineD3DVolume *)basetexture_get_sub_resource(texture, 0, level)))
     {
-        WARN("level %u >= level_count %u.\n", level, texture->baseTexture.level_count);
+        WARN("Failed to get sub-resource.\n");
         return WINED3DERR_INVALIDCALL;
     }
 
-    return IWineD3DVolume_UnlockBox((IWineD3DVolume *)texture->baseTexture.sub_resources[level]);
+    return IWineD3DVolume_UnlockBox(volume);
 }
 
 static HRESULT WINAPI IWineD3DVolumeTextureImpl_AddDirtyBox(IWineD3DVolumeTexture *iface, const WINED3DBOX *dirty_box)
 {
-    IWineD3DVolumeTextureImpl *texture = (IWineD3DVolumeTextureImpl *)iface;
+    IWineD3DBaseTextureImpl *texture = (IWineD3DBaseTextureImpl *)iface;
+    IWineD3DVolume *volume;
 
     TRACE("iface %p, dirty_box %p.\n", iface, dirty_box);
 
+    if (!(volume = (IWineD3DVolume *)basetexture_get_sub_resource(texture, 0, 0)))
+    {
+        WARN("Failed to get sub-resource.\n");
+        return WINED3DERR_INVALIDCALL;
+    }
+
     texture->baseTexture.texture_rgb.dirty = TRUE;
     texture->baseTexture.texture_srgb.dirty = TRUE;
-    volume_add_dirty_box((IWineD3DVolume *)texture->baseTexture.sub_resources[0], dirty_box);
+    volume_add_dirty_box(volume, dirty_box);
 
     return WINED3D_OK;
 }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 0040b74..52486f5 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1901,6 +1901,8 @@ WINED3DTEXTUREFILTERTYPE basetexture_get_autogen_filter_type(IWineD3DBaseTexture
 BOOL basetexture_get_dirty(IWineD3DBaseTexture *iface) DECLSPEC_HIDDEN;
 DWORD basetexture_get_level_count(IWineD3DBaseTexture *iface) DECLSPEC_HIDDEN;
 DWORD basetexture_get_lod(IWineD3DBaseTexture *iface) DECLSPEC_HIDDEN;
+IWineD3DResourceImpl *basetexture_get_sub_resource(IWineD3DBaseTextureImpl *texture,
+        UINT layer, UINT level) DECLSPEC_HIDDEN;
 HRESULT basetexture_init(IWineD3DBaseTextureImpl *texture, UINT layer_count, UINT level_count,
         WINED3DRESOURCETYPE resource_type, IWineD3DDeviceImpl *device, UINT size, DWORD usage,
         const struct wined3d_format_desc *format_desc, WINED3DPOOL pool, IUnknown *parent,
-- 
1.6.4.4




More information about the wine-patches mailing list