From 24e8cf64f1ce1b51d58be50515d6ae743e99af65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Tue, 5 Apr 2016 10:22:03 +0200 Subject: [PATCH] d3d11: Allow to query ID3D11Predicate interface when predicate was created by CreateQuery(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/d3d11/async.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/dlls/d3d11/async.c b/dlls/d3d11/async.c index 66640a269a8..c100e732277 100644 --- a/dlls/d3d11/async.c +++ b/dlls/d3d11/async.c @@ -364,23 +364,28 @@ HRESULT d3d_query_create(struct d3d_device *device, const D3D11_QUERY_DESC *desc struct d3d_query **query) { struct d3d_query *object; + BOOL is_predicate_type; HRESULT hr; if (!desc) return E_INVALIDARG; - if (predicate - && desc->Query != D3D11_QUERY_OCCLUSION_PREDICATE - && desc->Query != D3D11_QUERY_SO_OVERFLOW_PREDICATE - && desc->Query != D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 - && desc->Query != D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 - && desc->Query != D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 - && desc->Query != D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3) + is_predicate_type = desc->Query == D3D11_QUERY_OCCLUSION_PREDICATE + || desc->Query == D3D11_QUERY_SO_OVERFLOW_PREDICATE + || desc->Query == D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + || desc->Query == D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + || desc->Query == D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + || desc->Query == D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3; + + if (!is_predicate_type && predicate) { WARN("Query type %u is not a predicate.\n", desc->Query); return E_INVALIDARG; } + if (is_predicate_type) + predicate = TRUE; + if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)))) return E_OUTOFMEMORY;