=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3d11: Add support for D3D11_QUERY_SO_STATISTICS_STREAM{0, 1, 2, 3} queries.

Alexandre Julliard julliard at winehq.org
Thu May 25 14:42:16 CDT 2017


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

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Wed May 24 17:10:01 2017 +0200

d3d11: Add support for D3D11_QUERY_SO_STATISTICS_STREAM{0, 1, 2, 3} queries.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3d11/async.c       | 24 ++++++++++------
 dlls/d3d11/tests/d3d11.c | 72 +++++++++++++++++++++---------------------------
 2 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/dlls/d3d11/async.c b/dlls/d3d11/async.c
index 78f0126..baa0926 100644
--- a/dlls/d3d11/async.c
+++ b/dlls/d3d11/async.c
@@ -398,14 +398,22 @@ static HRESULT d3d_query_init(struct d3d_query *query, struct d3d_device *device
 
     static const enum wined3d_query_type query_type_map[] =
     {
-        /* D3D11_QUERY_EVENT                    */  WINED3D_QUERY_TYPE_EVENT,
-        /* D3D11_QUERY_OCCLUSION                */  WINED3D_QUERY_TYPE_OCCLUSION,
-        /* D3D11_QUERY_TIMESTAMP                */  WINED3D_QUERY_TYPE_TIMESTAMP,
-        /* D3D11_QUERY_TIMESTAMP_DISJOINT       */  WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT,
-        /* D3D11_QUERY_PIPELINE_STATISTICS      */  WINED3D_QUERY_TYPE_PIPELINE_STATISTICS,
-        /* D3D11_QUERY_OCCLUSION_PREDICATE      */  WINED3D_QUERY_TYPE_OCCLUSION,
-        /* D3D11_QUERY_SO_STATISTICS            */  WINED3D_QUERY_TYPE_SO_STATISTICS,
-        /* D3D11_QUERY_SO_OVERFLOW_PREDICATE    */  WINED3D_QUERY_TYPE_SO_OVERFLOW,
+        /* D3D11_QUERY_EVENT                         */ WINED3D_QUERY_TYPE_EVENT,
+        /* D3D11_QUERY_OCCLUSION                     */ WINED3D_QUERY_TYPE_OCCLUSION,
+        /* D3D11_QUERY_TIMESTAMP                     */ WINED3D_QUERY_TYPE_TIMESTAMP,
+        /* D3D11_QUERY_TIMESTAMP_DISJOINT            */ WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT,
+        /* D3D11_QUERY_PIPELINE_STATISTICS           */ WINED3D_QUERY_TYPE_PIPELINE_STATISTICS,
+        /* D3D11_QUERY_OCCLUSION_PREDICATE           */ WINED3D_QUERY_TYPE_OCCLUSION,
+        /* D3D11_QUERY_SO_STATISTICS                 */ WINED3D_QUERY_TYPE_SO_STATISTICS,
+        /* D3D11_QUERY_SO_OVERFLOW_PREDICATE         */ WINED3D_QUERY_TYPE_SO_OVERFLOW,
+        /* D3D11_QUERY_SO_STATISTICS_STREAM0         */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0,
+        /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM0,
+        /* D3D11_QUERY_SO_STATISTICS_STREAM1         */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1,
+        /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM1,
+        /* D3D11_QUERY_SO_STATISTICS_STREAM2         */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2,
+        /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM2,
+        /* D3D11_QUERY_SO_STATISTICS_STREAM3         */ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3,
+        /* D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 */ WINED3D_QUERY_TYPE_SO_OVERFLOW_STREAM3,
     };
 
     if (desc->Query >= ARRAY_SIZE(query_type_map))
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 895225d..431db44 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -4602,13 +4602,13 @@ static void test_create_query(void)
         {D3D11_QUERY_OCCLUSION_PREDICATE,           D3D_FEATURE_LEVEL_10_0, TRUE,  TRUE,  FALSE},
         {D3D11_QUERY_SO_STATISTICS,                 D3D_FEATURE_LEVEL_10_0, FALSE, FALSE, TRUE},
         {D3D11_QUERY_SO_OVERFLOW_PREDICATE,         D3D_FEATURE_LEVEL_10_0, TRUE,  TRUE,  TRUE},
-        {D3D11_QUERY_SO_STATISTICS_STREAM0,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, TRUE},
+        {D3D11_QUERY_SO_STATISTICS_STREAM0,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, FALSE},
         {D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0, D3D_FEATURE_LEVEL_11_0, TRUE,  FALSE, TRUE},
-        {D3D11_QUERY_SO_STATISTICS_STREAM1,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, TRUE},
+        {D3D11_QUERY_SO_STATISTICS_STREAM1,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, FALSE},
         {D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1, D3D_FEATURE_LEVEL_11_0, TRUE,  FALSE, TRUE},
-        {D3D11_QUERY_SO_STATISTICS_STREAM2,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, TRUE},
+        {D3D11_QUERY_SO_STATISTICS_STREAM2,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, FALSE},
         {D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2, D3D_FEATURE_LEVEL_11_0, TRUE,  FALSE, TRUE},
-        {D3D11_QUERY_SO_STATISTICS_STREAM3,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, TRUE},
+        {D3D11_QUERY_SO_STATISTICS_STREAM3,         D3D_FEATURE_LEVEL_11_0, FALSE, FALSE, FALSE},
         {D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3, D3D_FEATURE_LEVEL_11_0, TRUE,  FALSE, TRUE},
     };
 
