mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-11-15 18:31:14 +00:00
Update vulkan headers and implement VK_EXT_tooling_info. Closes #1632
This commit is contained in:
16 files changed
+285
-15
No files matched your search
@@ -44,7 +44,7 @@ extern "C" {
|
||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 129
|
||||
#define VK_HEADER_VERSION 130
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
@@ -518,6 +518,7 @@ typedef enum VkStructureType {
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
|
||||
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000,
|
||||
VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
|
||||
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
|
||||
@@ -9905,6 +9906,41 @@ VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_tooling_info 1
|
||||
#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1
|
||||
#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info"
|
||||
|
||||
typedef enum VkToolPurposeFlagBitsEXT {
|
||||
VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 0x00000001,
|
||||
VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 0x00000002,
|
||||
VK_TOOL_PURPOSE_TRACING_BIT_EXT = 0x00000004,
|
||||
VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 0x00000008,
|
||||
VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 0x00000010,
|
||||
VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020,
|
||||
VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040,
|
||||
VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkToolPurposeFlagBitsEXT;
|
||||
typedef VkFlags VkToolPurposeFlagsEXT;
|
||||
typedef struct VkPhysicalDeviceToolPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
char name[VK_MAX_EXTENSION_NAME_SIZE];
|
||||
char version[VK_MAX_EXTENSION_NAME_SIZE];
|
||||
VkToolPurposeFlagsEXT purposes;
|
||||
char description[VK_MAX_DESCRIPTION_SIZE];
|
||||
char layer[VK_MAX_EXTENSION_NAME_SIZE];
|
||||
} VkPhysicalDeviceToolPropertiesEXT;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t* pToolCount,
|
||||
VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_separate_stencil_usage 1
|
||||
#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
|
||||
#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
"vkCmdDebugMarkerEndEXT",
|
||||
"vkCmdDebugMarkerInsertEXT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "VK_EXT_tooling_info",
|
||||
"spec_version": "1",
|
||||
"entrypoints": ["vkGetPhysicalDeviceToolPropertiesEXT"]
|
||||
}
|
||||
],
|
||||
"enable_environment": {
|
||||
|
||||
@@ -154,7 +154,7 @@ server.
|
||||
<type category="define">// Vulkan 1.1 version number
|
||||
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 129</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 130</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
@@ -339,6 +339,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationStateStreamCreateFlagsEXT</name>;</type>
|
||||
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineRasterizationDepthClipStateCreateFlagsEXT</name>;</type>
|
||||
<type requires="VkSwapchainImageUsageFlagBitsANDROID" category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainImageUsageFlagsANDROID</name>;</type>
|
||||
<type requires="VkToolPurposeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkToolPurposeFlagsEXT</name>;</type>
|
||||
|
||||
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
|
||||
<type category="handle"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
|
||||
@@ -524,6 +525,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<type name="VkShaderModuleCreateFlagBits" category="enum"/>
|
||||
<type name="VkPipelineCompilerControlFlagBitsAMD" category="enum"/>
|
||||
<type name="VkShaderCorePropertiesFlagBitsAMD" category="enum"/>
|
||||
<type name="VkToolPurposeFlagBitsEXT" category="enum"/>
|
||||
|
||||
<comment>WSI extensions</comment>
|
||||
<type name="VkColorSpaceKHR" category="enum"/>
|
||||
@@ -2851,7 +2853,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<type category="struct" name="VkDeviceQueueInfo2">
|
||||
<member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkDeviceQueueCreateFlags</type> <name>flags</name></member>
|
||||
<member optional="true"><type>VkDeviceQueueCreateFlags</type> <name>flags</name></member>
|
||||
<member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
|
||||
<member><type>uint32_t</type> <name>queueIndex</name></member>
|
||||
</type>
|
||||
@@ -4213,7 +4215,7 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<member><type>VkPipelineExecutableStatisticFormatKHR</type> <name>format</name></member>
|
||||
<member><type>VkPipelineExecutableStatisticValueKHR</type> <name>value</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineExecutableInternalRepresentationKHR">
|
||||
<type category="struct" name="VkPipelineExecutableInternalRepresentationKHR" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>char</type> <name>name</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
|
||||
@@ -4302,6 +4304,15 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>VkBool32</type> <name>deviceCoherentMemory</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPhysicalDeviceToolPropertiesEXT" returnedonly="true">
|
||||
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member><type>void</type>* <name>pNext</name></member>
|
||||
<member><type>char</type> <name>name</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
|
||||
<member><type>char</type> <name>version</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
|
||||
<member><type>VkToolPurposeFlagsEXT</type> <name>purposes</name></member>
|
||||
<member><type>char</type> <name>description</name>[<enum>VK_MAX_DESCRIPTION_SIZE</enum>]</member>
|
||||
<member><type>char</type> <name>layer</name>[<enum>VK_MAX_EXTENSION_NAME_SIZE</enum>]</member>
|
||||
</type>
|
||||
</types>
|
||||
|
||||
<comment>Vulkan enumerant (token) definitions</comment>
|
||||
@@ -5632,6 +5643,13 @@ typedef void <name>CAMetalLayer</name>;
|
||||
</enums>
|
||||
<enums name="VkPipelineCompilerControlFlagBitsAMD" type="bitmask">
|
||||
</enums>
|
||||
<enums name="VkToolPurposeFlagBitsEXT" type="bitmask">
|
||||
<enum bitpos="0" name="VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"/>
|
||||
<enum bitpos="1" name="VK_TOOL_PURPOSE_PROFILING_BIT_EXT"/>
|
||||
<enum bitpos="2" name="VK_TOOL_PURPOSE_TRACING_BIT_EXT"/>
|
||||
<enum bitpos="3" name="VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"/>
|
||||
<enum bitpos="4" name="VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"/>
|
||||
</enums>
|
||||
|
||||
<commands comment="Vulkan command definitions">
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED,VK_ERROR_LAYER_NOT_PRESENT,VK_ERROR_EXTENSION_NOT_PRESENT,VK_ERROR_INCOMPATIBLE_DRIVER">
|
||||
@@ -8010,6 +8028,12 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<param><type>uint32_t</type> <name>lineStippleFactor</name></param>
|
||||
<param><type>uint16_t</type> <name>lineStipplePattern</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS,VK_INCOMPLETE">
|
||||
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceToolPropertiesEXT</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>uint32_t</type>* <name>pToolCount</name></param>
|
||||
<param optional="true" len="pToolCount"><type>VkPhysicalDeviceToolPropertiesEXT</type>* <name>pToolProperties</name></param>
|
||||
</command>
|
||||
</commands>
|
||||
|
||||
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
|
||||
@@ -10400,8 +10424,12 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<require>
|
||||
<enum value="0" name="VK_NV_EXTENSION_151_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_extension_151"" name="VK_NV_EXTENSION_151_EXTENSION_NAME"/>
|
||||
<enum bitpos="11" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_EXTENSION_151_BIT_NV"/>
|
||||
<enum bitpos="11" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_EXTENSION_151_BIT0_NV"/>
|
||||
<enum bitpos="29" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_RESERVED_29_BIT_NV"/>
|
||||
<enum bitpos="14" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_EXTENSION_151_BIT1_NV"/>
|
||||
<enum bitpos="15" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_EXTENSION_151_BIT2_NV"/>
|
||||
<enum bitpos="16" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_EXTENSION_151_BIT3_NV"/>
|
||||
<enum bitpos="17" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_EXTENSION_151_BIT4_NV"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_152" number="152" author="NV" contact="Jeff Bolz @jeffbolznv" supported="disabled">
|
||||
@@ -11452,10 +11480,25 @@ typedef void <name>CAMetalLayer</name>;
|
||||
<command name="vkGetBufferDeviceAddressEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_extension_246" number="246" author="EXT" contact="Tobias Hector @tobski" supported="disabled">
|
||||
<extension name="VK_EXT_tooling_info" number="246" type="device" author="EXT" contact="Tobias Hector @tobski" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_EXT_EXTENSION_246_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_extension_246"" name="VK_EXT_EXTENSION_246_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_EXT_TOOLING_INFO_SPEC_VERSION"/>
|
||||
<enum value=""VK_EXT_tooling_info"" name="VK_EXT_TOOLING_INFO_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"/>
|
||||
<type name="VkToolPurposeFlagBitsEXT"/>
|
||||
<type name="VkToolPurposeFlagsEXT"/>
|
||||
<type name="VkPhysicalDeviceToolPropertiesEXT"/>
|
||||
<command name="vkGetPhysicalDeviceToolPropertiesEXT"/>
|
||||
</require>
|
||||
<require extension="VK_EXT_debug_report">
|
||||
<enum bitpos="5" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"/>
|
||||
</require>
|
||||
<require extension="VK_EXT_debug_marker">
|
||||
<enum bitpos="6" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"/>
|
||||
</require>
|
||||
<require extension="VK_EXT_debug_utils">
|
||||
<enum bitpos="5" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"/>
|
||||
<enum bitpos="6" extends="VkToolPurposeFlagBitsEXT" name="VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_EXT_separate_stencil_usage" number="247" type="device" author="EXT" contact="Daniel Rakos @drakos-amd" supported="vulkan">
|
||||
|
||||
@@ -841,6 +841,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTimelineSemaphoreFeaturesKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTimelineSemaphorePropertiesKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceToolPropertiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR);
|
||||
@@ -1114,6 +1115,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTimelineSemaphoreFeaturesKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTimelineSemaphorePropertiesKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceToolPropertiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR);
|
||||
@@ -1449,6 +1451,7 @@ DECLARE_REFLECTION_ENUM(VkSurfaceTransformFlagBitsKHR);
|
||||
DECLARE_REFLECTION_ENUM(VkSwapchainCreateFlagBitsKHR);
|
||||
DECLARE_REFLECTION_ENUM(VkTessellationDomainOrigin);
|
||||
DECLARE_REFLECTION_ENUM(VkTimeDomainEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkToolPurposeFlagBitsEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkValidationCheckEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkValidationFeatureDisableEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkValidationFeatureEnableEXT);
|
||||
|
||||
@@ -778,6 +778,9 @@ static const VkExtensionProperties supportedExtensions[] = {
|
||||
{
|
||||
VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_TOOLING_INFO_EXTENSION_NAME, VK_EXT_TOOLING_INFO_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION,
|
||||
},
|
||||
@@ -1111,6 +1114,7 @@ static const VkExtensionProperties supportedExtensions[] = {
|
||||
// this is the list of extensions we provide - regardless of whether the ICD supports them
|
||||
static const VkExtensionProperties renderdocProvidedDeviceExtensions[] = {
|
||||
{VK_EXT_DEBUG_MARKER_EXTENSION_NAME, VK_EXT_DEBUG_MARKER_SPEC_VERSION},
|
||||
{VK_EXT_TOOLING_INFO_EXTENSION_NAME, VK_EXT_TOOLING_INFO_SPEC_VERSION},
|
||||
};
|
||||
|
||||
static const VkExtensionProperties renderdocProvidedInstanceExtensions[] = {
|
||||
|
||||
@@ -2211,4 +2211,9 @@ public:
|
||||
uint64_t vkGetBufferOpaqueCaptureAddressKHR(VkDevice device, VkBufferDeviceAddressInfoKHR *pInfo);
|
||||
uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,
|
||||
VkDeviceMemoryOpaqueCaptureAddressInfoKHR *pInfo);
|
||||
|
||||
// VK_EXT_tooling_info
|
||||
|
||||
VkResult vkGetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice, uint32_t *pToolCount,
|
||||
VkPhysicalDeviceToolPropertiesEXT *pToolProperties);
|
||||
};
|
||||
@@ -258,6 +258,9 @@ struct VkInstDispatchTable
|
||||
PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT;
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
// VK_EXT_tooling_info
|
||||
PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT;
|
||||
|
||||
// VK_NV_cooperative_matrix
|
||||
PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV;
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
HookInitExtension(VK_KHR_xlib_surface, GetPhysicalDeviceXlibPresentationSupportKHR); \
|
||||
HookInitExtension(VK_EXT_acquire_xlib_display, AcquireXlibDisplayEXT); \
|
||||
HookInitExtension(VK_EXT_acquire_xlib_display, GetRandROutputDisplayEXT);
|
||||
#define HookInitInstance_PlatformSpecific_XLib_PhysDev() \
|
||||
#define HookInitInstance_PlatformSpecific_Xlib_PhysDev() \
|
||||
HookInitExtension(VK_KHR_xlib_surface, GetPhysicalDeviceXlibPresentationSupportKHR); \
|
||||
HookInitExtension(VK_EXT_acquire_xlib_display, AcquireXlibDisplayEXT); \
|
||||
HookInitExtension(VK_EXT_acquire_xlib_display, GetRandROutputDisplayEXT);
|
||||
@@ -233,8 +233,8 @@
|
||||
#else
|
||||
|
||||
#define HookInitInstance_PlatformSpecific_Xlib()
|
||||
#define HookInitInstance_PlatformSpecific_Xlib_PhysDev()
|
||||
#define HookDefine_PlatformSpecific_Xlib()
|
||||
#define HookInitInstance_PlatformSpecific_XLib_PhysDev()
|
||||
|
||||
#endif
|
||||
|
||||
@@ -484,7 +484,8 @@
|
||||
DeclExt(GOOGLE_display_timing); \
|
||||
DeclExt(KHR_timeline_semaphore); \
|
||||
DeclExt(KHR_performance_query); \
|
||||
DeclExt(KHR_buffer_device_address);
|
||||
DeclExt(KHR_buffer_device_address); \
|
||||
DeclExt(EXT_tooling_info);
|
||||
|
||||
// for simplicity and since the check itself is platform agnostic,
|
||||
// these aren't protected in platform defines
|
||||
@@ -573,7 +574,8 @@
|
||||
CheckExt(GOOGLE_display_timing, VKXX); \
|
||||
CheckExt(KHR_timeline_semaphore, VKXX); \
|
||||
CheckExt(KHR_performance_query, VKXX); \
|
||||
CheckExt(KHR_buffer_device_address, VKXX);
|
||||
CheckExt(KHR_buffer_device_address, VKXX); \
|
||||
CheckExt(EXT_tooling_info, VKXX);
|
||||
|
||||
#define HookInitVulkanInstanceExts_PhysDev() \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
|
||||
@@ -618,6 +620,7 @@
|
||||
HookInitExtension(KHR_performance_query, \
|
||||
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR); \
|
||||
HookInitExtension(KHR_performance_query, GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR); \
|
||||
HookInitExtension(EXT_tooling_info, GetPhysicalDeviceToolPropertiesEXT); \
|
||||
HookInitInstance_PlatformSpecific_PhysDev()
|
||||
|
||||
#define HookInitVulkanInstanceExts() \
|
||||
@@ -678,6 +681,7 @@
|
||||
HookInitExtension(KHR_performance_query, \
|
||||
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR); \
|
||||
HookInitExtension(KHR_performance_query, GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR); \
|
||||
HookInitExtension(EXT_tooling_info, GetPhysicalDeviceToolPropertiesEXT); \
|
||||
HookInitInstance_PlatformSpecific()
|
||||
|
||||
#define HookInitVulkanDeviceExts() \
|
||||
@@ -1393,4 +1397,6 @@
|
||||
VkBufferDeviceAddressInfoKHR *, pInfo); \
|
||||
HookDefine2(uint64_t, vkGetDeviceMemoryOpaqueCaptureAddressKHR, VkDevice, device, \
|
||||
VkDeviceMemoryOpaqueCaptureAddressInfoKHR *, pInfo); \
|
||||
HookDefine3(VkResult, vkGetPhysicalDeviceToolPropertiesEXT, VkPhysicalDevice, physicalDevice, \
|
||||
uint32_t *, pToolCount, VkPhysicalDeviceToolPropertiesEXT *, pToolProperties); \
|
||||
HookDefine_PlatformSpecific()
|
||||
@@ -285,6 +285,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
VkPhysicalDeviceTimelineSemaphoreFeaturesKHR); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR, \
|
||||
VkPhysicalDeviceTimelineSemaphorePropertiesKHR); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT, \
|
||||
VkPhysicalDeviceToolPropertiesEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, \
|
||||
VkPhysicalDeviceTransformFeedbackFeaturesEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, \
|
||||
|
||||
@@ -155,6 +155,7 @@ DECL_VKFLAG_EMPTY_EXT(VkValidationCacheCreate, EXT);
|
||||
DECL_VKFLAG_EMPTY_EXT(VkPipelineRasterizationDepthClipStateCreate, EXT);
|
||||
DECL_VKFLAG_EXT(VkDescriptorBinding, EXT);
|
||||
DECL_VKFLAG_EXT(VkSemaphoreWait, KHR);
|
||||
DECL_VKFLAG_EXT(VkToolPurpose, EXT);
|
||||
|
||||
// serialise a member as flags - cast to the Bits enum for serialisation so the stringification
|
||||
// picks up the bitfield and doesn't treat it as uint32_t. Then we rename the type back to the base
|
||||
@@ -627,6 +628,10 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, \
|
||||
VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT) \
|
||||
\
|
||||
/* VK_EXT_tooling_info */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT, \
|
||||
VkPhysicalDeviceToolPropertiesEXT) \
|
||||
\
|
||||
/* VK_EXT_transform_feedback */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, \
|
||||
VkPhysicalDeviceTransformFeedbackFeaturesEXT) \
|
||||
@@ -5334,6 +5339,25 @@ void Deserialise(const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &el)
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceToolPropertiesEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(name);
|
||||
SERIALISE_MEMBER(version);
|
||||
SERIALISE_MEMBER_VKFLAGS(VkToolPurposeFlagsEXT, purposes);
|
||||
SERIALISE_MEMBER(description);
|
||||
SERIALISE_MEMBER(layer);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkPhysicalDeviceToolPropertiesEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPipelineSampleLocationsStateCreateInfoEXT &el)
|
||||
{
|
||||
@@ -7796,6 +7820,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTimelineSemaphoreFeaturesKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTimelineSemaphorePropertiesKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceToolPropertiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTransformFeedbackFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTransformFeedbackPropertiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR);
|
||||
|
||||
@@ -1715,6 +1715,7 @@ rdcstr DoStringise(const VkStructureType &el)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT)
|
||||
STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)
|
||||
@@ -2657,6 +2658,22 @@ rdcstr DoStringise(const VkSemaphoreWaitFlagBitsKHR &el)
|
||||
END_BITFIELD_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const VkToolPurposeFlagBitsEXT &el)
|
||||
{
|
||||
BEGIN_BITFIELD_STRINGISE(VkToolPurposeFlagBitsEXT);
|
||||
{
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_VALIDATION_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_PROFILING_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_TRACING_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT);
|
||||
}
|
||||
END_BITFIELD_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const VkExtent3D &el)
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "../vk_core.h"
|
||||
#include "api/replay/version.h"
|
||||
|
||||
static char fakeRenderDocUUID[VK_UUID_SIZE + 1] = {};
|
||||
|
||||
@@ -722,3 +723,78 @@ uint64_t WrappedVulkan::vkGetDeviceMemoryOpaqueCaptureAddressKHR(
|
||||
unwrappedInfo.memory = Unwrap(unwrappedInfo.memory);
|
||||
return ObjDisp(device)->GetDeviceMemoryOpaqueCaptureAddressKHR(Unwrap(device), &unwrappedInfo);
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkGetPhysicalDeviceToolPropertiesEXT(
|
||||
VkPhysicalDevice physicalDevice, uint32_t *pToolCount,
|
||||
VkPhysicalDeviceToolPropertiesEXT *pToolProperties)
|
||||
{
|
||||
// check how many tools are downstream. The function pointer will be NULL if no-one else supports
|
||||
// this extension except us.
|
||||
uint32_t downstreamCount = 0;
|
||||
if(ObjDisp(physicalDevice)->GetPhysicalDeviceToolPropertiesEXT != NULL)
|
||||
ObjDisp(physicalDevice)
|
||||
->GetPhysicalDeviceToolPropertiesEXT(Unwrap(physicalDevice), &downstreamCount, NULL);
|
||||
|
||||
// if we're just enumerating, pToolProperties is NULL, so set the tool count and return
|
||||
if(pToolCount && pToolProperties == NULL)
|
||||
{
|
||||
*pToolCount = downstreamCount + 1;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
// otherwise we expect both to be non-NULL
|
||||
if(pToolCount == NULL || pToolProperties == NULL)
|
||||
return VK_INCOMPLETE;
|
||||
|
||||
// this is how much space is in the array, don't forget it
|
||||
uint32_t availableCount = *pToolCount;
|
||||
|
||||
VkResult vkr = VK_SUCCESS;
|
||||
|
||||
if(ObjDisp(physicalDevice)->GetPhysicalDeviceToolPropertiesEXT != NULL)
|
||||
{
|
||||
// call downstream to populate the array (up to what's available)
|
||||
// this writes up to availableCount properties into pToolProperties, and sets the number written
|
||||
// in pToolCount
|
||||
vkr = ObjDisp(physicalDevice)
|
||||
->GetPhysicalDeviceToolPropertiesEXT(Unwrap(physicalDevice), pToolCount,
|
||||
pToolProperties);
|
||||
}
|
||||
else
|
||||
{
|
||||
// nothing written downstream
|
||||
*pToolCount = 0;
|
||||
}
|
||||
|
||||
// if available isn't enough, return VK_INCOMPLETE now
|
||||
if(vkr == VK_INCOMPLETE || availableCount < downstreamCount + 1)
|
||||
return VK_INCOMPLETE;
|
||||
|
||||
// otherwise we write our own properties in after any downstream properties, then increment
|
||||
// pToolCount
|
||||
|
||||
VkPhysicalDeviceToolPropertiesEXT &props = *(pToolProperties + *pToolCount);
|
||||
|
||||
const rdcstr name = "RenderDoc"_lit;
|
||||
const rdcstr version = StringFormat::Fmt(
|
||||
"%s (%s)", FULL_VERSION_STRING, GitVersionHash[0] == 'N' ? "Unknown revision" : GitVersionHash);
|
||||
const rdcstr description = "Debugging capture layer for RenderDoc"_lit;
|
||||
|
||||
RDCASSERTMSG("Name is too long for VkPhysicalDeviceToolPropertiesEXT",
|
||||
name.length() < sizeof(props.name));
|
||||
RDCASSERTMSG("Version is too long for VkPhysicalDeviceToolPropertiesEXT",
|
||||
version.length() < sizeof(props.version));
|
||||
RDCASSERTMSG("Description is too long for VkPhysicalDeviceToolPropertiesEXT",
|
||||
description.length() < sizeof(props.description));
|
||||
|
||||
memcpy(props.name, name.c_str(), name.length() + 1);
|
||||
memcpy(props.version, version.c_str(), version.length() + 1);
|
||||
props.purposes = VK_TOOL_PURPOSE_TRACING_BIT_EXT | VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT |
|
||||
VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT;
|
||||
memcpy(props.description, description.c_str(), description.length() + 1);
|
||||
// do not tell people about the layer
|
||||
RDCEraseEl(props.layer);
|
||||
|
||||
(*pToolCount)++;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
volk from https://github.com/zeux/volk at commit b1128a0df781cb41f47342925177fdf5b8d112bd
|
||||
volk from https://github.com/zeux/volk at commit b7ea0c3d15591a9c84f16b0c628443b1a06a302d (built against 1.1.130)
|
||||
Vendored
+6
@@ -197,6 +197,9 @@ static void volkGenLoadInstance(void* context, PFN_vkVoidFunction (*load)(void*,
|
||||
#if defined(VK_EXT_sample_locations)
|
||||
vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)load(context, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
|
||||
#endif /* defined(VK_EXT_sample_locations) */
|
||||
#if defined(VK_EXT_tooling_info)
|
||||
vkGetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)load(context, "vkGetPhysicalDeviceToolPropertiesEXT");
|
||||
#endif /* defined(VK_EXT_tooling_info) */
|
||||
#if defined(VK_FUCHSIA_imagepipe_surface)
|
||||
vkCreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)load(context, "vkCreateImagePipeSurfaceFUCHSIA");
|
||||
#endif /* defined(VK_FUCHSIA_imagepipe_surface) */
|
||||
@@ -1378,6 +1381,9 @@ PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
|
||||
PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
|
||||
PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;
|
||||
#endif /* defined(VK_EXT_sample_locations) */
|
||||
#if defined(VK_EXT_tooling_info)
|
||||
PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;
|
||||
#endif /* defined(VK_EXT_tooling_info) */
|
||||
#if defined(VK_EXT_transform_feedback)
|
||||
PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;
|
||||
PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;
|
||||
|
||||
Vendored
+4
-1
@@ -14,7 +14,7 @@
|
||||
#endif
|
||||
|
||||
/* VOLK_GENERATE_VERSION_DEFINE */
|
||||
#define VOLK_HEADER_VERSION 129
|
||||
#define VOLK_HEADER_VERSION 130
|
||||
/* VOLK_GENERATE_VERSION_DEFINE */
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
@@ -769,6 +769,9 @@ extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
|
||||
extern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
|
||||
extern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;
|
||||
#endif /* defined(VK_EXT_sample_locations) */
|
||||
#if defined(VK_EXT_tooling_info)
|
||||
extern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;
|
||||
#endif /* defined(VK_EXT_tooling_info) */
|
||||
#if defined(VK_EXT_transform_feedback)
|
||||
extern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;
|
||||
extern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;
|
||||
|
||||
@@ -44,7 +44,7 @@ extern "C" {
|
||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 129
|
||||
#define VK_HEADER_VERSION 130
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
@@ -518,6 +518,7 @@ typedef enum VkStructureType {
|
||||
VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
|
||||
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000,
|
||||
VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
|
||||
VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
|
||||
@@ -9905,6 +9906,41 @@ VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_tooling_info 1
|
||||
#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1
|
||||
#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info"
|
||||
|
||||
typedef enum VkToolPurposeFlagBitsEXT {
|
||||
VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 0x00000001,
|
||||
VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 0x00000002,
|
||||
VK_TOOL_PURPOSE_TRACING_BIT_EXT = 0x00000004,
|
||||
VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 0x00000008,
|
||||
VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 0x00000010,
|
||||
VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020,
|
||||
VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040,
|
||||
VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkToolPurposeFlagBitsEXT;
|
||||
typedef VkFlags VkToolPurposeFlagsEXT;
|
||||
typedef struct VkPhysicalDeviceToolPropertiesEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
char name[VK_MAX_EXTENSION_NAME_SIZE];
|
||||
char version[VK_MAX_EXTENSION_NAME_SIZE];
|
||||
VkToolPurposeFlagsEXT purposes;
|
||||
char description[VK_MAX_DESCRIPTION_SIZE];
|
||||
char layer[VK_MAX_EXTENSION_NAME_SIZE];
|
||||
} VkPhysicalDeviceToolPropertiesEXT;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t* pToolCount,
|
||||
VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_separate_stencil_usage 1
|
||||
#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
|
||||
#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
|
||||
|
||||
Reference in new issue
Block a user