Implement support for VK_EXT_private_data

This commit is contained in:
baldurk
2020-05-28 15:40:26 +01:00
parent 58ed167abf
commit d0d2f65a11
9 changed files with 229 additions and 69 deletions
+7
View File
@@ -716,6 +716,7 @@ DECLARE_REFLECTION_STRUCT(VkDeviceGroupRenderPassBeginInfo);
DECLARE_REFLECTION_STRUCT(VkDeviceGroupSubmitInfo);
DECLARE_REFLECTION_STRUCT(VkDeviceGroupSwapchainCreateInfoKHR);
DECLARE_REFLECTION_STRUCT(VkDeviceMemoryOpaqueCaptureAddressInfo);
DECLARE_REFLECTION_STRUCT(VkDevicePrivateDataCreateInfoEXT);
DECLARE_REFLECTION_STRUCT(VkDeviceQueueCreateInfo);
DECLARE_REFLECTION_STRUCT(VkDeviceQueueGlobalPriorityCreateInfoEXT);
DECLARE_REFLECTION_STRUCT(VkDeviceQueueInfo2);
@@ -832,6 +833,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePerformanceQueryPropertiesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePointClippingProperties);
DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePrivateDataFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceProperties2);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceProtectedMemoryFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceProtectedMemoryProperties);
@@ -904,6 +906,7 @@ DECLARE_REFLECTION_STRUCT(VkPresentInfoKHR);
DECLARE_REFLECTION_STRUCT(VkPresentRegionsKHR);
DECLARE_REFLECTION_STRUCT(VkPresentTimeGOOGLE);
DECLARE_REFLECTION_STRUCT(VkPresentTimesInfoGOOGLE);
DECLARE_REFLECTION_STRUCT(VkPrivateDataSlotCreateInfoEXT);
DECLARE_REFLECTION_STRUCT(VkProtectedSubmitInfo);
DECLARE_REFLECTION_STRUCT(VkQueryPoolCreateInfo);
DECLARE_REFLECTION_STRUCT(VkQueryPoolPerformanceCreateInfoKHR);
@@ -1017,6 +1020,7 @@ DECLARE_DESERIALISE_TYPE(VkDeviceGroupRenderPassBeginInfo);
DECLARE_DESERIALISE_TYPE(VkDeviceGroupSubmitInfo);
DECLARE_DESERIALISE_TYPE(VkDeviceGroupSwapchainCreateInfoKHR);
DECLARE_DESERIALISE_TYPE(VkDeviceMemoryOpaqueCaptureAddressInfo);
DECLARE_DESERIALISE_TYPE(VkDevicePrivateDataCreateInfoEXT);
DECLARE_DESERIALISE_TYPE(VkDeviceQueueCreateInfo);
DECLARE_DESERIALISE_TYPE(VkDeviceQueueGlobalPriorityCreateInfoEXT);
DECLARE_DESERIALISE_TYPE(VkDeviceQueueInfo2);
@@ -1129,6 +1133,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePerformanceQueryPropertiesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePointClippingProperties);
DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePrivateDataFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceProperties2);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryProperties);
@@ -1200,6 +1205,7 @@ DECLARE_DESERIALISE_TYPE(VkPipelineViewportStateCreateInfo);
DECLARE_DESERIALISE_TYPE(VkPresentInfoKHR);
DECLARE_DESERIALISE_TYPE(VkPresentRegionsKHR);
DECLARE_DESERIALISE_TYPE(VkPresentTimesInfoGOOGLE);
DECLARE_DESERIALISE_TYPE(VkPrivateDataSlotCreateInfoEXT);
DECLARE_DESERIALISE_TYPE(VkProtectedSubmitInfo);
DECLARE_DESERIALISE_TYPE(VkQueryPoolCreateInfo);
DECLARE_DESERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR);
@@ -1465,6 +1471,7 @@ DECLARE_REFLECTION_ENUM(VkPointClippingBehavior);
DECLARE_REFLECTION_ENUM(VkPolygonMode);
DECLARE_REFLECTION_ENUM(VkPresentModeKHR);
DECLARE_REFLECTION_ENUM(VkPrimitiveTopology);
DECLARE_REFLECTION_ENUM(VkPrivateDataSlotCreateFlagBitsEXT);
DECLARE_REFLECTION_ENUM(VkQueryControlFlagBits);
DECLARE_REFLECTION_ENUM(VkQueryPipelineStatisticFlagBits);
DECLARE_REFLECTION_ENUM(VkQueryResultFlagBits);
+3
View File
@@ -860,6 +860,9 @@ static const VkExtensionProperties supportedExtensions[] = {
{
VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME, VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION,
},
{
VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_EXT_PRIVATE_DATA_SPEC_VERSION,
},
{
VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION,
},
+16
View File
@@ -2287,4 +2287,20 @@ public:
VkResult vkGetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice, uint32_t *pToolCount,
VkPhysicalDeviceToolPropertiesEXT *pToolProperties);
// VK_EXT_private_data
VkResult vkCreatePrivateDataSlotEXT(VkDevice device,
const VkPrivateDataSlotCreateInfoEXT *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkPrivateDataSlotEXT *pPrivateDataSlot);
void vkDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlotEXT privateDataSlot,
const VkAllocationCallbacks *pAllocator);
VkResult vkSetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlotEXT privateDataSlot, uint64_t data);
void vkGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
VkPrivateDataSlotEXT privateDataSlot, uint64_t *pData);
};
+82 -59
View File
@@ -490,7 +490,12 @@
DeclExt(KHR_buffer_device_address); \
DeclExt(EXT_tooling_info); \
DeclExt(KHR_separate_depth_stencil_layouts); \
DeclExt(EXT_inline_uniform_block);
DeclExt(KHR_shader_non_semantic_info); \
DeclExt(EXT_inline_uniform_block); \
DeclExt(EXT_custom_border_color); \
DeclExt(EXT_robustness2); \
DeclExt(EXT_pipeline_creation_cache_control); \
DeclExt(EXT_private_data);
// for simplicity and since the check itself is platform agnostic,
// these aren't protected in platform defines
@@ -525,64 +530,69 @@
CheckExt(KHR_wayland_surface, VKXX); \
CheckExt(KHR_performance_query, VKXX);
#define CheckDeviceExts() \
CheckExt(EXT_debug_marker, VKXX); \
CheckExt(GGP_frame_token, VKXX); \
CheckExt(KHR_swapchain, VKXX); \
CheckExt(KHR_display_swapchain, VKXX); \
CheckExt(NV_external_memory, VKXX); \
CheckExt(NV_external_memory_win32, VKXX); \
CheckExt(NV_win32_keyed_mutex, VKXX); \
CheckExt(KHR_maintenance1, VK11); \
CheckExt(KHR_maintenance2, VK11); \
CheckExt(KHR_maintenance3, VK11); \
CheckExt(EXT_display_control, VKXX); \
CheckExt(KHR_external_memory, VK11); \
CheckExt(KHR_external_memory_win32, VKXX); \
CheckExt(KHR_external_memory_fd, VKXX); \
CheckExt(KHR_external_semaphore, VK11); \
CheckExt(KHR_external_semaphore_win32, VKXX); \
CheckExt(KHR_external_semaphore_fd, VKXX); \
CheckExt(KHR_external_fence, VK11); \
CheckExt(KHR_external_fence_win32, VKXX); \
CheckExt(KHR_external_fence_fd, VKXX); \
CheckExt(KHR_get_memory_requirements2, VK11); \
CheckExt(AMD_shader_info, VKXX); \
CheckExt(KHR_push_descriptor, VKXX); \
CheckExt(KHR_descriptor_update_template, VK11); \
CheckExt(KHR_bind_memory2, VK11); \
CheckExt(EXT_conservative_rasterization, VKXX); \
CheckExt(EXT_global_priority, VKXX); \
CheckExt(AMD_buffer_marker, VKXX); \
CheckExt(EXT_vertex_attribute_divisor, VKXX); \
CheckExt(EXT_sampler_filter_minmax, VK12); \
CheckExt(KHR_sampler_ycbcr_conversion, VK11); \
CheckExt(KHR_device_group, VK11); \
CheckExt(MVK_moltenvk, VKXX); \
CheckExt(KHR_draw_indirect_count, VK12); \
CheckExt(EXT_validation_cache, VKXX); \
CheckExt(KHR_shared_presentable_image, VKXX); \
CheckExt(KHR_create_renderpass2, VK12); \
CheckExt(EXT_transform_feedback, VKXX); \
CheckExt(EXT_conditional_rendering, VKXX); \
CheckExt(EXT_sample_locations, VKXX); \
CheckExt(EXT_discard_rectangles, VKXX); \
CheckExt(EXT_calibrated_timestamps, VKXX); \
CheckExt(EXT_host_query_reset, VK12); \
CheckExt(EXT_buffer_device_address, VKXX); \
CheckExt(EXT_hdr_metadata, VKXX); \
CheckExt(AMD_display_native_hdr, VKXX); \
CheckExt(EXT_depth_clip_enable, VKXX); \
CheckExt(KHR_pipeline_executable_properties, VKXX); \
CheckExt(AMD_negative_viewport_height, VKXX); \
CheckExt(EXT_line_rasterization, VKXX); \
CheckExt(GOOGLE_display_timing, VKXX); \
CheckExt(KHR_timeline_semaphore, VK12); \
CheckExt(KHR_performance_query, VKXX); \
CheckExt(KHR_buffer_device_address, VK12); \
CheckExt(EXT_tooling_info, VKXX); \
CheckExt(KHR_separate_depth_stencil_layouts, VK12); \
CheckExt(EXT_inline_uniform_block, VKXX);
#define CheckDeviceExts() \
CheckExt(EXT_debug_marker, VKXX); \
CheckExt(GGP_frame_token, VKXX); \
CheckExt(KHR_swapchain, VKXX); \
CheckExt(KHR_display_swapchain, VKXX); \
CheckExt(NV_external_memory, VKXX); \
CheckExt(NV_external_memory_win32, VKXX); \
CheckExt(NV_win32_keyed_mutex, VKXX); \
CheckExt(KHR_maintenance1, VK11); \
CheckExt(KHR_maintenance2, VK11); \
CheckExt(KHR_maintenance3, VK11); \
CheckExt(EXT_display_control, VKXX); \
CheckExt(KHR_external_memory, VK11); \
CheckExt(KHR_external_memory_win32, VKXX); \
CheckExt(KHR_external_memory_fd, VKXX); \
CheckExt(KHR_external_semaphore, VK11); \
CheckExt(KHR_external_semaphore_win32, VKXX); \
CheckExt(KHR_external_semaphore_fd, VKXX); \
CheckExt(KHR_external_fence, VK11); \
CheckExt(KHR_external_fence_win32, VKXX); \
CheckExt(KHR_external_fence_fd, VKXX); \
CheckExt(KHR_get_memory_requirements2, VK11); \
CheckExt(AMD_shader_info, VKXX); \
CheckExt(KHR_push_descriptor, VKXX); \
CheckExt(KHR_descriptor_update_template, VK11); \
CheckExt(KHR_bind_memory2, VK11); \
CheckExt(EXT_conservative_rasterization, VKXX); \
CheckExt(EXT_global_priority, VKXX); \
CheckExt(AMD_buffer_marker, VKXX); \
CheckExt(EXT_vertex_attribute_divisor, VKXX); \
CheckExt(EXT_sampler_filter_minmax, VK12); \
CheckExt(KHR_sampler_ycbcr_conversion, VK11); \
CheckExt(KHR_device_group, VK11); \
CheckExt(MVK_moltenvk, VKXX); \
CheckExt(KHR_draw_indirect_count, VK12); \
CheckExt(EXT_validation_cache, VKXX); \
CheckExt(KHR_shared_presentable_image, VKXX); \
CheckExt(KHR_create_renderpass2, VK12); \
CheckExt(EXT_transform_feedback, VKXX); \
CheckExt(EXT_conditional_rendering, VKXX); \
CheckExt(EXT_sample_locations, VKXX); \
CheckExt(EXT_discard_rectangles, VKXX); \
CheckExt(EXT_calibrated_timestamps, VKXX); \
CheckExt(EXT_host_query_reset, VK12); \
CheckExt(EXT_buffer_device_address, VKXX); \
CheckExt(EXT_hdr_metadata, VKXX); \
CheckExt(AMD_display_native_hdr, VKXX); \
CheckExt(EXT_depth_clip_enable, VKXX); \
CheckExt(KHR_pipeline_executable_properties, VKXX); \
CheckExt(AMD_negative_viewport_height, VKXX); \
CheckExt(EXT_line_rasterization, VKXX); \
CheckExt(GOOGLE_display_timing, VKXX); \
CheckExt(KHR_timeline_semaphore, VK12); \
CheckExt(KHR_performance_query, VKXX); \
CheckExt(KHR_buffer_device_address, VK12); \
CheckExt(EXT_tooling_info, VKXX); \
CheckExt(KHR_separate_depth_stencil_layouts, VK12); \
CheckExt(KHR_shader_non_semantic_info, VKXX); \
CheckExt(EXT_inline_uniform_block, VKXX); \
CheckExt(EXT_custom_border_color, VKXX); \
CheckExt(EXT_robustness2, VKXX); \
CheckExt(EXT_pipeline_creation_cache_control, VKXX); \
CheckExt(EXT_private_data, VKXX);
#define HookInitVulkanInstanceExts_PhysDev() \
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
@@ -786,6 +796,10 @@
HookInitPromotedExtension(KHR_buffer_device_address, GetBufferDeviceAddress, KHR); \
HookInitPromotedExtension(KHR_buffer_device_address, GetBufferOpaqueCaptureAddress, KHR); \
HookInitPromotedExtension(KHR_buffer_device_address, GetDeviceMemoryOpaqueCaptureAddress, KHR); \
HookInitExtension(EXT_private_data, CreatePrivateDataSlotEXT); \
HookInitExtension(EXT_private_data, DestroyPrivateDataSlotEXT); \
HookInitExtension(EXT_private_data, SetPrivateDataEXT); \
HookInitExtension(EXT_private_data, GetPrivateDataEXT); \
HookInitDevice_PlatformSpecific()
#define DefineHooks() \
@@ -1404,4 +1418,13 @@
VkDeviceMemoryOpaqueCaptureAddressInfo *, pInfo); \
HookDefine3(VkResult, vkGetPhysicalDeviceToolPropertiesEXT, VkPhysicalDevice, physicalDevice, \
uint32_t *, pToolCount, VkPhysicalDeviceToolPropertiesEXT *, pToolProperties); \
HookDefine4(VkResult, vkCreatePrivateDataSlotEXT, VkDevice, device, \
const VkPrivateDataSlotCreateInfoEXT *, pCreateInfo, const VkAllocationCallbacks *, \
pAllocator, VkPrivateDataSlotEXT *, pPrivateDataSlot); \
HookDefine3(void, vkDestroyPrivateDataSlotEXT, VkDevice, device, VkPrivateDataSlotEXT, \
privateDataSlot, const VkAllocationCallbacks *, pAllocator); \
HookDefine5(VkResult, vkSetPrivateDataEXT, VkDevice, device, VkObjectType, objectType, uint64_t, \
objectHandle, VkPrivateDataSlotEXT, privateDataSlot, uint64_t, data); \
HookDefine5(void, vkGetPrivateDataEXT, VkDevice, device, VkObjectType, objectType, uint64_t, \
objectHandle, VkPrivateDataSlotEXT, privateDataSlot, uint64_t *, pData); \
HookDefine_PlatformSpecific()
+5 -3
View File
@@ -126,6 +126,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, VkDeviceGroupSubmitInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, \
VkDeviceGroupSwapchainCreateInfoKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT, \
VkDevicePrivateDataCreateInfoEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, VkDeviceQueueCreateInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, \
VkDeviceQueueGlobalPriorityCreateInfoEXT); \
@@ -262,6 +264,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR) \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, \
VkPhysicalDevicePointClippingProperties); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, \
VkPhysicalDevicePrivateDataFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, VkPhysicalDeviceProperties2); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, \
VkPhysicalDeviceProtectedMemoryFeatures); \
@@ -386,6 +390,7 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPipelineViewportStateCreateInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, VkPresentRegionsKHR); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, VkPresentTimesInfoGOOGLE) \
COPY_STRUCT(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT, VkPrivateDataSlotCreateInfoEXT) \
COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, VkQueryPoolCreateInfo); \
COPY_STRUCT(VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR, \
VkQueryPoolPerformanceCreateInfoKHR); \
@@ -588,7 +593,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR: \
case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: \
case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT: \
case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: \
case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT: \
case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: \
@@ -637,7 +641,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: \
@@ -662,7 +665,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: \
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_PRIVATE_DATA_SLOT_CREATE_INFO_EXT: \
case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL: \
case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: \
case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR: \
+57 -5
View File
@@ -151,6 +151,7 @@ DECL_VKFLAG_EMPTY_EXT(VkPipelineDiscardRectangleStateCreate, EXT);
DECL_VKFLAG_EMPTY_EXT(VkPipelineRasterizationConservativeStateCreate, EXT);
DECL_VKFLAG_EMPTY_EXT(VkPipelineRasterizationStateStreamCreate, EXT);
DECL_VKFLAG_EMPTY_EXT(VkPipelineViewportSwizzleStateCreate, NV);
DECL_VKFLAG_EXT(VkPrivateDataSlotCreate, EXT);
DECL_VKFLAG_EXT(VkSurfaceCounter, EXT);
DECL_VKFLAG_EXT(VkSurfaceTransform, KHR);
DECL_VKFLAG_EXT(VkSwapchainCreate, KHR);
@@ -619,6 +620,13 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, \
VkPipelineCreationFeedbackCreateInfoEXT) \
\
/* VK_EXT_private_data */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, \
VkPhysicalDevicePrivateDataFeaturesEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT, \
VkDevicePrivateDataCreateInfoEXT) \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT, VkPrivateDataSlotCreateInfoEXT) \
\
/* VK_EXT_robustness2 */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, \
VkPhysicalDeviceRobustness2FeaturesEXT) \
@@ -1071,11 +1079,6 @@ SERIALISE_VK_HANDLES();
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT) \
\
/* VK_EXT_private_data */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT) \
\
/* VK_EXT_texture_compression_astc_hdr */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT) \
\
@@ -5679,6 +5682,52 @@ void Deserialise(const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &e
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDevicePrivateDataFeaturesEXT &el)
{
RDCASSERT(ser.IsReading() ||
el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(privateData);
}
template <>
void Deserialise(const VkPhysicalDevicePrivateDataFeaturesEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkDevicePrivateDataCreateInfoEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(privateDataSlotRequestCount);
}
template <>
void Deserialise(const VkDevicePrivateDataCreateInfoEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPrivateDataSlotCreateInfoEXT &el)
{
RDCASSERT(ser.IsReading() || el.sType == VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER_VKFLAGS(VkPrivateDataSlotCreateFlagsEXT, flags);
}
template <>
void Deserialise(const VkPrivateDataSlotCreateInfoEXT &el)
{
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceRobustness2FeaturesEXT &el)
{
@@ -8396,6 +8445,7 @@ INSTANTIATE_SERIALISE_TYPE(VkDeviceGroupRenderPassBeginInfo);
INSTANTIATE_SERIALISE_TYPE(VkDeviceGroupSubmitInfo);
INSTANTIATE_SERIALISE_TYPE(VkDeviceGroupSwapchainCreateInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkDeviceMemoryOpaqueCaptureAddressInfo);
INSTANTIATE_SERIALISE_TYPE(VkDevicePrivateDataCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkDeviceQueueCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkDeviceQueueGlobalPriorityCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkDeviceQueueInfo2);
@@ -8510,6 +8560,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePerformanceQueryPropertiesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePointClippingProperties);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePrivateDataFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceProperties2);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryProperties);
@@ -8582,6 +8633,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPresentInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkPresentRegionsKHR);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimeGOOGLE);
INSTANTIATE_SERIALISE_TYPE(VkPresentTimesInfoGOOGLE);
INSTANTIATE_SERIALISE_TYPE(VkPrivateDataSlotCreateInfoEXT);
INSTANTIATE_SERIALISE_TYPE(VkProtectedSubmitInfo);
INSTANTIATE_SERIALISE_TYPE(VkQueryPoolCreateInfo);
INSTANTIATE_SERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR);
+9
View File
@@ -846,6 +846,15 @@ rdcstr DoStringise(const VkAcquireProfilingLockFlagBitsKHR &el)
END_BITFIELD_STRINGISE();
}
template <>
rdcstr DoStringise(const VkPrivateDataSlotCreateFlagBitsEXT &el)
{
BEGIN_BITFIELD_STRINGISE(VkPrivateDataSlotCreateFlagBitsEXT);
{
}
END_BITFIELD_STRINGISE();
}
template <>
rdcstr DoStringise(const VkPerformanceCounterDescriptionFlagBitsKHR &el)
{
@@ -169,7 +169,7 @@ static void StripUnwantedExtensions(rdcarray<rdcstr> &Extensions)
return true;
// this is debug only, nothing to capture, so nothing to replay
if(ext == "VK_EXT_tooling_info")
if(ext == "VK_EXT_tooling_info" || ext == "VK_EXT_private_data")
return true;
return false;
@@ -1977,6 +1977,14 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
return false;
}
// remove private data structs to improve capture compatibility, since we don't replay any
// private data.
if(RemoveNextStruct(&createInfo, VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT) ||
RemoveNextStruct(&createInfo, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT))
{
RDCLOG("Removed private data structs from vkCreateDevice pNext chain");
}
VkPhysicalDeviceFeatures enabledFeatures = {0};
if(createInfo.pEnabledFeatures != NULL)
enabledFeatures = *createInfo.pEnabledFeatures;
@@ -1825,12 +1825,16 @@ static ObjData GetObjData(VkObjectType objType, uint64_t object)
break;
}
// private data slots are not wrapped
case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT:
ret.unwrapped = object;
break;
// these objects are not supported
case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR:
case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL:
case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR:
case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV:
case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT:
case VK_OBJECT_TYPE_UNKNOWN:
case VK_OBJECT_TYPE_MAX_ENUM: break;
}
@@ -2230,3 +2234,39 @@ void WrappedVulkan::vkReleaseProfilingLockKHR(VkDevice device)
{
ObjDisp(device)->ReleaseProfilingLockKHR(Unwrap(device));
}
VkResult WrappedVulkan::vkCreatePrivateDataSlotEXT(VkDevice device,
const VkPrivateDataSlotCreateInfoEXT *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkPrivateDataSlotEXT *pPrivateDataSlot)
{
// don't even wrap the slot, keep it unwrapped since we don't care about it
return ObjDisp(device)->CreatePrivateDataSlotEXT(Unwrap(device), pCreateInfo, pAllocator,
pPrivateDataSlot);
}
void WrappedVulkan::vkDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlotEXT privateDataSlot,
const VkAllocationCallbacks *pAllocator)
{
return ObjDisp(device)->DestroyPrivateDataSlotEXT(Unwrap(device), privateDataSlot, pAllocator);
}
VkResult WrappedVulkan::vkSetPrivateDataEXT(VkDevice device, VkObjectType objectType,
uint64_t objectHandle,
VkPrivateDataSlotEXT privateDataSlot, uint64_t data)
{
ObjData objdata = GetObjData(objectType, objectHandle);
return ObjDisp(device)->SetPrivateDataEXT(Unwrap(device), objectType, objdata.unwrapped,
privateDataSlot, data);
}
void WrappedVulkan::vkGetPrivateDataEXT(VkDevice device, VkObjectType objectType,
uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot,
uint64_t *pData)
{
ObjData objdata = GetObjData(objectType, objectHandle);
return ObjDisp(device)->GetPrivateDataEXT(Unwrap(device), objectType, objdata.unwrapped,
privateDataSlot, pData);
}