Rémi Bernon : d3d11/tests: Add tests for predicate state swap.

Alexandre Julliard julliard at winehq.org
Wed Feb 3 15:39:29 CST 2021


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Tue Feb  2 16:41:07 2021 +0100

d3d11/tests: Add tests for predicate state swap.

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/tests/d3d11.c | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 5212776cc59..d7a49f4af3a 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -6797,9 +6797,11 @@ static void test_device_context_state(void)
     enum D3D_PRIMITIVE_TOPOLOGY topo;
     ID3D11ComputeShader *tmp_cs, *cs;
     D3D11_DEPTH_STENCIL_DESC ds_desc;
+    ID3D11Predicate *tmp_pred, *pred;
     ID3D11DomainShader *tmp_ds, *ds;
     D3D11_SAMPLER_DESC sampler_desc;
     D3D_FEATURE_LEVEL feature_level;
+    D3D11_QUERY_DESC predicate_desc;
     ID3D11Device1 *device, *device2;
     ID3D11InputLayout *il, *tmp_il;
     ID3D11PixelShader *tmp_ps, *ps;
@@ -6814,6 +6816,7 @@ static void test_device_context_state(void)
     float blend_factor[4];
     struct vec4 constant;
     DWORD data_size;
+    BOOL pred_value;
     ULONG refcount;
     char data[64];
     HRESULT hr;
@@ -7020,6 +7023,10 @@ static void test_device_context_state(void)
     vp.MinDepth = 0.f;
     vp.MaxDepth = 0.01f;
 
+    predicate_desc.Query = D3D11_QUERY_OCCLUSION_PREDICATE;
+    predicate_desc.MiscFlags = 0;
+    ID3D11Device1_CreatePredicate(device, &predicate_desc, &pred);
+
     ID3D11DeviceContext1_VSSetConstantBuffers(context, 0, 1, &cb);
     ID3D11DeviceContext1_VSSetSamplers(context, 0, 1, &sampler);
     ID3D11DeviceContext1_VSSetShader(context, vs, NULL, 0);
@@ -7067,6 +7074,7 @@ static void test_device_context_state(void)
     ID3D11DeviceContext1_RSSetState(context, rs);
 
     ID3D11DeviceContext1_SOSetTargets(context, 1, &sob, &so_offset);
+    ID3D11DeviceContext1_SetPredication(context, pred, TRUE);
 
     previous_context_state = (ID3DDeviceContextState *)0xdeadbeef;
     ID3D11DeviceContext1_SwapDeviceContextState(context, NULL, &previous_context_state);
@@ -7257,6 +7265,13 @@ static void test_device_context_state(void)
     todo_wine ok(!tmp_sob, "Got unexpected stream output buffer %p.\n", tmp_sob);
     if (tmp_sob) ID3D11Buffer_Release(tmp_sob);
 
+    tmp_pred = (ID3D11Predicate *)0xdeadbeef;
+    pred_value = 0xdeadbeef;
+    ID3D11DeviceContext1_GetPredication(context, &tmp_pred, &pred_value);
+    todo_wine ok(!tmp_pred, "Got unexpected predicate %p.\n", tmp_pred);
+    if (tmp_pred) ID3D11Predicate_Release(tmp_pred);
+    todo_wine ok(!pred_value, "Got unexpected predicate value %d.\n", pred_value);
+
     /* updating the device context should also update the device context state */
     hr = ID3D11Device1_CreateVertexShader(device, simple_vs, sizeof(simple_vs), NULL, &vs2);
     ok(SUCCEEDED(hr), "Failed to create vertex shader, hr %#x.\n", hr);
@@ -7537,6 +7552,13 @@ static void test_device_context_state(void)
     ok(tmp_sob == sob, "Got stream output buffer %p, expected %p.\n", tmp_sob, sob);
     ID3D11Buffer_Release(tmp_sob);
 
+    tmp_pred = (ID3D11Predicate *)0xdeadbeef;
+    pred_value = 0xdeadbeef;
+    ID3D11DeviceContext1_GetPredication(context, &tmp_pred, &pred_value);
+    ok(tmp_pred == pred, "Got predicate %p, expected %p.\n", tmp_pred, pred);
+    ID3D11Predicate_Release(tmp_pred);
+    ok(pred_value == TRUE, "Got predicate value %#x, expected TRUE.\n", pred_value);
+
     feature_level = min(feature_level, D3D_FEATURE_LEVEL_10_1);
     hr = ID3D11Device1_CreateDeviceContextState(device, 0, &feature_level, 1, D3D11_SDK_VERSION,
             &IID_ID3D10Device, NULL, &context_state);
@@ -7759,6 +7781,7 @@ static void test_device_context_state(void)
     ID3D11DeviceContext1_RSSetState(context, rs);
 
     ID3D11DeviceContext1_SOSetTargets(context, 1, &sob, &so_offset);
+    ID3D11DeviceContext1_SetPredication(context, pred, TRUE);
 
     tmp_rs = (ID3D11RasterizerState *)0xdeadbeef;
     ID3D11DeviceContext1_RSGetState(context, &tmp_rs);
@@ -7778,6 +7801,13 @@ static void test_device_context_state(void)
     todo_wine ok(!tmp_sob, "Got unexpected stream output buffer %p.\n", tmp_sob);
     if (tmp_sob) ID3D11Buffer_Release(tmp_sob);
 
+    tmp_pred = (ID3D11Predicate *)0xdeadbeef;
+    pred_value = 0xdeadbeef;
+    ID3D11DeviceContext1_GetPredication(context, &tmp_pred, &pred_value);
+    todo_wine ok(!tmp_pred, "Got unexpected predicate %p.\n", tmp_pred);
+    if (tmp_pred) ID3D11Predicate_Release(tmp_pred);
+    todo_wine ok(!pred_value, "Got unexpected predicate value %d.\n", pred_value);
+
     check_interface(device, &IID_ID3D10Device, TRUE, FALSE);
     check_interface(device, &IID_ID3D10Device1, TRUE, FALSE);
 
@@ -7970,9 +8000,17 @@ static void test_device_context_state(void)
     ok(tmp_sob == sob, "Got stream output buffer %p, expected %p.\n", tmp_sob, sob);
     ID3D11Buffer_Release(tmp_sob);
 
+    tmp_pred = (ID3D11Predicate *)0xdeadbeef;
+    pred_value = 0xdeadbeef;
+    ID3D11DeviceContext1_GetPredication(context, &tmp_pred, &pred_value);
+    ok(tmp_pred == pred, "Got predicate %p, expected %p.\n", tmp_pred, pred);
+    ID3D11Predicate_Release(tmp_pred);
+    ok(pred_value == TRUE, "Got predicate value %#x, expected TRUE.\n", pred_value);
+
     check_interface(device, &IID_ID3D10Device, TRUE, FALSE);
     check_interface(device, &IID_ID3D10Device1, TRUE, FALSE);
 
+    ID3D11Predicate_Release(pred);
     ID3D11Buffer_Release(sob);
     ID3D11RasterizerState_Release(rs);
     ID3D11BlendState_Release(bs);




More information about the wine-cvs mailing list