[PATCH 5/6] d3d11: Fixup D3D10_QUERY_PIPELINE_STATISTICS data.

Józef Kucia jkucia at codeweavers.com
Fri Jun 9 06:00:05 CDT 2017


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/d3d11/async.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/dlls/d3d11/async.c b/dlls/d3d11/async.c
index c92e45fc19..ef8e63c144 100644
--- a/dlls/d3d11/async.c
+++ b/dlls/d3d11/async.c
@@ -320,6 +320,8 @@ static void STDMETHODCALLTYPE d3d10_query_End(ID3D10Query *iface)
 static HRESULT STDMETHODCALLTYPE d3d10_query_GetData(ID3D10Query *iface, void *data, UINT data_size, UINT flags)
 {
     struct d3d_query *query = impl_from_ID3D10Query(iface);
+    D3D11_QUERY_DATA_PIPELINE_STATISTICS d3d11_data;
+    void *d3d10_data_pointer = NULL;
     unsigned int wined3d_flags;
     HRESULT hr;
 
@@ -328,6 +330,17 @@ static HRESULT STDMETHODCALLTYPE d3d10_query_GetData(ID3D10Query *iface, void *d
     if (!data && data_size)
         return E_INVALIDARG;
 
+    if (query->desc.Query == D3D11_QUERY_PIPELINE_STATISTICS
+            && data_size == sizeof(D3D10_QUERY_DATA_PIPELINE_STATISTICS))
+    {
+        data_size = sizeof(D3D11_QUERY_DATA_PIPELINE_STATISTICS);
+        if (data)
+        {
+            d3d10_data_pointer = data;
+            data = &d3d11_data;
+        }
+    }
+
     wined3d_flags = wined3d_getdata_flags_from_d3d11_async_getdata_flags(flags);
 
     wined3d_mutex_lock();
@@ -344,6 +357,9 @@ static HRESULT STDMETHODCALLTYPE d3d10_query_GetData(ID3D10Query *iface, void *d
     }
     wined3d_mutex_unlock();
 
+    if (d3d10_data_pointer && hr == S_OK)
+        memcpy(d3d10_data_pointer, data, sizeof(D3D10_QUERY_DATA_PIPELINE_STATISTICS));
+
     return hr;
 }
 
@@ -358,6 +374,9 @@ static UINT STDMETHODCALLTYPE d3d10_query_GetDataSize(ID3D10Query *iface)
     data_size = wined3d_query_get_data_size(query->wined3d_query);
     wined3d_mutex_unlock();
 
+    if (query->desc.Query == D3D11_QUERY_PIPELINE_STATISTICS)
+        data_size = sizeof(D3D10_QUERY_DATA_PIPELINE_STATISTICS);
+
     return data_size;
 }
 
-- 
2.13.0




More information about the wine-patches mailing list