![]() |
Open 3D Engine Atom Gem API Reference
22.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
|
#include <QueryPool.h>
Inherits AZ::RHI::ResourcePool.
Public Member Functions | |
ResultCode | Init (Device &device, const QueryPoolDescriptor &descriptor) |
Initialize the QueryPool. | |
ResultCode | InitQuery (Query *query) |
ResultCode | InitQuery (Query **queries, uint32_t queryCount) |
ResultCode | GetResults (uint64_t *results, uint32_t resultsCount, QueryResultFlagBits flags) |
ResultCode | GetResults (Query *query, uint64_t *result, uint32_t resultsCount, QueryResultFlagBits flags) |
Same as GetResults(uint64_t, uint32_t, QueryResultFlagBits) but for one specific Query. | |
ResultCode | GetResults (Query **queries, uint32_t queryCount, uint64_t *results, uint32_t resultsCount, QueryResultFlagBits flags) |
const QueryPoolDescriptor & | GetDescriptor () const override final |
const Query * | GetQuery (QueryHandle handle) const |
Returns the query by their handle. | |
![]() | |
AZ_RTTI (ResourcePool, "{757EB674-25DC-4D00-9808-D3DAF33A4EFE}", DeviceObject) | |
void | Shutdown () override final |
Shuts down the pool. This method will shutdown all resources associated with the pool. | |
template<typename ResourceType > | |
void | ForEach (AZStd::function< void(ResourceType &)> callback) |
template<typename ResourceType > | |
void | ForEach (AZStd::function< void(const ResourceType &)> callback) const |
uint32_t | GetResourceCount () const |
Returns the number of resources in the pool. | |
ResourcePoolResolver * | GetResolver () |
Returns the resolver for this pool. | |
const ResourcePoolResolver * | GetResolver () const |
const HeapMemoryUsage & | GetHeapMemoryUsage (HeapMemoryLevel heapMemoryLevel) const |
Returns the memory used by this pool for a specific heap type. | |
const PoolMemoryUsage & | GetMemoryUsage () const |
Returns the memory used by this pool. | |
![]() | |
AZ_RTTI (DeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object) | |
bool | IsInitialized () const |
Returns whether the device object is initialized. | |
Device & | GetDevice () const |
![]() | |
AZ_RTTI (Object, "{E43378F1-2331-4173-94B8-990ED20E6003}") | |
void | SetName (const Name &name) |
const Name & | GetName () const |
Protected Member Functions | |
Query * | GetQuery (QueryHandle handle) |
template<class T > | |
AZStd::vector< Interval > | GetQueryIntervals (const AZStd::vector< T * > &queries) |
template<class T > | |
AZStd::vector< Interval > | GetQueryIntervalsSorted (const AZStd::vector< T * > &queries) |
template<class T > | |
void | SortQueries (AZStd::vector< T * > &queries) |
void | ComputeFragmentation () const override |
![]() | |
void | OnFrameBegin () override |
void | OnFrameCompile () override |
void | OnFrameEnd () override |
void | SetResolver (AZStd::unique_ptr< ResourcePoolResolver > &&resolvePolicy) |
ResultCode | Init (Device &device, const ResourcePoolDescriptor &descriptor, const PlatformMethod &initMethod) |
ResultCode | InitResource (Resource *resource, const PlatformMethod &initResourceMethod) |
bool | ValidateIsRegistered (const Resource *resource) const |
bool | ValidateIsUnregistered (const Resource *resource) const |
bool | ValidateIsInitialized () const |
Validates that the resource pool is initialized and ready to service requests. | |
bool | ValidateNotProcessingFrame () const |
Validates that we are not in the frame processing phase. | |
![]() | |
void | Init (Device &device) |
The derived class should call this method to assign the device. | |
Additional Inherited Members | |
![]() | |
using | PlatformMethod = AZStd::function< RHI::ResultCode()> |
A simple functor that returns a result code. | |
![]() | |
PoolMemoryUsage | m_memoryUsage |
Query pool provides backing storage and context for query instances. The QueryPoolDescriptor contains properties defining memory characteristics of query pools. All queries created on a pool share the same backing and type.
|
inlineoverrideprotectedvirtual |
Compute the memory fragmentation for each constituent heap and store the results in m_memoryUsage. This method is invoked when memory statistics gathering is active.
Implements AZ::RHI::ResourcePool.
|
finaloverridevirtual |
Returns the buffer descriptor used to initialize the query pool. Descriptor contents are undefined for uninitialized pools.
Implements AZ::RHI::ResourcePool.
|
protected |
Find groups of consecutive QueryHandle values from a list of unsorted queries.
queries | The list of queries to search. |
|
protected |
Find groups of consecutive QueryHandle values from a list of sorted queries.
queries | The list of sorted queries to search. |
ResultCode AZ::RHI::QueryPool::GetResults | ( | Query ** | queries, |
uint32_t | queryCount, | ||
uint64_t * | results, | ||
uint32_t | resultsCount, | ||
QueryResultFlagBits | flags | ||
) |
Same as GetResults(uint64_t, uint32_t, QueryResultFlagBits) but for a list of queries. It's more efficient if the list of queries is sorted by handle in ascending order because there's no need to sort the results before returning.
ResultCode AZ::RHI::QueryPool::GetResults | ( | uint64_t * | results, |
uint32_t | resultsCount, | ||
QueryResultFlagBits | flags | ||
) |
Get the results from all queries in the pool. Results are always returned as uint64_t data. The "results" parameter must contain enough space to save the results from all queries in the pool. For the PipelineStatistics query type, each statistic will be copied to a uint64_t. Because of this the "results" array must contain enough space for numQueries * numPipelineStatistics. This function doesn't return partial results. In case of failure no results are returned.
results | Pointer to an array where the results will be copied. |
resultsCount | Number of elements of the "results" array. |
QueryResultFlagBits | Control how the results will be requested. If QueryResultFlagBits::Wait is used the call will block until the results are done. If QueryResultFlagBits::Wait is not used and the results are not ready, ResultCode::NotReady will be returned |
ResultCode AZ::RHI::QueryPool::InitQuery | ( | Query ** | queries, |
uint32_t | queryCount | ||
) |
Initialize a group of queries from the pool. The initialization will try to allocate the queries in a consecutive space. The reason for this is that is more efficient when requesting results or copying multiple query results.
queries | Pointer to an array of queries to initialize. |
queryCount | Number of queries. |
ResultCode AZ::RHI::QueryPool::InitQuery | ( | Query * | query | ) |
Initialize a query from the pool. When initializing multiple queries use the other version of InitQuery because the pool will try to group the queries together.
query | Query to initialize. |