From 7ea11ededbdcb6988cc5c3d794b745e3ec812862 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Fri, 15 Jan 2021 16:02:16 +0100 Subject: [PATCH] vkd3d: Use virtual queries for transform feedback queries as well. Signed-off-by: Philip Rebohle --- libs/vkd3d/command.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index 838b6813..84dd1f8d 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -7316,13 +7316,12 @@ static void STDMETHODCALLTYPE d3d12_command_list_DiscardResource(d3d12_command_l } } -static inline bool d3d12_query_type_is_inline(struct d3d12_device *device, D3D12_QUERY_TYPE type) +static inline bool d3d12_query_type_is_inline(D3D12_QUERY_TYPE type) { - if (device->vkd3d_instance->config_flags & VKD3D_CONFIG_FLAG_DISABLE_QUERY_OPTIMIZATION) - return false; - return type == D3D12_QUERY_TYPE_OCCLUSION || - type == D3D12_QUERY_TYPE_BINARY_OCCLUSION; + type == D3D12_QUERY_TYPE_BINARY_OCCLUSION || + (type >= D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 && + type <= D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3); } static inline bool d3d12_query_type_is_scoped(D3D12_QUERY_TYPE type) @@ -7348,7 +7347,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_BeginQuery(d3d12_command_list_i d3d12_command_list_track_query_heap(list, query_heap); - if (d3d12_query_type_is_inline(list->device, type)) + if (d3d12_query_type_is_inline(type)) { if (!d3d12_command_list_enable_query(list, query_heap, index, type)) d3d12_command_list_mark_as_invalid(list, "Failed to enable virtual query.\n"); @@ -7382,7 +7381,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_EndQuery(d3d12_command_list_ifa d3d12_command_list_track_query_heap(list, query_heap); - if (d3d12_query_type_is_inline(list->device, type)) + if (d3d12_query_type_is_inline(type)) { if (!d3d12_command_list_disable_query(list, query_heap, index)) d3d12_command_list_mark_as_invalid(list, "Failed to disable virtual query.\n"); @@ -7520,7 +7519,7 @@ static void STDMETHODCALLTYPE d3d12_command_list_ResolveQueryData(d3d12_command_ d3d12_command_list_track_query_heap(list, query_heap); d3d12_command_list_end_current_render_pass(list, true); - if (d3d12_query_type_is_inline(list->device, type)) + if (d3d12_query_type_is_inline(type)) { if (!d3d12_command_list_gather_pending_queries(list)) {