Rémi Bernon : d3d11: Always return the rectangle count in d3d11_immediate_context_RSGetScissorRects().

Alexandre Julliard julliard at winehq.org
Tue Feb 23 15:54:48 CST 2021


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Tue Feb 23 19:50:47 2021 +0100

d3d11: Always return the rectangle count in d3d11_immediate_context_RSGetScissorRects().

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d11/device.c      | 9 ++-------
 dlls/d3d11/tests/d3d11.c | 6 +++---
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index a5d9dc1aa7b..c8ec35a59c0 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -2270,14 +2270,9 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSGetScissorRects(ID3D11De
     wined3d_device_get_scissor_rects(device->wined3d_device, &actual_count, rects);
     wined3d_mutex_unlock();
 
-    if (!rects)
-    {
-        *rect_count = actual_count;
-        return;
-    }
-
-    if (*rect_count > actual_count)
+    if (rects && *rect_count > actual_count)
         memset(&rects[actual_count], 0, (*rect_count - actual_count) * sizeof(*rects));
+    *rect_count = actual_count;
 }
 
 static void STDMETHODCALLTYPE d3d11_immediate_context_HSGetShaderResources(ID3D11DeviceContext1 *iface,
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 2eff98fe8fc..32a9dc2e530 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -7235,7 +7235,7 @@ static void test_device_context_state(void)
     memset(tmp_rect, 0xa5, sizeof(tmp_rect));
     count = 2;
     ID3D11DeviceContext1_RSGetScissorRects(context, &count, tmp_rect);
-    todo_wine ok(count == 0, "Got unexpected scissor rect count %u.\n", count);
+    ok(count == 0, "Got unexpected scissor rect count %u.\n", count);
 
     tmp_sob = (ID3D11Buffer *)0xdeadbeef;
     ID3D11DeviceContext1_SOGetTargets(context, 1, &tmp_sob);
@@ -7514,7 +7514,7 @@ static void test_device_context_state(void)
     memset(tmp_rect, 0xa5, sizeof(tmp_rect));
     count = 2;
     ID3D11DeviceContext1_RSGetScissorRects(context, &count, tmp_rect);
-    todo_wine ok(count == 1, "Got scissor rect count %u, expected 1.\n", count);
+    ok(count == 1, "Got scissor rect count %u, expected 1.\n", count);
     ok(!memcmp(tmp_rect, &rect, sizeof(rect)), "Got scissor rect %s, expected %s.\n",
             wine_dbgstr_rect(tmp_rect), wine_dbgstr_rect(&rect));
 
@@ -7962,7 +7962,7 @@ static void test_device_context_state(void)
     memset(tmp_rect, 0xa5, sizeof(tmp_rect));
     count = 2;
     ID3D11DeviceContext1_RSGetScissorRects(context, &count, tmp_rect);
-    todo_wine ok(count == 1, "Got scissor rect count %u, expected 1.\n", count);
+    ok(count == 1, "Got scissor rect count %u, expected 1.\n", count);
     ok(!memcmp(tmp_rect, &rect, sizeof(rect)), "Got scissor rect %s, expected %s.\n",
             wine_dbgstr_rect(tmp_rect), wine_dbgstr_rect(&rect));
 




More information about the wine-cvs mailing list