mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-07 07:11:06 +00:00
Add support for EXT_surface_maintenance1 and EXT_swapchain_maintenance1
This commit is contained in:
@@ -93,7 +93,9 @@ Maintainers can update this file by updating vk.xml in this folder and running `
|
||||
* `VK_EXT_shader_subgroup_vote`
|
||||
* `VK_EXT_shader_viewport_index_layer`
|
||||
* `VK_EXT_subgroup_size_control`
|
||||
* `VK_EXT_surface_maintenance1`
|
||||
* `VK_EXT_swapchain_colorspace`
|
||||
* `VK_EXT_swapchain_maintenance1`
|
||||
* `VK_EXT_texel_buffer_alignment`
|
||||
* `VK_EXT_texture_compression_astc_hdr`
|
||||
* `VK_EXT_tooling_info`
|
||||
@@ -267,8 +269,6 @@ Ray tracing extensions are now standard and will likely be supported at some poi
|
||||
* `VK_EXT_rasterization_order_attachment_access`
|
||||
* `VK_EXT_shader_module_identifier`
|
||||
* `VK_EXT_subpass_merge_feedback`
|
||||
* `VK_EXT_surface_maintenance1`
|
||||
* `VK_EXT_swapchain_maintenance1`
|
||||
|
||||
## Platform/IHV Extensions
|
||||
|
||||
|
||||
@@ -1243,6 +1243,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSubgroupProperties);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSubgroupSizeControlFeatures);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSubgroupSizeControlProperties);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSurfaceInfo2KHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSynchronization2Features);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceTexelBufferAlignmentProperties);
|
||||
@@ -1312,6 +1313,7 @@ DECLARE_REFLECTION_STRUCT(VkQueryPoolPerformanceCreateInfoKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkQueueFamilyGlobalPriorityPropertiesKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkQueueFamilyProperties2);
|
||||
DECLARE_REFLECTION_STRUCT(VkRefreshCycleDurationGOOGLE);
|
||||
DECLARE_REFLECTION_STRUCT(VkReleaseSwapchainImagesInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkRenderingAttachmentInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkRenderingFragmentDensityMapAttachmentInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkRenderingFragmentShadingRateAttachmentInfoKHR);
|
||||
@@ -1356,10 +1358,17 @@ DECLARE_REFLECTION_STRUCT(VkSubpassSampleLocationsEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfaceCapabilities2EXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfaceCapabilities2KHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfaceFormat2KHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfacePresentModeCompatibilityEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfacePresentModeEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfacePresentScalingCapabilitiesEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSurfaceProtectedCapabilitiesKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainCounterCreateInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainCreateInfoKHR);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainDisplayNativeHdrCreateInfoAMD);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentFenceInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentModeInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentModesCreateInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkSwapchainPresentScalingCreateInfoEXT);
|
||||
DECLARE_REFLECTION_STRUCT(VkTextureLODGatherFormatPropertiesAMD);
|
||||
DECLARE_REFLECTION_STRUCT(VkTimelineSemaphoreSubmitInfo);
|
||||
DECLARE_REFLECTION_STRUCT(VkValidationCacheCreateInfoEXT);
|
||||
@@ -1631,6 +1640,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSubgroupProperties);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSubgroupSizeControlFeatures);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSubgroupSizeControlProperties);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSurfaceInfo2KHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSynchronization2Features);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentProperties);
|
||||
@@ -1698,6 +1708,7 @@ DECLARE_DESERIALISE_TYPE(VkQueryPoolCreateInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkQueueFamilyGlobalPriorityPropertiesKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkQueueFamilyProperties2);
|
||||
DECLARE_DESERIALISE_TYPE(VkReleaseSwapchainImagesInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkRenderingAttachmentInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkRenderingFragmentDensityMapAttachmentInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkRenderingFragmentShadingRateAttachmentInfoKHR);
|
||||
@@ -1741,10 +1752,17 @@ DECLARE_DESERIALISE_TYPE(VkSubpassSampleLocationsEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfaceCapabilities2EXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfaceCapabilities2KHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfaceFormat2KHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfacePresentModeCompatibilityEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfacePresentModeEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfacePresentScalingCapabilitiesEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSurfaceProtectedCapabilitiesKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainCounterCreateInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainCreateInfoKHR);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainDisplayNativeHdrCreateInfoAMD);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentFenceInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentModeInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentModesCreateInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkSwapchainPresentScalingCreateInfoEXT);
|
||||
DECLARE_DESERIALISE_TYPE(VkTextureLODGatherFormatPropertiesAMD);
|
||||
DECLARE_DESERIALISE_TYPE(VkTimelineSemaphoreSubmitInfo);
|
||||
DECLARE_DESERIALISE_TYPE(VkValidationCacheCreateInfoEXT);
|
||||
@@ -2024,7 +2042,9 @@ DECLARE_REFLECTION_ENUM(VkPipelineStageFlagBits);
|
||||
DECLARE_REFLECTION_ENUM(VkPipelineStageFlagBits2);
|
||||
DECLARE_REFLECTION_ENUM(VkPointClippingBehavior);
|
||||
DECLARE_REFLECTION_ENUM(VkPolygonMode);
|
||||
DECLARE_REFLECTION_ENUM(VkPresentGravityFlagBitsEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkPresentModeKHR);
|
||||
DECLARE_REFLECTION_ENUM(VkPresentScalingFlagBitsEXT);
|
||||
DECLARE_REFLECTION_ENUM(VkPrimitiveTopology);
|
||||
DECLARE_REFLECTION_ENUM(VkRenderingFlagBits);
|
||||
DECLARE_REFLECTION_ENUM(VkQueryControlFlagBits);
|
||||
|
||||
@@ -1115,9 +1115,15 @@ static const VkExtensionProperties supportedExtensions[] = {
|
||||
{
|
||||
VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME, VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME, VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME, VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME, VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION,
|
||||
},
|
||||
{
|
||||
VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME, VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION,
|
||||
},
|
||||
|
||||
@@ -2608,4 +2608,8 @@ public:
|
||||
|
||||
VkResult vkGetDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId,
|
||||
VkDisplayKHR *display);
|
||||
|
||||
// VK_EXT_swapchain_maintenance1
|
||||
VkResult vkReleaseSwapchainImagesEXT(VkDevice device,
|
||||
const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo);
|
||||
};
|
||||
|
||||
@@ -545,7 +545,8 @@
|
||||
DeclExt(KHR_dynamic_rendering); \
|
||||
DeclExt(KHR_fragment_shading_rate); \
|
||||
DeclExt(EXT_attachment_feedback_loop_layout); \
|
||||
DeclExt(EXT_pageable_device_local_memory);
|
||||
DeclExt(EXT_pageable_device_local_memory); \
|
||||
DeclExt(EXT_swapchain_maintenance1);
|
||||
|
||||
// for simplicity and since the check itself is platform agnostic,
|
||||
// these aren't protected in platform defines
|
||||
@@ -661,7 +662,8 @@
|
||||
CheckExt(KHR_dynamic_rendering, VK13); \
|
||||
CheckExt(KHR_fragment_shading_rate, VKXX); \
|
||||
CheckExt(EXT_attachment_feedback_loop_layout, VKXX); \
|
||||
CheckExt(EXT_pageable_device_local_memory, VKXX);
|
||||
CheckExt(EXT_pageable_device_local_memory, VKXX); \
|
||||
CheckExt(EXT_swapchain_maintenance1, VKXX);
|
||||
|
||||
#define HookInitVulkanInstanceExts_PhysDev() \
|
||||
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
|
||||
@@ -922,6 +924,7 @@
|
||||
HookInitPromotedExtension(KHR_dynamic_rendering, CmdEndRendering, KHR); \
|
||||
HookInitExtension(KHR_fragment_shading_rate, CmdSetFragmentShadingRateKHR); \
|
||||
HookInitExtension(EXT_pageable_device_local_memory, SetDeviceMemoryPriorityEXT); \
|
||||
HookInitExtension(EXT_swapchain_maintenance1, ReleaseSwapchainImagesEXT); \
|
||||
HookInitExtension_Device_Win32(); \
|
||||
HookInitExtension_Device_Linux(); \
|
||||
HookInitExtension_Device_GGP(); \
|
||||
@@ -1646,6 +1649,8 @@
|
||||
VkDisplayKHR, display); \
|
||||
HookDefine4(VkResult, vkGetDrmDisplayEXT, VkPhysicalDevice, physicalDevice, int32_t, drmFd, \
|
||||
uint32_t, connectorId, VkDisplayKHR *, display); \
|
||||
HookDefine2(VkResult, vkReleaseSwapchainImagesEXT, VkDevice, device, \
|
||||
const VkReleaseSwapchainImagesInfoEXT *, pReleaseInfo); \
|
||||
HookDefine_Win32(); \
|
||||
HookDefine_Linux(); \
|
||||
HookDefine_GGP(); \
|
||||
|
||||
@@ -421,6 +421,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
VkPhysicalDeviceSubgroupSizeControlFeatures) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, \
|
||||
VkPhysicalDeviceSubgroupSizeControlProperties) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT, \
|
||||
VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, \
|
||||
VkPhysicalDeviceSynchronization2Features); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, \
|
||||
@@ -571,10 +573,20 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, VkSurfaceCapabilities2EXT); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, VkSurfaceCapabilities2KHR); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, VkSurfaceFormat2KHR); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT, \
|
||||
VkSurfacePresentModeCompatibilityEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT, VkSurfacePresentModeEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT, \
|
||||
VkSurfacePresentScalingCapabilitiesEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR, \
|
||||
VkSurfaceProtectedCapabilitiesKHR); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, \
|
||||
VkSwapchainDisplayNativeHdrCreateInfoAMD) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT, VkSwapchainPresentModeInfoEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT, \
|
||||
VkSwapchainPresentModesCreateInfoEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT, \
|
||||
VkSwapchainPresentScalingCreateInfoEXT) \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, \
|
||||
VkTextureLODGatherFormatPropertiesAMD); \
|
||||
COPY_STRUCT(VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, VkTimelineSemaphoreSubmitInfo); \
|
||||
@@ -677,6 +689,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
UnwrapInPlace(out->imageView), UnwrapInPlace(out->resolveImageView)); \
|
||||
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, VkRenderPassBeginInfo, \
|
||||
UnwrapInPlace(out->renderPass), UnwrapInPlace(out->framebuffer)); \
|
||||
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT, \
|
||||
VkReleaseSwapchainImagesInfoEXT, UnwrapInPlace(out->swapchain)) \
|
||||
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, VkSamplerYcbcrConversionInfo, \
|
||||
UnwrapInPlace(out->conversion)); \
|
||||
UNWRAP_STRUCT(VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, VkSemaphoreSignalInfo, \
|
||||
@@ -933,7 +947,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM: \
|
||||
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR: \
|
||||
case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: \
|
||||
@@ -963,7 +976,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR: \
|
||||
case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR: \
|
||||
case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV: \
|
||||
case VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT: \
|
||||
case VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT: \
|
||||
@@ -976,14 +988,7 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
|
||||
case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: \
|
||||
case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV: \
|
||||
case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV: \
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: \
|
||||
case VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA: \
|
||||
case VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM: \
|
||||
case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR: \
|
||||
@@ -1390,6 +1395,14 @@ size_t GetNextPatchSize(const void *pNext)
|
||||
memSize += GetNextPatchSize(info->pSignalSemaphoreInfos[i].pNext);
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT:
|
||||
{
|
||||
memSize += sizeof(VkSwapchainPresentFenceInfoEXT);
|
||||
|
||||
VkSwapchainPresentFenceInfoEXT *info = (VkSwapchainPresentFenceInfoEXT *)next;
|
||||
memSize += info->swapchainCount * sizeof(VkFence);
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
|
||||
{
|
||||
memSize += sizeof(VkWriteDescriptorSet);
|
||||
@@ -2476,6 +2489,26 @@ void UnwrapNextChain(CaptureState state, const char *structName, byte *&tempMem,
|
||||
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT:
|
||||
{
|
||||
const VkSwapchainPresentFenceInfoEXT *in = (const VkSwapchainPresentFenceInfoEXT *)nextInput;
|
||||
VkSwapchainPresentFenceInfoEXT *out = (VkSwapchainPresentFenceInfoEXT *)tempMem;
|
||||
|
||||
// append immediately so tempMem is incremented
|
||||
AppendModifiedChainedStruct(tempMem, out, nextChainTail);
|
||||
|
||||
// allocate unwrapped array
|
||||
VkFence *outFences = (VkFence *)tempMem;
|
||||
tempMem += sizeof(VkFence) * in->swapchainCount;
|
||||
|
||||
*out = *in;
|
||||
out->pFences = outFences;
|
||||
|
||||
for(uint32_t i = 0; i < in->swapchainCount; i++)
|
||||
outFences[i] = Unwrap(in->pFences[i]);
|
||||
|
||||
break;
|
||||
}
|
||||
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
|
||||
{
|
||||
const VkWriteDescriptorSet *in = (const VkWriteDescriptorSet *)nextInput;
|
||||
@@ -2855,6 +2888,10 @@ void CopyNextChainForPatching(const char *structName, byte *&tempMem, VkBaseInSt
|
||||
case VK_STRUCTURE_TYPE_SUBMIT_INFO_2:
|
||||
CopyNextChainedStruct(sizeof(VkSubmitInfo2), tempMem, nextInput, nextChainTail);
|
||||
break;
|
||||
case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT:
|
||||
CopyNextChainedStruct(sizeof(VkSwapchainPresentFenceInfoEXT), tempMem, nextInput,
|
||||
nextChainTail);
|
||||
break;
|
||||
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
|
||||
CopyNextChainedStruct(sizeof(VkWriteDescriptorSet), tempMem, nextInput, nextChainTail);
|
||||
break;
|
||||
|
||||
@@ -165,6 +165,8 @@ DECL_VKFLAG_EXT(VkAccess, 2);
|
||||
DECL_VKFLAG_EXT(VkFormatFeature, 2);
|
||||
DECL_VKFLAG_EXT(VkGraphicsPipelineLibrary, EXT);
|
||||
DECL_VKFLAG(VkRendering);
|
||||
DECL_VKFLAG_EXT(VkPresentScaling, EXT);
|
||||
DECL_VKFLAG_EXT(VkPresentGravity, 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
|
||||
@@ -840,6 +842,24 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, \
|
||||
VkPipelineShaderStageRequiredSubgroupSizeCreateInfo) \
|
||||
\
|
||||
/* VK_EXT_surface_maintenance1 */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT, VkSurfacePresentModeEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT, \
|
||||
VkSurfacePresentScalingCapabilitiesEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT, \
|
||||
VkSurfacePresentModeCompatibilityEXT) \
|
||||
\
|
||||
/* VK_EXT_swapchain_maintenance1 */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT, \
|
||||
VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT, VkReleaseSwapchainImagesInfoEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT, VkSwapchainPresentFenceInfoEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT, \
|
||||
VkSwapchainPresentModesCreateInfoEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT, VkSwapchainPresentModeInfoEXT) \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT, \
|
||||
VkSwapchainPresentScalingCreateInfoEXT) \
|
||||
\
|
||||
/* VK_EXT_texel_buffer_alignment */ \
|
||||
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, \
|
||||
VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT) \
|
||||
@@ -1520,19 +1540,6 @@ SERIALISE_VK_HANDLES();
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT) \
|
||||
\
|
||||
/* VK_EXT_surface_maintenance1 */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT) \
|
||||
\
|
||||
/* VK_EXT_swapchain_maintenance1 */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT) \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT) \
|
||||
\
|
||||
/* VK_HUAWEI_invocation_mask */ \
|
||||
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI) \
|
||||
\
|
||||
@@ -4147,6 +4154,161 @@ void Deserialise(const VkSwapchainDisplayNativeHdrCreateInfoAMD &el)
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSurfacePresentModeEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(presentMode);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSurfacePresentModeEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSurfacePresentScalingCapabilitiesEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() ||
|
||||
el.sType == VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER_VKFLAGS(VkPresentScalingFlagsEXT, supportedPresentScaling);
|
||||
SERIALISE_MEMBER_VKFLAGS(VkPresentGravityFlagsEXT, supportedPresentGravityX);
|
||||
SERIALISE_MEMBER_VKFLAGS(VkPresentGravityFlagsEXT, supportedPresentGravityY);
|
||||
SERIALISE_MEMBER(minScaledImageExtent);
|
||||
SERIALISE_MEMBER(maxScaledImageExtent);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSurfacePresentScalingCapabilitiesEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSurfacePresentModeCompatibilityEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(presentModeCount);
|
||||
SERIALISE_MEMBER_ARRAY(pPresentModes, presentModeCount);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSurfacePresentModeCompatibilityEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
delete[] el.pPresentModes;
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() ||
|
||||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(swapchainMaintenance1);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkReleaseSwapchainImagesInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(swapchain);
|
||||
SERIALISE_MEMBER(imageIndexCount);
|
||||
SERIALISE_MEMBER_ARRAY(pImageIndices, imageIndexCount);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkReleaseSwapchainImagesInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
delete[] el.pImageIndices;
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSwapchainPresentFenceInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(swapchainCount);
|
||||
SERIALISE_MEMBER_ARRAY(pFences, swapchainCount);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSwapchainPresentFenceInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
delete[] el.pFences;
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSwapchainPresentModesCreateInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(presentModeCount);
|
||||
SERIALISE_MEMBER_ARRAY(pPresentModes, presentModeCount);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSwapchainPresentModesCreateInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
delete[] el.pPresentModes;
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSwapchainPresentModeInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER(swapchainCount);
|
||||
SERIALISE_MEMBER_ARRAY(pPresentModes, swapchainCount);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSwapchainPresentModeInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
delete[] el.pPresentModes;
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkSwapchainPresentScalingCreateInfoEXT &el)
|
||||
{
|
||||
RDCASSERT(ser.IsReading() ||
|
||||
el.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT);
|
||||
SerialiseNext(ser, el.sType, el.pNext);
|
||||
|
||||
SERIALISE_MEMBER_VKFLAGS(VkPresentScalingFlagsEXT, scalingBehavior);
|
||||
SERIALISE_MEMBER_VKFLAGS(VkPresentGravityFlagsEXT, presentGravityX);
|
||||
SERIALISE_MEMBER_VKFLAGS(VkPresentGravityFlagsEXT, presentGravityY);
|
||||
}
|
||||
|
||||
template <>
|
||||
void Deserialise(const VkSwapchainPresentScalingCreateInfoEXT &el)
|
||||
{
|
||||
DeserialiseNext(el.pNext);
|
||||
}
|
||||
|
||||
template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, VkPresentInfoKHR &el)
|
||||
{
|
||||
@@ -11138,6 +11300,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSubgroupProperties);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSubgroupSizeControlFeatures);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSubgroupSizeControlProperties);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSurfaceInfo2KHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSynchronization2Features);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceTexelBufferAlignmentProperties);
|
||||
@@ -11207,6 +11370,7 @@ INSTANTIATE_SERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyGlobalPriorityPropertiesKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyProperties2);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkRefreshCycleDurationGOOGLE);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkReleaseSwapchainImagesInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkRenderingAttachmentInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkRenderingFragmentDensityMapAttachmentInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkRenderingFragmentShadingRateAttachmentInfoKHR);
|
||||
@@ -11251,10 +11415,17 @@ INSTANTIATE_SERIALISE_TYPE(VkSubpassSampleLocationsEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfaceCapabilities2EXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfaceCapabilities2KHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfaceFormat2KHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfacePresentModeCompatibilityEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfacePresentModeEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfacePresentScalingCapabilitiesEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSurfaceProtectedCapabilitiesKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainCounterCreateInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainCreateInfoKHR);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainDisplayNativeHdrCreateInfoAMD);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentFenceInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentModeInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentModesCreateInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkSwapchainPresentScalingCreateInfoEXT);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkTextureLODGatherFormatPropertiesAMD);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkTimelineSemaphoreSubmitInfo);
|
||||
INSTANTIATE_SERIALISE_TYPE(VkValidationCacheCreateInfoEXT);
|
||||
|
||||
@@ -3346,6 +3346,18 @@ rdcstr DoStringise(const VkSemaphoreType &el)
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const VkMemoryOverallocationBehaviorAMD &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(VkMemoryOverallocationBehaviorAMD);
|
||||
{
|
||||
STRINGISE_ENUM(VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD);
|
||||
STRINGISE_ENUM(VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD);
|
||||
STRINGISE_ENUM(VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD);
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const VkSemaphoreWaitFlagBits &el)
|
||||
{
|
||||
@@ -3570,13 +3582,25 @@ rdcstr DoStringise(const VkRenderingFlagBits &el)
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const VkMemoryOverallocationBehaviorAMD &el)
|
||||
rdcstr DoStringise(const VkPresentGravityFlagBitsEXT &el)
|
||||
{
|
||||
BEGIN_BITFIELD_STRINGISE(VkMemoryOverallocationBehaviorAMD);
|
||||
BEGIN_BITFIELD_STRINGISE(VkPresentGravityFlagBitsEXT);
|
||||
{
|
||||
STRINGISE_BITFIELD_BIT(VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD);
|
||||
STRINGISE_BITFIELD_BIT(VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD);
|
||||
STRINGISE_BITFIELD_BIT(VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD);
|
||||
STRINGISE_BITFIELD_BIT(VK_PRESENT_GRAVITY_MIN_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_PRESENT_GRAVITY_MAX_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_PRESENT_GRAVITY_CENTERED_BIT_EXT);
|
||||
}
|
||||
END_BITFIELD_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const VkPresentScalingFlagBitsEXT &el)
|
||||
{
|
||||
BEGIN_BITFIELD_STRINGISE(VkPresentScalingFlagBitsEXT);
|
||||
{
|
||||
STRINGISE_BITFIELD_BIT(VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT);
|
||||
STRINGISE_BITFIELD_BIT(VK_PRESENT_SCALING_STRETCH_BIT_EXT);
|
||||
}
|
||||
END_BITFIELD_STRINGISE();
|
||||
}
|
||||
|
||||
@@ -182,7 +182,8 @@ static void StripUnwantedExtensions(rdcarray<rdcstr> &Extensions)
|
||||
// remove WSI-only extensions
|
||||
if(ext == "VK_GOOGLE_display_timing" || ext == "VK_KHR_display_swapchain" ||
|
||||
ext == "VK_EXT_display_control" || ext == "VK_KHR_present_id" ||
|
||||
ext == "VK_KHR_present_wait")
|
||||
ext == "VK_KHR_present_wait" || ext == "VK_EXT_surface_maintenance1" ||
|
||||
ext == "VK_EXT_swapchain_maintenance1")
|
||||
return true;
|
||||
|
||||
// remove fullscreen exclusive extension
|
||||
@@ -3028,6 +3029,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
|
||||
CHECK_PHYS_EXT_FEATURE(pageableDeviceLocalMemory);
|
||||
}
|
||||
END_PHYS_EXT_CHECK();
|
||||
|
||||
BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT,
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT);
|
||||
{
|
||||
CHECK_PHYS_EXT_FEATURE(swapchainMaintenance1);
|
||||
}
|
||||
END_PHYS_EXT_CHECK();
|
||||
}
|
||||
|
||||
if(availFeatures.depthClamp)
|
||||
|
||||
@@ -788,7 +788,6 @@ VkResult WrappedVulkan::vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR
|
||||
|
||||
unwrappedInfo.pSwapchains = unwrappedSwaps.data();
|
||||
|
||||
// Don't support any extensions for present info
|
||||
const VkBaseInStructure *next = (const VkBaseInStructure *)pPresentInfo->pNext;
|
||||
while(next)
|
||||
{
|
||||
@@ -798,7 +797,9 @@ VkResult WrappedVulkan::vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR
|
||||
next->sType != VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP &&
|
||||
next->sType != VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR &&
|
||||
next->sType != VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE &&
|
||||
next->sType != VK_STRUCTURE_TYPE_PRESENT_ID_KHR)
|
||||
next->sType != VK_STRUCTURE_TYPE_PRESENT_ID_KHR &&
|
||||
next->sType != VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT &&
|
||||
next->sType != VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT)
|
||||
{
|
||||
RDCWARN("Unsupported pNext structure in pPresentInfo: %s", ToStr(next->sType).c_str());
|
||||
}
|
||||
@@ -846,6 +847,16 @@ VkResult WrappedVulkan::vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR
|
||||
if(ids)
|
||||
ids->swapchainCount = 1;
|
||||
|
||||
VkSwapchainPresentFenceInfoEXT *fences = (VkSwapchainPresentFenceInfoEXT *)FindNextStruct(
|
||||
&mutableInfo, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT);
|
||||
if(fences)
|
||||
fences->swapchainCount = 1;
|
||||
|
||||
VkSwapchainPresentModeInfoEXT *mode = (VkSwapchainPresentModeInfoEXT *)FindNextStruct(
|
||||
&mutableInfo, VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT);
|
||||
if(mode)
|
||||
mode->swapchainCount = 1;
|
||||
|
||||
for(uint32_t i = 0; i < pPresentInfo->swapchainCount; i++)
|
||||
{
|
||||
HandlePresent(queue, &mutableInfo, unwrappedWaitSems);
|
||||
@@ -861,6 +872,10 @@ VkResult WrappedVulkan::vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR
|
||||
ids->pPresentIds++;
|
||||
if(times)
|
||||
times->pTimes++;
|
||||
if(fences)
|
||||
fences->pFences++;
|
||||
if(mode)
|
||||
mode->pPresentModes++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1434,6 +1449,14 @@ VkResult WrappedVulkan::vkWaitForPresentKHR(VkDevice device, VkSwapchainKHR swap
|
||||
return ObjDisp(device)->WaitForPresentKHR(Unwrap(device), Unwrap(swapchain), presentId, timeout);
|
||||
}
|
||||
|
||||
VkResult WrappedVulkan::vkReleaseSwapchainImagesEXT(VkDevice device,
|
||||
const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo)
|
||||
{
|
||||
VkReleaseSwapchainImagesInfoEXT releaseInfo = *pReleaseInfo;
|
||||
releaseInfo.swapchain = Unwrap(releaseInfo.swapchain);
|
||||
return ObjDisp(device)->ReleaseSwapchainImagesEXT(Unwrap(device), &releaseInfo);
|
||||
}
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
VkResult WrappedVulkan::vkCreateWin32SurfaceKHR(VkInstance instance,
|
||||
const VkWin32SurfaceCreateInfoKHR *pCreateInfo,
|
||||
|
||||
Reference in New Issue
Block a user