[PATCH 1/3] wined3d: Allow multisample resolve for typeless resources.
Józef Kucia
joseph.kucia at gmail.com
Mon Aug 20 06:09:25 CDT 2018
From: Józef Kucia <jkucia at codeweavers.com>
It may perform an undesired format conversion in rare cases.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=39754
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
This fixes black screen in a lot of Direct3D 11 games. The proper fix
probably won't appear anytime soon.
---
dlls/d3d10core/tests/device.c | 30 +++++++++++++++---------------
dlls/d3d11/tests/d3d11.c | 30 +++++++++++++++---------------
dlls/wined3d/device.c | 4 ++--
3 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/dlls/d3d10core/tests/device.c b/dlls/d3d10core/tests/device.c
index f3c3d86ce178..8c95ee35c394 100644
--- a/dlls/d3d10core/tests/device.c
+++ b/dlls/d3d10core/tests/device.c
@@ -16862,12 +16862,12 @@ static void test_multisample_resolve(void)
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
@@ -16877,69 +16877,69 @@ static void test_multisample_resolve(void)
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &color, 0xffe1bc89, TRUE},
+ &color, 0xffe1bc89},
{DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &color, 0xffe1bc89, TRUE},
+ &color, 0xffe1bc89},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &color, 0xffe1bc89, TRUE},
+ &color, 0xffe1bc89},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
};
if (!init_test_context(&test_context))
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 60c88f4a24ce..bc2a53ed5840 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -27295,12 +27295,12 @@ static void test_multisample_resolve(void)
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
@@ -27310,69 +27310,69 @@ static void test_multisample_resolve(void)
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &color, 0xffe1bc89, TRUE},
+ &color, 0xffe1bc89},
{DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &color, 0xffe1bc89, TRUE},
+ &color, 0xffe1bc89},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
- &color, 0xffe1bc89, TRUE},
+ &color, 0xffe1bc89},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &green, 0xff00ff00, TRUE},
+ &green, 0xff00ff00},
{DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_TYPELESS,
DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
DXGI_FORMAT_R8G8B8A8_UNORM,
- &color, 0xffbf7f40, TRUE},
+ &color, 0xffbf7f40},
};
if (!init_test_context(&test_context, NULL))
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 5079113120eb..0f7ef67bc96d 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4293,10 +4293,10 @@ void CDECL wined3d_device_resolve_sub_resource(struct wined3d_device *device,
if (wined3d_format_is_typeless(dst_resource->format)
|| wined3d_format_is_typeless(src_resource->format))
{
- FIXME("Unhandled multisample resolve, dst_format %s, src_format %s, format %s.\n",
+ FIXME("Multisample resolve is not fully supported for typeless formats "
+ "(dst_format %s, src_format %s, format %s).\n",
debug_d3dformat(dst_resource->format->id), debug_d3dformat(src_resource->format->id),
debug_d3dformat(format_id));
- return;
}
if (dst_resource->type != WINED3D_RTYPE_TEXTURE_2D)
{
--
2.16.4
More information about the wine-devel
mailing list