Module: wine Branch: master Commit: ffb47ee5ec8cdd7826bb220d4c6ec179e820551c URL: http://source.winehq.org/git/wine.git/?a=commit;h=ffb47ee5ec8cdd7826bb220d4c...
Author: Józef Kucia jkucia@codeweavers.com Date: Fri Jun 9 13:00:05 2017 +0200
d3d11: Fixup D3D10_QUERY_PIPELINE_STATISTICS data.
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/d3d11/async.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/dlls/d3d11/async.c b/dlls/d3d11/async.c index c92e45f..ef8e63c 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; }