# Performance Counters

Contents

- Performance Counters

  - Counters

  - Counter Types

  - Results

## Counters

class `renderdoc.``CounterDescription`

  Describes a GPU counter’s purpose and result value.

  `category`

    The counter category. Can be empty for uncategorized counters.

  `counter`

    The `GPUCounter` this counter represents.

    Note

    This is stored as an `int` not a `GPUCounter` to allow for values that may not correspond to any of the predefined values if it’s a hardware-specific counter value.

  `description`

    If available, a longer human-readable description of the value this counter measures.

  `name`

    A short human-readable name for the counter.

  `resultByteWidth`

    The number of bytes in the resulting value.

  `resultType`

    The `type of value` returned by this counter.

  `unit`

    The `CounterUnit` for the result value.

  `uuid`

    The unique identifier for this counter that will not change across drivers or replays.

    Type

      Uuid

class `renderdoc.``CounterUnit`(value)

  The unit that GPU counter data is returned in.

  `Absolute`

    The value is an absolute value and should be interpreted as unitless.

  `Seconds`

    The value is a duration in seconds.

  `Percentage`

    The value is a floating point percentage value between 0.0 and 1.0.

  `Ratio`

    The value describes a ratio between two separate GPU units or counters.

  `Bytes`

    The value is in bytes.

  `Cycles`

    The value is a duration in clock cycles.

class `renderdoc.``Uuid`

  A 128-bit Uuid.

  `words`

    The Uuid bytes as a tuple of four 32-bit integers.

    Type

      Tuple[int,int,int,int]

## Counter Types

class `renderdoc.``GPUCounter`(value)

  Pre-defined GPU counters that can be supported by a given implementation.

  GPU counters actually available can be queried by `ReplayController.EnumerateCounters()`. If any in this list are supported they will be returned with these counter IDs. More counters may be enumerated with IDs in the appropriate ranges.

  `EventGPUDuration`

    Time taken for this event on the GPU, as measured by delta between two GPU timestamps.

  `InputVerticesRead`

    Number of vertices read by input assembler.

  `IAPrimitives`

    Number of primitives read by the input assembler.

  `GSPrimitives`

    Number of primitives output by a geometry shader.

  `RasterizerInvocations`

    Number of primitives that were sent to the rasterizer.

  `RasterizedPrimitives`

    Number of primitives that were rendered.

  `SamplesPassed`

    Number of samples that passed depth/stencil test.

  `VSInvocations`

    Number of times a `vertex shader` was invoked.

  `HSInvocations`

    Number of times a `hull shader` was invoked.

  `TCSInvocations`

    Number of times a `tessellation control shader` was invoked.

  `DSInvocations`

    Number of times a `domain shader` was invoked.

  `TESInvocations`

    Number of times a `tessellation evaluation shader` was invoked.

  `GSInvocations`

    Number of times a `domain shader` was invoked.

  `PSInvocations`

    Number of times a `pixel shader` was invoked.

  `FSInvocations`

    Number of times a `fragment shader` was invoked.

  `CSInvocations`

    Number of times a `compute shader` was invoked.

  `FirstAMD`

    The AMD-specific counter IDs start from this value.

  `LastAMD`

    The AMD-specific counter IDs end with this value.

  `FirstIntel`

    The Intel-specific counter IDs start from this value.

  `LastIntel`

    The Intel-specific counter IDs end with this value.

  `FirstNvidia`

    The nVidia-specific counter IDs start from this value.

  `LastNvidia`

    The nVidia-specific counter IDs end with this value.

`renderdoc.``IsAMDCounter`(c)

  Check whether or not this is an AMD private counter.

  Parameters

    c (GPUCounter) – The counter.

  Returns

    `True` if it is an AMD private counter, `False` if it’s not.

  Return type

    bool

`renderdoc.``IsARMCounter`(c)

  Check whether or not this is an ARM private counter.

  Parameters

    c (GPUCounter) – The counter.

  Returns

    `True` if it is an ARM private counter, `False` if it’s not.

  Return type

    bool

`renderdoc.``IsGenericCounter`(c)

  Check whether or not this is a Generic counter.

  Parameters

    c (GPUCounter) – The counter.

  Returns

    `True` if it is a generic counter, `False` if it’s not.

  Return type

    bool

`renderdoc.``IsIntelCounter`(c)

  Check whether or not this is an Intel private counter.

  Parameters

    c (GPUCounter) – The counter.

  Returns

    `True` if it is an Intel private counter, `False` if it’s not.

  Return type

    bool

`renderdoc.``IsNvidiaCounter`(c)

  Check whether or not this is an Nvidia private counter.

  Parameters

    c (GPUCounter) – The counter.

  Returns

    `True` if it is an Nvidia private counter, `False` if it’s not.

  Return type

    bool

`renderdoc.``IsVulkanExtendedCounter`(c)

  Check whether or not this is a KHR counter.

  Parameters

    c (GPUCounter) – The counter.

  Returns

    `True` if it is a Vulkan counter reported through the VK_KHR_performance_query extension, `False` if it’s not.

  Return type

    bool

## Results

class `renderdoc.``CounterResult`

  The resulting value from a counter at an event.

  `counter`

    The `counter` that produced this value, stored as an int.

    Note

    This is stored as an `int` not a `GPUCounter` to allow for values that may not correspond to any of the predefined values if it’s a hardware-specific counter value.

  `eventId`

    The `eventId` that produced this value.

  `value`

    The value itself.

    Type

      CounterValue

class `renderdoc.``CounterValue`

  A resulting value from a GPU counter. Only one member is valid, see `CounterDescription`.

  `d`

    A `double` value.

  `f`

    A `float` value.

  `u32`

    A 32-bit unsigned integer.

  `u64`

    A 64-bit unsigned integer.