vulkan-3.13: Bindings to the Vulkan graphics API.
Safe HaskellNone
LanguageHaskell2010

Vulkan.Extensions.VK_KHR_performance_query

Description

Name

VK_KHR_performance_query - device extension

VK_KHR_performance_query

Name String
VK_KHR_performance_query
Extension Type
Device extension
Registered Extension Number
117
Revision
1
Extension and Version Dependencies
  • Requires Vulkan 1.0
  • Requires VK_KHR_get_physical_device_properties2
Special Use
Contact

Other Extension Metadata

Last Modified Date
2019-10-08
IP Status
No known IP claims.
Contributors
  • Jesse Barker, Unity Technologies
  • Kenneth Benzie, Codeplay
  • Jan-Harald Fredriksen, ARM
  • Jeff Leger, Qualcomm
  • Jesse Hall, Google
  • Tobias Hector, AMD
  • Neil Henning, Codeplay
  • Baldur Karlsson
  • Lionel Landwerlin, Intel
  • Peter Lohrmann, AMD
  • Alon Or-bach, Samsung
  • Daniel Rakos, AMD
  • Niklas Smedberg, Unity Technologies
  • Igor Ostrowski, Intel

Description

The VK_KHR_performance_query extension adds a mechanism to allow querying of performance counters for use in applications and by profiling tools.

Each queue family may expose counters that can be enabled on a queue of that family. We extend QueryType to add a new query type for performance queries, and chain a structure on QueryPoolCreateInfo to specify the performance queries to enable.

New Commands

New Structures

New Unions

New Enums

New Bitmasks

New Enum Constants

Issues

1) Should this extension include a mechanism to begin a query in command buffer A and end the query in command buffer B?

RESOLVED No - queries are tied to command buffer creation and thus have to be encapsulated within a single command buffer.

2) Should this extension include a mechanism to begin and end queries globally on the queue, not using the existing command buffer commands?

RESOLVED No - for the same reasoning as the resolution of 1).

3) Should this extension expose counters that require multiple passes?

RESOLVED Yes - users should re-submit a command buffer with the same commands in it multiple times, specifying the pass to count as the query parameter in VkPerformanceQuerySubmitInfoKHR.

4) How to handle counters across parallel workloads?

RESOLVED In the spirit of Vulkan, a counter description flag PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR denotes that the accuracy of a counter result is affected by parallel workloads.

5) How to handle secondary command buffers?

RESOLVED Secondary command buffers inherit any counter pass index specified in the parent primary command buffer. Note: this is no longer an issue after change from issue 10 resolution

6) What commands does the profiling lock have to be held for?

RESOLVED For any command buffer that is being queried with a performance query pool, the profiling lock must be held while that command buffer is in the recording, executable, or pending state.

7) Should we support cmdCopyQueryPoolResults?

RESOLVED Yes.

8) Should we allow performance queries to interact with multiview?

RESOLVED Yes, but the performance queries must be performed once for each pass per view.

9) Should a queryCount > 1 be usable for performance queries?

RESOLVED Yes. Some vendors will have costly performance counter query pool creation, and would rather if a certain set of counters were to be used multiple times that a queryCount > 1 can be used to amortize the instantiation cost.

10) Should we introduce an indirect mechanism to set the counter pass index?

RESOLVED Specify the counter pass index at submit time instead, to avoid requiring re-recording of command buffers when multiple counter passes are needed.

Examples

The following example shows how to find what performance counters a queue family supports, setup a query pool to record these performance counters, how to add the query pool to the command buffer to record information, and how to get the results from the query pool.

// A previously created physical device
VkPhysicalDevice physicalDevice;

// One of the queue families our device supports
uint32_t queueFamilyIndex;

uint32_t counterCount;

// Get the count of counters supported
vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
  physicalDevice,
  queueFamilyIndex,
  &counterCount,
  NULL,
  NULL);

VkPerformanceCounterKHR* counters =
  malloc(sizeof(VkPerformanceCounterKHR) * counterCount);
VkPerformanceCounterDescriptionKHR* counterDescriptions =
  malloc(sizeof(VkPerformanceCounterDescriptionKHR) * counterCount);

// Get the counters supported
vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
  physicalDevice,
  queueFamilyIndex,
  &counterCount,
  counters,
  counterDescriptions);

