diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp index 1ffdfc316..56164ae50 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp @@ -2011,13 +2011,14 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray for(uint8_t c = 0; c < var.columns; c++) { #undef _IMPL -#define _IMPL(I, S, U) \ - U v = comp(var, c); \ - comp(var, c) = 0; \ - for(uint8_t b = 0; b < 32; b++) \ - { \ - uint32_t bit = (v >> b) & 0x1; \ - comp(var, c) |= bit << (31 - b); \ +#define _IMPL(I, S, U) \ + U v = comp(var, c); \ + comp(var, c) = 0; \ + uint8_t numBits = sizeof(U) * 8; \ + for(uint8_t b = 0; b < numBits; b++) \ + { \ + U bit = (v >> b) & 0x1; \ + comp(var, c) |= bit << ((numBits - 1) - b); \ } IMPL_FOR_INT_TYPES(_IMPL); diff --git a/renderdoc/driver/vulkan/extension_support.md b/renderdoc/driver/vulkan/extension_support.md index e153406c8..9cafb5a1f 100644 --- a/renderdoc/driver/vulkan/extension_support.md +++ b/renderdoc/driver/vulkan/extension_support.md @@ -189,6 +189,7 @@ Maintainers can update this file by updating vk.xml in this folder and running ` * `VK_KHR_maintenance6` * `VK_KHR_maintenance7` * `VK_KHR_maintenance8` +* `VK_KHR_maintenance9` * `VK_KHR_map_memory2` * `VK_KHR_multiview` * `VK_KHR_performance_query` @@ -274,7 +275,6 @@ KHR extensions will definitely be implemented at some point, though KHR extensio ## KHR Extensions * `VK_KHR_cooperative_matrix` -* `VK_KHR_maintenance9` * `VK_KHR_pipeline_binary` ## KHR Portability diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index b3f920946..6ac1a725f 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -1735,6 +1735,8 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance6PropertiesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance7FeaturesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance7PropertiesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance8FeaturesKHR); +DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance9FeaturesKHR); +DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMaintenance9PropertiesKHR); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMemoryBudgetPropertiesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMemoryPriorityFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceMemoryProperties2); @@ -1888,6 +1890,7 @@ DECLARE_REFLECTION_STRUCT(VkPushDescriptorSetWithTemplateInfoKHR) DECLARE_REFLECTION_STRUCT(VkQueryPoolCreateInfo); DECLARE_REFLECTION_STRUCT(VkQueryPoolPerformanceCreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkQueueFamilyGlobalPriorityProperties); +DECLARE_REFLECTION_STRUCT(VkQueueFamilyOwnershipTransferPropertiesKHR); DECLARE_REFLECTION_STRUCT(VkQueueFamilyProperties2); DECLARE_REFLECTION_STRUCT(VkRayTracingPipelineCreateInfoKHR); DECLARE_REFLECTION_STRUCT(VkRayTracingPipelineInterfaceCreateInfoKHR); @@ -2250,6 +2253,8 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance6PropertiesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance7FeaturesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance7PropertiesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance8FeaturesKHR); +DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance9FeaturesKHR); +DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMaintenance9PropertiesKHR); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMemoryBudgetPropertiesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMemoryPriorityFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceMemoryProperties2); @@ -2402,6 +2407,7 @@ DECLARE_DESERIALISE_TYPE(VkPushDescriptorSetWithTemplateInfoKHR) DECLARE_DESERIALISE_TYPE(VkQueryPoolCreateInfo); DECLARE_DESERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkQueueFamilyGlobalPriorityProperties); +DECLARE_DESERIALISE_TYPE(VkQueueFamilyOwnershipTransferPropertiesKHR); DECLARE_DESERIALISE_TYPE(VkQueueFamilyProperties2); DECLARE_DESERIALISE_TYPE(VkRayTracingPipelineCreateInfoKHR); DECLARE_DESERIALISE_TYPE(VkRayTracingPipelineInterfaceCreateInfoKHR); @@ -2711,6 +2717,7 @@ DECLARE_REFLECTION_ENUM(VkCullModeFlagBits); DECLARE_REFLECTION_ENUM(VkDebugReportFlagBitsEXT); DECLARE_REFLECTION_ENUM(VkDebugUtilsMessageSeverityFlagBitsEXT); DECLARE_REFLECTION_ENUM(VkDebugUtilsMessageTypeFlagBitsEXT); +DECLARE_REFLECTION_ENUM(VkDefaultVertexAttributeValueKHR); DECLARE_REFLECTION_ENUM(VkDependencyFlagBits); DECLARE_REFLECTION_ENUM(VkDescriptorBindingFlagBits); DECLARE_REFLECTION_ENUM(VkDescriptorPoolCreateFlagBits); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 05e329f3f..85b6fc392 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1698,6 +1698,10 @@ static const VkExtensionProperties supportedExtensions[] = { VK_KHR_MAINTENANCE_8_EXTENSION_NAME, VK_KHR_MAINTENANCE_8_SPEC_VERSION, }, + { + VK_KHR_MAINTENANCE_9_EXTENSION_NAME, + VK_KHR_MAINTENANCE_9_SPEC_VERSION, + }, { VK_KHR_MAP_MEMORY_2_EXTENSION_NAME, VK_KHR_MAP_MEMORY_2_SPEC_VERSION, diff --git a/renderdoc/driver/vulkan/vk_next_chains.cpp b/renderdoc/driver/vulkan/vk_next_chains.cpp index a594f2388..bb744cddd 100644 --- a/renderdoc/driver/vulkan/vk_next_chains.cpp +++ b/renderdoc/driver/vulkan/vk_next_chains.cpp @@ -391,6 +391,10 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, VkPhysicalDeviceMaintenance7PropertiesKHR); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR, \ VkPhysicalDeviceMaintenance8FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR, \ + VkPhysicalDeviceMaintenance9FeaturesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR, \ + VkPhysicalDeviceMaintenance9PropertiesKHR); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, \ VkPhysicalDeviceMemoryBudgetPropertiesEXT); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, \ @@ -672,6 +676,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, VkQueryPoolPerformanceCreateInfoKHR); \ COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES, \ VkQueueFamilyGlobalPriorityProperties); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR, \ + VkQueueFamilyOwnershipTransferPropertiesKHR); \ COPY_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, VkQueueFamilyProperties2); \ COPY_STRUCT(VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR, \ VkRayTracingPipelineInterfaceCreateInfoKHR); \ @@ -1202,8 +1208,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV: \ - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR: \ - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV: \ @@ -1320,7 +1324,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: \ case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM: \ case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM: \ - case VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR: \ case VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR: \ case VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR: \ case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV: \ diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index fb1ce9b41..03fc162f6 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -1320,6 +1320,14 @@ SERIALISE_VK_HANDLES(); VkPhysicalDeviceMaintenance8FeaturesKHR) \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, VkMemoryBarrierAccessFlags3KHR) \ \ + /* VK_KHR_maintenance9 */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR, \ + VkPhysicalDeviceMaintenance9FeaturesKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR, \ + VkPhysicalDeviceMaintenance9PropertiesKHR) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR, \ + VkQueueFamilyOwnershipTransferPropertiesKHR) \ + \ /* VK_KHR_map_memory2 */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_MEMORY_MAP_INFO, VkMemoryMapInfo) \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO, VkMemoryUnmapInfo) \ @@ -1960,11 +1968,6 @@ SERIALISE_VK_HANDLES(); PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR) \ \ - /* VK_KHR_maintenance9 */ \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR) \ - \ /* VK_KHR_pipeline_binary */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR) \ @@ -13929,6 +13932,55 @@ void Deserialise(const VkMemoryBarrierAccessFlags3KHR &el) DeserialiseNext(el.pNext); } +template +void DoSerialise(SerialiserType &ser, VkPhysicalDeviceMaintenance9FeaturesKHR &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(maintenance9); +} + +template <> +void Deserialise(const VkPhysicalDeviceMaintenance9FeaturesKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkPhysicalDeviceMaintenance9PropertiesKHR &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(image2DViewOf3DSparse); + SERIALISE_MEMBER(defaultVertexAttributeValue); +} + +template <> +void Deserialise(const VkPhysicalDeviceMaintenance9PropertiesKHR &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkQueueFamilyOwnershipTransferPropertiesKHR &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(optimalImageTransferToQueueFamilies); +} + +template <> +void Deserialise(const VkQueueFamilyOwnershipTransferPropertiesKHR &el) +{ + DeserialiseNext(el.pNext); +} + template void DoSerialise(SerialiserType &ser, VkImageCompressionControlEXT &el) { @@ -14555,6 +14607,8 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance6PropertiesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance7FeaturesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance7PropertiesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance8FeaturesKHR); +INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance9FeaturesKHR); +INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMaintenance9PropertiesKHR); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMemoryBudgetPropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMemoryPriorityFeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceMemoryProperties2); @@ -14707,6 +14761,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPushDescriptorSetWithTemplateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkQueryPoolCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkQueryPoolPerformanceCreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyGlobalPriorityProperties); +INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyOwnershipTransferPropertiesKHR); INSTANTIATE_SERIALISE_TYPE(VkQueueFamilyProperties2); INSTANTIATE_SERIALISE_TYPE(VkRayTracingPipelineCreateInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkRayTracingPipelineInterfaceCreateInfoKHR); diff --git a/renderdoc/driver/vulkan/vk_stringise.cpp b/renderdoc/driver/vulkan/vk_stringise.cpp index d0539edeb..dc26be6ee 100644 --- a/renderdoc/driver/vulkan/vk_stringise.cpp +++ b/renderdoc/driver/vulkan/vk_stringise.cpp @@ -3965,6 +3965,17 @@ rdcstr DoStringise(const VkMemoryOverallocationBehaviorAMD &el) END_ENUM_STRINGISE(); } +template <> +rdcstr DoStringise(const VkDefaultVertexAttributeValueKHR &el) +{ + BEGIN_ENUM_STRINGISE(VkDefaultVertexAttributeValueKHR); + { + STRINGISE_ENUM(VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR); + STRINGISE_ENUM(VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR); + } + END_ENUM_STRINGISE(); +} + template <> rdcstr DoStringise(const VkSemaphoreWaitFlagBits &el) { diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 3f78395d8..242179dea 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -3564,6 +3564,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi CHECK_PHYS_EXT_FEATURE(maintenance8); } END_PHYS_EXT_CHECK(); + + BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceMaintenance9FeaturesKHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR); + { + CHECK_PHYS_EXT_FEATURE(maintenance9); + } + END_PHYS_EXT_CHECK(); } if(availFeatures.depthClamp)