mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 10:00:40 +00:00
Add support for VK_EXT_calibrated_timestamps
This commit is contained in:
@@ -584,6 +584,7 @@ DECLARE_REFLECTION_STRUCT(VkBufferCreateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkBufferMemoryBarrier);
|
||||
DECLARE_REFLECTION_STRUCT(VkBufferMemoryRequirementsInfo2);
|
||||
DECLARE_REFLECTION_STRUCT(VkBufferViewCreateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkCalibratedTimestampInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkCommandBufferAllocateInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkCommandBufferBeginInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkCommandBufferInheritanceConditionalRenderingInfoEXT);
|
||||
@@ -798,6 +799,7 @@ DECLARE_DESERIALISE_TYPE(VkBufferCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkBufferMemoryBarrier);
|
||||
DECLARE_DESERIALISE_TYPE(VkBufferMemoryRequirementsInfo2);
|
||||
DECLARE_DESERIALISE_TYPE(VkBufferViewCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkCalibratedTimestampInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkCommandBufferAllocateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkCommandBufferBeginInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkCommandBufferInheritanceConditionalRenderingInfoEXT);
|
||||
@@ -1219,6 +1221,7 @@ DECLARE_REFLECTION_ENUM(VkSurfaceCounterFlagBitsEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkSurfaceTransformFlagBitsKHR);
|
||||
DECLARE_REFLECTION_ENUM(VkSwapchainCreateFlagBitsKHR);
|
||||
DECLARE_REFLECTION_ENUM(VkTessellationDomainOrigin);
|
||||
DECLARE_REFLECTION_ENUM(VkTimeDomainEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkValidationCheckEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkValidationFeatureEnableEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkValidationFeatureDisableEXT);
|
||||
|
||||
@@ -635,6 +635,9 @@ static const VkExtensionProperties supportedExtensions[] = {
|
||||
{
|
||||
VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME, VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME, VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME, VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION,
|
||||
},
|
||||
|
||||
@@ -2013,4 +2013,13 @@ public:
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdSetDiscardRectangleEXT, VkCommandBuffer commandBuffer,
|
||||
uint32_t firstDiscardRectangle, uint32_t discardRectangleCount,
|
||||
const VkRect2D *pDiscardRectangles);
|
||||
|
||||
// VK_EXT_calibrated_timestamps
|
||||
|
||||
VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,
|
||||
uint32_t *pTimeDomainCount,
|
||||
VkTimeDomainEXT *pTimeDomains);
|
||||
VkResult vkGetCalibratedTimestampsEXT(VkDevice device, uint32_t timestampCount,
|
||||
const VkCalibratedTimestampInfoEXT *pTimestampInfos,
|
||||
uint64_t *pTimestamps, uint64_t *pMaxDeviation);
|
||||
};
|
||||
|
||||
@@ -355,7 +355,8 @@
|
||||
DeclExt(EXT_transform_feedback); \
|
||||
DeclExt(EXT_conditional_rendering); \
|
||||
DeclExt(EXT_sample_locations); \
|
||||
DeclExt(EXT_discard_rectangles);
|
||||
DeclExt(EXT_discard_rectangles); \
|
||||
DeclExt(EXT_calibrated_timestamps);
|
||||
|
||||
// for simplicity and since the check itself is platform agnostic,
|
||||
// these aren't protected in platform defines
|
||||
@@ -381,7 +382,8 @@
|
||||
CheckExt(protected_memory, VK11); \
|
||||
CheckExt(KHR_get_surface_capabilities2, VKXX); \
|
||||
CheckExt(KHR_get_display_properties2, VKXX); \
|
||||
CheckExt(EXT_sample_locations, VKXX);
|
||||
CheckExt(EXT_sample_locations, VKXX); \
|
||||
CheckExt(EXT_calibrated_timestamps, VKXX);
|
||||
|
||||
#define CheckDeviceExts() \
|
||||
CheckExt(EXT_debug_marker, VKXX); \
|
||||
@@ -423,7 +425,8 @@
|
||||
CheckExt(EXT_transform_feedback, VKXX); \
|
||||
CheckExt(EXT_conditional_rendering, VKXX); \
|
||||
CheckExt(EXT_sample_locations, VKXX); \
|
||||
CheckExt(EXT_discard_rectangles, VKXX);
|
||||
CheckExt(EXT_discard_rectangles, VKXX); \
|
||||
CheckExt(EXT_calibrated_timestamps, VKXX);
|
||||
|
||||
#define HookInitVulkanInstanceExts() \
|
||||
HookInitExtension(KHR_surface, DestroySurfaceKHR); \
|
||||
@@ -478,6 +481,7 @@
|
||||
HookInitExtension(KHR_get_display_properties2, GetDisplayModeProperties2KHR); \
|
||||
HookInitExtension(KHR_get_display_properties2, GetDisplayPlaneCapabilities2KHR); \
|
||||
HookInitExtension(EXT_sample_locations, GetPhysicalDeviceMultisamplePropertiesEXT); \
|
||||
HookInitExtension(EXT_calibrated_timestamps, GetPhysicalDeviceCalibrateableTimeDomainsEXT); \
|
||||
HookInitInstance_PlatformSpecific()
|
||||
|
||||
#define HookInitVulkanDeviceExts() \
|
||||
@@ -555,6 +559,7 @@
|
||||
HookInitExtension(EXT_conditional_rendering, CmdEndConditionalRenderingEXT); \
|
||||
HookInitExtension(EXT_sample_locations, CmdSetSampleLocationsEXT); \
|
||||
HookInitExtension(EXT_discard_rectangles, CmdSetDiscardRectangleEXT); \
|
||||
HookInitExtension(EXT_calibrated_timestamps, GetCalibratedTimestampsEXT); \
|
||||
HookInitDevice_PlatformSpecific()
|
||||
|
||||
#define DefineHooks() \
|
||||
@@ -1118,6 +1123,11 @@
|
||||
HookDefine4(void, vkCmdSetDiscardRectangleEXT, VkCommandBuffer, commandBuffer, uint32_t, \
|
||||
firstDiscardRectangle, uint32_t, discardRectangleCount, const VkRect2D *, \
|
||||
pDiscardRectangles); \
|
||||
HookDefine3(VkResult, vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, VkPhysicalDevice, \
|
||||
physicalDevice, uint32_t *, pTimeDomainCount, VkTimeDomainEXT *, pTimeDomains); \
|
||||
HookDefine5(VkResult, vkGetCalibratedTimestampsEXT, VkDevice, device, uint32_t, timestampCount, \
|
||||
const VkCalibratedTimestampInfoEXT *, pTimestampInfos, uint64_t *, pTimestamps, \
|
||||
uint64_t *, pMaxDeviation); \
|
||||
HookDefine_PlatformSpecific()
|
||||
|
||||
struct VkLayerInstanceDispatchTableExtended : VkLayerInstanceDispatchTable
|
||||
|
||||
@@ -83,6 +83,7 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, VkBufferCreateInfo); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, \
|
||||
VkBufferDeviceAddressCreateInfoEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, VkCalibratedTimestampInfoEXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, VkCommandBufferBeginInfo); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, \
|
||||
VkCommandBufferInheritanceConditionalRenderingInfoEXT); \
|
||||
@@ -431,7 +432,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID: \
|
||||
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: \
|
||||
case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV: \
|
||||
case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: \
|
||||
case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX: \
|
||||
case VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX: \
|
||||
|
||||
@@ -413,6 +413,9 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, \
|
||||
VkPhysicalDeviceASTCDecodeFeaturesEXT) \
|
||||
\
|
||||
/* VK_EXT_calibrated_timestamps */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, VkCalibratedTimestampInfoEXT) \
|
||||
\
|
||||
/* VK_EXT_conditional_rendering */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, \
|
||||
VkCommandBufferInheritanceConditionalRenderingInfoEXT) \
|
||||
@@ -791,9 +794,6 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT) \
|
||||
\
|
||||
/* VK_EXT_calibrated_timestamps */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT) \
|
||||
\
|
||||
/* VK_EXT_descriptor_indexing */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT) \
|
||||
@@ -5071,6 +5071,21 @@ void Deserialise(const VkDisplayEventInfoEXT &el)
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkCalibratedTimestampInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(timeDomain);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkCalibratedTimestampInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSwapchainCounterCreateInfoEXT &el)
|
||||
{
|
||||
@@ -6153,6 +6168,7 @@ INSTANTIATE_SERIALISE_TYPE(VkBufferCreateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkBufferMemoryBarrier);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkBufferMemoryRequirementsInfo2);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkBufferViewCreateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkCalibratedTimestampInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkCommandBufferAllocateInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkCommandBufferBeginInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkCommandBufferInheritanceInfo);
|
||||
|
||||
@@ -2062,6 +2062,19 @@ std::string DoStringise(const VkSamplerReductionModeEXT &el)
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
std::string DoStringise(const VkTimeDomainEXT &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(VkTimeDomainEXT);
|
||||
{
|
||||
STRINGISE_ENUM(VK_TIME_DOMAIN_DEVICE_EXT)
|
||||
STRINGISE_ENUM(VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT)
|
||||
STRINGISE_ENUM(VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT)
|
||||
STRINGISE_ENUM(VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT)
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
std::string DoStringise(const VkSamplerYcbcrModelConversion &el)
|
||||
{
|
||||
|
||||
@@ -704,4 +704,20 @@ void WrappedVulkan::vkGetPhysicalDeviceMultisamplePropertiesEXT(
|
||||
return ObjDisp(physicalDevice)
|
||||
->GetPhysicalDeviceMultisamplePropertiesEXT(Unwrap(physicalDevice), samples,
|
||||
pMultisampleProperties);
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
|
||||
VkPhysicalDevice physicalDevice, uint32_t *pTimeDomainCount, VkTimeDomainEXT *pTimeDomains)
|
||||
{
|
||||
return ObjDisp(physicalDevice)
|
||||
->GetPhysicalDeviceCalibrateableTimeDomainsEXT(Unwrap(physicalDevice), pTimeDomainCount,
|
||||
pTimeDomains);
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkGetCalibratedTimestampsEXT(VkDevice device, uint32_t timestampCount,
|
||||
const VkCalibratedTimestampInfoEXT *pTimestampInfos,
|
||||
uint64_t *pTimestamps, uint64_t *pMaxDeviation)
|
||||
{
|
||||
return ObjDisp(device)->GetCalibratedTimestampsEXT(Unwrap(device), timestampCount,
|
||||
pTimestampInfos, pTimestamps, pMaxDeviation);
|
||||
}
|
||||
Reference in New Issue
Block a user