mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Implement support for VK_EXT_private_data
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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: \
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user