Add support for VK_EXT_calibrated_timestamps

This commit is contained in:
baldurk
2019-02-05 17:27:34 +00:00
parent 61c0a41767
commit 3dfe4a2a8f
8 changed files with 77 additions and 7 deletions
+3
View File
@@ -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);
+3
View File
@@ -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,
},
+9
View File
@@ -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);
};
+13 -3
View File
@@ -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
+1 -1
View File
@@ -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: \
+19 -3
View File
@@ -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);
+13
View File
@@ -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);
}