Matteo Bruni : wined3d: Advertise AUTOGENMIPMAP only for renderable and filterable formats.

Alexandre Julliard julliard at winehq.org
Thu Sep 21 15:01:01 CDT 2017


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

Author: Matteo Bruni <mbruni at codeweavers.com>
Date:   Thu Sep 21 01:07:07 2017 +0200

wined3d: Advertise AUTOGENMIPMAP only for renderable and filterable formats.

Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d9/tests/device.c | 1 -
 dlls/wined3d/directx.c   | 4 +++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index 1d8b8a9..b24136a 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -6963,7 +6963,6 @@ static void test_mipmap_gen(void)
                 D3DUSAGE_RENDERTARGET, D3DRTYPE_TEXTURE, formats[i]));
         hr = IDirect3D9_CheckDeviceFormat(d3d, 0, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8,
                 D3DUSAGE_AUTOGENMIPMAP, D3DRTYPE_TEXTURE, formats[i]);
-        todo_wine_if (!renderable && hr == D3D_OK)
         ok((hr == D3D_OK && renderable) || hr == D3DOK_NOAUTOGEN,
                 "Got unexpected hr %#x for %srenderable format %#x.\n",
                 hr, renderable ? "" : "non", formats[i]);
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 168e494..da66ad3 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -5364,7 +5364,9 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
         return WINED3DERR_NOTAVAILABLE;
     }
 
-    if ((usage & WINED3DUSAGE_AUTOGENMIPMAP) && !gl_info->supported[SGIS_GENERATE_MIPMAP])
+    if ((usage & WINED3DUSAGE_AUTOGENMIPMAP) && (!gl_info->supported[SGIS_GENERATE_MIPMAP]
+            || (format->flags[gl_type] & (WINED3DFMT_FLAG_RENDERTARGET | WINED3DFMT_FLAG_FILTERING))
+            != (WINED3DFMT_FLAG_RENDERTARGET | WINED3DFMT_FLAG_FILTERING)))
     {
         TRACE("No WINED3DUSAGE_AUTOGENMIPMAP support, returning WINED3DOK_NOAUTOGEN.\n");
         return WINED3DOK_NOAUTOGEN;




More information about the wine-cvs mailing list