@@ -18665,11 +18665,9 @@ static void test_quad_tessellation(void)
     ID3D11DeviceContext_SOSetTargets(context, 1, &so_buffer, &offset);
     query_desc.Query = D3D11_QUERY_SO_STATISTICS_STREAM0;
     query_desc.MiscFlags = 0;
-    query = NULL;
     hr = ID3D11Device_CreateQuery(device, &query_desc, (ID3D11Query **)&query);
-    todo_wine ok(hr == S_OK, "Failed to create query, hr %#x.\n", hr);
-    if (query)
-        ID3D11DeviceContext_Begin(context, query);
+    ok(hr == S_OK, "Failed to create query, hr %#x.\n", hr);
+    ID3D11DeviceContext_Begin(context, query);
 
     set_quad_color(&test_context, &white);
     for (i = 0; i < ARRAY_SIZE(constant.tess_factors); ++i)
@@ -18684,48 +18682,42 @@ static void test_quad_tessellation(void)
     ID3D11DeviceContext_Draw(context, 4, 0);
     check_texture_color(test_context.backbuffer, 0xffffffff, 0);
 
-    if (query)
+    ID3D11DeviceContext_End(context, query);
+    for (i = 0; i < 500; ++i)
     {
-        ID3D11DeviceContext_End(context, query);
-        for (i = 0; i < 500; ++i)
-        {
-            if ((hr = ID3D11DeviceContext_GetData(context, query, NULL, 0, 0)) != S_FALSE)
-                break;
-            Sleep(10);
-        }
-        ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-        hr = ID3D11DeviceContext_GetData(context, query, &so_statistics, sizeof(so_statistics), 0);
-        ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-        ok(so_statistics.NumPrimitivesWritten == 8, "Got unexpected primitives written %u.\n",
-                (unsigned int)so_statistics.NumPrimitivesWritten);
-        ok(so_statistics.PrimitivesStorageNeeded == 8, "Got unexpected primitives storage needed %u.\n",
-                (unsigned int)so_statistics.PrimitivesStorageNeeded);
-        ID3D11DeviceContext_Begin(context, query);
+        if ((hr = ID3D11DeviceContext_GetData(context, query, NULL, 0, 0)) != S_FALSE)
+            break;
+        Sleep(10);
     }
+    ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+    hr = ID3D11DeviceContext_GetData(context, query, &so_statistics, sizeof(so_statistics), 0);
+    ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+    ok(so_statistics.NumPrimitivesWritten == 8, "Got unexpected primitives written %u.\n",
+            (unsigned int)so_statistics.NumPrimitivesWritten);
+    ok(so_statistics.PrimitivesStorageNeeded == 8, "Got unexpected primitives storage needed %u.\n",
+            (unsigned int)so_statistics.PrimitivesStorageNeeded);
+    ID3D11DeviceContext_Begin(context, query);
 
     constant.tess_factors[0] = 5.0f;
     ID3D11DeviceContext_UpdateSubresource(context, (ID3D11Resource *)cb, 0, NULL, &constant, 0, 0);
     ID3D11DeviceContext_Draw(context, 4, 0);
     check_texture_color(test_context.backbuffer, 0xff00ff00, 0);
 
-    if (query)
+    ID3D11DeviceContext_End(context, query);
+    for (i = 0; i < 500; ++i)
     {
-        ID3D11DeviceContext_End(context, query);
-        for (i = 0; i < 500; ++i)
-        {
-            if ((hr = ID3D11DeviceContext_GetData(context, query, NULL, 0, 0)) != S_FALSE)
-                break;
-            Sleep(10);
-        }
-        ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-        hr = ID3D11DeviceContext_GetData(context, query, &so_statistics, sizeof(so_statistics), 0);
-        ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
-        ok(so_statistics.NumPrimitivesWritten == 11, "Got unexpected primitives written %u.\n",
-                (unsigned int)so_statistics.NumPrimitivesWritten);
-        ok(so_statistics.PrimitivesStorageNeeded == 11, "Got unexpected primitives storage needed %u.\n",
-                (unsigned int)so_statistics.PrimitivesStorageNeeded);
-        ID3D11Asynchronous_Release(query);
+        if ((hr = ID3D11DeviceContext_GetData(context, query, NULL, 0, 0)) != S_FALSE)
+            break;
+        Sleep(10);
     }
+    ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+    hr = ID3D11DeviceContext_GetData(context, query, &so_statistics, sizeof(so_statistics), 0);
+    ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+    ok(so_statistics.NumPrimitivesWritten == 11, "Got unexpected primitives written %u.\n",
+            (unsigned int)so_statistics.NumPrimitivesWritten);
+    ok(so_statistics.PrimitivesStorageNeeded == 11, "Got unexpected primitives storage needed %u.\n",
+            (unsigned int)so_statistics.PrimitivesStorageNeeded);
+    ID3D11Asynchronous_Release(query);
 
     ID3D11Buffer_Release(so_buffer);
     ID3D11GeometryShader_Release(gs);




More information about the wine-cvs mailing list