// Try to enable the first 8 counters
uint32_t enabledCounters[8];

const uint32_t enabledCounterCount = min(counterCount, 8));

for (uint32_t i = 0; i < enabledCounterCount; i++) {
  enabledCounters[i] = i;
}

// A previously created device that had the performanceCounterQueryPools feature
// set to VK_TRUE
VkDevice device;

VkQueryPoolPerformanceCreateInfoKHR performanceQueryCreateInfo = {
  VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,
  NULL,

  // Specify the queue family that this performance query is performed on
  queueFamilyIndex,

  // The number of counters to enable
  enabledCounterCount,

  // The array of indices of counters to enable
  enabledCounters
};


// Get the number of passes our counters will require.
uint32_t numPasses;

vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
  physicalDevice,
  &performanceQueryCreateInfo,
  &numPasses);

VkQueryPoolCreateInfo queryPoolCreateInfo = {
  VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
  &performanceQueryCreateInfo,
  0,

  // Using our new query type here
  VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR,

  1,

  0
};

VkQueryPool queryPool;

VkResult result = vkCreateQueryPool(
  device,
  &queryPoolCreateInfo,
  NULL,
  &queryPool);

assert(VK_SUCCESS == result);

// A queue from queueFamilyIndex
VkQueue queue;

// A command buffer we want to record counters on
VkCommandBuffer commandBuffer;

VkCommandBufferBeginInfo commandBufferBeginInfo = {
  VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
  NULL,
  0,
  NULL
};

VkAcquireProfilingLockInfoKHR lockInfo = {
  VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,
  NULL,
  0,
  UINT64_MAX // Wait forever for the lock
};

// Acquire the profiling lock before we record command buffers
// that will use performance queries

result = vkAcquireProfilingLockKHR(device, &lockInfo);

assert(VK_SUCCESS == result);

result = vkBeginCommandBuffer(commandBuffer, &commandBufferBeginInfo);

assert(VK_SUCCESS == result);

vkCmdResetQueryPool(
  commandBuffer,
  queryPool,
  0,
  1);

vkCmdBeginQuery(
  commandBuffer,
  queryPool,
  0,
  0);

// Perform the commands you want to get performance information on
// ...

// Perform a barrier to ensure all previous commands were complete before
// ending the query
vkCmdPipelineBarrier(commandBuffer,
  VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
  VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
  0,
  0,
  NULL,
  0,
  NULL,
  0,
  NULL);

vkCmdEndQuery(
  commandBuffer,
  queryPool,
  0);

result = vkEndCommandBuffer(commandBuffer);

assert(VK_SUCCESS == result);

for (uint32_t counterPass = 0; counterPass < numPasses; counterPass++) {

  VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo = {
    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
    NULL,
    counterPass
  };


  // Submit the command buffer and wait for its completion
  // ...
}

// Release the profiling lock after the command buffer is no longer in the
// pending state.
vkReleaseProfilingLockKHR(device);

result = vkResetCommandBuffer(commandBuffer, 0);

assert(VK_SUCCESS == result);

// Create an array to hold the results of all counters
VkPerformanceCounterResultKHR* recordedCounters = malloc(
  sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount);

result = vkGetQueryPoolResults(
  device,
  queryPool,
  0,
  1,
  sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount,
  recordedCounters,
  sizeof(VkPerformanceCounterResultKHR),
  NULL);

// recordedCounters is filled with our counters, we will look at one for posterity
switch (counters[0].storage) {
  case VK_PERFORMANCE_COUNTER_STORAGE_INT32:
    // use recordCounters[0].int32 to get at the counter result!
    break;
  case VK_PERFORMANCE_COUNTER_STORAGE_INT64:
    // use recordCounters[0].int64 to get at the counter result!
    break;
  case VK_PERFORMANCE_COUNTER_STORAGE_UINT32:
    // use recordCounters[0].uint32 to get at the counter result!
    break;
  case VK_PERFORMANCE_COUNTER_STORAGE_UINT64:
    // use recordCounters[0].uint64 to get at the counter result!
    break;
  case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32:
    // use recordCounters[0].float32 to get at the counter result!
    break;
  case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64:
    // use recordCounters[0].float64 to get at the counter result!
    break;
}

