49 CComPtr<ID3D11Query>&& _pd3d11Query) :
69 CComPtr<ID3D11Query> pd3d11Query;
70 if (!m_AvailableQueries.empty())
72 pd3d11Query = std::move(m_AvailableQueries.back());
73 m_AvailableQueries.pop_back();
77 pd3d11Query = CreateQuery(pd3d11Device);
79 return std::shared_ptr<DisjointQueryWrapper>{
new DisjointQueryWrapper{*
this, std::move(pd3d11Query)}};
84 LOG_INFO_MESSAGE(
"Disjoint query pool: created ", m_NumQueriesCreated, (m_NumQueriesCreated == 1 ?
" query" :
" queries"));
88 CComPtr<ID3D11Query> CreateQuery(ID3D11Device* pd3d11Device)
90 D3D11_QUERY_DESC
QueryDesc = {D3D11_QUERY_TIMESTAMP_DISJOINT, 0};
92 CComPtr<ID3D11Query> pd3d11Query;
93 pd3d11Device->CreateQuery(&
QueryDesc, &pd3d11Query);
94 DEV_CHECK_ERR(pd3d11Query,
"Failed to create D3D11 disjoint query");
95 ++m_NumQueriesCreated;
98 std::vector<CComPtr<ID3D11Query>> m_AvailableQueries;
100 Uint32 m_NumQueriesCreated = 0;