From 3dddd004d3622b7e0d7bad5dea52d622657585e5 Mon Sep 17 00:00:00 2001 From: assiduous Date: Fri, 10 Jan 2020 20:48:02 -0800 Subject: Fixed few issues with queries --- Graphics/GraphicsEngine/interface/Buffer.h | 1 - Graphics/GraphicsEngine/interface/DeviceContext.h | 15 +++++++++++++-- Graphics/GraphicsEngine/interface/Query.h | 6 ++++++ 3 files changed, 19 insertions(+), 3 deletions(-) (limited to 'Graphics/GraphicsEngine') diff --git a/Graphics/GraphicsEngine/interface/Buffer.h b/Graphics/GraphicsEngine/interface/Buffer.h index 9bd78ed2..92c1da89 100644 --- a/Graphics/GraphicsEngine/interface/Buffer.h +++ b/Graphics/GraphicsEngine/interface/Buffer.h @@ -111,7 +111,6 @@ struct BufferDesc : DeviceObjectAttribs BufferDesc()noexcept{} - explicit BufferDesc(Uint32 _uiSizeInBytes, BIND_FLAGS _BindFlags, USAGE _Usage = BufferDesc{}.Usage, diff --git a/Graphics/GraphicsEngine/interface/DeviceContext.h b/Graphics/GraphicsEngine/interface/DeviceContext.h index f08e2128..c3f7e407 100644 --- a/Graphics/GraphicsEngine/interface/DeviceContext.h +++ b/Graphics/GraphicsEngine/interface/DeviceContext.h @@ -1012,7 +1012,18 @@ public: /// \param [in] pQuery - A pointer to a query object. /// - /// \remarks Only immediate context can begin a query. + /// \remarks Only immediate contexts can begin a query. + /// + /// Vulkan requires that a query must either begin and end inside the same + /// subpass of a render pass instance, or must both begin and end outside of + /// a render pass instance. This means that an application must either begin + /// and end a query while preserving render targets, or begin it when no render + /// targets are bound to the context. In the latter case the engine will automaticaly + /// end the render pass, if needed, when the query is ended. + /// Also note that resource transitions must be performed outside of a render pass, + /// and may thus require ending current render pass. + /// To explicitly end current render pass, call + /// SetRenderTargets(0, nullptr, nullptr, RESOURCE_STATE_TRANSITION_MODE_NONE). /// /// \warning OpenGL and Vulkan do not support nested queries of the same type. virtual void BeginQuery(IQuery* pQuery) = 0; @@ -1027,7 +1038,7 @@ public: /// In Direct3D12 and Vulkan, queries (except for timestamp queries) /// cannot span command list boundaries, so the engine will never flush /// the context even if the number of commands exceeds the user-specified limit - /// if there is an active query. + /// when there is an active query. /// It is an error to explicitly flush the context while a query is active. /// /// All queries must be ended when IDeviceContext::FinishFrame() is called. diff --git a/Graphics/GraphicsEngine/interface/Query.h b/Graphics/GraphicsEngine/interface/Query.h index 38056611..b71e4792 100644 --- a/Graphics/GraphicsEngine/interface/Query.h +++ b/Graphics/GraphicsEngine/interface/Query.h @@ -155,6 +155,12 @@ struct QueryDesc : DeviceObjectAttribs { /// Query type, see Diligent::QUERY_TYPE. QUERY_TYPE Type = QUERY_TYPE_UNDEFINED; + + QueryDesc() noexcept {}; + + explicit QueryDesc(QUERY_TYPE _Type) noexcept : + Type(_Type) + {} }; -- cgit v1.2.3