Version History

  • Revision 1, 2019-10-08

See Also

AcquireProfilingLockFlagBitsKHR, AcquireProfilingLockFlagsKHR, AcquireProfilingLockInfoKHR, PerformanceCounterDescriptionFlagBitsKHR, PerformanceCounterDescriptionFlagsKHR, PerformanceCounterDescriptionKHR, PerformanceCounterKHR, PerformanceCounterResultKHR, PerformanceCounterScopeKHR, PerformanceCounterStorageKHR, PerformanceCounterUnitKHR, PerformanceQuerySubmitInfoKHR, PhysicalDevicePerformanceQueryFeaturesKHR, PhysicalDevicePerformanceQueryPropertiesKHR, QueryPoolPerformanceCreateInfoKHR, acquireProfilingLockKHR, enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, releaseProfilingLockKHR

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Synopsis

Documentation

enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR Source #

Arguments

:: forall io. MonadIO io 
=> PhysicalDevice

physicalDevice is the handle to the physical device whose queue family performance query counter properties will be queried.

-> ("queueFamilyIndex" ::: Word32)

queueFamilyIndex is the index into the queue family of the physical device we want to get properties for.

-> io (Result, "counters" ::: Vector PerformanceCounterKHR, "counterDescriptions" ::: Vector PerformanceCounterDescriptionKHR) 

vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR - Reports properties of the performance query counters available on a queue family of a device

Description

If pCounters is NULL and pCounterDescriptions is NULL, then the number of counters available is returned in pCounterCount. Otherwise, pCounterCount must point to a variable set by the user to the number of elements in the pCounters, pCounterDescriptions, or both arrays and on return the variable is overwritten with the number of structures actually written out. If pCounterCount is less than the number of counters available, at most pCounterCount structures will be written, and INCOMPLETE will be returned instead of SUCCESS, to indicate that not all the available counters were returned.

Valid Usage (Implicit)

  • pCounterCount must be a valid pointer to a uint32_t value
  • If the value referenced by pCounterCount is not 0, and pCounters is not NULL, pCounters must be a valid pointer to an array of pCounterCount PerformanceCounterKHR structures
  • If the value referenced by pCounterCount is not 0, and pCounterDescriptions is not NULL, pCounterDescriptions must be a valid pointer to an array of pCounterCount PerformanceCounterDescriptionKHR structures

Return Codes

Success
Failure

See Also

VK_KHR_performance_query, PerformanceCounterDescriptionKHR, PerformanceCounterKHR, PhysicalDevice

getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR Source #

Arguments

:: forall io. MonadIO io 
=> PhysicalDevice

physicalDevice is the handle to the physical device whose queue family performance query counter properties will be queried.

physicalDevice must be a valid PhysicalDevice handle

-> ("performanceQueryCreateInfo" ::: QueryPoolPerformanceCreateInfoKHR)

pPerformanceQueryCreateInfo is a pointer to a QueryPoolPerformanceCreateInfoKHR of the performance query that is to be created.

pPerformanceQueryCreateInfo must be a valid pointer to a valid QueryPoolPerformanceCreateInfoKHR structure

-> io ("numPasses" ::: Word32) 

vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR - Reports the number of passes require for a performance query pool type

Description

The pPerformanceQueryCreateInfo member QueryPoolPerformanceCreateInfoKHR::queueFamilyIndex must be a queue family of physicalDevice. The number of passes required to capture the counters specified in the pPerformanceQueryCreateInfo member QueryPoolPerformanceCreateInfoKHR::pCounters is returned in pNumPasses.

Valid Usage (Implicit)

See Also

VK_KHR_performance_query, PhysicalDevice, QueryPoolPerformanceCreateInfoKHR

acquireProfilingLockKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device to profile.

device must be a valid Device handle

-> AcquireProfilingLockInfoKHR

pInfo is a pointer to a AcquireProfilingLockInfoKHR structure which contains information about how the profiling is to be acquired.

pInfo must be a valid pointer to a valid AcquireProfilingLockInfoKHR structure

-> io () 

vkAcquireProfilingLockKHR - Acquires the profiling lock

Description

Implementations may allow multiple actors to hold the profiling lock concurrently.

Return Codes

Success
Failure

See Also

VK_KHR_performance_query, AcquireProfilingLockInfoKHR, Device

