Add support for VK_EXT_present_timing

* As with other WSI extensions this is only passed through on capture, not
  replayed.
This commit is contained in:
baldurk
2026-07-24 17:52:48 +01:00
parent 3d2329da89
commit fff1cc4b0e
11 changed files with 396 additions and 34 deletions
+1 -1
View File
@@ -97,6 +97,7 @@ Maintainers can update this file by updating vk.xml in this folder and running `
* `VK_EXT_pipeline_robustness`
* `VK_EXT_post_depth_coverage`
* `VK_EXT_present_mode_fifo_latest_ready`
* `VK_EXT_present_timing`
* `VK_EXT_primitive_topology_list_restart`
* `VK_EXT_primitives_generated_query`
* `VK_EXT_private_data`
@@ -337,7 +338,6 @@ The portability subset is only relevant on mac, which is not a supported platfor
* `VK_EXT_multisampled_render_to_swapchain`
* `VK_EXT_opacity_micromap`
* `VK_EXT_pipeline_library_group_handles`
* `VK_EXT_present_timing`
* `VK_EXT_primitive_restart_index`
* `VK_EXT_shader_float8`
* `VK_EXT_shader_long_vector`
+28
View File
@@ -1666,6 +1666,9 @@ DECLARE_REFLECTION_STRUCT(VkMultisampledRenderToSingleSampledInfoEXT);
DECLARE_REFLECTION_STRUCT(VkMultisamplePropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkMutableDescriptorTypeCreateInfoEXT);
DECLARE_REFLECTION_STRUCT(VkOpaqueCaptureDescriptorDataCreateInfoEXT);
DECLARE_REFLECTION_STRUCT(VkPastPresentationTimingEXT);
DECLARE_REFLECTION_STRUCT(VkPastPresentationTimingInfoEXT);
DECLARE_REFLECTION_STRUCT(VkPastPresentationTimingPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkPastPresentationTimingGOOGLE);
DECLARE_REFLECTION_STRUCT(VkPerformanceCounterDescriptionKHR);
DECLARE_REFLECTION_STRUCT(VkPerformanceCounterKHR);
@@ -1794,6 +1797,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePointClippingProperties);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePresentId2FeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePresentIdFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePresentTimingFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePresentWait2FeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePresentWaitFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT);
@@ -1933,8 +1937,12 @@ DECLARE_REFLECTION_STRUCT(VkPresentId2KHR);
DECLARE_REFLECTION_STRUCT(VkPresentIdKHR);
DECLARE_REFLECTION_STRUCT(VkPresentInfoKHR);
DECLARE_REFLECTION_STRUCT(VkPresentRegionsKHR);
DECLARE_REFLECTION_STRUCT(VkPresentStageTimeEXT);
DECLARE_REFLECTION_STRUCT(VkPresentTimeGOOGLE);
DECLARE_REFLECTION_STRUCT(VkPresentTimesInfoGOOGLE);
DECLARE_REFLECTION_STRUCT(VkPresentTimingInfoEXT);
DECLARE_REFLECTION_STRUCT(VkPresentTimingsInfoEXT);
DECLARE_REFLECTION_STRUCT(VkPresentTimingSurfaceCapabilitiesEXT);
DECLARE_REFLECTION_STRUCT(VkPresentWait2InfoKHR);
DECLARE_REFLECTION_STRUCT(VkPrivateDataSlotCreateInfo);
DECLARE_REFLECTION_STRUCT(VkProtectedSubmitInfo);
@@ -2013,6 +2021,7 @@ DECLARE_REFLECTION_STRUCT(VkSurfacePresentModeCompatibilityKHR);
DECLARE_REFLECTION_STRUCT(VkSurfacePresentModeKHR);
DECLARE_REFLECTION_STRUCT(VkSurfacePresentScalingCapabilitiesKHR);
DECLARE_REFLECTION_STRUCT(VkSurfaceProtectedCapabilitiesKHR);
DECLARE_REFLECTION_STRUCT(VkSwapchainCalibratedTimestampInfoEXT);
DECLARE_REFLECTION_STRUCT(VkSwapchainCounterCreateInfoEXT);
DECLARE_REFLECTION_STRUCT(VkSwapchainCreateInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSwapchainDisplayNativeHdrCreateInfoAMD);
@@ -2020,6 +2029,8 @@ DECLARE_REFLECTION_STRUCT(VkSwapchainPresentFenceInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentModeInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentModesCreateInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentScalingCreateInfoKHR);
DECLARE_REFLECTION_STRUCT(VkSwapchainTimeDomainPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkSwapchainTimingPropertiesEXT);
DECLARE_REFLECTION_STRUCT(VkTextureLODGatherFormatPropertiesAMD);
DECLARE_REFLECTION_STRUCT(VkTimelineSemaphoreSubmitInfo);
DECLARE_REFLECTION_STRUCT(VkValidationCacheCreateInfoEXT);
@@ -2232,6 +2243,10 @@ DECLARE_DESERIALISE_TYPE(VkMultisampledRenderToSingleSampledInfoEXT);
DECLARE_DESERIALISE_TYPE(VkMultisamplePropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkMutableDescriptorTypeCreateInfoEXT);
DECLARE_DESERIALISE_TYPE(VkOpaqueCaptureDescriptorDataCreateInfoEXT);
DECLARE_DESERIALISE_TYPE(VkPastPresentationTimingEXT);
DECLARE_DESERIALISE_TYPE(VkPastPresentationTimingInfoEXT);
DECLARE_DESERIALISE_TYPE(VkPastPresentationTimingPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkPastPresentationTimingGOOGLE);
DECLARE_DESERIALISE_TYPE(VkPerformanceCounterDescriptionKHR);
DECLARE_DESERIALISE_TYPE(VkPerformanceCounterKHR);
DECLARE_DESERIALISE_TYPE(VkPerformanceQuerySubmitInfoKHR);
@@ -2356,6 +2371,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePointClippingProperties);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePresentId2FeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePresentIdFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePresentTimingFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePresentWait2FeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePresentWaitFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT);
@@ -2495,7 +2511,12 @@ DECLARE_DESERIALISE_TYPE(VkPresentId2KHR);
DECLARE_DESERIALISE_TYPE(VkPresentIdKHR);
DECLARE_DESERIALISE_TYPE(VkPresentInfoKHR);
DECLARE_DESERIALISE_TYPE(VkPresentRegionsKHR);
DECLARE_DESERIALISE_TYPE(VkPresentStageTimeEXT);
DECLARE_DESERIALISE_TYPE(VkPresentTimeGOOGLE);
DECLARE_DESERIALISE_TYPE(VkPresentTimesInfoGOOGLE);
DECLARE_DESERIALISE_TYPE(VkPresentTimingInfoEXT);
DECLARE_DESERIALISE_TYPE(VkPresentTimingsInfoEXT);
DECLARE_DESERIALISE_TYPE(VkPresentTimingSurfaceCapabilitiesEXT);
DECLARE_DESERIALISE_TYPE(VkPresentWait2InfoKHR);
DECLARE_DESERIALISE_TYPE(VkPrivateDataSlotCreateInfo);
DECLARE_DESERIALISE_TYPE(VkProtectedSubmitInfo);
@@ -2512,6 +2533,7 @@ DECLARE_DESERIALISE_TYPE(VkQueueFamilyProperties2);
DECLARE_DESERIALISE_TYPE(VkRayTracingPipelineCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkRayTracingPipelineInterfaceCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkRayTracingShaderGroupCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkRefreshCycleDurationGOOGLE);
DECLARE_DESERIALISE_TYPE(VkReleaseSwapchainImagesInfoKHR);
DECLARE_DESERIALISE_TYPE(VkRenderingAreaInfo);
DECLARE_DESERIALISE_TYPE(VkRenderingAttachmentInfo);
@@ -2573,6 +2595,7 @@ DECLARE_DESERIALISE_TYPE(VkSurfacePresentModeCompatibilityKHR);
DECLARE_DESERIALISE_TYPE(VkSurfacePresentModeKHR);
DECLARE_DESERIALISE_TYPE(VkSurfacePresentScalingCapabilitiesKHR);
DECLARE_DESERIALISE_TYPE(VkSurfaceProtectedCapabilitiesKHR);
DECLARE_DESERIALISE_TYPE(VkSwapchainCalibratedTimestampInfoEXT);
DECLARE_DESERIALISE_TYPE(VkSwapchainCounterCreateInfoEXT);
DECLARE_DESERIALISE_TYPE(VkSwapchainCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSwapchainDisplayNativeHdrCreateInfoAMD);
@@ -2580,6 +2603,8 @@ DECLARE_DESERIALISE_TYPE(VkSwapchainPresentFenceInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentModeInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentModesCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentScalingCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkSwapchainTimeDomainPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkSwapchainTimingPropertiesEXT);
DECLARE_DESERIALISE_TYPE(VkTextureLODGatherFormatPropertiesAMD);
DECLARE_DESERIALISE_TYPE(VkTimelineSemaphoreSubmitInfo);
DECLARE_DESERIALISE_TYPE(VkValidationCacheCreateInfoEXT);
@@ -2883,6 +2908,7 @@ DECLARE_REFLECTION_ENUM(VkMemoryOverallocationBehaviorAMD);
DECLARE_REFLECTION_ENUM(VkMemoryPropertyFlagBits);
DECLARE_REFLECTION_ENUM(VkMemoryUnmapFlagBits);
DECLARE_REFLECTION_ENUM(VkObjectType);
DECLARE_REFLECTION_ENUM(VkPastPresentationTimingFlagBitsEXT);
DECLARE_REFLECTION_ENUM(VkPerformanceCounterDescriptionFlagBitsKHR);
DECLARE_REFLECTION_ENUM(VkPerformanceCounterScopeKHR);
DECLARE_REFLECTION_ENUM(VkPerformanceCounterStorageKHR);
@@ -2908,6 +2934,8 @@ DECLARE_REFLECTION_ENUM(VkPolygonMode);
DECLARE_REFLECTION_ENUM(VkPresentGravityFlagBitsKHR);
DECLARE_REFLECTION_ENUM(VkPresentModeKHR);
DECLARE_REFLECTION_ENUM(VkPresentScalingFlagBitsKHR);
DECLARE_REFLECTION_ENUM(VkPresentStageFlagBitsEXT);
DECLARE_REFLECTION_ENUM(VkPresentTimingInfoFlagBitsEXT);
DECLARE_REFLECTION_ENUM(VkPrimitiveTopology);
DECLARE_REFLECTION_ENUM(VkProvokingVertexModeEXT);
DECLARE_REFLECTION_ENUM(VkQueryControlFlagBits);
+4
View File
@@ -1376,6 +1376,10 @@ static const VkExtensionProperties supportedExtensions[] = {
VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME,
VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION,
},
{
VK_EXT_PRESENT_TIMING_EXTENSION_NAME,
VK_EXT_PRESENT_TIMING_SPEC_VERSION,
},
{
VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME,
VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION,
+14
View File
@@ -3318,4 +3318,18 @@ public:
// VK_EXT_depth_bias_control
IMPLEMENT_FUNCTION_SERIALISED(void, vkCmdSetDepthBias2EXT, VkCommandBuffer commandBuffer,
const VkDepthBiasInfoEXT *pDepthBiasInfo);
// VK_EXT_present_timing
VkResult vkGetPastPresentationTimingEXT(
VkDevice device, const VkPastPresentationTimingInfoEXT *pPastPresentationTimingInfo,
VkPastPresentationTimingPropertiesEXT *pPastPresentationTimingProperties);
VkResult vkGetSwapchainTimeDomainPropertiesEXT(
VkDevice device, VkSwapchainKHR swapchain,
VkSwapchainTimeDomainPropertiesEXT *pSwapchainTimeDomainProperties,
uint64_t *pTimeDomainsCounter);
VkResult vkGetSwapchainTimingPropertiesEXT(VkDevice device, VkSwapchainKHR swapchain,
VkSwapchainTimingPropertiesEXT *pSwapchainTimingProperties,
uint64_t *pSwapchainTimingPropertiesCounter);
VkResult vkSetSwapchainPresentTimingQueueSizeEXT(VkDevice device, VkSwapchainKHR swapchain,
uint32_t size);
};
+19 -2
View File
@@ -562,7 +562,8 @@
DeclExt(EXT_image_drm_format_modifier); \
DeclExt(EXT_custom_resolve); \
DeclExt(NV_device_diagnostic_checkpoints); \
DeclExt(EXT_depth_bias_control);
DeclExt(EXT_depth_bias_control); \
DeclExt(EXT_present_timing);
// for simplicity and since the check itself is platform agnostic,
// these aren't protected in platform defines
@@ -711,7 +712,8 @@
CheckExt(EXT_image_drm_format_modifier, VKXX); \
CheckExt(EXT_custom_resolve, VKXX); \
CheckExt(NV_device_diagnostic_checkpoints, VKXX); \
CheckExt(EXT_depth_bias_control, VKXX);
CheckExt(EXT_depth_bias_control, VKXX); \
CheckExt(EXT_present_timing, VKXX);
#define HookInitVulkanInstanceExts_PhysDev() \
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
@@ -1121,6 +1123,10 @@
HookInitExtension(NV_device_diagnostic_checkpoints, GetQueueCheckpointDataNV); \
HookInitExtension(NV_device_diagnostic_checkpoints, GetQueueCheckpointData2NV); \
HookInitExtension(EXT_depth_bias_control, CmdSetDepthBias2EXT); \
HookInitExtension(EXT_present_timing, GetPastPresentationTimingEXT); \
HookInitExtension(EXT_present_timing, GetSwapchainTimeDomainPropertiesEXT); \
HookInitExtension(EXT_present_timing, GetSwapchainTimingPropertiesEXT); \
HookInitExtension(EXT_present_timing, SetSwapchainPresentTimingQueueSizeEXT); \
HookInitExtension_Device_Win32(); \
HookInitExtension_Device_Linux(); \
HookInitExtension_Device_Android(); \
@@ -2103,6 +2109,17 @@
VkCheckpointData2NV *, pCheckpointData); \
HookDefine2(void, vkCmdSetDepthBias2EXT, VkCommandBuffer, commandBuffer, \
const VkDepthBiasInfoEXT *, pDepthBiasInfo); \
HookDefine3(VkResult, vkGetPastPresentationTimingEXT, VkDevice, device, \
const VkPastPresentationTimingInfoEXT *, pPastPresentationTimingInfo, \
VkPastPresentationTimingPropertiesEXT *, pPastPresentationTimingProperties); \
HookDefine4(VkResult, vkGetSwapchainTimeDomainPropertiesEXT, VkDevice, device, VkSwapchainKHR, \
swapchain, VkSwapchainTimeDomainPropertiesEXT *, pSwapchainTimeDomainProperties, \
uint64_t *, pTimeDomainsCounter); \
HookDefine4(VkResult, vkGetSwapchainTimingPropertiesEXT, VkDevice, device, VkSwapchainKHR, \
swapchain, VkSwapchainTimingPropertiesEXT *, pSwapchainTimingProperties, uint64_t *, \
pSwapchainTimingPropertiesCounter); \
HookDefine3(VkResult, vkSetSwapchainPresentTimingQueueSizeEXT, VkDevice, device, VkSwapchainKHR, \
swapchain, uint32_t, size); \
HookDefine_Win32(); \
HookDefine_Linux(); \
HookDefine_Android(); \
+16 -10
View File
@@ -238,6 +238,9 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkMutableDescriptorTypeCreateInfoEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT, \
VkOpaqueCaptureDescriptorDataCreateInfoEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT, VkPastPresentationTimingEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT, \
VkPastPresentationTimingPropertiesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR, \
VkPerformanceCounterDescriptionKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR, VkPerformanceCounterKHR); \
@@ -491,6 +494,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPhysicalDevicePresentId2FeaturesKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR, \
VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, \
VkPhysicalDevicePresentTimingFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, \
VkPhysicalDevicePresentWaitFeaturesKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR, \
@@ -746,6 +751,10 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR, VkPresentId2KHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, VkPresentRegionsKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, VkPresentTimesInfoGOOGLE); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT, VkPresentTimingInfoEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT, \
VkPresentTimingSurfaceCapabilitiesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT, VkPresentTimingsInfoEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, VkPrivateDataSlotCreateInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, VkQueryPoolCreateInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR, \
@@ -825,6 +834,9 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkSwapchainPresentModesCreateInfoKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR, \
VkSwapchainPresentScalingCreateInfoKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT, \
VkSwapchainTimeDomainPropertiesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT, VkSwapchainTimingPropertiesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, \
VkTextureLODGatherFormatPropertiesAMD); \
COPY_STRUCT(VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, VkTimelineSemaphoreSubmitInfo); \
@@ -962,6 +974,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
UnwrapInPlace(out->buffer), UnwrapInPlace(out->image)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_MAP_INFO, VkMemoryMapInfo, UnwrapInPlace(out->memory)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO, VkMemoryUnmapInfo, UnwrapInPlace(out->memory)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT, \
VkPastPresentationTimingInfoEXT, UnwrapInPlace(out->swapchain)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, VkPipelineInfoKHR, \
UnwrapInPlace(out->pipeline)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, VkPipelineExecutableInfoKHR, \
@@ -991,6 +1005,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
UnwrapInPlace(out->semaphore)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT, \
VkSetDescriptorBufferOffsetsInfoEXT, UnwrapInPlace(out->layout)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT, \
VkSwapchainCalibratedTimestampInfoEXT, UnwrapInPlace(out->swapchain)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO, VkCopyImageToImageInfo, \
UnwrapInPlace(out->srcImage), UnwrapInPlace(out->dstImage)); \
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO, VkCopyImageToMemoryInfo, \
@@ -1260,9 +1276,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV: \
case VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV: \
case VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV: \
case VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT: \
case VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT: \
case VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT: \
case VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM: \
case VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM: \
case VK_STRUCTURE_TYPE_PERF_HINT_INFO_QCOM: \
@@ -1392,7 +1405,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV: \
@@ -1484,9 +1496,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: \
case VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT: \
case VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT: \
case VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT: \
case VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR: \
case VK_STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV: \
case VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT: \
@@ -1536,12 +1545,9 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: \
case VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT: \
case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV: \
case VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT: \
case VK_STRUCTURE_TYPE_SWAPCHAIN_FLAGS_SURFACE_CAPABILITIES_EXT: \
case VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT: \
case VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT: \
case VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA: \
case VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM: \
case VK_STRUCTURE_TYPE_TENSOR_COPY_ARM: \
+213 -15
View File
@@ -167,6 +167,9 @@ DECL_VKFLAG_EXT(VkGraphicsPipelineLibrary, EXT);
DECL_VKFLAG(VkRendering);
DECL_VKFLAG_EXT(VkPresentScaling, KHR);
DECL_VKFLAG_EXT(VkPresentGravity, KHR);
DECL_VKFLAG_EXT(VkPastPresentationTiming, EXT);
DECL_VKFLAG_EXT(VkPresentStage, EXT);
DECL_VKFLAG_EXT(VkPresentTimingInfo, EXT);
DECL_VKFLAG_EXT(VkAccelerationStructureCreate, KHR);
DECL_VKFLAG_EXT(VkBuildAccelerationStructure, KHR);
DECL_VKFLAG_EXT(VkGeometry, KHR);
@@ -903,6 +906,23 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES, \
VkPhysicalDevicePipelineRobustnessProperties) \
\
/* VK_EXT_present_timing */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT, VkPastPresentationTimingEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT, VkPastPresentationTimingInfoEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT, \
VkPastPresentationTimingPropertiesEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, \
VkPhysicalDevicePresentTimingFeaturesEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT, VkPresentTimingInfoEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT, \
VkPresentTimingSurfaceCapabilitiesEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT, VkPresentTimingsInfoEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT, \
VkSwapchainCalibratedTimestampInfoEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT, \
VkSwapchainTimeDomainPropertiesEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT, VkSwapchainTimingPropertiesEXT) \
\
/* VK_EXT_primitive_topology_list_restart */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, \
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT) \
@@ -2076,18 +2096,6 @@ SERIALISE_VK_HANDLES();
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT) \
\
/* VK_EXT_present_timing */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT) \
\
/* VK_EXT_primitive_restart_index */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT) \
\
@@ -8078,6 +8086,185 @@ void Deserialise(const VkPhysicalDevicePresentId2FeaturesKHR &el)
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPresentStageTimeEXT &el)
{
SERIALISE_MEMBER_VKFLAGS(VkPresentStageFlagsEXT, stage);
SERIALISE_MEMBER(time);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPastPresentationTimingEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(presentId);
SERIALISE_MEMBER(targetTime);
SERIALISE_MEMBER_ARRAY(pPresentStages, presentStageCount);
SERIALISE_MEMBER(timeDomain);
SERIALISE_MEMBER(timeDomainId);
SERIALISE_MEMBER(reportComplete);
}
template <>
void Deserialise(const VkPastPresentationTimingEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPastPresentationTimingInfoEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER_VKFLAGS(VkPastPresentationTimingFlagsEXT, flags);
SERIALISE_MEMBER(swapchain);
}
template <>
void Deserialise(const VkPastPresentationTimingInfoEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPastPresentationTimingPropertiesEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(timingPropertiesCounter);
SERIALISE_MEMBER(timeDomainsCounter);
SERIALISE_MEMBER_ARRAY(pPresentationTimings, presentationTimingCount);
}
template <>
void Deserialise(const VkPastPresentationTimingPropertiesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDevicePresentTimingFeaturesEXT &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(presentTiming);
SERIALISE_MEMBER(presentAtAbsoluteTime);
SERIALISE_MEMBER(presentAtRelativeTime);
}
template <>
void Deserialise(const VkPhysicalDevicePresentTimingFeaturesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPresentTimingInfoEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER_VKFLAGS(VkPresentTimingInfoFlagsEXT, flags);
SERIALISE_MEMBER(targetTime);
SERIALISE_MEMBER(timeDomainId);
SERIALISE_MEMBER_VKFLAGS(VkPresentStageFlagsEXT, presentStageQueries);
SERIALISE_MEMBER_VKFLAGS(VkPresentStageFlagsEXT, targetTimeDomainPresentStage);
}
template <>
void Deserialise(const VkPresentTimingInfoEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPresentTimingSurfaceCapabilitiesEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(presentTimingSupported);
SERIALISE_MEMBER(presentAtAbsoluteTimeSupported);
SERIALISE_MEMBER(presentAtRelativeTimeSupported);
SERIALISE_MEMBER_VKFLAGS(VkPresentStageFlagsEXT, presentStageQueries);
}
template <>
void Deserialise(const VkPresentTimingSurfaceCapabilitiesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPresentTimingsInfoEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER_ARRAY(pTimingInfos, swapchainCount);
}
template <>
void Deserialise(const VkPresentTimingsInfoEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkSwapchainCalibratedTimestampInfoEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(swapchain);
SERIALISE_MEMBER_VKFLAGS(VkPresentStageFlagsEXT, presentStage);
SERIALISE_MEMBER(timeDomainId);
}
template <>
void Deserialise(const VkSwapchainCalibratedTimestampInfoEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkSwapchainTimeDomainPropertiesEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER_ARRAY(pTimeDomains, timeDomainCount);
SERIALISE_MEMBER_ARRAY(pTimeDomainIds, timeDomainCount);
}
template <>
void Deserialise(const VkSwapchainTimeDomainPropertiesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkSwapchainTimingPropertiesEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(refreshDuration);
SERIALISE_MEMBER(refreshInterval);
}
template <>
void Deserialise(const VkSwapchainTimingPropertiesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR &el)
{
@@ -15512,8 +15699,8 @@ INSTANTIATE_SERIALISE_TYPE(VkBufferOpaqueCaptureAddressCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkBufferUsageFlags2CreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkBufferViewCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkCalibratedTimestampInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkCheckpointDataNV);
INSTANTIATE_SERIALISE_TYPE(VkCheckpointData2NV);
INSTANTIATE_SERIALISE_TYPE(VkCheckpointDataNV);
INSTANTIATE_SERIALISE_TYPE(VkCommandBufferAllocateInfo);
INSTANTIATE_SERIALISE_TYPE(VkCommandBufferBeginInfo);
INSTANTIATE_SERIALISE_TYPE(VkCommandBufferInheritanceConditionalRenderingInfoEXT);
@@ -15671,7 +15858,10 @@ INSTANTIATE_SERIALISE_TYPE(VkMultisampledRenderToSingleSampledInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkMultisamplePropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkMutableDescriptorTypeCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkOpaqueCaptureDescriptorDataCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkPastPresentationTimingEXT);
INSTANTIATE_SERIALISE_TYPE(VkPastPresentationTimingGOOGLE);
INSTANTIATE_SERIALISE_TYPE(VkPastPresentationTimingInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkPastPresentationTimingPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPerformanceCounterDescriptionKHR);
INSTANTIATE_SERIALISE_TYPE(VkPerformanceCounterKHR);
INSTANTIATE_SERIALISE_TYPE(VkPerformanceQuerySubmitInfoKHR);
@@ -15708,6 +15898,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDescriptorIndexingProperties)
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDiagnosticsConfigFeaturesNV);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDiscardRectanglePropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDriverProperties);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDrmPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDynamicRenderingFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDynamicRenderingLocalReadFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT);
@@ -15786,7 +15977,6 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceNestedCommandBufferPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePCIBusInfoPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceDrmPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePerformanceQueryFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePerformanceQueryPropertiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineCreationCacheControlFeatures);
@@ -15798,6 +15988,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePointClippingProperties);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePresentId2FeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePresentIdFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePresentTimingFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePresentWaitFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT);
@@ -15938,6 +16129,9 @@ INSTANTIATE_SERIALISE_TYPE(VkPresentInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkPresentRegionsKHR);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimeGOOGLE);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimesInfoGOOGLE);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimingInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimingsInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimingSurfaceCapabilitiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPresentWait2InfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkPrivateDataSlotCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkProtectedSubmitInfo);
@@ -15946,8 +16140,8 @@ INSTANTIATE_SERIALISE_TYPE(VkPushDescriptorSetInfo);
INSTANTIATE_SERIALISE_TYPE(VkPushDescriptorSetWithTemplateInfo);
INSTANTIATE_SERIALISE_TYPE(VkQueryPoolCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyCheckpointPropertiesNV);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyCheckpointProperties2NV);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyCheckpointPropertiesNV);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyGlobalPriorityProperties);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyOwnershipTransferPropertiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyProperties2);
@@ -16016,6 +16210,7 @@ INSTANTIATE_SERIALISE_TYPE(VkSurfacePresentModeCompatibilityKHR);
INSTANTIATE_SERIALISE_TYPE(VkSurfacePresentModeKHR);
INSTANTIATE_SERIALISE_TYPE(VkSurfacePresentScalingCapabilitiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkSurfaceProtectedCapabilitiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainCalibratedTimestampInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainCounterCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainCreateInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainDisplayNativeHdrCreateInfoAMD);
@@ -16023,6 +16218,8 @@ INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentFenceInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentModeInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentModesCreateInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentScalingCreateInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainTimeDomainPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkSwapchainTimingPropertiesEXT);
INSTANTIATE_SERIALISE_TYPE(VkTextureLODGatherFormatPropertiesAMD);
INSTANTIATE_SERIALISE_TYPE(VkTimelineSemaphoreSubmitInfo);
INSTANTIATE_SERIALISE_TYPE(VkValidationCacheCreateInfoEXT);
@@ -16092,6 +16289,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPipelineColorBlendAttachmentState);
INSTANTIATE_SERIALISE_TYPE(VkPipelineCreationFeedback);
INSTANTIATE_SERIALISE_TYPE(VkPipelineExecutableStatisticValueKHR);
INSTANTIATE_SERIALISE_TYPE(VkPresentRegionKHR);
INSTANTIATE_SERIALISE_TYPE(VkPresentStageTimeEXT);
INSTANTIATE_SERIALISE_TYPE(VkPushConstantRange);
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyProperties);
INSTANTIATE_SERIALISE_TYPE(VkRect2D);
+35
View File
@@ -4854,3 +4854,38 @@ rdcstr DoStringise(const VkDepthBiasRepresentationEXT &el)
}
END_ENUM_STRINGISE();
}
template <>
rdcstr DoStringise(const VkPastPresentationTimingFlagBitsEXT &el)
{
BEGIN_BITFIELD_STRINGISE(VkPastPresentationTimingFlagBitsEXT);
{
STRINGISE_BITFIELD_BIT(VK_PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT);
STRINGISE_BITFIELD_BIT(VK_PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT);
}
END_BITFIELD_STRINGISE();
}
template <>
rdcstr DoStringise(const VkPresentStageFlagBitsEXT &el)
{
BEGIN_BITFIELD_STRINGISE(VkPresentStageFlagBitsEXT);
{
STRINGISE_BITFIELD_BIT(VK_PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT);
STRINGISE_BITFIELD_BIT(VK_PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT);
STRINGISE_BITFIELD_BIT(VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT);
STRINGISE_BITFIELD_BIT(VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT);
}
END_BITFIELD_STRINGISE();
}
template <>
rdcstr DoStringise(const VkPresentTimingInfoFlagBitsEXT &el)
{
BEGIN_BITFIELD_STRINGISE(VkPresentTimingInfoFlagBitsEXT);
{
STRINGISE_BITFIELD_BIT(VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT);
STRINGISE_BITFIELD_BIT(VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT);
}
END_BITFIELD_STRINGISE();
}
@@ -199,7 +199,7 @@ static void StripUnwantedExtensions(rdcarray<rdcstr> &Extensions)
ext == "VK_EXT_present_mode_fifo_latest_ready" || ext == "VK_EXT_surface_maintenance1" ||
ext == "VK_EXT_swapchain_maintenance1" || ext == "VK_KHR_surface_maintenance1" ||
ext == "VK_KHR_swapchain_maintenance1" || ext == "VK_EXT_hdr_metadata" ||
ext == "VK_KHR_get_display_properties2")
ext == "VK_KHR_get_display_properties2" || ext == "VK_EXT_present_timing")
return true;
// remove fullscreen exclusive extension
@@ -2260,9 +2260,11 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
RemoveNextStruct(&createInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR);
present_exts |= RemoveNextStruct(
&createInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR);
present_exts |=
RemoveNextStruct(&createInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT);
if(present_exts)
{
RDCLOG("Removed VK_KHR_present_id/wait/latest_ready structs from vkCreateDevice pNext chain");
RDCLOG("Removed present-related structs from vkCreateDevice pNext chain");
}
VkPhysicalDeviceFeatures enabledFeatures = {0};
@@ -1117,8 +1117,19 @@ VkResult WrappedVulkan::vkGetCalibratedTimestampsEXT(VkDevice device, uint32_t t
const VkCalibratedTimestampInfoKHR *pTimestampInfos,
uint64_t *pTimestamps, uint64_t *pMaxDeviation)
{
return ObjDisp(device)->GetCalibratedTimestampsEXT(Unwrap(device), timestampCount,
pTimestampInfos, pTimestamps, pMaxDeviation);
size_t memSize = sizeof(VkCalibratedTimestampInfoKHR) * timestampCount;
for(uint32_t i = 0; i < timestampCount; i++)
memSize += GetNextPatchSize(&pTimestampInfos[i]);
byte *tempMem = GetTempMemory(memSize);
VkCalibratedTimestampInfoKHR *unwrappedInfos = (VkCalibratedTimestampInfoKHR *)tempMem;
tempMem += sizeof(VkCalibratedTimestampInfoKHR) * timestampCount;
for(uint32_t i = 0; i < timestampCount; i++)
unwrappedInfos[i] = *UnwrapStructAndChain(m_State, tempMem, &pTimestampInfos[i]);
return ObjDisp(device)->GetCalibratedTimestampsEXT(Unwrap(device), timestampCount, unwrappedInfos,
pTimestamps, pMaxDeviation);
}
VkResult WrappedVulkan::vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(
@@ -1133,8 +1144,19 @@ VkResult WrappedVulkan::vkGetCalibratedTimestampsKHR(VkDevice device, uint32_t t
const VkCalibratedTimestampInfoKHR *pTimestampInfos,
uint64_t *pTimestamps, uint64_t *pMaxDeviation)
{
return ObjDisp(device)->GetCalibratedTimestampsKHR(Unwrap(device), timestampCount,
pTimestampInfos, pTimestamps, pMaxDeviation);
size_t memSize = sizeof(VkCalibratedTimestampInfoKHR) * timestampCount;
for(uint32_t i = 0; i < timestampCount; i++)
memSize += GetNextPatchSize(&pTimestampInfos[i]);
byte *tempMem = GetTempMemory(memSize);
VkCalibratedTimestampInfoKHR *unwrappedInfos = (VkCalibratedTimestampInfoKHR *)tempMem;
tempMem += sizeof(VkCalibratedTimestampInfoKHR) * timestampCount;
for(uint32_t i = 0; i < timestampCount; i++)
unwrappedInfos[i] = *UnwrapStructAndChain(m_State, tempMem, &pTimestampInfos[i]);
return ObjDisp(device)->GetCalibratedTimestampsKHR(Unwrap(device), timestampCount, unwrappedInfos,
pTimestamps, pMaxDeviation);
}
VkDeviceAddress WrappedVulkan::vkGetBufferDeviceAddressEXT(VkDevice device,
@@ -1808,6 +1808,42 @@ VkResult WrappedVulkan::vkReleaseSwapchainImagesEXT(VkDevice device,
return vkReleaseSwapchainImagesKHR(device, pReleaseInfo);
}
VkResult WrappedVulkan::vkGetPastPresentationTimingEXT(
VkDevice device, const VkPastPresentationTimingInfoEXT *pPastPresentationTimingInfo,
VkPastPresentationTimingPropertiesEXT *pPastPresentationTimingProperties)
{
VkPastPresentationTimingInfoEXT timingInfo = *pPastPresentationTimingInfo;
timingInfo.swapchain = Unwrap(timingInfo.swapchain);
return ObjDisp(device)->GetPastPresentationTimingEXT(Unwrap(device), &timingInfo,
pPastPresentationTimingProperties);
}
VkResult WrappedVulkan::vkGetSwapchainTimeDomainPropertiesEXT(
VkDevice device, VkSwapchainKHR swapchain,
VkSwapchainTimeDomainPropertiesEXT *pSwapchainTimeDomainProperties, uint64_t *pTimeDomainsCounter)
{
return ObjDisp(device)->GetSwapchainTimeDomainPropertiesEXT(
Unwrap(device), Unwrap(swapchain), pSwapchainTimeDomainProperties, pTimeDomainsCounter);
}
VkResult WrappedVulkan::vkGetSwapchainTimingPropertiesEXT(
VkDevice device, VkSwapchainKHR swapchain,
VkSwapchainTimingPropertiesEXT *pSwapchainTimingProperties,
uint64_t *pSwapchainTimingPropertiesCounter)
{
return ObjDisp(device)->GetSwapchainTimingPropertiesEXT(Unwrap(device), Unwrap(swapchain),
pSwapchainTimingProperties,
pSwapchainTimingPropertiesCounter);
}
VkResult WrappedVulkan::vkSetSwapchainPresentTimingQueueSizeEXT(VkDevice device,
VkSwapchainKHR swapchain,
uint32_t size)
{
return ObjDisp(device)->SetSwapchainPresentTimingQueueSizeEXT(Unwrap(device), Unwrap(swapchain),
size);
}
#ifdef VK_USE_PLATFORM_WIN32_KHR
VkResult WrappedVulkan::vkCreateWin32SurfaceKHR(VkInstance instance,
const VkWin32SurfaceCreateInfoKHR *pCreateInfo,