Zhiyi Zhang : dxgi/tests: Relax closest matching mode comparison.

Alexandre Julliard julliard at winehq.org
Wed Sep 9 15:42:29 CDT 2020


Module: wine
Branch: master
Commit: 8776111bc4a1b0f9b3a49dd286a5a6b46f4ab4c6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=8776111bc4a1b0f9b3a49dd286a5a6b46f4ab4c6

Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date:   Wed Sep  9 21:54:22 2020 +0800

dxgi/tests: Relax closest matching mode comparison.

On Windows, a DXGI output may support 1920x1440 and 2560x1080
display modes, both of which have the same pixel count. And when
finding a mode closest to 2559x1079 or 2561x1081, 1920x1440 is returned.

Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dxgi/tests/dxgi.c | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 59b23918de..f5c5e3b786 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -207,8 +207,9 @@ static unsigned int check_multisample_quality_levels(IDXGIDevice *dxgi_device,
 #define MODE_DESC_IGNORE_FORMAT            0x00000004u
 #define MODE_DESC_IGNORE_SCANLINE_ORDERING 0x00000008u
 #define MODE_DESC_IGNORE_SCALING           0x00000010u
+#define MODE_DESC_IGNORE_EXACT_RESOLUTION  0x00000020u
 
-#define MODE_DESC_CHECK_RESOLUTION         (~MODE_DESC_IGNORE_RESOLUTION)
+#define MODE_DESC_CHECK_RESOLUTION         (~MODE_DESC_IGNORE_RESOLUTION & ~MODE_DESC_IGNORE_EXACT_RESOLUTION)
 #define MODE_DESC_CHECK_FORMAT             (~MODE_DESC_IGNORE_FORMAT)
 
 #define check_mode_desc(a, b, c) check_mode_desc_(__LINE__, a, b, c)
@@ -217,10 +218,16 @@ static void check_mode_desc_(unsigned int line, const DXGI_MODE_DESC *desc,
 {
     if (!(ignore_flags & MODE_DESC_IGNORE_RESOLUTION))
     {
-        ok_(__FILE__, line)(desc->Width == expected_desc->Width
-                && desc->Height == expected_desc->Height,
-                "Got resolution %ux%u, expected %ux%u.\n",
-                desc->Width, desc->Height, expected_desc->Width, expected_desc->Height);
+        if (ignore_flags & MODE_DESC_IGNORE_EXACT_RESOLUTION)
+            ok_(__FILE__, line)(desc->Width * desc->Height ==
+                    expected_desc->Width * expected_desc->Height,
+                    "Got resolution %ux%u, expected %ux%u.\n",
+                    desc->Width, desc->Height, expected_desc->Width, expected_desc->Height);
+        else
+            ok_(__FILE__, line)(desc->Width == expected_desc->Width &&
+                    desc->Height == expected_desc->Height,
+                    "Got resolution %ux%u, expected %ux%u.\n",
+                    desc->Width, desc->Height, expected_desc->Width, expected_desc->Height);
     }
     if (!(ignore_flags & MODE_DESC_IGNORE_REFRESH_RATE))
     {
@@ -1526,7 +1533,8 @@ static void test_find_closest_matching_mode(void)
         mode.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
         hr = IDXGIOutput_FindClosestMatchingMode(output, &mode, &matching_mode, NULL);
         ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-        check_mode_desc(&matching_mode, &modes[i], MODE_DESC_CHECK_RESOLUTION & MODE_DESC_CHECK_FORMAT);
+        check_mode_desc(&matching_mode, &modes[i],
+                (MODE_DESC_CHECK_RESOLUTION & MODE_DESC_CHECK_FORMAT) | MODE_DESC_IGNORE_EXACT_RESOLUTION);
 
         memset(&mode, 0, sizeof(mode));
         mode.Width = modes[i].Width + 1;
@@ -1534,7 +1542,8 @@ static void test_find_closest_matching_mode(void)
         mode.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
         hr = IDXGIOutput_FindClosestMatchingMode(output, &mode, &matching_mode, NULL);
         ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-        check_mode_desc(&matching_mode, &modes[i], MODE_DESC_CHECK_RESOLUTION & MODE_DESC_CHECK_FORMAT);
+        check_mode_desc(&matching_mode, &modes[i],
+                (MODE_DESC_CHECK_RESOLUTION & MODE_DESC_CHECK_FORMAT) | MODE_DESC_IGNORE_EXACT_RESOLUTION);
     }
 
     memset(&mode, 0, sizeof(mode));




More information about the wine-cvs mailing list