releaseProfilingLockKHR Source #

Arguments

:: forall io. MonadIO io 
=> Device

device is the logical device to cease profiling on.

-> io () 

vkReleaseProfilingLockKHR - Releases the profiling lock

Valid Usage

Valid Usage (Implicit)

  • device must be a valid Device handle

See Also

VK_KHR_performance_query, Device

data PhysicalDevicePerformanceQueryFeaturesKHR Source #

VkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing performance query support for an implementation

Members

This structure describes the following features:

Description

If the PhysicalDevicePerformanceQueryFeaturesKHR structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDevicePerformanceQueryFeaturesKHR can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_KHR_performance_query, Bool32, StructureType

Constructors

PhysicalDevicePerformanceQueryFeaturesKHR 

Fields

  • performanceCounterQueryPools :: Bool

    performanceCounterQueryPools indicates whether the implementation supports performance counter query pools.

  • performanceCounterMultipleQueryPools :: Bool

    performanceCounterMultipleQueryPools indicates whether the implementation supports using multiple performance query pools in a primary command buffer and secondary command buffers executed within it.

Instances

Instances details
Eq PhysicalDevicePerformanceQueryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PhysicalDevicePerformanceQueryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PhysicalDevicePerformanceQueryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

FromCStruct PhysicalDevicePerformanceQueryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

ToCStruct PhysicalDevicePerformanceQueryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PhysicalDevicePerformanceQueryFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

data PhysicalDevicePerformanceQueryPropertiesKHR Source #

VkPhysicalDevicePerformanceQueryPropertiesKHR - Structure describing performance query properties for an implementation

Description

If the PhysicalDevicePerformanceQueryPropertiesKHR structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Valid Usage (Implicit)

See Also

VK_KHR_performance_query, Bool32, StructureType

Constructors

PhysicalDevicePerformanceQueryPropertiesKHR 

Fields

Instances

Instances details
Eq PhysicalDevicePerformanceQueryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PhysicalDevicePerformanceQueryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PhysicalDevicePerformanceQueryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

FromCStruct PhysicalDevicePerformanceQueryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

ToCStruct PhysicalDevicePerformanceQueryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PhysicalDevicePerformanceQueryPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

data PerformanceCounterKHR Source #

Constructors

PerformanceCounterKHR 

Fields

Instances

Instances details
Show PerformanceCounterKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceCounterKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

FromCStruct PerformanceCounterKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

ToCStruct PerformanceCounterKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceCounterKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

data PerformanceCounterDescriptionKHR Source #

VkPerformanceCounterDescriptionKHR - Structure providing more detailed information about a counter

Valid Usage (Implicit)

See Also

VK_KHR_performance_query, PerformanceCounterDescriptionFlagsKHR, StructureType, enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR

Constructors

PerformanceCounterDescriptionKHR 

Fields

Instances

Instances details
Show PerformanceCounterDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceCounterDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

FromCStruct PerformanceCounterDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

ToCStruct PerformanceCounterDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceCounterDescriptionKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

data QueryPoolPerformanceCreateInfoKHR Source #

VkQueryPoolPerformanceCreateInfoKHR - Structure specifying parameters of a newly created performance query pool

Valid Usage

  • queueFamilyIndex must be a valid queue family index of the device

Valid Usage (Implicit)

  • pCounterIndices must be a valid pointer to an array of counterIndexCount uint32_t values
  • counterIndexCount must be greater than 0

See Also

VK_KHR_performance_query, StructureType, getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR

Constructors

QueryPoolPerformanceCreateInfoKHR 

Fields

data AcquireProfilingLockInfoKHR Source #

VkAcquireProfilingLockInfoKHR - Structure specifying parameters to acquire the profiling lock

Valid Usage (Implicit)

If timeout is 0, acquireProfilingLockKHR will not block while attempting to acquire the profling lock. If timeout is UINT64_MAX, the function will not return until the profiling lock was acquired.

See Also

VK_KHR_performance_query, AcquireProfilingLockFlagsKHR, StructureType, acquireProfilingLockKHR

Constructors

AcquireProfilingLockInfoKHR 

Fields

Instances

Instances details
Eq AcquireProfilingLockInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show AcquireProfilingLockInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable AcquireProfilingLockInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

