diff --git a/renderdoc/driver/vulkan/extension_support.md b/renderdoc/driver/vulkan/extension_support.md index d9825cba2..d91db7b37 100644 --- a/renderdoc/driver/vulkan/extension_support.md +++ b/renderdoc/driver/vulkan/extension_support.md @@ -77,6 +77,7 @@ Maintainers can update this file by updating vk.xml in this folder and running ` * `VK_EXT_image_view_min_lod` * `VK_EXT_index_type_uint8` * `VK_EXT_inline_uniform_block` +* `VK_EXT_layer_settings` * `VK_EXT_line_rasterization` * `VK_EXT_load_store_op_none` * `VK_EXT_memory_budget` @@ -327,7 +328,6 @@ The portability subset is only relevant on mac, which is not a supported platfor * `VK_EXT_external_memory_host` * `VK_EXT_external_memory_metal` * `VK_EXT_image_sliced_view_of_3d` -* `VK_EXT_layer_settings` * `VK_EXT_legacy_dithering` * `VK_EXT_legacy_vertex_attributes` * `VK_EXT_map_memory_placed` diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index 4e3d8ec77..fe9a7461b 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -1643,6 +1643,7 @@ DECLARE_REFLECTION_STRUCT(VkImportFenceFdInfoKHR); DECLARE_REFLECTION_STRUCT(VkImportMemoryFdInfoKHR); DECLARE_REFLECTION_STRUCT(VkImportSemaphoreFdInfoKHR); DECLARE_REFLECTION_STRUCT(VkInstanceCreateInfo); +DECLARE_REFLECTION_STRUCT(VkLayerSettingsCreateInfoEXT); DECLARE_REFLECTION_STRUCT(VkLayerDeviceCreateInfo); DECLARE_REFLECTION_STRUCT(VkLayerInstanceCreateInfo); DECLARE_REFLECTION_STRUCT(VkMappedMemoryRange); @@ -2208,6 +2209,7 @@ DECLARE_DESERIALISE_TYPE(VkImportFenceFdInfoKHR); DECLARE_DESERIALISE_TYPE(VkImportMemoryFdInfoKHR); DECLARE_DESERIALISE_TYPE(VkImportSemaphoreFdInfoKHR); DECLARE_DESERIALISE_TYPE(VkInstanceCreateInfo); +DECLARE_DESERIALISE_TYPE(VkLayerSettingsCreateInfoEXT); DECLARE_DESERIALISE_TYPE(VkLayerDeviceCreateInfo); DECLARE_DESERIALISE_TYPE(VkLayerInstanceCreateInfo); DECLARE_DESERIALISE_TYPE(VkMappedMemoryRange); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 50f9440e9..37d013b5f 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1294,6 +1294,10 @@ static const VkExtensionProperties supportedExtensions[] = { VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME, VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION, }, + { + VK_EXT_LAYER_SETTINGS_EXTENSION_NAME, + VK_EXT_LAYER_SETTINGS_SPEC_VERSION, + }, { VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_EXT_LINE_RASTERIZATION_SPEC_VERSION, diff --git a/renderdoc/driver/vulkan/vk_next_chains.cpp b/renderdoc/driver/vulkan/vk_next_chains.cpp index 67195f661..5cf081454 100644 --- a/renderdoc/driver/vulkan/vk_next_chains.cpp +++ b/renderdoc/driver/vulkan/vk_next_chains.cpp @@ -847,6 +847,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, COPY_STRUCT(VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE, VkSubresourceHostMemcpySize); \ COPY_STRUCT(VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY, VkImageToMemoryCopy); \ COPY_STRUCT(VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY, VkMemoryToImageCopy); \ + COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, \ + VkLayerSettingsCreateInfoEXT); \ COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO, \ VkLayerInstanceCreateInfo); \ COPY_STRUCT_CAPTURE_ONLY(VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VkLayerDeviceCreateInfo); \ @@ -1228,7 +1230,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV: \ case VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV: \ case VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV: \ - case VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT: \ case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM: \ case VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT: \ case VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS: \ diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 0ddac7a17..9f66a50f2 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -830,6 +830,9 @@ SERIALISE_VK_HANDLES(); PNEXT_STRUCT(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, \ VkDescriptorPoolInlineUniformBlockCreateInfo) \ \ + /* VK_EXT_layer_settings */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, VkLayerSettingsCreateInfoEXT) \ + \ /* VK_KHR_line_rasterization promoted from VK_EXT_line_rasterization */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES, \ VkPhysicalDeviceLineRasterizationFeatures) \ @@ -2015,9 +2018,6 @@ SERIALISE_VK_HANDLES(); PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT) \ \ - /* VK_EXT_layer_settings */ \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT) \ - \ /* VK_EXT_legacy_dithering */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT) \ \ @@ -2954,6 +2954,15 @@ void DoSerialise(SerialiserType &ser, VkLayerInstanceCreateInfo &el) el.sType = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO; } +template +void DoSerialise(SerialiserType &ser, VkLayerSettingsCreateInfoEXT &el) +{ + RDCERR( + "Serialising VkLayerSettingsCreateInfoEXT - this should always be a NULL optional element"); + RDCEraseEl(el); + el.sType = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO; +} + template void DoSerialise(SerialiserType &ser, VkLayerDeviceCreateInfo &el) { diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 2488a008f..74c5a2455 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -213,7 +213,7 @@ static void StripUnwantedExtensions(rdcarray &Extensions) // this is debug only, nothing to capture, so nothing to replay if(ext == "VK_EXT_tooling_info" || ext == "VK_EXT_private_data" || ext == "VK_EXT_validation_features" || ext == "VK_EXT_validation_cache" || - ext == "VK_EXT_validation_flags") + ext == "VK_EXT_validation_flags" || ext == "VK_EXT_layer_settings") return true; // these are debug only and will be added (if supported) as optional