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

Vulkan.Extensions.VK_EXT_tooling_info

Description

Name

VK_EXT_tooling_info - device extension

VK_EXT_tooling_info

Name String
VK_EXT_tooling_info
Extension Type
Device extension
Registered Extension Number
246
Revision
1
Extension and Version Dependencies
  • Requires Vulkan 1.0
Contact

Other Extension Metadata

Last Modified Date
2018-11-05
Contributors
  • Rolando Caloca
  • Matthaeus Chajdas
  • Baldur Karlsson
  • Daniel Rakos

Description

When an error occurs during application development, a common question is "What tools are actually running right now?" This extension adds the ability to query that information directly from the Vulkan implementation.

Outdated versions of one tool might not play nicely with another, or perhaps a tool is not actually running when it should have been. Trying to figure that out can cause headaches as it is necessary to consult each known tool to figure out what is going on — in some cases the tool might not even be known.

Typically, the expectation is that developers will simply print out this information for visual inspection when an issue occurs, however a small amount of semantic information about what the tool is doing is provided to help identify it programmatically. For example, if the advertised limits or features of an implementation are unexpected, is there a tool active which modifies these limits? Or if an application is providing debug markers, but the implementation is not actually doing anything with that information, this can quickly point that out.

New Commands

New Structures

New Enums

New Bitmasks

New Enum Constants

If VK_EXT_debug_marker is supported:

If VK_EXT_debug_report is supported:

If VK_EXT_debug_utils is supported:

Examples

Printing Tool Information

uint32_t num_tools;
VkPhysicalDeviceToolPropertiesEXT *pToolProperties;
vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, NULL);

pToolProperties = (VkPhysicalDeviceToolPropertiesEXT*)malloc(sizeof(VkPhysicalDeviceToolPropertiesEXT) * num_tools);

vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, pToolProperties);

for (int i = 0; i < num_tools; ++i) {
    printf("%s:\n", pToolProperties[i].name);
    printf("Version:\n");
    printf("%s:\n", pToolProperties[i].version);
    printf("Description:\n");
    printf("\t%s\n", pToolProperties[i].description);
    printf("Purposes:\n");
    printf("\t%s\n", VkToolPurposeFlagBitsEXT_to_string(pToolProperties[i].purposes));
    if (strnlen_s(pToolProperties[i].layer,VK_MAX_EXTENSION_NAME_SIZE) > 0) {
        printf("Corresponding Layer:\n");
        printf("\t%s\n", pToolProperties[i].layer);
    }
}

Issues

1) Why is this information separate from the layer mechanism?

Some tooling may be built into a driver, or be part of the Vulkan loader etc. - and so tying this information directly to layers would’ve been awkward at best.

Version History

  • Revision 1, 2018-11-05 (Tobias Hector)

    • Initial draft

See Also

PhysicalDeviceToolPropertiesEXT, ToolPurposeFlagBitsEXT, ToolPurposeFlagsEXT, getPhysicalDeviceToolPropertiesEXT

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

getPhysicalDeviceToolPropertiesEXT Source #

Arguments

:: forall io. MonadIO io 
=> PhysicalDevice

physicalDevice is the handle to the physical device to query for active tools.

-> io (Result, "toolProperties" ::: Vector PhysicalDeviceToolPropertiesEXT) 

vkGetPhysicalDeviceToolPropertiesEXT - Reports properties of tools active on the specified physical device

Description

If pToolProperties is NULL, then the number of tools currently active on physicalDevice is returned in pToolCount. Otherwise, pToolCount must point to a variable set by the user to the number of elements in the pToolProperties array, and on return the variable is overwritten with the number of structures actually written to pToolProperties. If pToolCount is less than the number of currently active tools, at most pToolCount structures will be written.

The count and properties of active tools may change in response to events outside the scope of the specification. An application should assume these properties might change at any given time.

Valid Usage (Implicit)

  • pToolCount must be a valid pointer to a uint32_t value
  • If the value referenced by pToolCount is not 0, and pToolProperties is not NULL, pToolProperties must be a valid pointer to an array of pToolCount PhysicalDeviceToolPropertiesEXT structures

Return Codes

Success
Failure

See Also

VK_EXT_tooling_info, PhysicalDevice, PhysicalDeviceToolPropertiesEXT

data PhysicalDeviceToolPropertiesEXT Source #

VkPhysicalDeviceToolPropertiesEXT - Structure providing information about an active tool

Valid Usage (Implicit)

See Also

VK_EXT_tooling_info, StructureType, ToolPurposeFlagsEXT, getPhysicalDeviceToolPropertiesEXT

Constructors

PhysicalDeviceToolPropertiesEXT 

Fields

  • name :: ByteString

    name is a null-terminated UTF-8 string containing the name of the tool.

  • version :: ByteString

    version is a null-terminated UTF-8 string containing the version of the tool.

  • purposes :: ToolPurposeFlagsEXT

    purposes is a bitmask of ToolPurposeFlagBitsEXT which is populated with purposes supported by the tool.

  • description :: ByteString

    description is a null-terminated UTF-8 string containing a description of the tool.

  • layer :: ByteString

    layer is a null-terminated UTF-8 string that contains the name of the layer implementing the tool, if the tool is implemented in a layer - otherwise it may be an empty string.

Instances

Instances details
Show PhysicalDeviceToolPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Storable PhysicalDeviceToolPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

FromCStruct PhysicalDeviceToolPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

ToCStruct PhysicalDeviceToolPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Zero PhysicalDeviceToolPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

newtype ToolPurposeFlagBitsEXT Source #

VkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active tool

See Also

VK_EXT_tooling_info, ToolPurposeFlagsEXT

Bundled Patterns

pattern TOOL_PURPOSE_VALIDATION_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_VALIDATION_BIT_EXT specifies that the tool provides validation of API usage.

pattern TOOL_PURPOSE_PROFILING_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_PROFILING_BIT_EXT specifies that the tool provides profiling of API usage.

pattern TOOL_PURPOSE_TRACING_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_TRACING_BIT_EXT specifies that the tool is capturing data about the application’s API usage, including anything from simple logging to capturing data for later replay.

pattern TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT specifies that the tool provides additional API features/extensions on top of the underlying implementation.

pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT specifies that the tool modifies the API features/limits/extensions presented to the application.

pattern TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT specifies that the tool consumes debug markers or object debug annotation, queue labels, or command buffer labels

pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT :: ToolPurposeFlagBitsEXT

TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT specifies that the tool reports additional information to the application via callbacks specified by createDebugReportCallbackEXT or createDebugUtilsMessengerEXT

Instances

Instances details
Eq ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Ord ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Read ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Show ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Storable ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Bits ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

FiniteBits ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

Zero ToolPurposeFlagBitsEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_tooling_info

pattern EXT_TOOLING_INFO_SPEC_VERSION :: forall a. Integral a => a Source #

type EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" Source #

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