FromCStruct AcquireProfilingLockInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

ToCStruct AcquireProfilingLockInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero AcquireProfilingLockInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

data PerformanceQuerySubmitInfoKHR Source #

VkPerformanceQuerySubmitInfoKHR - Structure indicating which counter pass index is active for performance queries

Description

If the SubmitInfo::pNext chain does not include this structure, the batch defaults to use counter pass index 0.

Valid Usage (Implicit)

See Also

VK_KHR_performance_query, StructureType

Constructors

PerformanceQuerySubmitInfoKHR 

Fields

Instances

Instances details
Eq PerformanceQuerySubmitInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PerformanceQuerySubmitInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceQuerySubmitInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

FromCStruct PerformanceQuerySubmitInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

ToCStruct PerformanceQuerySubmitInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceQuerySubmitInfoKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

newtype PerformanceCounterScopeKHR Source #

VkPerformanceCounterScopeKHR - Supported counter scope types

See Also

VK_KHR_performance_query, PerformanceCounterKHR

Bundled Patterns

pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR :: PerformanceCounterScopeKHR

PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR - the performance counter scope is a single complete command buffer.

pattern PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR :: PerformanceCounterScopeKHR

PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR - the performance counter scope is zero or more complete render passes. The performance query containing the performance counter must begin and end outside a render pass instance.

pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR :: PerformanceCounterScopeKHR

PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR - the performance counter scope is zero or more commands.

Instances

Instances details
Eq PerformanceCounterScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Ord PerformanceCounterScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Read PerformanceCounterScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PerformanceCounterScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceCounterScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceCounterScopeKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

newtype PerformanceCounterUnitKHR Source #

VkPerformanceCounterUnitKHR - Supported counter unit types

See Also

VK_KHR_performance_query, PerformanceCounterKHR

Bundled Patterns

pattern PERFORMANCE_COUNTER_UNIT_GENERIC_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_GENERIC_KHR - the performance counter unit is a generic data point.

pattern PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR - the performance counter unit is a percentage (%).

pattern PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR - the performance counter unit is a value of nanoseconds (ns).

pattern PERFORMANCE_COUNTER_UNIT_BYTES_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_BYTES_KHR - the performance counter unit is a value of bytes.

pattern PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR - the performance counter unit is a value of bytes/s.

pattern PERFORMANCE_COUNTER_UNIT_KELVIN_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_KELVIN_KHR - the performance counter unit is a temperature reported in Kelvin.

pattern PERFORMANCE_COUNTER_UNIT_WATTS_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_WATTS_KHR - the performance counter unit is a value of watts (W).

pattern PERFORMANCE_COUNTER_UNIT_VOLTS_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_VOLTS_KHR - the performance counter unit is a value of volts (V).

pattern PERFORMANCE_COUNTER_UNIT_AMPS_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_AMPS_KHR - the performance counter unit is a value of amps (A).

pattern PERFORMANCE_COUNTER_UNIT_HERTZ_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_HERTZ_KHR - the performance counter unit is a value of hertz (Hz).

pattern PERFORMANCE_COUNTER_UNIT_CYCLES_KHR :: PerformanceCounterUnitKHR

PERFORMANCE_COUNTER_UNIT_CYCLES_KHR - the performance counter unit is a value of cycles.

Instances

Instances details
Eq PerformanceCounterUnitKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Ord PerformanceCounterUnitKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Read PerformanceCounterUnitKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PerformanceCounterUnitKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceCounterUnitKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceCounterUnitKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

newtype PerformanceCounterStorageKHR Source #

VkPerformanceCounterStorageKHR - Supported counter storage types

See Also

VK_KHR_performance_query, PerformanceCounterKHR

Bundled Patterns

pattern PERFORMANCE_COUNTER_STORAGE_INT32_KHR :: PerformanceCounterStorageKHR

PERFORMANCE_COUNTER_STORAGE_INT32_KHR - the performance counter storage is a 32-bit signed integer.

pattern PERFORMANCE_COUNTER_STORAGE_INT64_KHR :: PerformanceCounterStorageKHR

PERFORMANCE_COUNTER_STORAGE_INT64_KHR - the performance counter storage is a 64-bit signed integer.

