blob: f96548c4fbec2cadb28f38941ac3a337b1345245 [file] [log] [blame]
// Copyright 2019-2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
[open,refpage='vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR',desc='Reports properties of the performance query counters available on a queue family of a device',type='protos']
--
To enumerate the performance query counters available on a queue family of a
physical device, call:
include::{generated}/api/protos/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.txt[]
* pname:physicalDevice is the handle to the physical device whose queue
family performance query counter properties will be queried.
* pname:queueFamilyIndex is the index into the queue family of the
physical device we want to get properties for.
* pname:pCounterCount is a pointer to an integer related to the number of
counters available or queried, as described below.
* pname:pCounters is either `NULL` or a pointer to an array of
slink:VkPerformanceCounterKHR structures.
* pname:pCounterDescriptions is either `NULL` or a pointer to an array of
slink:VkPerformanceCounterDescriptionKHR structures.
If pname:pCounters is `NULL` and pname:pCounterDescriptions is `NULL`, then
the number of counters available is returned in pname:pCounterCount.
Otherwise, pname:pCounterCount must: point to a variable set by the user to
the number of elements in the pname:pCounters, pname:pCounterDescriptions,
or both arrays and on return the variable is overwritten with the number of
structures actually written out.
If pname:pCounterCount is less than the number of counters available, at
most pname:pCounterCount structures will be written, and ename:VK_INCOMPLETE
will be returned instead of ename:VK_SUCCESS, to indicate that not all the
available counters were returned.
include::{generated}/validity/protos/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.txt[]
--
[open,refpage='VkPerformanceCounterKHR',desc='Structure providing information about a counter',type='structs']
--
The sname:VkPerformanceCounterKHR structure is defined as:
include::{generated}/api/structs/VkPerformanceCounterKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:unit is a elink:VkPerformanceCounterUnitKHR specifying the unit
that the counter data will record.
* pname:scope is a elink:VkPerformanceCounterScopeKHR specifying the scope
that the counter belongs to.
* pname:storage is a elink:VkPerformanceCounterStorageKHR specifying the
storage type that the counter's data uses.
* pname:uuid is an array of size ename:VK_UUID_SIZE, containing 8-bit
values that represent a universally unique identifier for the counter of
the physical device.
include::{generated}/validity/structs/VkPerformanceCounterKHR.txt[]
--
[open,refpage='VkPerformanceCounterUnitKHR',desc='Supported counter unit types',type='enums']
--
Performance counters have an associated unit.
This unit describes how to interpret the performance counter result.
The performance counter unit types which may: be returned in
slink:VkPerformanceCounterKHR::pname:unit are:
include::{generated}/api/enums/VkPerformanceCounterUnitKHR.txt[]
* ename:VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR - the performance counter
unit is a generic data point.
* ename:VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR - the performance
counter unit is a percentage (%).
* ename:VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR - the performance
counter unit is a value of nanoseconds (ns).
* ename:VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR - the performance counter
unit is a value of bytes.
* ename:VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR - the performance
counter unit is a value of bytes/s.
* ename:VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR - the performance counter
unit is a temperature reported in Kelvin.
* ename:VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR - the performance counter
unit is a value of watts (W).
* ename:VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR - the performance counter
unit is a value of volts (V).
* ename:VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR - the performance counter
unit is a value of amps (A).
* ename:VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR - the performance counter
unit is a value of hertz (Hz).
* ename:VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR - the performance counter
unit is a value of cycles.
--
[open,refpage='VkPerformanceCounterScopeKHR',desc='Supported counter scope types',type='enums']
--
Performance counters have an associated scope.
This scope describes the granularity of a performance counter.
The performance counter scope types which may: be returned in
slink:VkPerformanceCounterKHR::pname:scope are:
include::{generated}/api/enums/VkPerformanceCounterScopeKHR.txt[]
* ename:VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR - the performance
counter scope is a single complete command buffer.
* ename:VK_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.
* ename:VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR - the performance counter
scope is zero or more commands.
--
[open,refpage='VkPerformanceCounterStorageKHR',desc='Supported counter storage types',type='enums']
--
Performance counters have an associated storage.
This storage describes the payload of a counter result.
The performance counter storage types which may: be returned in
slink:VkPerformanceCounterKHR::pname:storage are:
include::{generated}/api/enums/VkPerformanceCounterStorageKHR.txt[]
* ename:VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR - the performance counter
storage is a 32-bit signed integer.
* ename:VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR - the performance counter
storage is a 64-bit signed integer.
* ename:VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR - the performance
counter storage is a 32-bit unsigned integer.
* ename:VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR - the performance
counter storage is a 64-bit unsigned integer.
* ename:VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR - the performance
counter storage is a 32-bit floating-point.
* ename:VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR - the performance
counter storage is a 64-bit floating-point.
--
[open,refpage='VkPerformanceCounterDescriptionKHR',desc='Structure providing more detailed information about a counter',type='structs']
--
The sname:VkPerformanceCounterDescriptionKHR structure is defined as:
include::{generated}/api/structs/VkPerformanceCounterDescriptionKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:flags is a bitmask of
elink:VkPerformanceCounterDescriptionFlagBitsKHR indicating the usage
behavior for the counter.
* pname:name is an array of size ename:VK_MAX_DESCRIPTION_SIZE, containing
a null-terminated UTF-8 string specifying the name of the counter.
* pname:category is an array of size ename:VK_MAX_DESCRIPTION_SIZE,
containing a null-terminated UTF-8 string specifying the category of the
counter.
* pname:description is an array of size ename:VK_MAX_DESCRIPTION_SIZE,
containing a null-terminated UTF-8 string specifying the description of
the counter.
include::{generated}/validity/structs/VkPerformanceCounterDescriptionKHR.txt[]
--
[open,refpage='VkPerformanceCounterDescriptionFlagBitsKHR',desc='Bitmask specifying usage behavior for a counter',type='enums']
--
Bits which can: be set in
slink:VkPerformanceCounterDescriptionKHR::pname:flags to specify usage
behavior for a performance counter are:
include::{generated}/api/enums/VkPerformanceCounterDescriptionFlagBitsKHR.txt[]
* ename:VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR
specifies that recording the counter may: have a noticeable performance
impact.
* ename:VK_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.
--
[open,refpage='VkPerformanceCounterDescriptionFlagsKHR',desc='Bitmask of VkPerformanceCounterDescriptionFlagBitsKHR',type='flags']
--
include::{generated}/api/flags/VkPerformanceCounterDescriptionFlagsKHR.txt[]
tlink:VkPerformanceCounterDescriptionFlagsKHR is a bitmask type for setting
a mask of zero or more elink:VkPerformanceCounterDescriptionFlagBitsKHR.
--