pattern PERFORMANCE_COUNTER_STORAGE_UINT32_KHR :: PerformanceCounterStorageKHR

PERFORMANCE_COUNTER_STORAGE_UINT32_KHR - the performance counter storage is a 32-bit unsigned integer.

pattern PERFORMANCE_COUNTER_STORAGE_UINT64_KHR :: PerformanceCounterStorageKHR

PERFORMANCE_COUNTER_STORAGE_UINT64_KHR - the performance counter storage is a 64-bit unsigned integer.

pattern PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR :: PerformanceCounterStorageKHR

PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR - the performance counter storage is a 32-bit floating-point.

pattern PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR :: PerformanceCounterStorageKHR

PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR - the performance counter storage is a 64-bit floating-point.

Instances

Instances details
Eq PerformanceCounterStorageKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Ord PerformanceCounterStorageKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Read PerformanceCounterStorageKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PerformanceCounterStorageKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceCounterStorageKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceCounterStorageKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

newtype PerformanceCounterDescriptionFlagBitsKHR Source #

VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage behavior for a counter

See Also

VK_KHR_performance_query, PerformanceCounterDescriptionFlagsKHR

Bundled Patterns

pattern PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR :: PerformanceCounterDescriptionFlagBitsKHR

PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR specifies that recording the counter may have a noticeable performance impact.

pattern PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR :: PerformanceCounterDescriptionFlagBitsKHR

PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR specifies that concurrently recording the counter while other submitted command buffers are running may impact the accuracy of the recording.

Instances

Instances details
Eq PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Ord PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Read PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Bits PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Methods

(.&.) :: PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR #

(.|.) :: PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR #

xor :: PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR #

complement :: PerformanceCounterDescriptionFlagBitsKHR -> PerformanceCounterDescriptionFlagBitsKHR #

shift :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

rotate :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

zeroBits :: PerformanceCounterDescriptionFlagBitsKHR #

bit :: Int -> PerformanceCounterDescriptionFlagBitsKHR #

setBit :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

clearBit :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

complementBit :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

testBit :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: PerformanceCounterDescriptionFlagBitsKHR -> Maybe Int #

bitSize :: PerformanceCounterDescriptionFlagBitsKHR -> Int #

isSigned :: PerformanceCounterDescriptionFlagBitsKHR -> Bool #

shiftL :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

unsafeShiftL :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

shiftR :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

unsafeShiftR :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

rotateL :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

rotateR :: PerformanceCounterDescriptionFlagBitsKHR -> Int -> PerformanceCounterDescriptionFlagBitsKHR #

popCount :: PerformanceCounterDescriptionFlagBitsKHR -> Int #

FiniteBits PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero PerformanceCounterDescriptionFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

newtype AcquireProfilingLockFlagBitsKHR Source #

VkAcquireProfilingLockFlagBitsKHR - Reserved for future use

See Also

VK_KHR_performance_query, AcquireProfilingLockFlagsKHR

Instances

Instances details
Eq AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Ord AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Read AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Show AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Storable AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Bits AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Methods

(.&.) :: AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR #

(.|.) :: AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR #

xor :: AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR #

complement :: AcquireProfilingLockFlagBitsKHR -> AcquireProfilingLockFlagBitsKHR #

shift :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

rotate :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

zeroBits :: AcquireProfilingLockFlagBitsKHR #

bit :: Int -> AcquireProfilingLockFlagBitsKHR #

setBit :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

clearBit :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

complementBit :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

testBit :: AcquireProfilingLockFlagBitsKHR -> Int -> Bool #

bitSizeMaybe :: AcquireProfilingLockFlagBitsKHR -> Maybe Int #

bitSize :: AcquireProfilingLockFlagBitsKHR -> Int #

isSigned :: AcquireProfilingLockFlagBitsKHR -> Bool #

shiftL :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

unsafeShiftL :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

shiftR :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

unsafeShiftR :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

rotateL :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

rotateR :: AcquireProfilingLockFlagBitsKHR -> Int -> AcquireProfilingLockFlagBitsKHR #

popCount :: AcquireProfilingLockFlagBitsKHR -> Int #

FiniteBits AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

Zero AcquireProfilingLockFlagBitsKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_performance_query

type KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" Source #

pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #