diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e18a5d04d5..242adb17e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,6 +61,7 @@ jobs: - name: Clone repository uses: actions/checkout@v6 - run: sudo apt-get -qq update && sudo apt-get install -y libwayland-dev xorg-dev + - run: python3 -m pip install pyparsing - run: python3 scripts/github_ci_linux.py --config Debug --tests GitHubCI - run: python3 scripts/generate_source.py --verify external/Vulkan-Headers/registry diff --git a/CMakeLists.txt b/CMakeLists.txt index a654100167..b80cbd2318 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ cmake_minimum_required(VERSION 3.22.1) # The VERSION field is generated with the "--generated-version" flag in the generate_source.py script -project(VULKAN_TOOLS VERSION 1.4.342 LANGUAGES CXX) +project(VULKAN_TOOLS VERSION 1.4.350 LANGUAGES CXX) add_subdirectory(scripts) diff --git a/layersvt/generated/api_dump_dispatch.h b/layersvt/generated/api_dump_dispatch.h index 72551aa286..053a72d4e5 100644 --- a/layersvt/generated/api_dump_dispatch.h +++ b/layersvt/generated/api_dump_dispatch.h @@ -2138,6 +2138,26 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEngi flush(ApiDumpInstance::current().settings()); } } +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties, VkBaseOutStructure* pProperties) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + dump_function_head(ApiDumpInstance::current(), "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM", "physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pProperties", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(ApiDumpInstance::current(), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pProperties); + } + } + VkResult result = instance_dispatch_table(physicalDevice)->GetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pProperties); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(ApiDumpInstance::current(), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pProperties); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} #if defined(VK_USE_PLATFORM_OHOS) template VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { @@ -2200,6 +2220,88 @@ VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceCo } return result; } +template +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM(VkPhysicalDevice physicalDevice, uint32_t* pDescriptionCount, VkShaderInstrumentationMetricDescriptionARM* pDescriptions) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + dump_function_head(ApiDumpInstance::current(), "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM", "physicalDevice, pDescriptionCount, pDescriptions", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM(ApiDumpInstance::current(), physicalDevice, pDescriptionCount, pDescriptions); + } + } + VkResult result = instance_dispatch_table(physicalDevice)->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(physicalDevice, pDescriptionCount, pDescriptions); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM(ApiDumpInstance::current(), physicalDevice, pDescriptionCount, pDescriptions); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties, const VkDataGraphOpticalFlowImageFormatInfoARM* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkDataGraphOpticalFlowImageFormatPropertiesARM* pImageFormatProperties) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + dump_function_head(ApiDumpInstance::current(), "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM", "physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(ApiDumpInstance::current(), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties); + } + } + VkResult result = instance_dispatch_table(physicalDevice)->GetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(ApiDumpInstance::current(), physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +#if defined(VK_USE_PLATFORM_UBM_SEC) +template +VKAPI_ATTR VkResult VKAPI_CALL vkCreateUbmSurfaceSEC(VkInstance instance, const VkUbmSurfaceCreateInfoSEC* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + dump_function_head(ApiDumpInstance::current(), "vkCreateUbmSurfaceSEC", "instance, pCreateInfo, pAllocator, pSurface", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCreateUbmSurfaceSEC(ApiDumpInstance::current(), instance, pCreateInfo, pAllocator, pSurface); + } + } + VkResult result = instance_dispatch_table(instance)->CreateUbmSurfaceSEC(instance, pCreateInfo, pAllocator, pSurface); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCreateUbmSurfaceSEC(ApiDumpInstance::current(), instance, pCreateInfo, pAllocator, pSurface); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceUbmPresentationSupportSEC(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct ubm_device* device) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + dump_function_head(ApiDumpInstance::current(), "vkGetPhysicalDeviceUbmPresentationSupportSEC", "physicalDevice, queueFamilyIndex, device", "VkBool32"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPhysicalDeviceUbmPresentationSupportSEC(ApiDumpInstance::current(), physicalDevice, queueFamilyIndex, device); + } + } + VkBool32 result = instance_dispatch_table(physicalDevice)->GetPhysicalDeviceUbmPresentationSupportSEC(physicalDevice, queueFamilyIndex, device); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkBool32", result); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPhysicalDeviceUbmPresentationSupportSEC(ApiDumpInstance::current(), physicalDevice, queueFamilyIndex, device); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +#endif // VK_USE_PLATFORM_UBM_SEC // Autogen device functions @@ -7638,306 +7740,726 @@ VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR(VkDevice dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR(VkDevice device, VkDeferredOperationKHR operation) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetDeferredOperationResultKHR", "device, operation", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetDeferredOperationResultKHR(ApiDumpInstance::current(), device, operation); + } + } + VkResult result = device_dispatch_table(device)->GetDeferredOperationResultKHR(device, operation); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetDeferredOperationResultKHR(ApiDumpInstance::current(), device, operation); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR(VkDevice device, VkDeferredOperationKHR operation) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkDeferredOperationJoinKHR", "device, operation", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkDeferredOperationJoinKHR(ApiDumpInstance::current(), device, operation); + } + } + VkResult result = device_dispatch_table(device)->DeferredOperationJoinKHR(device, operation); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkDeferredOperationJoinKHR(ApiDumpInstance::current(), device, operation); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetPipelineExecutablePropertiesKHR", "device, pPipelineInfo, pExecutableCount, pProperties", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPipelineExecutablePropertiesKHR(ApiDumpInstance::current(), device, pPipelineInfo, pExecutableCount, pProperties); + } + } + VkResult result = device_dispatch_table(device)->GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPipelineExecutablePropertiesKHR(ApiDumpInstance::current(), device, pPipelineInfo, pExecutableCount, pProperties); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetPipelineExecutableStatisticsKHR", "device, pExecutableInfo, pStatisticCount, pStatistics", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPipelineExecutableStatisticsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pStatisticCount, pStatistics); + } + } + VkResult result = device_dispatch_table(device)->GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPipelineExecutableStatisticsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pStatisticCount, pStatistics); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetPipelineExecutableInternalRepresentationsKHR", "device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPipelineExecutableInternalRepresentationsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); + } + } + VkResult result = device_dispatch_table(device)->GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetPipelineExecutableInternalRepresentationsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2KHR(VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, void** ppData) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkMapMemory2KHR", "device, pMemoryMapInfo, ppData", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkMapMemory2KHR(ApiDumpInstance::current(), device, pMemoryMapInfo, ppData); + } + } + VkResult result = device_dispatch_table(device)->MapMemory2KHR(device, pMemoryMapInfo, ppData); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkMapMemory2KHR(ApiDumpInstance::current(), device, pMemoryMapInfo, ppData); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkUnmapMemory2KHR", "device, pMemoryUnmapInfo", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkUnmapMemory2KHR(ApiDumpInstance::current(), device, pMemoryUnmapInfo); + } + } + VkResult result = device_dispatch_table(device)->UnmapMemory2KHR(device, pMemoryUnmapInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkUnmapMemory2KHR(ApiDumpInstance::current(), device, pMemoryUnmapInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetEncodedVideoSessionParametersKHR", "device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetEncodedVideoSessionParametersKHR(ApiDumpInstance::current(), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData); + } + } + VkResult result = device_dispatch_table(device)->GetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetEncodedVideoSessionParametersKHR(ApiDumpInstance::current(), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdEncodeVideoKHR", "commandBuffer, pEncodeInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdEncodeVideoKHR(ApiDumpInstance::current(), commandBuffer, pEncodeInfo); + } + } + device_dispatch_table(commandBuffer)->CmdEncodeVideoKHR(commandBuffer, pEncodeInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdEncodeVideoKHR(ApiDumpInstance::current(), commandBuffer, pEncodeInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdSetEvent2KHR", "commandBuffer, event, pDependencyInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdSetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, pDependencyInfo); + } + } + device_dispatch_table(commandBuffer)->CmdSetEvent2KHR(commandBuffer, event, pDependencyInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdSetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, pDependencyInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdResetEvent2KHR", "commandBuffer, event, stageMask", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdResetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, stageMask); + } + } + device_dispatch_table(commandBuffer)->CmdResetEvent2KHR(commandBuffer, event, stageMask); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdResetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, stageMask); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdWaitEvents2KHR", "commandBuffer, eventCount, pEvents, pDependencyInfos", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdWaitEvents2KHR(ApiDumpInstance::current(), commandBuffer, eventCount, pEvents, pDependencyInfos); + } + } + device_dispatch_table(commandBuffer)->CmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdWaitEvents2KHR(ApiDumpInstance::current(), commandBuffer, eventCount, pEvents, pDependencyInfos); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdPipelineBarrier2KHR", "commandBuffer, pDependencyInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdPipelineBarrier2KHR(ApiDumpInstance::current(), commandBuffer, pDependencyInfo); + } + } + device_dispatch_table(commandBuffer)->CmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdPipelineBarrier2KHR(ApiDumpInstance::current(), commandBuffer, pDependencyInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdWriteTimestamp2KHR", "commandBuffer, stage, queryPool, query", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdWriteTimestamp2KHR(ApiDumpInstance::current(), commandBuffer, stage, queryPool, query); + } + } + device_dispatch_table(commandBuffer)->CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdWriteTimestamp2KHR(ApiDumpInstance::current(), commandBuffer, stage, queryPool, query); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkQueueSubmit2KHR", "queue, submitCount, pSubmits, fence", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkQueueSubmit2KHR(ApiDumpInstance::current(), queue, submitCount, pSubmits, fence); + } + } + VkResult result = device_dispatch_table(queue)->QueueSubmit2KHR(queue, submitCount, pSubmits, fence); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkQueueSubmit2KHR(ApiDumpInstance::current(), queue, submitCount, pSubmits, fence); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer3KHR(VkCommandBuffer commandBuffer, const VkBindIndexBuffer3InfoKHR* pInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdBindIndexBuffer3KHR", "commandBuffer, pInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdBindIndexBuffer3KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + } + } + device_dispatch_table(commandBuffer)->CmdBindIndexBuffer3KHR(commandBuffer, pInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdBindIndexBuffer3KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers3KHR(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindVertexBuffer3InfoKHR* pBindingInfos) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdBindVertexBuffers3KHR", "commandBuffer, firstBinding, bindingCount, pBindingInfos", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdBindVertexBuffers3KHR(ApiDumpInstance::current(), commandBuffer, firstBinding, bindingCount, pBindingInfos); + } + } + device_dispatch_table(commandBuffer)->CmdBindVertexBuffers3KHR(commandBuffer, firstBinding, bindingCount, pBindingInfos); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdBindVertexBuffers3KHR(ApiDumpInstance::current(), commandBuffer, firstBinding, bindingCount, pBindingInfos); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawIndirect2KHR", "commandBuffer, pInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdDrawIndirect2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + } + } + device_dispatch_table(commandBuffer)->CmdDrawIndirect2KHR(commandBuffer, pInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdDrawIndirect2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawIndexedIndirect2KHR", "commandBuffer, pInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdDrawIndexedIndirect2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + } + } + device_dispatch_table(commandBuffer)->CmdDrawIndexedIndirect2KHR(commandBuffer, pInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdDrawIndexedIndirect2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect2KHR(VkCommandBuffer commandBuffer, const VkDispatchIndirect2InfoKHR* pInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdDispatchIndirect2KHR", "commandBuffer, pInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdDispatchIndirect2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + } + } + device_dispatch_table(commandBuffer)->CmdDispatchIndirect2KHR(commandBuffer, pInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdDispatchIndirect2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryKHR(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryInfoKHR* pCopyMemoryInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdCopyMemoryKHR", "commandBuffer, pCopyMemoryInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdCopyMemoryKHR(ApiDumpInstance::current(), commandBuffer, pCopyMemoryInfo); + } + } + device_dispatch_table(commandBuffer)->CmdCopyMemoryKHR(commandBuffer, pCopyMemoryInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdCopyMemoryKHR(ApiDumpInstance::current(), commandBuffer, pCopyMemoryInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageKHR(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdCopyMemoryToImageKHR", "commandBuffer, pCopyMemoryInfo", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdCopyMemoryToImageKHR(ApiDumpInstance::current(), commandBuffer, pCopyMemoryInfo); + } + } + device_dispatch_table(commandBuffer)->CmdCopyMemoryToImageKHR(commandBuffer, pCopyMemoryInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdCopyMemoryToImageKHR(ApiDumpInstance::current(), commandBuffer, pCopyMemoryInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } } template -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR(VkDevice device, VkDeferredOperationKHR operation) { +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToMemoryKHR(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkGetDeferredOperationResultKHR", "device, operation", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdCopyImageToMemoryKHR", "commandBuffer, pCopyMemoryInfo", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetDeferredOperationResultKHR(ApiDumpInstance::current(), device, operation); + dump_params_vkCmdCopyImageToMemoryKHR(ApiDumpInstance::current(), commandBuffer, pCopyMemoryInfo); } } - VkResult result = device_dispatch_table(device)->GetDeferredOperationResultKHR(device, operation); + device_dispatch_table(commandBuffer)->CmdCopyImageToMemoryKHR(commandBuffer, pCopyMemoryInfo); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetDeferredOperationResultKHR(ApiDumpInstance::current(), device, operation); + dump_params_vkCmdCopyImageToMemoryKHR(ApiDumpInstance::current(), commandBuffer, pCopyMemoryInfo); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR(VkDevice device, VkDeferredOperationKHR operation) { +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateMemoryKHR(VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkDeviceSize dataSize, const void* pData) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkDeferredOperationJoinKHR", "device, operation", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdUpdateMemoryKHR", "commandBuffer, pDstRange, dstFlags, dataSize, pData", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkDeferredOperationJoinKHR(ApiDumpInstance::current(), device, operation); + dump_params_vkCmdUpdateMemoryKHR(ApiDumpInstance::current(), commandBuffer, pDstRange, dstFlags, dataSize, pData); } } - VkResult result = device_dispatch_table(device)->DeferredOperationJoinKHR(device, operation); + device_dispatch_table(commandBuffer)->CmdUpdateMemoryKHR(commandBuffer, pDstRange, dstFlags, dataSize, pData); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkDeferredOperationJoinKHR(ApiDumpInstance::current(), device, operation); + dump_params_vkCmdUpdateMemoryKHR(ApiDumpInstance::current(), commandBuffer, pDstRange, dstFlags, dataSize, pData); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { +VKAPI_ATTR void VKAPI_CALL vkCmdFillMemoryKHR(VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, uint32_t data) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkGetPipelineExecutablePropertiesKHR", "device, pPipelineInfo, pExecutableCount, pProperties", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdFillMemoryKHR", "commandBuffer, pDstRange, dstFlags, data", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetPipelineExecutablePropertiesKHR(ApiDumpInstance::current(), device, pPipelineInfo, pExecutableCount, pProperties); + dump_params_vkCmdFillMemoryKHR(ApiDumpInstance::current(), commandBuffer, pDstRange, dstFlags, data); } } - VkResult result = device_dispatch_table(device)->GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties); + device_dispatch_table(commandBuffer)->CmdFillMemoryKHR(commandBuffer, pDstRange, dstFlags, data); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetPipelineExecutablePropertiesKHR(ApiDumpInstance::current(), device, pPipelineInfo, pExecutableCount, pProperties); + dump_params_vkCmdFillMemoryKHR(ApiDumpInstance::current(), commandBuffer, pDstRange, dstFlags, data); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResultsToMemoryKHR(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, const VkStridedDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkQueryResultFlags queryResultFlags) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkGetPipelineExecutableStatisticsKHR", "device, pExecutableInfo, pStatisticCount, pStatistics", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdCopyQueryPoolResultsToMemoryKHR", "commandBuffer, queryPool, firstQuery, queryCount, pDstRange, dstFlags, queryResultFlags", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetPipelineExecutableStatisticsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pStatisticCount, pStatistics); + dump_params_vkCmdCopyQueryPoolResultsToMemoryKHR(ApiDumpInstance::current(), commandBuffer, queryPool, firstQuery, queryCount, pDstRange, dstFlags, queryResultFlags); } } - VkResult result = device_dispatch_table(device)->GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics); + device_dispatch_table(commandBuffer)->CmdCopyQueryPoolResultsToMemoryKHR(commandBuffer, queryPool, firstQuery, queryCount, pDstRange, dstFlags, queryResultFlags); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetPipelineExecutableStatisticsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pStatisticCount, pStatistics); + dump_params_vkCmdCopyQueryPoolResultsToMemoryKHR(ApiDumpInstance::current(), commandBuffer, queryPool, firstQuery, queryCount, pDstRange, dstFlags, queryResultFlags); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkGetPipelineExecutableInternalRepresentationsKHR", "device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawIndirectCount2KHR", "commandBuffer, pInfo", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetPipelineExecutableInternalRepresentationsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); + dump_params_vkCmdDrawIndirectCount2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); } } - VkResult result = device_dispatch_table(device)->GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); + device_dispatch_table(commandBuffer)->CmdDrawIndirectCount2KHR(commandBuffer, pInfo); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetPipelineExecutableInternalRepresentationsKHR(ApiDumpInstance::current(), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); + dump_params_vkCmdDrawIndirectCount2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2KHR(VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, void** ppData) { +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkMapMemory2KHR", "device, pMemoryMapInfo, ppData", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawIndexedIndirectCount2KHR", "commandBuffer, pInfo", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkMapMemory2KHR(ApiDumpInstance::current(), device, pMemoryMapInfo, ppData); + dump_params_vkCmdDrawIndexedIndirectCount2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); } } - VkResult result = device_dispatch_table(device)->MapMemory2KHR(device, pMemoryMapInfo, ppData); + device_dispatch_table(commandBuffer)->CmdDrawIndexedIndirectCount2KHR(commandBuffer, pInfo); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkMapMemory2KHR(ApiDumpInstance::current(), device, pMemoryMapInfo, ppData); + dump_params_vkCmdDrawIndexedIndirectCount2KHR(ApiDumpInstance::current(), commandBuffer, pInfo); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo) { +VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRendering2EXT(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfo2EXT* pConditionalRenderingBegin) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkUnmapMemory2KHR", "device, pMemoryUnmapInfo", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdBeginConditionalRendering2EXT", "commandBuffer, pConditionalRenderingBegin", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkUnmapMemory2KHR(ApiDumpInstance::current(), device, pMemoryUnmapInfo); + dump_params_vkCmdBeginConditionalRendering2EXT(ApiDumpInstance::current(), commandBuffer, pConditionalRenderingBegin); } } - VkResult result = device_dispatch_table(device)->UnmapMemory2KHR(device, pMemoryUnmapInfo); + device_dispatch_table(commandBuffer)->CmdBeginConditionalRendering2EXT(commandBuffer, pConditionalRenderingBegin); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkUnmapMemory2KHR(ApiDumpInstance::current(), device, pMemoryUnmapInfo); + dump_params_vkCmdBeginConditionalRendering2EXT(ApiDumpInstance::current(), commandBuffer, pConditionalRenderingBegin); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData) { +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindTransformFeedbackBuffer2InfoEXT* pBindingInfos) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkGetEncodedVideoSessionParametersKHR", "device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCmdBindTransformFeedbackBuffers2EXT", "commandBuffer, firstBinding, bindingCount, pBindingInfos", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetEncodedVideoSessionParametersKHR(ApiDumpInstance::current(), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData); + dump_params_vkCmdBindTransformFeedbackBuffers2EXT(ApiDumpInstance::current(), commandBuffer, firstBinding, bindingCount, pBindingInfos); } } - VkResult result = device_dispatch_table(device)->GetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData); + device_dispatch_table(commandBuffer)->CmdBindTransformFeedbackBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBindingInfos); if (ApiDumpInstance::current().shouldDumpOutput()) { - dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkGetEncodedVideoSessionParametersKHR(ApiDumpInstance::current(), device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData); + dump_params_vkCmdBindTransformFeedbackBuffers2EXT(ApiDumpInstance::current(), commandBuffer, firstBinding, bindingCount, pBindingInfos); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } - return result; } template -VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) { +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedback2EXT(VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkCmdEncodeVideoKHR", "commandBuffer, pEncodeInfo", "void"); + dump_function_head(ApiDumpInstance::current(), "vkCmdBeginTransformFeedback2EXT", "commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdEncodeVideoKHR(ApiDumpInstance::current(), commandBuffer, pEncodeInfo); + dump_params_vkCmdBeginTransformFeedback2EXT(ApiDumpInstance::current(), commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); } } - device_dispatch_table(commandBuffer)->CmdEncodeVideoKHR(commandBuffer, pEncodeInfo); + device_dispatch_table(commandBuffer)->CmdBeginTransformFeedback2EXT(commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdEncodeVideoKHR(ApiDumpInstance::current(), commandBuffer, pEncodeInfo); + dump_params_vkCmdBeginTransformFeedback2EXT(ApiDumpInstance::current(), commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } } template -VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo) { +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedback2EXT(VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkCmdSetEvent2KHR", "commandBuffer, event, pDependencyInfo", "void"); + dump_function_head(ApiDumpInstance::current(), "vkCmdEndTransformFeedback2EXT", "commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdSetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, pDependencyInfo); + dump_params_vkCmdEndTransformFeedback2EXT(ApiDumpInstance::current(), commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); } } - device_dispatch_table(commandBuffer)->CmdSetEvent2KHR(commandBuffer, event, pDependencyInfo); + device_dispatch_table(commandBuffer)->CmdEndTransformFeedback2EXT(commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdSetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, pDependencyInfo); + dump_params_vkCmdEndTransformFeedback2EXT(ApiDumpInstance::current(), commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } } template -VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask) { +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCount2EXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo, uint32_t counterOffset, uint32_t vertexStride) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkCmdResetEvent2KHR", "commandBuffer, event, stageMask", "void"); + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawIndirectByteCount2EXT", "commandBuffer, instanceCount, firstInstance, pCounterInfo, counterOffset, vertexStride", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdResetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, stageMask); + dump_params_vkCmdDrawIndirectByteCount2EXT(ApiDumpInstance::current(), commandBuffer, instanceCount, firstInstance, pCounterInfo, counterOffset, vertexStride); } } - device_dispatch_table(commandBuffer)->CmdResetEvent2KHR(commandBuffer, event, stageMask); + device_dispatch_table(commandBuffer)->CmdDrawIndirectByteCount2EXT(commandBuffer, instanceCount, firstInstance, pCounterInfo, counterOffset, vertexStride); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdResetEvent2KHR(ApiDumpInstance::current(), commandBuffer, event, stageMask); + dump_params_vkCmdDrawIndirectByteCount2EXT(ApiDumpInstance::current(), commandBuffer, instanceCount, firstInstance, pCounterInfo, counterOffset, vertexStride); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } } template -VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos) { +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirect2EXT(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkCmdWaitEvents2KHR", "commandBuffer, eventCount, pEvents, pDependencyInfos", "void"); + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawMeshTasksIndirect2EXT", "commandBuffer, pInfo", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdWaitEvents2KHR(ApiDumpInstance::current(), commandBuffer, eventCount, pEvents, pDependencyInfos); + dump_params_vkCmdDrawMeshTasksIndirect2EXT(ApiDumpInstance::current(), commandBuffer, pInfo); } } - device_dispatch_table(commandBuffer)->CmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos); + device_dispatch_table(commandBuffer)->CmdDrawMeshTasksIndirect2EXT(commandBuffer, pInfo); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdWaitEvents2KHR(ApiDumpInstance::current(), commandBuffer, eventCount, pEvents, pDependencyInfos); + dump_params_vkCmdDrawMeshTasksIndirect2EXT(ApiDumpInstance::current(), commandBuffer, pInfo); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } } template -VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) { +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCount2EXT(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkCmdPipelineBarrier2KHR", "commandBuffer, pDependencyInfo", "void"); + dump_function_head(ApiDumpInstance::current(), "vkCmdDrawMeshTasksIndirectCount2EXT", "commandBuffer, pInfo", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdPipelineBarrier2KHR(ApiDumpInstance::current(), commandBuffer, pDependencyInfo); + dump_params_vkCmdDrawMeshTasksIndirectCount2EXT(ApiDumpInstance::current(), commandBuffer, pInfo); } } - device_dispatch_table(commandBuffer)->CmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo); + device_dispatch_table(commandBuffer)->CmdDrawMeshTasksIndirectCount2EXT(commandBuffer, pInfo); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdPipelineBarrier2KHR(ApiDumpInstance::current(), commandBuffer, pDependencyInfo); + dump_params_vkCmdDrawMeshTasksIndirectCount2EXT(ApiDumpInstance::current(), commandBuffer, pInfo); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } } template -VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query) { +VKAPI_ATTR void VKAPI_CALL vkCmdWriteMarkerToMemoryAMD(VkCommandBuffer commandBuffer, const VkMemoryMarkerInfoAMD* pInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkCmdWriteTimestamp2KHR", "commandBuffer, stage, queryPool, query", "void"); + dump_function_head(ApiDumpInstance::current(), "vkCmdWriteMarkerToMemoryAMD", "commandBuffer, pInfo", "void"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdWriteTimestamp2KHR(ApiDumpInstance::current(), commandBuffer, stage, queryPool, query); + dump_params_vkCmdWriteMarkerToMemoryAMD(ApiDumpInstance::current(), commandBuffer, pInfo); } } - device_dispatch_table(commandBuffer)->CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query); + device_dispatch_table(commandBuffer)->CmdWriteMarkerToMemoryAMD(commandBuffer, pInfo); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkCmdWriteTimestamp2KHR(ApiDumpInstance::current(), commandBuffer, stage, queryPool, query); + dump_params_vkCmdWriteMarkerToMemoryAMD(ApiDumpInstance::current(), commandBuffer, pInfo); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } } template -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) { +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructure2KHR(VkDevice device, const VkAccelerationStructureCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); - dump_function_head(ApiDumpInstance::current(), "vkQueueSubmit2KHR", "queue, submitCount, pSubmits, fence", "VkResult"); + dump_function_head(ApiDumpInstance::current(), "vkCreateAccelerationStructure2KHR", "device, pCreateInfo, pAllocator, pAccelerationStructure", "VkResult"); if constexpr (Format == ApiDumpFormat::Text) { if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); - dump_params_vkQueueSubmit2KHR(ApiDumpInstance::current(), queue, submitCount, pSubmits, fence); + dump_params_vkCreateAccelerationStructure2KHR(ApiDumpInstance::current(), device, pCreateInfo, pAllocator, pAccelerationStructure); } } - VkResult result = device_dispatch_table(queue)->QueueSubmit2KHR(queue, submitCount, pSubmits, fence); + VkResult result = device_dispatch_table(device)->CreateAccelerationStructure2KHR(device, pCreateInfo, pAllocator, pAccelerationStructure); if (ApiDumpInstance::current().shouldDumpOutput()) { dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); dump_pre_function_formatting(ApiDumpInstance::current().settings()); - dump_params_vkQueueSubmit2KHR(ApiDumpInstance::current(), queue, submitCount, pSubmits, fence); + dump_params_vkCreateAccelerationStructure2KHR(ApiDumpInstance::current(), device, pCreateInfo, pAllocator, pAccelerationStructure); dump_post_function_formatting(ApiDumpInstance::current().settings()); flush(ApiDumpInstance::current().settings()); } @@ -8547,6 +9069,48 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectKHR(VkCommandBuffer com } } template +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultReportsKHR(VkDevice device, uint64_t timeout, uint32_t* pFaultCounts, VkDeviceFaultInfoKHR* pFaultInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetDeviceFaultReportsKHR", "device, timeout, pFaultCounts, pFaultInfo", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetDeviceFaultReportsKHR(ApiDumpInstance::current(), device, timeout, pFaultCounts, pFaultInfo); + } + } + VkResult result = device_dispatch_table(device)->GetDeviceFaultReportsKHR(device, timeout, pFaultCounts, pFaultInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetDeviceFaultReportsKHR(ApiDumpInstance::current(), device, timeout, pFaultCounts, pFaultInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultDebugInfoKHR(VkDevice device, VkDeviceFaultDebugInfoKHR* pDebugInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetDeviceFaultDebugInfoKHR", "device, pDebugInfo", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetDeviceFaultDebugInfoKHR(ApiDumpInstance::current(), device, pDebugInfo); + } + } + VkResult result = device_dispatch_table(device)->GetDeviceFaultDebugInfoKHR(device, pDebugInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetDeviceFaultDebugInfoKHR(ApiDumpInstance::current(), device, pDebugInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2KHR(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); @@ -10046,7 +10610,7 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(VkDevice device, VkA } } template -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) { +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); dump_function_head(ApiDumpInstance::current(), "vkGetAccelerationStructureMemoryRequirementsNV", "device, pInfo, pMemoryRequirements", "void"); @@ -11479,6 +12043,27 @@ VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT(VkDevice device, VkObjectType obj flush(ApiDumpInstance::current().settings()); } } +template +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerfHintQCOM(VkQueue queue, const VkPerfHintInfoQCOM* pPerfHintInfo) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkQueueSetPerfHintQCOM", "queue, pPerfHintInfo", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkQueueSetPerfHintQCOM(ApiDumpInstance::current(), queue, pPerfHintInfo); + } + } + VkResult result = device_dispatch_table(queue)->QueueSetPerfHintQCOM(queue, pPerfHintInfo); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkQueueSetPerfHintQCOM(ApiDumpInstance::current(), queue, pPerfHintInfo); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} #if defined(VK_ENABLE_BETA_EXTENSIONS) template VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaModuleNV(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule) { @@ -12227,7 +12812,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV(VkDevice device, const return result; } template -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) { +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); dump_function_head(ApiDumpInstance::current(), "vkGetPipelinePropertiesEXT", "device, pPipelineInfo, pPipelineProperties", "VkResult"); @@ -12735,6 +13320,25 @@ VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT(VkDevice device, VkDevic } } template +VKAPI_ATTR void VKAPI_CALL vkCmdSetDispatchParametersARM(VkCommandBuffer commandBuffer, const VkDispatchParametersARM* pDispatchParameters) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdSetDispatchParametersARM", "commandBuffer, pDispatchParameters", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdSetDispatchParametersARM(ApiDumpInstance::current(), commandBuffer, pDispatchParameters); + } + } + device_dispatch_table(commandBuffer)->CmdSetDispatchParametersARM(commandBuffer, pDispatchParameters); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdSetDispatchParametersARM(ApiDumpInstance::current(), commandBuffer, pDispatchParameters); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); @@ -14794,6 +15398,124 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryMetalHandlePropertiesEXT(VkDevice devi } #endif // VK_USE_PLATFORM_METAL_EXT template +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderInstrumentationARM(VkDevice device, const VkShaderInstrumentationCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderInstrumentationARM* pInstrumentation) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCreateShaderInstrumentationARM", "device, pCreateInfo, pAllocator, pInstrumentation", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCreateShaderInstrumentationARM(ApiDumpInstance::current(), device, pCreateInfo, pAllocator, pInstrumentation); + } + } + VkResult result = device_dispatch_table(device)->CreateShaderInstrumentationARM(device, pCreateInfo, pAllocator, pInstrumentation); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCreateShaderInstrumentationARM(ApiDumpInstance::current(), device, pCreateInfo, pAllocator, pInstrumentation); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderInstrumentationARM(VkDevice device, VkShaderInstrumentationARM instrumentation, const VkAllocationCallbacks* pAllocator) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkDestroyShaderInstrumentationARM", "device, instrumentation, pAllocator", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkDestroyShaderInstrumentationARM(ApiDumpInstance::current(), device, instrumentation, pAllocator); + } + } + device_dispatch_table(device)->DestroyShaderInstrumentationARM(device, instrumentation, pAllocator); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkDestroyShaderInstrumentationARM(ApiDumpInstance::current(), device, instrumentation, pAllocator); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdBeginShaderInstrumentationARM(VkCommandBuffer commandBuffer, VkShaderInstrumentationARM instrumentation) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdBeginShaderInstrumentationARM", "commandBuffer, instrumentation", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdBeginShaderInstrumentationARM(ApiDumpInstance::current(), commandBuffer, instrumentation); + } + } + device_dispatch_table(commandBuffer)->CmdBeginShaderInstrumentationARM(commandBuffer, instrumentation); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdBeginShaderInstrumentationARM(ApiDumpInstance::current(), commandBuffer, instrumentation); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR void VKAPI_CALL vkCmdEndShaderInstrumentationARM(VkCommandBuffer commandBuffer) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdEndShaderInstrumentationARM", "commandBuffer", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdEndShaderInstrumentationARM(ApiDumpInstance::current(), commandBuffer); + } + } + device_dispatch_table(commandBuffer)->CmdEndShaderInstrumentationARM(commandBuffer); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdEndShaderInstrumentationARM(ApiDumpInstance::current(), commandBuffer); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInstrumentationValuesARM(VkDevice device, VkShaderInstrumentationARM instrumentation, uint32_t* pMetricBlockCount, void* pMetricValues, VkShaderInstrumentationValuesFlagsARM flags) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkGetShaderInstrumentationValuesARM", "device, instrumentation, pMetricBlockCount, pMetricValues, flags", "VkResult"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetShaderInstrumentationValuesARM(ApiDumpInstance::current(), device, instrumentation, pMetricBlockCount, pMetricValues, flags); + } + } + VkResult result = device_dispatch_table(device)->GetShaderInstrumentationValuesARM(device, instrumentation, pMetricBlockCount, pMetricValues, flags); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_return_value(ApiDumpInstance::current().settings(), "VkResult", result, dump_return_value_VkResult); + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkGetShaderInstrumentationValuesARM(ApiDumpInstance::current(), device, instrumentation, pMetricBlockCount, pMetricValues, flags); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } + return result; +} +template +VKAPI_ATTR void VKAPI_CALL vkClearShaderInstrumentationMetricsARM(VkDevice device, VkShaderInstrumentationARM instrumentation) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkClearShaderInstrumentationMetricsARM", "device, instrumentation", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkClearShaderInstrumentationMetricsARM(ApiDumpInstance::current(), device, instrumentation); + } + } + device_dispatch_table(device)->ClearShaderInstrumentationMetricsARM(device, instrumentation); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkClearShaderInstrumentationMetricsARM(ApiDumpInstance::current(), device, instrumentation); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2EXT(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); @@ -14851,6 +15573,25 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetComputeOccupancyPriorityNV(VkCommandBuffer co } } template +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartIndexEXT(VkCommandBuffer commandBuffer, uint32_t primitiveRestartIndex) { + std::lock_guard lg(ApiDumpInstance::current().outputMutex()); + + dump_function_head(ApiDumpInstance::current(), "vkCmdSetPrimitiveRestartIndexEXT", "commandBuffer, primitiveRestartIndex", "void"); + if constexpr (Format == ApiDumpFormat::Text) { + if (ApiDumpInstance::current().settings().shouldPreDump() && ApiDumpInstance::current().shouldDumpOutput()) { + dump_before_pre_dump_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdSetPrimitiveRestartIndexEXT(ApiDumpInstance::current(), commandBuffer, primitiveRestartIndex); + } + } + device_dispatch_table(commandBuffer)->CmdSetPrimitiveRestartIndexEXT(commandBuffer, primitiveRestartIndex); + if (ApiDumpInstance::current().shouldDumpOutput()) { + dump_pre_function_formatting(ApiDumpInstance::current().settings()); + dump_params_vkCmdSetPrimitiveRestartIndexEXT(ApiDumpInstance::current(), commandBuffer, primitiveRestartIndex); + dump_post_function_formatting(ApiDumpInstance::current().settings()); + flush(ApiDumpInstance::current().settings()); + } +} +template VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { std::lock_guard lg(ApiDumpInstance::current().outputMutex()); @@ -15620,6 +16361,8 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_instance_functions(VkIns return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM); if (strcmp(pName, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM") == 0) return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM); + if (strcmp(pName, "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM") == 0) + return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM); #if defined(VK_USE_PLATFORM_OHOS) if (strcmp(pName, "vkCreateSurfaceOHOS") == 0) return reinterpret_cast(vkCreateSurfaceOHOS); @@ -15628,6 +16371,16 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_instance_functions(VkIns return reinterpret_cast(vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV); if (strcmp(pName, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM") == 0) return reinterpret_cast(vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM); + if (strcmp(pName, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM") == 0) + return reinterpret_cast(vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM); + if (strcmp(pName, "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM") == 0) + return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM); +#if defined(VK_USE_PLATFORM_UBM_SEC) + if (strcmp(pName, "vkCreateUbmSurfaceSEC") == 0) + return reinterpret_cast(vkCreateUbmSurfaceSEC); + if (strcmp(pName, "vkGetPhysicalDeviceUbmPresentationSupportSEC") == 0) + return reinterpret_cast(vkGetPhysicalDeviceUbmPresentationSupportSEC); +#endif // VK_USE_PLATFORM_UBM_SEC return nullptr; } @@ -16226,6 +16979,50 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_device_functions(VkDevic return reinterpret_cast(vkCmdWriteTimestamp2KHR); if (strcmp(pName, "vkQueueSubmit2KHR") == 0 && (!device || device_dispatch_table(device)->QueueSubmit2KHR)) return reinterpret_cast(vkQueueSubmit2KHR); + if (strcmp(pName, "vkCmdBindIndexBuffer3KHR") == 0 && (!device || device_dispatch_table(device)->CmdBindIndexBuffer3KHR)) + return reinterpret_cast(vkCmdBindIndexBuffer3KHR); + if (strcmp(pName, "vkCmdBindVertexBuffers3KHR") == 0 && (!device || device_dispatch_table(device)->CmdBindVertexBuffers3KHR)) + return reinterpret_cast(vkCmdBindVertexBuffers3KHR); + if (strcmp(pName, "vkCmdDrawIndirect2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndirect2KHR)) + return reinterpret_cast(vkCmdDrawIndirect2KHR); + if (strcmp(pName, "vkCmdDrawIndexedIndirect2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndexedIndirect2KHR)) + return reinterpret_cast(vkCmdDrawIndexedIndirect2KHR); + if (strcmp(pName, "vkCmdDispatchIndirect2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDispatchIndirect2KHR)) + return reinterpret_cast(vkCmdDispatchIndirect2KHR); + if (strcmp(pName, "vkCmdCopyMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyMemoryKHR)) + return reinterpret_cast(vkCmdCopyMemoryKHR); + if (strcmp(pName, "vkCmdCopyMemoryToImageKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyMemoryToImageKHR)) + return reinterpret_cast(vkCmdCopyMemoryToImageKHR); + if (strcmp(pName, "vkCmdCopyImageToMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyImageToMemoryKHR)) + return reinterpret_cast(vkCmdCopyImageToMemoryKHR); + if (strcmp(pName, "vkCmdUpdateMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdUpdateMemoryKHR)) + return reinterpret_cast(vkCmdUpdateMemoryKHR); + if (strcmp(pName, "vkCmdFillMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdFillMemoryKHR)) + return reinterpret_cast(vkCmdFillMemoryKHR); + if (strcmp(pName, "vkCmdCopyQueryPoolResultsToMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyQueryPoolResultsToMemoryKHR)) + return reinterpret_cast(vkCmdCopyQueryPoolResultsToMemoryKHR); + if (strcmp(pName, "vkCmdDrawIndirectCount2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndirectCount2KHR)) + return reinterpret_cast(vkCmdDrawIndirectCount2KHR); + if (strcmp(pName, "vkCmdDrawIndexedIndirectCount2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndexedIndirectCount2KHR)) + return reinterpret_cast(vkCmdDrawIndexedIndirectCount2KHR); + if (strcmp(pName, "vkCmdBeginConditionalRendering2EXT") == 0 && (!device || device_dispatch_table(device)->CmdBeginConditionalRendering2EXT)) + return reinterpret_cast(vkCmdBeginConditionalRendering2EXT); + if (strcmp(pName, "vkCmdBindTransformFeedbackBuffers2EXT") == 0 && (!device || device_dispatch_table(device)->CmdBindTransformFeedbackBuffers2EXT)) + return reinterpret_cast(vkCmdBindTransformFeedbackBuffers2EXT); + if (strcmp(pName, "vkCmdBeginTransformFeedback2EXT") == 0 && (!device || device_dispatch_table(device)->CmdBeginTransformFeedback2EXT)) + return reinterpret_cast(vkCmdBeginTransformFeedback2EXT); + if (strcmp(pName, "vkCmdEndTransformFeedback2EXT") == 0 && (!device || device_dispatch_table(device)->CmdEndTransformFeedback2EXT)) + return reinterpret_cast(vkCmdEndTransformFeedback2EXT); + if (strcmp(pName, "vkCmdDrawIndirectByteCount2EXT") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndirectByteCount2EXT)) + return reinterpret_cast(vkCmdDrawIndirectByteCount2EXT); + if (strcmp(pName, "vkCmdDrawMeshTasksIndirect2EXT") == 0 && (!device || device_dispatch_table(device)->CmdDrawMeshTasksIndirect2EXT)) + return reinterpret_cast(vkCmdDrawMeshTasksIndirect2EXT); + if (strcmp(pName, "vkCmdDrawMeshTasksIndirectCount2EXT") == 0 && (!device || device_dispatch_table(device)->CmdDrawMeshTasksIndirectCount2EXT)) + return reinterpret_cast(vkCmdDrawMeshTasksIndirectCount2EXT); + if (strcmp(pName, "vkCmdWriteMarkerToMemoryAMD") == 0 && (!device || device_dispatch_table(device)->CmdWriteMarkerToMemoryAMD)) + return reinterpret_cast(vkCmdWriteMarkerToMemoryAMD); + if (strcmp(pName, "vkCreateAccelerationStructure2KHR") == 0 && (!device || device_dispatch_table(device)->CreateAccelerationStructure2KHR)) + return reinterpret_cast(vkCreateAccelerationStructure2KHR); if (strcmp(pName, "vkCmdCopyBuffer2KHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyBuffer2KHR)) return reinterpret_cast(vkCmdCopyBuffer2KHR); if (strcmp(pName, "vkCmdCopyImage2KHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyImage2KHR)) @@ -16288,6 +17085,10 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_device_functions(VkDevic return reinterpret_cast(vkCmdCopyMemoryIndirectKHR); if (strcmp(pName, "vkCmdCopyMemoryToImageIndirectKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyMemoryToImageIndirectKHR)) return reinterpret_cast(vkCmdCopyMemoryToImageIndirectKHR); + if (strcmp(pName, "vkGetDeviceFaultReportsKHR") == 0 && (!device || device_dispatch_table(device)->GetDeviceFaultReportsKHR)) + return reinterpret_cast(vkGetDeviceFaultReportsKHR); + if (strcmp(pName, "vkGetDeviceFaultDebugInfoKHR") == 0 && (!device || device_dispatch_table(device)->GetDeviceFaultDebugInfoKHR)) + return reinterpret_cast(vkGetDeviceFaultDebugInfoKHR); if (strcmp(pName, "vkCmdEndRendering2KHR") == 0 && (!device || device_dispatch_table(device)->CmdEndRendering2KHR)) return reinterpret_cast(vkCmdEndRendering2KHR); if (strcmp(pName, "vkDebugMarkerSetObjectTagEXT") == 0 && (!device || device_dispatch_table(device)->DebugMarkerSetObjectTagEXT)) @@ -16590,6 +17391,8 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_device_functions(VkDevic return reinterpret_cast(vkSetPrivateDataEXT); if (strcmp(pName, "vkGetPrivateDataEXT") == 0 && (!device || device_dispatch_table(device)->GetPrivateDataEXT)) return reinterpret_cast(vkGetPrivateDataEXT); + if (strcmp(pName, "vkQueueSetPerfHintQCOM") == 0 && (!device || device_dispatch_table(device)->QueueSetPerfHintQCOM)) + return reinterpret_cast(vkQueueSetPerfHintQCOM); #if defined(VK_ENABLE_BETA_EXTENSIONS) if (strcmp(pName, "vkCreateCudaModuleNV") == 0 && (!device || device_dispatch_table(device)->CreateCudaModuleNV)) return reinterpret_cast(vkCreateCudaModuleNV); @@ -16722,6 +17525,8 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_device_functions(VkDevic return reinterpret_cast(vkCmdDrawClusterIndirectHUAWEI); if (strcmp(pName, "vkSetDeviceMemoryPriorityEXT") == 0 && (!device || device_dispatch_table(device)->SetDeviceMemoryPriorityEXT)) return reinterpret_cast(vkSetDeviceMemoryPriorityEXT); + if (strcmp(pName, "vkCmdSetDispatchParametersARM") == 0 && (!device || device_dispatch_table(device)->CmdSetDispatchParametersARM)) + return reinterpret_cast(vkCmdSetDispatchParametersARM); if (strcmp(pName, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") == 0 && (!device || device_dispatch_table(device)->GetDescriptorSetLayoutHostMappingInfoVALVE)) return reinterpret_cast(vkGetDescriptorSetLayoutHostMappingInfoVALVE); if (strcmp(pName, "vkGetDescriptorSetHostMappingVALVE") == 0 && (!device || device_dispatch_table(device)->GetDescriptorSetHostMappingVALVE)) @@ -16938,12 +17743,26 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL api_dump_known_device_functions(VkDevic if (strcmp(pName, "vkGetMemoryMetalHandlePropertiesEXT") == 0 && (!device || device_dispatch_table(device)->GetMemoryMetalHandlePropertiesEXT)) return reinterpret_cast(vkGetMemoryMetalHandlePropertiesEXT); #endif // VK_USE_PLATFORM_METAL_EXT + if (strcmp(pName, "vkCreateShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->CreateShaderInstrumentationARM)) + return reinterpret_cast(vkCreateShaderInstrumentationARM); + if (strcmp(pName, "vkDestroyShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->DestroyShaderInstrumentationARM)) + return reinterpret_cast(vkDestroyShaderInstrumentationARM); + if (strcmp(pName, "vkCmdBeginShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->CmdBeginShaderInstrumentationARM)) + return reinterpret_cast(vkCmdBeginShaderInstrumentationARM); + if (strcmp(pName, "vkCmdEndShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->CmdEndShaderInstrumentationARM)) + return reinterpret_cast(vkCmdEndShaderInstrumentationARM); + if (strcmp(pName, "vkGetShaderInstrumentationValuesARM") == 0 && (!device || device_dispatch_table(device)->GetShaderInstrumentationValuesARM)) + return reinterpret_cast(vkGetShaderInstrumentationValuesARM); + if (strcmp(pName, "vkClearShaderInstrumentationMetricsARM") == 0 && (!device || device_dispatch_table(device)->ClearShaderInstrumentationMetricsARM)) + return reinterpret_cast(vkClearShaderInstrumentationMetricsARM); if (strcmp(pName, "vkCmdEndRendering2EXT") == 0 && (!device || device_dispatch_table(device)->CmdEndRendering2EXT)) return reinterpret_cast(vkCmdEndRendering2EXT); if (strcmp(pName, "vkCmdBeginCustomResolveEXT") == 0 && (!device || device_dispatch_table(device)->CmdBeginCustomResolveEXT)) return reinterpret_cast(vkCmdBeginCustomResolveEXT); if (strcmp(pName, "vkCmdSetComputeOccupancyPriorityNV") == 0 && (!device || device_dispatch_table(device)->CmdSetComputeOccupancyPriorityNV)) return reinterpret_cast(vkCmdSetComputeOccupancyPriorityNV); + if (strcmp(pName, "vkCmdSetPrimitiveRestartIndexEXT") == 0 && (!device || device_dispatch_table(device)->CmdSetPrimitiveRestartIndexEXT)) + return reinterpret_cast(vkCmdSetPrimitiveRestartIndexEXT); if (strcmp(pName, "vkCreateAccelerationStructureKHR") == 0 && (!device || device_dispatch_table(device)->CreateAccelerationStructureKHR)) return reinterpret_cast(vkCreateAccelerationStructureKHR); if (strcmp(pName, "vkDestroyAccelerationStructureKHR") == 0 && (!device || device_dispatch_table(device)->DestroyAccelerationStructureKHR)) diff --git a/layersvt/generated/api_dump_implementation.h b/layersvt/generated/api_dump_implementation.h index 8ea2576d11..1477876a27 100644 --- a/layersvt/generated/api_dump_implementation.h +++ b/layersvt/generated/api_dump_implementation.h @@ -27,16 +27,6 @@ //========================== Handle Implementations =========================// -template -void dump_VkBuffer(const VkBuffer& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); -} - -template -void dump_VkImage(const VkImage& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); -} - template void dump_VkInstance(const VkInstance& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_handle(static_cast(object), settings, type_name, var_name, indents, address); @@ -77,6 +67,16 @@ void dump_VkDeviceMemory(const VkDeviceMemory& object, const ApiDumpSettings& se dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); } +template +void dump_VkBuffer(const VkBuffer& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); +} + +template +void dump_VkImage(const VkImage& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); +} + template void dump_VkQueryPool(const VkQueryPool& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); @@ -123,12 +123,12 @@ void dump_VkPipelineCache(const VkPipelineCache& object, const ApiDumpSettings& } template -void dump_VkPipelineLayout(const VkPipelineLayout& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipeline(const VkPipeline& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); } template -void dump_VkPipeline(const VkPipeline& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineLayout(const VkPipelineLayout& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); } @@ -202,6 +202,11 @@ void dump_VkDeferredOperationKHR(const VkDeferredOperationKHR& object, const Api dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); } +template +void dump_VkAccelerationStructureKHR(const VkAccelerationStructureKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); +} + template void dump_VkPipelineBinaryKHR(const VkPipelineBinaryKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); @@ -263,11 +268,6 @@ void dump_VkCudaFunctionNV(const VkCudaFunctionNV& object, const ApiDumpSettings dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); } #endif // VK_ENABLE_BETA_EXTENSIONS - -template -void dump_VkAccelerationStructureKHR(const VkAccelerationStructureKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); -} #if defined(VK_USE_PLATFORM_FUCHSIA) template @@ -316,6 +316,11 @@ void dump_VkIndirectCommandsLayoutEXT(const VkIndirectCommandsLayoutEXT& object, dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); } +template +void dump_VkShaderInstrumentationARM(const VkShaderInstrumentationARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_handle(TYPE_ERASE_HANDLE(object), settings, type_name, var_name, indents, address); +} + //======================== Video Enum Implementations =======================// template @@ -2081,6 +2086,9 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES", static_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES", static_cast(object)); break; @@ -2096,9 +2104,6 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: dump_enum(settings, "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO", static_cast(object)); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: - dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES", static_cast(object)); - break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES", static_cast(object)); break; @@ -3480,6 +3485,18 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD", static_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT", static_cast(object)); break; @@ -3720,6 +3737,15 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: dump_enum(settings, "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV", static_cast(object)); break; + case VK_STRUCTURE_TYPE_PERF_HINT_INFO_QCOM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PERF_HINT_INFO_QCOM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM", static_cast(object)); + break; #if defined(VK_ENABLE_BETA_EXTENSIONS) case VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV: dump_enum(settings, "VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV", static_cast(object)); @@ -3833,6 +3859,54 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT", static_cast(object)); break; + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT: + dump_enum(settings, "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT: + dump_enum(settings, "VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD: + dump_enum(settings, "VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT", static_cast(object)); break; @@ -4159,6 +4233,12 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM", static_cast(object)); break; + case VK_STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT", static_cast(object)); break; @@ -4671,6 +4751,9 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM: dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM", static_cast(object)); break; + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM", static_cast(object)); break; @@ -5037,6 +5120,18 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT", static_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR", static_cast(object)); break; @@ -5145,6 +5240,18 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM: dump_enum(settings, "VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM", static_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT", static_cast(object)); break; @@ -5166,14 +5273,12 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR", static_cast(object)); break; -#if defined(VK_ENABLE_BETA_EXTENSIONS) case VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV: dump_enum(settings, "VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV", static_cast(object)); break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV", static_cast(object)); break; -#endif // VK_ENABLE_BETA_EXTENSIONS case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT", static_cast(object)); break; @@ -5222,6 +5327,33 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR: dump_enum(settings, "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR", static_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM", static_cast(object)); + break; + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM", static_cast(object)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT", static_cast(object)); break; @@ -5240,113 +5372,38 @@ void dump_VkStructureType(const VkStructureType object, const ApiDumpSettings& s case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV: dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV", static_cast(object)); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT: - dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT", static_cast(object)); - break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template -void dump_VkImageLayout(const VkImageLayout object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_IMAGE_LAYOUT_UNDEFINED: - dump_enum(settings, "VK_IMAGE_LAYOUT_UNDEFINED", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_GENERAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_GENERAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL", static_cast(object)); + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR", static_cast(object)); break; - case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL", static_cast(object)); + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR: + dump_enum(settings, "VK_STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR", static_cast(object)); break; - case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_PREINITIALIZED: - dump_enum(settings, "VK_IMAGE_LAYOUT_PREINITIALIZED", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL: - dump_enum(settings, "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ: - dump_enum(settings, "VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR", static_cast(object)); - break; - case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: - dump_enum(settings, "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT", static_cast(object)); + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT", static_cast(object)); break; - case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR", static_cast(object)); + case VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC: + dump_enum(settings, "VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC", static_cast(object)); break; - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR", static_cast(object)); + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE", static_cast(object)); break; - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR", static_cast(object)); + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC", static_cast(object)); break; - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR", static_cast(object)); + case VK_STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC: + dump_enum(settings, "VK_STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC", static_cast(object)); break; - case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: - dump_enum(settings, "VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT", static_cast(object)); + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM", static_cast(object)); break; - case VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM: - dump_enum(settings, "VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM", static_cast(object)); + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM", static_cast(object)); break; - case VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR: - dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR", static_cast(object)); + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM", static_cast(object)); break; - case VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT: - dump_enum(settings, "VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT", static_cast(object)); + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT: + dump_enum(settings, "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT", static_cast(object)); break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); @@ -5533,6 +5590,9 @@ void dump_VkObjectType(const VkObjectType object, const ApiDumpSettings& setting case VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT: dump_enum(settings, "VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT", static_cast(object)); break; + case VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM: + dump_enum(settings, "VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM", static_cast(object)); + break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); } @@ -6451,6 +6511,15 @@ void dump_VkFormat(const VkFormat object, const ApiDumpSettings& settings, const case VK_FORMAT_R8_BOOL_ARM: dump_enum(settings, "VK_FORMAT_R8_BOOL_ARM", static_cast(object)); break; + case VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM: + dump_enum(settings, "VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM", static_cast(object)); + break; + case VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM: + dump_enum(settings, "VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM", static_cast(object)); + break; + case VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM: + dump_enum(settings, "VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM", static_cast(object)); + break; case VK_FORMAT_R16G16_SFIXED5_NV: dump_enum(settings, "VK_FORMAT_R16G16_SFIXED5_NV", static_cast(object)); break; @@ -6637,6 +6706,111 @@ void dump_VkSharingMode(const VkSharingMode object, const ApiDumpSettings& setti dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkImageLayout(const VkImageLayout object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_IMAGE_LAYOUT_UNDEFINED: + dump_enum(settings, "VK_IMAGE_LAYOUT_UNDEFINED", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_GENERAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_GENERAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_PREINITIALIZED: + dump_enum(settings, "VK_IMAGE_LAYOUT_PREINITIALIZED", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL: + dump_enum(settings, "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ: + dump_enum(settings, "VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: + dump_enum(settings, "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT: + dump_enum(settings, "VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM: + dump_enum(settings, "VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR: + dump_enum(settings, "VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR", static_cast(object)); + break; + case VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT: + dump_enum(settings, "VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkComponentSwizzle(const VkComponentSwizzle object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -6823,21 +6997,6 @@ void dump_VkSamplerAddressMode(const VkSamplerAddressMode object, const ApiDumpS dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkSamplerMipmapMode(const VkSamplerMipmapMode object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_SAMPLER_MIPMAP_MODE_NEAREST: - dump_enum(settings, "VK_SAMPLER_MIPMAP_MODE_NEAREST", static_cast(object)); - break; - case VK_SAMPLER_MIPMAP_MODE_LINEAR: - dump_enum(settings, "VK_SAMPLER_MIPMAP_MODE_LINEAR", static_cast(object)); - break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template void dump_VkCompareOp(const VkCompareOp object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -6871,6 +7030,21 @@ void dump_VkCompareOp(const VkCompareOp object, const ApiDumpSettings& settings, dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkSamplerMipmapMode(const VkSamplerMipmapMode object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_SAMPLER_MIPMAP_MODE_NEAREST: + dump_enum(settings, "VK_SAMPLER_MIPMAP_MODE_NEAREST", static_cast(object)); + break; + case VK_SAMPLER_MIPMAP_MODE_LINEAR: + dump_enum(settings, "VK_SAMPLER_MIPMAP_MODE_LINEAR", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkDescriptorType(const VkDescriptorType object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -7437,77 +7611,56 @@ void dump_VkFrontFace(const VkFrontFace object, const ApiDumpSettings& settings, dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkVertexInputRate(const VkVertexInputRate object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkLogicOp(const VkLogicOp object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { - case VK_VERTEX_INPUT_RATE_VERTEX: - dump_enum(settings, "VK_VERTEX_INPUT_RATE_VERTEX", static_cast(object)); - break; - case VK_VERTEX_INPUT_RATE_INSTANCE: - dump_enum(settings, "VK_VERTEX_INPUT_RATE_INSTANCE", static_cast(object)); + case VK_LOGIC_OP_CLEAR: + dump_enum(settings, "VK_LOGIC_OP_CLEAR", static_cast(object)); break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template -void dump_VkPrimitiveTopology(const VkPrimitiveTopology object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_POINT_LIST", static_cast(object)); + case VK_LOGIC_OP_AND: + dump_enum(settings, "VK_LOGIC_OP_AND", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_LIST", static_cast(object)); + case VK_LOGIC_OP_AND_REVERSE: + dump_enum(settings, "VK_LOGIC_OP_AND_REVERSE", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", static_cast(object)); + case VK_LOGIC_OP_COPY: + dump_enum(settings, "VK_LOGIC_OP_COPY", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", static_cast(object)); + case VK_LOGIC_OP_AND_INVERTED: + dump_enum(settings, "VK_LOGIC_OP_AND_INVERTED", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", static_cast(object)); + case VK_LOGIC_OP_NO_OP: + dump_enum(settings, "VK_LOGIC_OP_NO_OP", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", static_cast(object)); + case VK_LOGIC_OP_XOR: + dump_enum(settings, "VK_LOGIC_OP_XOR", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", static_cast(object)); + case VK_LOGIC_OP_OR: + dump_enum(settings, "VK_LOGIC_OP_OR", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", static_cast(object)); + case VK_LOGIC_OP_NOR: + dump_enum(settings, "VK_LOGIC_OP_NOR", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", static_cast(object)); + case VK_LOGIC_OP_EQUIVALENT: + dump_enum(settings, "VK_LOGIC_OP_EQUIVALENT", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", static_cast(object)); + case VK_LOGIC_OP_INVERT: + dump_enum(settings, "VK_LOGIC_OP_INVERT", static_cast(object)); break; - case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: - dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", static_cast(object)); + case VK_LOGIC_OP_OR_REVERSE: + dump_enum(settings, "VK_LOGIC_OP_OR_REVERSE", static_cast(object)); break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template -void dump_VkPolygonMode(const VkPolygonMode object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_POLYGON_MODE_FILL: - dump_enum(settings, "VK_POLYGON_MODE_FILL", static_cast(object)); + case VK_LOGIC_OP_COPY_INVERTED: + dump_enum(settings, "VK_LOGIC_OP_COPY_INVERTED", static_cast(object)); break; - case VK_POLYGON_MODE_LINE: - dump_enum(settings, "VK_POLYGON_MODE_LINE", static_cast(object)); + case VK_LOGIC_OP_OR_INVERTED: + dump_enum(settings, "VK_LOGIC_OP_OR_INVERTED", static_cast(object)); break; - case VK_POLYGON_MODE_POINT: - dump_enum(settings, "VK_POLYGON_MODE_POINT", static_cast(object)); + case VK_LOGIC_OP_NAND: + dump_enum(settings, "VK_LOGIC_OP_NAND", static_cast(object)); break; - case VK_POLYGON_MODE_FILL_RECTANGLE_NV: - dump_enum(settings, "VK_POLYGON_MODE_FILL_RECTANGLE_NV", static_cast(object)); + case VK_LOGIC_OP_SET: + dump_enum(settings, "VK_LOGIC_OP_SET", static_cast(object)); break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); @@ -7548,56 +7701,77 @@ void dump_VkStencilOp(const VkStencilOp object, const ApiDumpSettings& settings, dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkLogicOp(const VkLogicOp object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkVertexInputRate(const VkVertexInputRate object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { - case VK_LOGIC_OP_CLEAR: - dump_enum(settings, "VK_LOGIC_OP_CLEAR", static_cast(object)); + case VK_VERTEX_INPUT_RATE_VERTEX: + dump_enum(settings, "VK_VERTEX_INPUT_RATE_VERTEX", static_cast(object)); break; - case VK_LOGIC_OP_AND: - dump_enum(settings, "VK_LOGIC_OP_AND", static_cast(object)); + case VK_VERTEX_INPUT_RATE_INSTANCE: + dump_enum(settings, "VK_VERTEX_INPUT_RATE_INSTANCE", static_cast(object)); break; - case VK_LOGIC_OP_AND_REVERSE: - dump_enum(settings, "VK_LOGIC_OP_AND_REVERSE", static_cast(object)); + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkPrimitiveTopology(const VkPrimitiveTopology object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_POINT_LIST", static_cast(object)); break; - case VK_LOGIC_OP_COPY: - dump_enum(settings, "VK_LOGIC_OP_COPY", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_LIST", static_cast(object)); break; - case VK_LOGIC_OP_AND_INVERTED: - dump_enum(settings, "VK_LOGIC_OP_AND_INVERTED", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", static_cast(object)); break; - case VK_LOGIC_OP_NO_OP: - dump_enum(settings, "VK_LOGIC_OP_NO_OP", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", static_cast(object)); break; - case VK_LOGIC_OP_XOR: - dump_enum(settings, "VK_LOGIC_OP_XOR", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", static_cast(object)); break; - case VK_LOGIC_OP_OR: - dump_enum(settings, "VK_LOGIC_OP_OR", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", static_cast(object)); break; - case VK_LOGIC_OP_NOR: - dump_enum(settings, "VK_LOGIC_OP_NOR", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", static_cast(object)); break; - case VK_LOGIC_OP_EQUIVALENT: - dump_enum(settings, "VK_LOGIC_OP_EQUIVALENT", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", static_cast(object)); break; - case VK_LOGIC_OP_INVERT: - dump_enum(settings, "VK_LOGIC_OP_INVERT", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", static_cast(object)); break; - case VK_LOGIC_OP_OR_REVERSE: - dump_enum(settings, "VK_LOGIC_OP_OR_REVERSE", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", static_cast(object)); break; - case VK_LOGIC_OP_COPY_INVERTED: - dump_enum(settings, "VK_LOGIC_OP_COPY_INVERTED", static_cast(object)); + case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: + dump_enum(settings, "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", static_cast(object)); break; - case VK_LOGIC_OP_OR_INVERTED: - dump_enum(settings, "VK_LOGIC_OP_OR_INVERTED", static_cast(object)); + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkPolygonMode(const VkPolygonMode object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_POLYGON_MODE_FILL: + dump_enum(settings, "VK_POLYGON_MODE_FILL", static_cast(object)); break; - case VK_LOGIC_OP_NAND: - dump_enum(settings, "VK_LOGIC_OP_NAND", static_cast(object)); + case VK_POLYGON_MODE_LINE: + dump_enum(settings, "VK_POLYGON_MODE_LINE", static_cast(object)); break; - case VK_LOGIC_OP_SET: - dump_enum(settings, "VK_LOGIC_OP_SET", static_cast(object)); + case VK_POLYGON_MODE_POINT: + dump_enum(settings, "VK_POLYGON_MODE_POINT", static_cast(object)); + break; + case VK_POLYGON_MODE_FILL_RECTANGLE_NV: + dump_enum(settings, "VK_POLYGON_MODE_FILL_RECTANGLE_NV", static_cast(object)); break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); @@ -7662,6 +7836,21 @@ void dump_VkSubpassContents(const VkSubpassContents object, const ApiDumpSetting dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkPointClippingBehavior(const VkPointClippingBehavior object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES: + dump_enum(settings, "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES", static_cast(object)); + break; + case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY: + dump_enum(settings, "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkDescriptorUpdateTemplateType(const VkDescriptorUpdateTemplateType object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -7731,21 +7920,6 @@ void dump_VkChromaLocation(const VkChromaLocation object, const ApiDumpSettings& dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkPointClippingBehavior(const VkPointClippingBehavior object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES: - dump_enum(settings, "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES", static_cast(object)); - break; - case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY: - dump_enum(settings, "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY", static_cast(object)); - break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template void dump_VkTessellationDomainOrigin(const VkTessellationDomainOrigin object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -8256,6 +8430,24 @@ void dump_VkVideoEncodeTuningModeKHR(const VkVideoEncodeTuningModeKHR object, co dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkAccelerationStructureTypeKHR(const VkAccelerationStructureTypeKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR: + dump_enum(settings, "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR", static_cast(object)); + break; + case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR: + dump_enum(settings, "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR", static_cast(object)); + break; + case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR: + dump_enum(settings, "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkComponentTypeKHR(const VkComponentTypeKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -8424,6 +8616,48 @@ void dump_VkPhysicalDeviceLayeredApiKHR(const VkPhysicalDeviceLayeredApiKHR obje dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkDeviceFaultAddressTypeKHR(const VkDeviceFaultAddressTypeKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR", static_cast(object)); + break; + case VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR", static_cast(object)); + break; + case VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR", static_cast(object)); + break; + case VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR", static_cast(object)); + break; + case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR", static_cast(object)); + break; + case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR", static_cast(object)); + break; + case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkDeviceFaultVendorBinaryHeaderVersionKHR(const VkDeviceFaultVendorBinaryHeaderVersionKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR: + dump_enum(settings, "VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkDefaultVertexAttributeValueKHR(const VkDefaultVertexAttributeValueKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -8933,24 +9167,6 @@ void dump_VkGeometryTypeKHR(const VkGeometryTypeKHR object, const ApiDumpSetting dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkAccelerationStructureTypeKHR(const VkAccelerationStructureTypeKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR: - dump_enum(settings, "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR", static_cast(object)); - break; - case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR: - dump_enum(settings, "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR", static_cast(object)); - break; - case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR: - dump_enum(settings, "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR", static_cast(object)); - break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template void dump_VkCopyAccelerationStructureModeKHR(const VkCopyAccelerationStructureModeKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -9283,6 +9499,27 @@ void dump_VkDeviceMemoryReportEventTypeEXT(const VkDeviceMemoryReportEventTypeEX dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkPerfHintTypeQCOM(const VkPerfHintTypeQCOM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_PERF_HINT_TYPE_DEFAULT_QCOM: + dump_enum(settings, "VK_PERF_HINT_TYPE_DEFAULT_QCOM", static_cast(object)); + break; + case VK_PERF_HINT_TYPE_FREQUENCY_MIN_QCOM: + dump_enum(settings, "VK_PERF_HINT_TYPE_FREQUENCY_MIN_QCOM", static_cast(object)); + break; + case VK_PERF_HINT_TYPE_FREQUENCY_MAX_QCOM: + dump_enum(settings, "VK_PERF_HINT_TYPE_FREQUENCY_MAX_QCOM", static_cast(object)); + break; + case VK_PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM: + dump_enum(settings, "VK_PERF_HINT_TYPE_FREQUENCY_SCALED_QCOM", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkFragmentShadingRateTypeNV(const VkFragmentShadingRateTypeNV object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -9361,48 +9598,6 @@ void dump_VkAccelerationStructureMotionInstanceTypeNV(const VkAccelerationStruct dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkDeviceFaultAddressTypeEXT(const VkDeviceFaultAddressTypeEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT", static_cast(object)); - break; - case VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT", static_cast(object)); - break; - case VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT", static_cast(object)); - break; - case VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT", static_cast(object)); - break; - case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT", static_cast(object)); - break; - case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT", static_cast(object)); - break; - case VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT", static_cast(object)); - break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template -void dump_VkDeviceFaultVendorBinaryHeaderVersionEXT(const VkDeviceFaultVendorBinaryHeaderVersionEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - switch ((int64_t)object) { - case VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT: - dump_enum(settings, "VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT", static_cast(object)); - break; - default: - dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); - } - dump_end(settings, OutputConstruct::value, indents); -} -template void dump_VkDeviceAddressBindingTypeEXT(const VkDeviceAddressBindingTypeEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -9940,6 +10135,12 @@ void dump_VkDataGraphPipelineSessionBindPointARM(const VkDataGraphPipelineSessio case VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM: dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM", static_cast(object)); break; + case VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_OPTICAL_FLOW_CACHE_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_NEURAL_ACCELERATOR_STATISTICS_ARM", static_cast(object)); + break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); } @@ -9967,6 +10168,12 @@ void dump_VkDataGraphPipelinePropertyARM(const VkDataGraphPipelinePropertyARM ob case VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM: dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM", static_cast(object)); break; + case VK_DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_DEBUG_DATABASE_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_PROPERTY_NEURAL_ACCELERATOR_STATISTICS_INFO_ARM", static_cast(object)); + break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); } @@ -10003,6 +10210,24 @@ void dump_VkPhysicalDeviceDataGraphOperationTypeARM(const VkPhysicalDeviceDataGr case VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM: dump_enum(settings, "VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM", static_cast(object)); break; + case VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM: + dump_enum(settings, "VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARM", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkDataGraphTOSALevelARM(const VkDataGraphTOSALevelARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_DATA_GRAPH_TOSA_LEVEL_NONE_ARM: + dump_enum(settings, "VK_DATA_GRAPH_TOSA_LEVEL_NONE_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_TOSA_LEVEL_8K_ARM: + dump_enum(settings, "VK_DATA_GRAPH_TOSA_LEVEL_8K_ARM", static_cast(object)); + break; default: dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); } @@ -10249,6 +10474,99 @@ void dump_VkDataGraphModelCacheTypeQCOM(const VkDataGraphModelCacheTypeQCOM obje dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkDataGraphOpticalFlowPerformanceLevelARM(const VkDataGraphOpticalFlowPerformanceLevelARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM: + dump_enum(settings, "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM: + dump_enum(settings, "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM: + dump_enum(settings, "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM: + dump_enum(settings, "VK_DATA_GRAPH_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_ARM", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkDataGraphPipelineNodeTypeARM(const VkDataGraphPipelineNodeTypeARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_NODE_TYPE_OPTICAL_FLOW_ARM", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkDataGraphPipelineNodeConnectionTypeARM(const VkDataGraphPipelineNodeConnectionTypeARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARM", static_cast(object)); + break; + case VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM: + dump_enum(settings, "VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkThrottleHintTypeSEC(const VkThrottleHintTypeSEC object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_THROTTLE_HINT_TYPE_DEFAULT_SEC: + dump_enum(settings, "VK_THROTTLE_HINT_TYPE_DEFAULT_SEC", static_cast(object)); + break; + case VK_THROTTLE_HINT_TYPE_LOW_SEC: + dump_enum(settings, "VK_THROTTLE_HINT_TYPE_LOW_SEC", static_cast(object)); + break; + case VK_THROTTLE_HINT_TYPE_HIGH_SEC: + dump_enum(settings, "VK_THROTTLE_HINT_TYPE_HIGH_SEC", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template +void dump_VkNeuralAcceleratorStatisticsModeARM(const VkNeuralAcceleratorStatisticsModeARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + switch ((int64_t)object) { + case VK_NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM: + dump_enum(settings, "VK_NEURAL_ACCELERATOR_STATISTICS_MODE_DISABLED_ARM", static_cast(object)); + break; + case VK_NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM: + dump_enum(settings, "VK_NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS0_ARM", static_cast(object)); + break; + case VK_NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM: + dump_enum(settings, "VK_NEURAL_ACCELERATOR_STATISTICS_MODE_STATISTICS1_ARM", static_cast(object)); + break; + default: + dump_enum_with_value(settings, "UNKNOWN", static_cast(object)); + } + dump_end(settings, OutputConstruct::value, indents); +} +template void dump_VkBuildAccelerationStructureModeKHR(const VkBuildAccelerationStructureModeKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); switch ((int64_t)object) { @@ -10287,196 +10605,6 @@ void dump_VkShaderGroupShaderKHR(const VkShaderGroupShaderKHR object, const ApiD //========================= Bitmask Implementations =========================// -template -void dump_VkAccessFlagBits(const VkAccessFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - dump_value_start(settings); - settings.stream() << object; - bool is_first = true; - if (object & VK_ACCESS_INDIRECT_COMMAND_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_INDEX_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_INDEX_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_UNIFORM_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_UNIFORM_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_INPUT_ATTACHMENT_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_SHADER_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_SHADER_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_SHADER_WRITE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_SHADER_WRITE_BIT"; - is_first = false; - } - if (object & VK_ACCESS_COLOR_ATTACHMENT_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"; - is_first = false; - } - if (object & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; - is_first = false; - } - if (object & VK_ACCESS_TRANSFER_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFER_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_TRANSFER_WRITE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFER_WRITE_BIT"; - is_first = false; - } - if (object & VK_ACCESS_HOST_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_HOST_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_HOST_WRITE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_HOST_WRITE_BIT"; - is_first = false; - } - if (object & VK_ACCESS_MEMORY_READ_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_MEMORY_READ_BIT"; - is_first = false; - } - if (object & VK_ACCESS_MEMORY_WRITE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_MEMORY_WRITE_BIT"; - is_first = false; - } - if (object == VK_ACCESS_NONE) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_NONE"; - is_first = false; - } - if (object & VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"; - is_first = false; - } - if (object & VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; - is_first = false; - } - if (object & VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"; - is_first = false; - } - if (object & VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT"; - is_first = false; - } - if (object & VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT"; - is_first = false; - } - - if (!is_first) - settings.stream() << ")"; - dump_value_end(settings); - dump_end(settings, OutputConstruct::value, indents); -} - -template -void dump_VkImageAspectFlagBits(const VkImageAspectFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - dump_value_start(settings); - settings.stream() << object; - bool is_first = true; - if (object & VK_IMAGE_ASPECT_COLOR_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_COLOR_BIT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_DEPTH_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_DEPTH_BIT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_STENCIL_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_STENCIL_BIT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_METADATA_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_METADATA_BIT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_PLANE_0_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_PLANE_0_BIT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_PLANE_1_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_PLANE_1_BIT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_PLANE_2_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_PLANE_2_BIT"; - is_first = false; - } - if (object == VK_IMAGE_ASPECT_NONE) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_NONE"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"; - is_first = false; - } - if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"; - is_first = false; - } - - if (!is_first) - settings.stream() << ")"; - dump_value_end(settings); - dump_end(settings, OutputConstruct::value, indents); -} - template void dump_VkFormatFeatureFlagBits(const VkFormatFeatureFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -10700,6 +10828,10 @@ void dump_VkImageCreateFlagBits(const VkImageCreateFlagBits object, const ApiDum settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT"; is_first = false; } + if (object & VK_IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_CREATE_ALIAS_SINGLE_LAYER_DESCRIPTOR_BIT_KHR"; + is_first = false; + } if (!is_first) settings.stream() << ")"; @@ -11001,6 +11133,91 @@ void dump_VkQueueFlagBits(const VkQueueFlagBits object, const ApiDumpSettings& s dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkShaderStageFlagBits(const VkShaderStageFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_SHADER_STAGE_VERTEX_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_VERTEX_BIT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_GEOMETRY_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_GEOMETRY_BIT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_FRAGMENT_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_FRAGMENT_BIT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_COMPUTE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_COMPUTE_BIT"; + is_first = false; + } + if (object == VK_SHADER_STAGE_ALL_GRAPHICS) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_ALL_GRAPHICS"; + is_first = false; + } + if (object == VK_SHADER_STAGE_ALL) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_ALL"; + is_first = false; + } + if (object & VK_SHADER_STAGE_RAYGEN_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_RAYGEN_BIT_KHR"; + is_first = false; + } + if (object & VK_SHADER_STAGE_ANY_HIT_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_ANY_HIT_BIT_KHR"; + is_first = false; + } + if (object & VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"; + is_first = false; + } + if (object & VK_SHADER_STAGE_MISS_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_MISS_BIT_KHR"; + is_first = false; + } + if (object & VK_SHADER_STAGE_INTERSECTION_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_INTERSECTION_BIT_KHR"; + is_first = false; + } + if (object & VK_SHADER_STAGE_CALLABLE_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_CALLABLE_BIT_KHR"; + is_first = false; + } + if (object & VK_SHADER_STAGE_TASK_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_TASK_BIT_EXT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_MESH_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_MESH_BIT_EXT"; + is_first = false; + } + if (object & VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"; + is_first = false; + } + if (object & VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkDeviceQueueCreateFlagBits(const VkDeviceQueueCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -11161,13 +11378,57 @@ void dump_VkMemoryMapFlagBits(const VkMemoryMapFlagBits object, const ApiDumpSet } template -void dump_VkSparseMemoryBindFlagBits(const VkSparseMemoryBindFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkImageAspectFlagBits(const VkImageAspectFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_SPARSE_MEMORY_BIND_METADATA_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SPARSE_MEMORY_BIND_METADATA_BIT"; + if (object & VK_IMAGE_ASPECT_COLOR_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_COLOR_BIT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_DEPTH_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_DEPTH_BIT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_STENCIL_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_STENCIL_BIT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_METADATA_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_METADATA_BIT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_PLANE_0_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_PLANE_0_BIT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_PLANE_1_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_PLANE_1_BIT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_PLANE_2_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_PLANE_2_BIT"; + is_first = false; + } + if (object == VK_IMAGE_ASPECT_NONE) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_NONE"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"; + is_first = false; + } + if (object & VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"; is_first = false; } @@ -11202,6 +11463,23 @@ void dump_VkSparseImageFormatFlagBits(const VkSparseImageFormatFlagBits object, dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkSparseMemoryBindFlagBits(const VkSparseMemoryBindFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_SPARSE_MEMORY_BIND_METADATA_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SPARSE_MEMORY_BIND_METADATA_BIT"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkFenceCreateFlagBits(const VkFenceCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -11529,6 +11807,135 @@ void dump_VkImageViewCreateFlagBits(const VkImageViewCreateFlagBits object, cons dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkAccessFlagBits(const VkAccessFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_ACCESS_INDIRECT_COMMAND_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_INDEX_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_INDEX_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_UNIFORM_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_UNIFORM_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_INPUT_ATTACHMENT_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_SHADER_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_SHADER_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_SHADER_WRITE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_SHADER_WRITE_BIT"; + is_first = false; + } + if (object & VK_ACCESS_COLOR_ATTACHMENT_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"; + is_first = false; + } + if (object & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; + is_first = false; + } + if (object & VK_ACCESS_TRANSFER_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFER_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_TRANSFER_WRITE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFER_WRITE_BIT"; + is_first = false; + } + if (object & VK_ACCESS_HOST_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_HOST_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_HOST_WRITE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_HOST_WRITE_BIT"; + is_first = false; + } + if (object & VK_ACCESS_MEMORY_READ_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_MEMORY_READ_BIT"; + is_first = false; + } + if (object & VK_ACCESS_MEMORY_WRITE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_MEMORY_WRITE_BIT"; + is_first = false; + } + if (object == VK_ACCESS_NONE) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_NONE"; + is_first = false; + } + if (object & VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"; + is_first = false; + } + if (object & VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; + is_first = false; + } + if (object & VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"; + is_first = false; + } + if (object & VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkDependencyFlagBits(const VkDependencyFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -11609,21 +12016,13 @@ void dump_VkCommandPoolResetFlagBits(const VkCommandPoolResetFlagBits object, co } template -void dump_VkCommandBufferUsageFlagBits(const VkCommandBufferUsageFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkQueryControlFlagBits(const VkQueryControlFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"; - is_first = false; - } - if (object & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"; - is_first = false; - } - if (object & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"; + if (object & VK_QUERY_CONTROL_PRECISE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_QUERY_CONTROL_PRECISE_BIT"; is_first = false; } @@ -11634,13 +12033,21 @@ void dump_VkCommandBufferUsageFlagBits(const VkCommandBufferUsageFlagBits object } template -void dump_VkQueryControlFlagBits(const VkQueryControlFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkCommandBufferUsageFlagBits(const VkCommandBufferUsageFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_QUERY_CONTROL_PRECISE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_QUERY_CONTROL_PRECISE_BIT"; + if (object & VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"; + is_first = false; + } + if (object & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"; + is_first = false; + } + if (object & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"; is_first = false; } @@ -11843,17 +12250,17 @@ void dump_VkPipelineCreateFlagBits(const VkPipelineCreateFlagBits object, const } template -void dump_VkPipelineShaderStageCreateFlagBits(const VkPipelineShaderStageCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineLayoutCreateFlagBits(const VkPipelineLayoutCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"; + if (object & VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"; is_first = false; } - if (object & VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"; + if (object & VK_PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_LAYOUT_CREATE_NO_TASK_SHADER_BIT_KHR"; is_first = false; } @@ -11864,98 +12271,17 @@ void dump_VkPipelineShaderStageCreateFlagBits(const VkPipelineShaderStageCreateF } template -void dump_VkShaderStageFlagBits(const VkShaderStageFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineShaderStageCreateFlagBits(const VkPipelineShaderStageCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_SHADER_STAGE_VERTEX_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_VERTEX_BIT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_GEOMETRY_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_GEOMETRY_BIT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_FRAGMENT_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_FRAGMENT_BIT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_COMPUTE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_COMPUTE_BIT"; - is_first = false; - } - if (object == VK_SHADER_STAGE_ALL_GRAPHICS) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_ALL_GRAPHICS"; - is_first = false; - } - if (object == VK_SHADER_STAGE_ALL) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_ALL"; - is_first = false; - } - if (object & VK_SHADER_STAGE_RAYGEN_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_RAYGEN_BIT_KHR"; - is_first = false; - } - if (object & VK_SHADER_STAGE_ANY_HIT_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_ANY_HIT_BIT_KHR"; - is_first = false; - } - if (object & VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"; - is_first = false; - } - if (object & VK_SHADER_STAGE_MISS_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_MISS_BIT_KHR"; - is_first = false; - } - if (object & VK_SHADER_STAGE_INTERSECTION_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_INTERSECTION_BIT_KHR"; - is_first = false; - } - if (object & VK_SHADER_STAGE_CALLABLE_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_CALLABLE_BIT_KHR"; - is_first = false; - } - if (object & VK_SHADER_STAGE_TASK_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_TASK_BIT_EXT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_MESH_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_MESH_BIT_EXT"; - is_first = false; - } - if (object & VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"; - is_first = false; - } - if (object & VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI"; + if (object & VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"; is_first = false; } - - if (!is_first) - settings.stream() << ")"; - dump_value_end(settings); - dump_end(settings, OutputConstruct::value, indents); -} - -template -void dump_VkPipelineLayoutCreateFlagBits(const VkPipelineLayoutCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - dump_value_start(settings); - settings.stream() << object; - bool is_first = true; - if (object & VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT"; + if (object & VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"; is_first = false; } @@ -12131,17 +12457,13 @@ void dump_VkCullModeFlagBits(const VkCullModeFlagBits object, const ApiDumpSetti } template -void dump_VkPipelineDepthStencilStateCreateFlagBits(const VkPipelineDepthStencilStateCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineColorBlendStateCreateFlagBits(const VkPipelineColorBlendStateCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"; - is_first = false; - } - if (object & VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"; + if (object & VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT"; is_first = false; } @@ -12152,13 +12474,17 @@ void dump_VkPipelineDepthStencilStateCreateFlagBits(const VkPipelineDepthStencil } template -void dump_VkPipelineColorBlendStateCreateFlagBits(const VkPipelineColorBlendStateCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineDepthStencilStateCreateFlagBits(const VkPipelineDepthStencilStateCreateFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT"; + if (object & VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT"; + is_first = false; + } + if (object & VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT"; is_first = false; } @@ -12305,6 +12631,63 @@ void dump_VkStencilFaceFlagBits(const VkStencilFaceFlagBits object, const ApiDum dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkSubgroupFeatureFlagBits(const VkSubgroupFeatureFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_SUBGROUP_FEATURE_BASIC_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_BASIC_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_VOTE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_VOTE_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_ARITHMETIC_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_BALLOT_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_BALLOT_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_SHUFFLE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_CLUSTERED_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_QUAD_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_QUAD_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_ROTATE_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_ROTATE_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT"; + is_first = false; + } + if (object & VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkPeerMemoryFeatureFlagBits(const VkPeerMemoryFeatureFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -12615,63 +12998,6 @@ void dump_VkExternalSemaphoreFeatureFlagBits(const VkExternalSemaphoreFeatureFla dump_end(settings, OutputConstruct::value, indents); } -template -void dump_VkSubgroupFeatureFlagBits(const VkSubgroupFeatureFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - dump_value_start(settings); - settings.stream() << object; - bool is_first = true; - if (object & VK_SUBGROUP_FEATURE_BASIC_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_BASIC_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_VOTE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_VOTE_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_ARITHMETIC_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_BALLOT_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_BALLOT_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_SHUFFLE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_CLUSTERED_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_QUAD_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_QUAD_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_ROTATE_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_ROTATE_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT"; - is_first = false; - } - if (object & VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT"; - is_first = false; - } - - if (!is_first) - settings.stream() << ")"; - dump_value_end(settings); - dump_end(settings, OutputConstruct::value, indents); -} - template void dump_VkResolveModeFlagBits(const VkResolveModeFlagBits object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -13453,6 +13779,18 @@ void dump_VkFormatFeatureFlagBits2(const VkFormatFeatureFlagBits2 object, const settings.stream() << (is_first ? " (" : " | ") << "VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR"; is_first = false; } + if (object & VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_IMAGE_BIT_ARM"; + is_first = false; + } + if (object & VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_VECTOR_BIT_ARM"; + is_first = false; + } + if (object & VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_FORMAT_FEATURE_2_DATA_GRAPH_OPTICAL_FLOW_COST_BIT_ARM"; + is_first = false; + } if (!is_first) settings.stream() << ")"; @@ -13859,6 +14197,10 @@ void dump_VkPipelineCreateFlagBits2(const VkPipelineCreateFlagBits2 object, cons settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM"; is_first = false; } + if (object & VK_PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM"; + is_first = false; + } if (object & VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR) { settings.stream() << (is_first ? " (" : " | ") << "VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR"; is_first = false; @@ -14973,6 +15315,85 @@ void dump_VkVideoEncodeContentFlagBitsKHR(const VkVideoEncodeContentFlagBitsKHR dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkAddressCommandFlagBitsKHR(const VkAddressCommandFlagBitsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR"; + is_first = false; + } + if (object & VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR"; + is_first = false; + } + if (object & VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR"; + is_first = false; + } + if (object & VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR"; + is_first = false; + } + if (object & VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR"; + is_first = false; + } + if (object & VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + +template +void dump_VkConditionalRenderingFlagBitsEXT(const VkConditionalRenderingFlagBitsEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + +template +void dump_VkAccelerationStructureCreateFlagBitsKHR(const VkAccelerationStructureCreateFlagBitsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"; + is_first = false; + } + if (object & VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; + is_first = false; + } + if (object & VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV) { + settings.stream() << (is_first ? " (" : " | ") << "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkPresentScalingFlagBitsKHR(const VkPresentScalingFlagBitsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -15197,6 +15618,43 @@ void dump_VkVideoEncodeIntraRefreshModeFlagBitsKHR(const VkVideoEncodeIntraRefre dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkDeviceFaultFlagBitsKHR(const VkDeviceFaultFlagBitsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_DEVICE_FAULT_FLAG_DEVICE_LOST_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DEVICE_FAULT_FLAG_DEVICE_LOST_KHR"; + is_first = false; + } + if (object & VK_DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR"; + is_first = false; + } + if (object & VK_DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR"; + is_first = false; + } + if (object & VK_DEVICE_FAULT_FLAG_VENDOR_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DEVICE_FAULT_FLAG_VENDOR_KHR"; + is_first = false; + } + if (object & VK_DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR"; + is_first = false; + } + if (object & VK_DEVICE_FAULT_FLAG_OVERFLOW_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DEVICE_FAULT_FLAG_OVERFLOW_KHR"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkAccessFlagBits3KHR(const VkAccessFlagBits3KHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -15347,23 +15805,6 @@ void dump_VkExternalMemoryFeatureFlagBitsNV(const VkExternalMemoryFeatureFlagBit dump_end(settings, OutputConstruct::value, indents); } -template -void dump_VkConditionalRenderingFlagBitsEXT(const VkConditionalRenderingFlagBitsEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); - dump_value_start(settings); - settings.stream() << object; - bool is_first = true; - if (object & VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"; - is_first = false; - } - - if (!is_first) - settings.stream() << ")"; - dump_value_end(settings); - dump_end(settings, OutputConstruct::value, indents); -} - template void dump_VkSurfaceCounterFlagBitsEXT(const VkSurfaceCounterFlagBitsEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -16227,6 +16668,10 @@ void dump_VkPhysicalDeviceSchedulingControlsFlagBitsARM(const VkPhysicalDeviceSc settings.stream() << (is_first ? " (" : " | ") << "VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM"; is_first = false; } + if (object & VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_ARM"; + is_first = false; + } if (!is_first) settings.stream() << ")"; @@ -16447,6 +16892,10 @@ void dump_VkShaderCreateFlagBitsEXT(const VkShaderCreateFlagBitsEXT object, cons settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT"; is_first = false; } + if (object & VK_SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM"; + is_first = false; + } if (object & VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT) { settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"; is_first = false; @@ -16479,6 +16928,10 @@ void dump_VkShaderCreateFlagBitsEXT(const VkShaderCreateFlagBitsEXT object, cons settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_CREATE_64_BIT_INDEXING_BIT_EXT"; is_first = false; } + if (object & VK_SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR) { + settings.stream() << (is_first ? " (" : " | ") << "VK_SHADER_CREATE_INDEPENDENT_SETS_BIT_KHR"; + is_first = false; + } if (!is_first) settings.stream() << ")"; @@ -16496,6 +16949,10 @@ void dump_VkDataGraphPipelineSessionCreateFlagBitsARM(const VkDataGraphPipelineS settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM"; is_first = false; } + if (object & VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_OPTICAL_FLOW_CACHE_BIT_ARM"; + is_first = false; + } if (!is_first) settings.stream() << ")"; @@ -16516,6 +16973,35 @@ void dump_VkDataGraphPipelineDispatchFlagBitsARM(const VkDataGraphPipelineDispat dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkDataGraphTOSAQualityFlagBitsARM(const VkDataGraphTOSAQualityFlagBitsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_TOSA_QUALITY_ACCELERATED_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_TOSA_QUALITY_CONFORMANT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_TOSA_QUALITY_EXPERIMENTAL_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_TOSA_QUALITY_DEPRECATED_ARM"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} + template void dump_VkClusterAccelerationStructureAddressResolutionFlagBitsNV(const VkClusterAccelerationStructureAddressResolutionFlagBitsNV object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); @@ -16700,21 +17186,29 @@ void dump_VkIndirectCommandsLayoutUsageFlagBitsEXT(const VkIndirectCommandsLayou } template -void dump_VkAccelerationStructureCreateFlagBitsKHR(const VkAccelerationStructureCreateFlagBitsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkDataGraphOpticalFlowGridSizeFlagBitsARM(const VkDataGraphOpticalFlowGridSizeFlagBitsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value_start(settings); settings.stream() << object; bool is_first = true; - if (object & VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"; + if (object == VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_ARM"; is_first = false; } - if (object & VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT"; + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_ARM"; is_first = false; } - if (object & VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV) { - settings.stream() << (is_first ? " (" : " | ") << "VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"; + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_ARM"; is_first = false; } @@ -16724,16 +17218,99 @@ void dump_VkAccelerationStructureCreateFlagBitsKHR(const VkAccelerationStructure dump_end(settings, OutputConstruct::value, indents); } -//=========================== Flag Implementations ==========================// +template +void dump_VkDataGraphOpticalFlowCreateFlagBitsARM(const VkDataGraphOpticalFlowCreateFlagBitsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_HINT_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_ENABLE_COST_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_RESERVED_30_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_CREATE_RESERVED_30_BIT_ARM"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); +} template -void dump_VkAccessFlags(const VkAccessFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkAccessFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +void dump_VkDataGraphOpticalFlowImageUsageFlagBitsARM(const VkDataGraphOpticalFlowImageUsageFlagBitsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object == VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_UNKNOWN_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_UNKNOWN_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_INPUT_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_OUTPUT_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_HINT_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_IMAGE_USAGE_COST_BIT_ARM"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); } + template -void dump_VkImageAspectFlags(const VkImageAspectFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkImageAspectFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +void dump_VkDataGraphOpticalFlowExecuteFlagBitsARM(const VkDataGraphOpticalFlowExecuteFlagBitsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value_start(settings); + settings.stream() << object; + bool is_first = true; + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_UNCHANGED_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_UNCHANGED_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_INPUT_IS_PREVIOUS_REFERENCE_BIT_ARM"; + is_first = false; + } + if (object & VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM) { + settings.stream() << (is_first ? " (" : " | ") << "VK_DATA_GRAPH_OPTICAL_FLOW_EXECUTE_REFERENCE_IS_PREVIOUS_INPUT_BIT_ARM"; + is_first = false; + } + + if (!is_first) + settings.stream() << ")"; + dump_value_end(settings); + dump_end(settings, OutputConstruct::value, indents); } + +//=========================== Flag Implementations ==========================// + template void dump_VkFormatFeatureFlags(const VkFormatFeatureFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkFormatFeatureFlagBits(static_cast(object), settings, type_name, var_name, indents, address); @@ -16767,6 +17344,10 @@ void dump_VkQueueFlags(const VkQueueFlags object, const ApiDumpSettings& setting dump_VkQueueFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkShaderStageFlags(const VkShaderStageFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkShaderStageFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkDeviceCreateFlags(const VkDeviceCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); @@ -16785,14 +17366,18 @@ void dump_VkMemoryMapFlags(const VkMemoryMapFlags object, const ApiDumpSettings& dump_VkMemoryMapFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkSparseMemoryBindFlags(const VkSparseMemoryBindFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkSparseMemoryBindFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +void dump_VkImageAspectFlags(const VkImageAspectFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkImageAspectFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template void dump_VkSparseImageFormatFlags(const VkSparseImageFormatFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkSparseImageFormatFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkSparseMemoryBindFlags(const VkSparseMemoryBindFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkSparseMemoryBindFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkFenceCreateFlags(const VkFenceCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkFenceCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } @@ -16827,6 +17412,10 @@ void dump_VkImageViewCreateFlags(const VkImageViewCreateFlags object, const ApiD dump_VkImageViewCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkAccessFlags(const VkAccessFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkAccessFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkDependencyFlags(const VkDependencyFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkDependencyFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } @@ -16839,14 +17428,14 @@ void dump_VkCommandPoolResetFlags(const VkCommandPoolResetFlags object, const Ap dump_VkCommandPoolResetFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkCommandBufferUsageFlags(const VkCommandBufferUsageFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkCommandBufferUsageFlagBits(static_cast(object), settings, type_name, var_name, indents, address); -} -template void dump_VkQueryControlFlags(const VkQueryControlFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkQueryControlFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkCommandBufferUsageFlags(const VkCommandBufferUsageFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkCommandBufferUsageFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkCommandBufferResetFlags(const VkCommandBufferResetFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkCommandBufferResetFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } @@ -16875,16 +17464,12 @@ void dump_VkPipelineCreateFlags(const VkPipelineCreateFlags object, const ApiDum dump_VkPipelineCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkPipelineShaderStageCreateFlags(const VkPipelineShaderStageCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkPipelineShaderStageCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); -} -template void dump_VkPipelineLayoutCreateFlags(const VkPipelineLayoutCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkPipelineLayoutCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkShaderStageFlags(const VkShaderStageFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkShaderStageFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +void dump_VkPipelineShaderStageCreateFlags(const VkPipelineShaderStageCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkPipelineShaderStageCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template void dump_VkSamplerCreateFlags(const VkSamplerCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { @@ -16913,7 +17498,15 @@ void dump_VkCullModeFlags(const VkCullModeFlags object, const ApiDumpSettings& s dump_VkCullModeFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkPipelineVertexInputStateCreateFlags(const VkPipelineVertexInputStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineColorBlendStateCreateFlags(const VkPipelineColorBlendStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkPipelineColorBlendStateCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkPipelineDepthStencilStateCreateFlags(const VkPipelineDepthStencilStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkPipelineDepthStencilStateCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkPipelineDynamicStateCreateFlags(const VkPipelineDynamicStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); dump_end(settings, OutputConstruct::value, indents); @@ -16925,39 +17518,31 @@ void dump_VkPipelineInputAssemblyStateCreateFlags(const VkPipelineInputAssemblyS dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkPipelineTessellationStateCreateFlags(const VkPipelineTessellationStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineMultisampleStateCreateFlags(const VkPipelineMultisampleStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkPipelineViewportStateCreateFlags(const VkPipelineViewportStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineRasterizationStateCreateFlags(const VkPipelineRasterizationStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkPipelineRasterizationStateCreateFlags(const VkPipelineRasterizationStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineTessellationStateCreateFlags(const VkPipelineTessellationStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkPipelineMultisampleStateCreateFlags(const VkPipelineMultisampleStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineVertexInputStateCreateFlags(const VkPipelineVertexInputStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkPipelineDepthStencilStateCreateFlags(const VkPipelineDepthStencilStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkPipelineDepthStencilStateCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); -} -template -void dump_VkPipelineColorBlendStateCreateFlags(const VkPipelineColorBlendStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkPipelineColorBlendStateCreateFlagBits(static_cast(object), settings, type_name, var_name, indents, address); -} -template -void dump_VkPipelineDynamicStateCreateFlags(const VkPipelineDynamicStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineViewportStateCreateFlags(const VkPipelineViewportStateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); dump_end(settings, OutputConstruct::value, indents); @@ -16983,6 +17568,10 @@ void dump_VkStencilFaceFlags(const VkStencilFaceFlags object, const ApiDumpSetti dump_VkStencilFaceFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkSubgroupFeatureFlags(const VkSubgroupFeatureFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkSubgroupFeatureFlagBits(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkPeerMemoryFeatureFlags(const VkPeerMemoryFeatureFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkPeerMemoryFeatureFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } @@ -17029,10 +17618,6 @@ void dump_VkExternalSemaphoreFeatureFlags(const VkExternalSemaphoreFeatureFlags dump_VkExternalSemaphoreFeatureFlagBits(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkSubgroupFeatureFlags(const VkSubgroupFeatureFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkSubgroupFeatureFlagBits(static_cast(object), settings, type_name, var_name, indents, address); -} -template void dump_VkDescriptorUpdateTemplateCreateFlags(const VkDescriptorUpdateTemplateCreateFlags object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); dump_value(settings, object); @@ -17101,14 +17686,14 @@ void dump_VkPipelineCreateFlags2(const VkPipelineCreateFlags2 object, const ApiD dump_VkPipelineCreateFlagBits2(static_cast(object), settings, type_name, var_name, indents, address); } template -void dump_VkCompositeAlphaFlagsKHR(const VkCompositeAlphaFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkCompositeAlphaFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); -} -template void dump_VkSurfaceTransformFlagsKHR(const VkSurfaceTransformFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkSurfaceTransformFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkCompositeAlphaFlagsKHR(const VkCompositeAlphaFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkCompositeAlphaFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkSwapchainCreateFlagsKHR(const VkSwapchainCreateFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkSwapchainCreateFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); } @@ -17301,6 +17886,18 @@ void dump_VkVideoEncodeRateControlFlagsKHR(const VkVideoEncodeRateControlFlagsKH dump_end(settings, OutputConstruct::value, indents); } template +void dump_VkAddressCommandFlagsKHR(const VkAddressCommandFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkAddressCommandFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkConditionalRenderingFlagsEXT(const VkConditionalRenderingFlagsEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkConditionalRenderingFlagBitsEXT(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkAccelerationStructureCreateFlagsKHR(const VkAccelerationStructureCreateFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkAccelerationStructureCreateFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkPresentScalingFlagsKHR(const VkPresentScalingFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkPresentScalingFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); } @@ -17333,6 +17930,10 @@ void dump_VkVideoEncodeIntraRefreshModeFlagsKHR(const VkVideoEncodeIntraRefreshM dump_VkVideoEncodeIntraRefreshModeFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkDeviceFaultFlagsKHR(const VkDeviceFaultFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkDeviceFaultFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkAccessFlags3KHR(const VkAccessFlags3KHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkAccessFlagBits3KHR(static_cast(object), settings, type_name, var_name, indents, address); } @@ -17379,10 +17980,6 @@ void dump_VkViSurfaceCreateFlagsNN(const VkViSurfaceCreateFlagsNN object, const } #endif // VK_USE_PLATFORM_VI_NN template -void dump_VkConditionalRenderingFlagsEXT(const VkConditionalRenderingFlagsEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkConditionalRenderingFlagBitsEXT(static_cast(object), settings, type_name, var_name, indents, address); -} -template void dump_VkSurfaceCounterFlagsEXT(const VkSurfaceCounterFlagsEXT object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkSurfaceCounterFlagBitsEXT(static_cast(object), settings, type_name, var_name, indents, address); } @@ -17691,6 +18288,10 @@ void dump_VkDataGraphPipelineDispatchFlagsARM(const VkDataGraphPipelineDispatchF dump_VkDataGraphPipelineDispatchFlagBitsARM(static_cast(object), settings, type_name, var_name, indents, address); } template +void dump_VkDataGraphTOSAQualityFlagsARM(const VkDataGraphTOSAQualityFlagsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkDataGraphTOSAQualityFlagBitsARM(static_cast(object), settings, type_name, var_name, indents, address); +} +template void dump_VkClusterAccelerationStructureAddressResolutionFlagsNV(const VkClusterAccelerationStructureAddressResolutionFlagsNV object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_VkClusterAccelerationStructureAddressResolutionFlagBitsNV(static_cast(object), settings, type_name, var_name, indents, address); } @@ -17733,9 +18334,35 @@ void dump_VkPerformanceCounterDescriptionFlagsARM(const VkPerformanceCounterDesc dump_end(settings, OutputConstruct::value, indents); } template -void dump_VkAccelerationStructureCreateFlagsKHR(const VkAccelerationStructureCreateFlagsKHR object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_VkAccelerationStructureCreateFlagBitsKHR(static_cast(object), settings, type_name, var_name, indents, address); +void dump_VkShaderInstrumentationValuesFlagsARM(const VkShaderInstrumentationValuesFlagsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value(settings, object); + dump_end(settings, OutputConstruct::value, indents); } +template +void dump_VkDataGraphOpticalFlowGridSizeFlagsARM(const VkDataGraphOpticalFlowGridSizeFlagsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkDataGraphOpticalFlowGridSizeFlagBitsARM(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkDataGraphOpticalFlowCreateFlagsARM(const VkDataGraphOpticalFlowCreateFlagsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkDataGraphOpticalFlowCreateFlagBitsARM(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkDataGraphOpticalFlowImageUsageFlagsARM(const VkDataGraphOpticalFlowImageUsageFlagsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkDataGraphOpticalFlowImageUsageFlagBitsARM(static_cast(object), settings, type_name, var_name, indents, address); +} +template +void dump_VkDataGraphOpticalFlowExecuteFlagsARM(const VkDataGraphOpticalFlowExecuteFlagsARM object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_VkDataGraphOpticalFlowExecuteFlagBitsARM(static_cast(object), settings, type_name, var_name, indents, address); +} +#if defined(VK_USE_PLATFORM_UBM_SEC) +template +void dump_VkUbmSurfaceCreateFlagsSEC(const VkUbmSurfaceCreateFlagsSEC object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::value, type_name, var_name, indents, address); + dump_value(settings, object); + dump_end(settings, OutputConstruct::value, indents); +} +#endif // VK_USE_PLATFORM_UBM_SEC //======================= Func Pointer Implementations ======================// @@ -20070,87 +20697,6 @@ void dump_VkBaseOutStructure(const VkBaseOutStructure& object, const ApiDumpSett dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkBufferMemoryBarrier(const VkBufferMemoryBarrier& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.srcQueueFamilyIndex, settings, "uint32_t", "srcQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.dstQueueFamilyIndex, settings, "uint32_t", "dstQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkBuffer(object.buffer, settings, "VkBuffer", "buffer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.offset, settings, "VkDeviceSize", "offset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); - } - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkImageSubresourceRange(const VkImageSubresourceRange& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkImageAspectFlags(object.aspectMask, settings, "VkImageAspectFlags", "aspectMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.baseMipLevel, settings, "uint32_t", "baseMipLevel", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.levelCount, settings, "uint32_t", "levelCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.baseArrayLayer, settings, "uint32_t", "baseArrayLayer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.layerCount, settings, "uint32_t", "layerCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkImageMemoryBarrier(const VkImageMemoryBarrier& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkImageLayout(object.oldLayout, settings, "VkImageLayout", "oldLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkImageLayout(object.newLayout, settings, "VkImageLayout", "newLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.srcQueueFamilyIndex, settings, "uint32_t", "srcQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.dstQueueFamilyIndex, settings, "uint32_t", "dstQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkImage(object.image, settings, "VkImage", "image", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkImageSubresourceRange(object.subresourceRange, settings, "VkImageSubresourceRange", "subresourceRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); - } - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkMemoryBarrier(const VkMemoryBarrier& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); - } - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkAllocationCallbacks(const VkAllocationCallbacks& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_type(object.pUserData, settings, "void*", "pUserData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -20774,57 +21320,71 @@ void dump_VkMemoryRequirements(const VkMemoryRequirements& object, const ApiDump dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSparseMemoryBind(const VkSparseMemoryBind& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkImageSubresource(const VkImageSubresource& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.resourceOffset, settings, "VkDeviceSize", "resourceOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkImageAspectFlags(object.aspectMask, settings, "VkImageAspectFlags", "aspectMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.mipLevel, settings, "uint32_t", "mipLevel", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkDeviceMemory(object.memory, settings, "VkDeviceMemory", "memory", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.arrayLayer, settings, "uint32_t", "arrayLayer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkSparseImageFormatProperties(const VkSparseImageFormatProperties& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkImageAspectFlags(object.aspectMask, settings, "VkImageAspectFlags", "aspectMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.memoryOffset, settings, "VkDeviceSize", "memoryOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkExtent3D(object.imageGranularity, settings, "VkExtent3D", "imageGranularity", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkSparseMemoryBindFlags(object.flags, settings, "VkSparseMemoryBindFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkSparseImageFormatFlags(object.flags, settings, "VkSparseImageFormatFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSparseBufferMemoryBindInfo(const VkSparseBufferMemoryBindInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSparseImageMemoryBind(const VkSparseImageMemoryBind& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkBuffer(object.buffer, settings, "VkBuffer", "buffer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkImageSubresource(object.subresource, settings, "VkImageSubresource", "subresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.bindCount, settings, "uint32_t", "bindCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkOffset3D(object.offset, settings, "VkOffset3D", "offset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pBinds, object.bindCount, settings, "const VkSparseMemoryBind*", "pBinds", "const VkSparseMemoryBind", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSparseMemoryBind); + dump_VkExtent3D(object.extent, settings, "VkExtent3D", "extent", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceMemory(object.memory, settings, "VkDeviceMemory", "memory", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.memoryOffset, settings, "VkDeviceSize", "memoryOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkSparseMemoryBindFlags(object.flags, settings, "VkSparseMemoryBindFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSparseImageOpaqueMemoryBindInfo(const VkSparseImageOpaqueMemoryBindInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSparseImageMemoryBindInfo(const VkSparseImageMemoryBindInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkImage(object.image, settings, "VkImage", "image", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_type(object.bindCount, settings, "uint32_t", "bindCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pBinds, object.bindCount, settings, "const VkSparseMemoryBind*", "pBinds", "const VkSparseMemoryBind", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSparseMemoryBind); + dump_pointer_array(object.pBinds, object.bindCount, settings, "const VkSparseImageMemoryBind*", "pBinds", "const VkSparseImageMemoryBind", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSparseImageMemoryBind); dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkImageSubresource(const VkImageSubresource& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSparseImageMemoryRequirements(const VkSparseImageMemoryRequirements& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkImageAspectFlags(object.aspectMask, settings, "VkImageAspectFlags", "aspectMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkSparseImageFormatProperties(object.formatProperties, settings, "VkSparseImageFormatProperties", "formatProperties", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.mipLevel, settings, "uint32_t", "mipLevel", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.imageMipTailFirstLod, settings, "uint32_t", "imageMipTailFirstLod", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.arrayLayer, settings, "uint32_t", "arrayLayer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.imageMipTailSize, settings, "VkDeviceSize", "imageMipTailSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.imageMipTailOffset, settings, "VkDeviceSize", "imageMipTailOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.imageMipTailStride, settings, "VkDeviceSize", "imageMipTailStride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSparseImageMemoryBind(const VkSparseImageMemoryBind& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSparseMemoryBind(const VkSparseMemoryBind& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkImageSubresource(object.subresource, settings, "VkImageSubresource", "subresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkOffset3D(object.offset, settings, "VkOffset3D", "offset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.resourceOffset, settings, "VkDeviceSize", "resourceOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkExtent3D(object.extent, settings, "VkExtent3D", "extent", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_VkDeviceMemory(object.memory, settings, "VkDeviceMemory", "memory", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); @@ -20834,13 +21394,23 @@ void dump_VkSparseImageMemoryBind(const VkSparseImageMemoryBind& object, const A dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSparseImageMemoryBindInfo(const VkSparseImageMemoryBindInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSparseBufferMemoryBindInfo(const VkSparseBufferMemoryBindInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkBuffer(object.buffer, settings, "VkBuffer", "buffer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.bindCount, settings, "uint32_t", "bindCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pBinds, object.bindCount, settings, "const VkSparseMemoryBind*", "pBinds", "const VkSparseMemoryBind", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSparseMemoryBind); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkSparseImageOpaqueMemoryBindInfo(const VkSparseImageOpaqueMemoryBindInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkImage(object.image, settings, "VkImage", "image", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_type(object.bindCount, settings, "uint32_t", "bindCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pBinds, object.bindCount, settings, "const VkSparseImageMemoryBind*", "pBinds", "const VkSparseImageMemoryBind", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSparseImageMemoryBind); + dump_pointer_array(object.pBinds, object.bindCount, settings, "const VkSparseMemoryBind*", "pBinds", "const VkSparseMemoryBind", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSparseMemoryBind); dump_end(settings, OutputConstruct::api_struct, indents); } template @@ -20875,30 +21445,6 @@ void dump_VkBindSparseInfo(const VkBindSparseInfo& object, const ApiDumpSettings dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSparseImageFormatProperties(const VkSparseImageFormatProperties& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkImageAspectFlags(object.aspectMask, settings, "VkImageAspectFlags", "aspectMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkExtent3D(object.imageGranularity, settings, "VkExtent3D", "imageGranularity", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkSparseImageFormatFlags(object.flags, settings, "VkSparseImageFormatFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkSparseImageMemoryRequirements(const VkSparseImageMemoryRequirements& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkSparseImageFormatProperties(object.formatProperties, settings, "VkSparseImageFormatProperties", "formatProperties", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.imageMipTailFirstLod, settings, "uint32_t", "imageMipTailFirstLod", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.imageMipTailSize, settings, "VkDeviceSize", "imageMipTailSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.imageMipTailOffset, settings, "VkDeviceSize", "imageMipTailOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.imageMipTailStride, settings, "VkDeviceSize", "imageMipTailStride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkFenceCreateInfo(const VkFenceCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -21046,6 +21592,20 @@ void dump_VkComponentMapping(const VkComponentMapping& object, const ApiDumpSett dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkImageSubresourceRange(const VkImageSubresourceRange& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkImageAspectFlags(object.aspectMask, settings, "VkImageAspectFlags", "aspectMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.baseMipLevel, settings, "uint32_t", "baseMipLevel", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.levelCount, settings, "uint32_t", "levelCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.baseArrayLayer, settings, "uint32_t", "baseArrayLayer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.layerCount, settings, "uint32_t", "layerCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkImageViewCreateInfo(const VkImageViewCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -21199,6 +21759,73 @@ void dump_VkImageCopy(const VkImageCopy& object, const ApiDumpSettings& settings dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkBufferMemoryBarrier(const VkBufferMemoryBarrier& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.srcQueueFamilyIndex, settings, "uint32_t", "srcQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.dstQueueFamilyIndex, settings, "uint32_t", "dstQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkBuffer(object.buffer, settings, "VkBuffer", "buffer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.offset, settings, "VkDeviceSize", "offset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkImageMemoryBarrier(const VkImageMemoryBarrier& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImageLayout(object.oldLayout, settings, "VkImageLayout", "oldLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImageLayout(object.newLayout, settings, "VkImageLayout", "newLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.srcQueueFamilyIndex, settings, "uint32_t", "srcQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.dstQueueFamilyIndex, settings, "uint32_t", "dstQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImage(object.image, settings, "VkImage", "image", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImageSubresourceRange(object.subresourceRange, settings, "VkImageSubresourceRange", "subresourceRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkMemoryBarrier(const VkMemoryBarrier& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkDispatchIndirectCommand(const VkDispatchIndirectCommand& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_type(object.x, settings, "uint32_t", "x", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -21649,13 +22276,21 @@ void dump_VkDrawIndirectCommand(const VkDrawIndirectCommand& object, const ApiDu dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkVertexInputBindingDescription(const VkVertexInputBindingDescription& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkStencilOpState(const VkStencilOpState& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.binding, settings, "uint32_t", "binding", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkStencilOp(object.failOp, settings, "VkStencilOp", "failOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.stride, settings, "uint32_t", "stride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkStencilOp(object.passOp, settings, "VkStencilOp", "passOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkVertexInputRate(object.inputRate, settings, "VkVertexInputRate", "inputRate", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkStencilOp(object.depthFailOp, settings, "VkStencilOp", "depthFailOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkCompareOp(object.compareOp, settings, "VkCompareOp", "compareOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.compareMask, settings, "uint32_t", "compareMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.writeMask, settings, "uint32_t", "writeMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.reference, settings, "uint32_t", "reference", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template @@ -21671,139 +22306,134 @@ void dump_VkVertexInputAttributeDescription(const VkVertexInputAttributeDescript dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkVertexInputBindingDescription(const VkVertexInputBindingDescription& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.binding, settings, "uint32_t", "binding", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.stride, settings, "uint32_t", "stride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineVertexInputStateCreateFlags(object.flags, settings, "VkPipelineVertexInputStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkVertexInputRate(object.inputRate, settings, "VkVertexInputRate", "inputRate", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkViewport(const VkViewport& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type(object.x, settings, "float", "x", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.vertexBindingDescriptionCount, settings, "uint32_t", "vertexBindingDescriptionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.y, settings, "float", "y", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pVertexBindingDescriptions, object.vertexBindingDescriptionCount, settings, "const VkVertexInputBindingDescription*", "pVertexBindingDescriptions", "const VkVertexInputBindingDescription", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkVertexInputBindingDescription); + dump_type(object.width, settings, "float", "width", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.vertexAttributeDescriptionCount, settings, "uint32_t", "vertexAttributeDescriptionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.height, settings, "float", "height", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pVertexAttributeDescriptions, object.vertexAttributeDescriptionCount, settings, "const VkVertexInputAttributeDescription*", "pVertexAttributeDescriptions", "const VkVertexInputAttributeDescription", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkVertexInputAttributeDescription); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); - } + dump_type(object.minDepth, settings, "float", "minDepth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxDepth, settings, "float", "maxDepth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineColorBlendAttachmentState(const VkPipelineColorBlendAttachmentState& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.blendEnable, settings, "VkBool32", "blendEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkBlendFactor(object.srcColorBlendFactor, settings, "VkBlendFactor", "srcColorBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineInputAssemblyStateCreateFlags(object.flags, settings, "VkPipelineInputAssemblyStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkBlendFactor(object.dstColorBlendFactor, settings, "VkBlendFactor", "dstColorBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPrimitiveTopology(object.topology, settings, "VkPrimitiveTopology", "topology", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkBlendOp(object.colorBlendOp, settings, "VkBlendOp", "colorBlendOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.primitiveRestartEnable, settings, "VkBool32", "primitiveRestartEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); - } + dump_VkBlendFactor(object.srcAlphaBlendFactor, settings, "VkBlendFactor", "srcAlphaBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkBlendFactor(object.dstAlphaBlendFactor, settings, "VkBlendFactor", "dstAlphaBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkBlendOp(object.alphaBlendOp, settings, "VkBlendOp", "alphaBlendOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkColorComponentFlags(object.colorWriteMask, settings, "VkColorComponentFlags", "colorWriteMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineTessellationStateCreateFlags(object.flags, settings, "VkPipelineTessellationStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineColorBlendStateCreateFlags(object.flags, settings, "VkPipelineColorBlendStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.patchControlPoints, settings, "uint32_t", "patchControlPoints", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.logicOpEnable, settings, "VkBool32", "logicOpEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkLogicOp(object.logicOp, settings, "VkLogicOp", "logicOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.attachmentCount, settings, "uint32_t", "attachmentCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pAttachments, object.attachmentCount, settings, "const VkPipelineColorBlendAttachmentState*", "pAttachments", "const VkPipelineColorBlendAttachmentState", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkPipelineColorBlendAttachmentState); + dump_separate_members(settings); + dump_single_array(object.blendConstants, 4, settings, "float[4]", "blendConstants", "float", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkViewport(const VkViewport& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.x, settings, "float", "x", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.y, settings, "float", "y", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.width, settings, "float", "width", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineDepthStencilStateCreateFlags(object.flags, settings, "VkPipelineDepthStencilStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.height, settings, "float", "height", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthTestEnable, settings, "VkBool32", "depthTestEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.minDepth, settings, "float", "minDepth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthWriteEnable, settings, "VkBool32", "depthWriteEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.maxDepth, settings, "float", "maxDepth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkCompareOp(object.depthCompareOp, settings, "VkCompareOp", "depthCompareOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthBoundsTestEnable, settings, "VkBool32", "depthBoundsTestEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineViewportStateCreateFlags(object.flags, settings, "VkPipelineViewportStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.stencilTestEnable, settings, "VkBool32", "stencilTestEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.viewportCount, settings, "uint32_t", "viewportCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkStencilOpState(object.front, settings, "VkStencilOpState", "front", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - if (!ApiDumpInstance::current().getIsDynamicViewport()) { - dump_pointer_array(object.pViewports, object.viewportCount, settings, "const VkViewport*", "pViewports", "const VkViewport", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkViewport); - } else { - if constexpr (Format == ApiDumpFormat::Text || Format == ApiDumpFormat::Html) { - dump_special("UNUSED", settings, "const VkViewport*", "pViewports", indents + 1); - } else if constexpr (Format == ApiDumpFormat::Json) { - dump_json_UNUSED(settings, "const VkViewport*", "pViewports", indents + 2); - } - } + dump_VkStencilOpState(object.back, settings, "VkStencilOpState", "back", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.scissorCount, settings, "uint32_t", "scissorCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.minDepthBounds, settings, "float", "minDepthBounds", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - if (!ApiDumpInstance::current().getIsDynamicScissor()) { - dump_pointer_array(object.pScissors, object.scissorCount, settings, "const VkRect2D*", "pScissors", "const VkRect2D", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkRect2D); - } else { - if constexpr (Format == ApiDumpFormat::Text || Format == ApiDumpFormat::Html) { - dump_special("UNUSED", settings, "const VkRect2D*", "pScissors", indents + 1); - } else if constexpr (Format == ApiDumpFormat::Json) { - dump_json_UNUSED(settings, "const VkRect2D*", "pScissors", indents + 2); - } - } + dump_type(object.maxDepthBounds, settings, "float", "maxDepthBounds", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineRasterizationStateCreateFlags(object.flags, settings, "VkPipelineRasterizationStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.depthClampEnable, settings, "VkBool32", "depthClampEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.rasterizerDiscardEnable, settings, "VkBool32", "rasterizerDiscardEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkPolygonMode(object.polygonMode, settings, "VkPolygonMode", "polygonMode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkCullModeFlags(object.cullMode, settings, "VkCullModeFlags", "cullMode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineDynamicStateCreateFlags(object.flags, settings, "VkPipelineDynamicStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkFrontFace(object.frontFace, settings, "VkFrontFace", "frontFace", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.dynamicStateCount, settings, "uint32_t", "dynamicStateCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthBiasEnable, settings, "VkBool32", "depthBiasEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pointer_array(object.pDynamicStates, object.dynamicStateCount, settings, "const VkDynamicState*", "pDynamicStates", "const VkDynamicState", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDynamicState); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthBiasConstantFactor, settings, "float", "depthBiasConstantFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthBiasClamp, settings, "float", "depthBiasClamp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineInputAssemblyStateCreateFlags(object.flags, settings, "VkPipelineInputAssemblyStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthBiasSlopeFactor, settings, "float", "depthBiasSlopeFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPrimitiveTopology(object.topology, settings, "VkPrimitiveTopology", "topology", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.lineWidth, settings, "float", "lineWidth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.primitiveRestartEnable, settings, "VkBool32", "primitiveRestartEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } @@ -21835,109 +22465,106 @@ void dump_VkPipelineMultisampleStateCreateInfo(const VkPipelineMultisampleStateC dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkStencilOpState(const VkStencilOpState& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStencilOp(object.failOp, settings, "VkStencilOp", "failOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkStencilOp(object.passOp, settings, "VkStencilOp", "passOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkStencilOp(object.depthFailOp, settings, "VkStencilOp", "depthFailOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkCompareOp(object.compareOp, settings, "VkCompareOp", "compareOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.compareMask, settings, "uint32_t", "compareMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.writeMask, settings, "uint32_t", "writeMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.reference, settings, "uint32_t", "reference", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineDepthStencilStateCreateFlags(object.flags, settings, "VkPipelineDepthStencilStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineRasterizationStateCreateFlags(object.flags, settings, "VkPipelineRasterizationStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthTestEnable, settings, "VkBool32", "depthTestEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthClampEnable, settings, "VkBool32", "depthClampEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthWriteEnable, settings, "VkBool32", "depthWriteEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.rasterizerDiscardEnable, settings, "VkBool32", "rasterizerDiscardEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkCompareOp(object.depthCompareOp, settings, "VkCompareOp", "depthCompareOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPolygonMode(object.polygonMode, settings, "VkPolygonMode", "polygonMode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.depthBoundsTestEnable, settings, "VkBool32", "depthBoundsTestEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkCullModeFlags(object.cullMode, settings, "VkCullModeFlags", "cullMode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.stencilTestEnable, settings, "VkBool32", "stencilTestEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkFrontFace(object.frontFace, settings, "VkFrontFace", "frontFace", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkStencilOpState(object.front, settings, "VkStencilOpState", "front", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthBiasEnable, settings, "VkBool32", "depthBiasEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkStencilOpState(object.back, settings, "VkStencilOpState", "back", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthBiasConstantFactor, settings, "float", "depthBiasConstantFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.minDepthBounds, settings, "float", "minDepthBounds", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthBiasClamp, settings, "float", "depthBiasClamp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.maxDepthBounds, settings, "float", "maxDepthBounds", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.depthBiasSlopeFactor, settings, "float", "depthBiasSlopeFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.lineWidth, settings, "float", "lineWidth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineColorBlendAttachmentState(const VkPipelineColorBlendAttachmentState& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.blendEnable, settings, "VkBool32", "blendEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkBlendFactor(object.srcColorBlendFactor, settings, "VkBlendFactor", "srcColorBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkBlendFactor(object.dstColorBlendFactor, settings, "VkBlendFactor", "dstColorBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkBlendOp(object.colorBlendOp, settings, "VkBlendOp", "colorBlendOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkBlendFactor(object.srcAlphaBlendFactor, settings, "VkBlendFactor", "srcAlphaBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkBlendFactor(object.dstAlphaBlendFactor, settings, "VkBlendFactor", "dstAlphaBlendFactor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkBlendOp(object.alphaBlendOp, settings, "VkBlendOp", "alphaBlendOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineTessellationStateCreateFlags(object.flags, settings, "VkPipelineTessellationStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkColorComponentFlags(object.colorWriteMask, settings, "VkColorComponentFlags", "colorWriteMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.patchControlPoints, settings, "uint32_t", "patchControlPoints", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineColorBlendStateCreateFlags(object.flags, settings, "VkPipelineColorBlendStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.logicOpEnable, settings, "VkBool32", "logicOpEnable", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineVertexInputStateCreateFlags(object.flags, settings, "VkPipelineVertexInputStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkLogicOp(object.logicOp, settings, "VkLogicOp", "logicOp", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.vertexBindingDescriptionCount, settings, "uint32_t", "vertexBindingDescriptionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.attachmentCount, settings, "uint32_t", "attachmentCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pointer_array(object.pVertexBindingDescriptions, object.vertexBindingDescriptionCount, settings, "const VkVertexInputBindingDescription*", "pVertexBindingDescriptions", "const VkVertexInputBindingDescription", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkVertexInputBindingDescription); dump_separate_members(settings); - dump_pointer_array(object.pAttachments, object.attachmentCount, settings, "const VkPipelineColorBlendAttachmentState*", "pAttachments", "const VkPipelineColorBlendAttachmentState", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkPipelineColorBlendAttachmentState); + dump_type(object.vertexAttributeDescriptionCount, settings, "uint32_t", "vertexAttributeDescriptionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_single_array(object.blendConstants, 4, settings, "float[4]", "blendConstants", "float", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); + dump_pointer_array(object.pVertexAttributeDescriptions, object.vertexAttributeDescriptionCount, settings, "const VkVertexInputAttributeDescription*", "pVertexAttributeDescriptions", "const VkVertexInputAttributeDescription", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkVertexInputAttributeDescription); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineDynamicStateCreateFlags(object.flags, settings, "VkPipelineDynamicStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineViewportStateCreateFlags(object.flags, settings, "VkPipelineViewportStateCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.dynamicStateCount, settings, "uint32_t", "dynamicStateCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.viewportCount, settings, "uint32_t", "viewportCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pDynamicStates, object.dynamicStateCount, settings, "const VkDynamicState*", "pDynamicStates", "const VkDynamicState", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDynamicState); + if (!ApiDumpInstance::current().getIsDynamicViewport()) { + dump_pointer_array(object.pViewports, object.viewportCount, settings, "const VkViewport*", "pViewports", "const VkViewport", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkViewport); + } else { + if constexpr (Format == ApiDumpFormat::Text || Format == ApiDumpFormat::Html) { + dump_special("UNUSED", settings, "const VkViewport*", "pViewports", indents + 1); + } else if constexpr (Format == ApiDumpFormat::Json) { + dump_json_UNUSED(settings, "const VkViewport*", "pViewports", indents + 2); + } + } + dump_separate_members(settings); + dump_type(object.scissorCount, settings, "uint32_t", "scissorCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + if (!ApiDumpInstance::current().getIsDynamicScissor()) { + dump_pointer_array(object.pScissors, object.scissorCount, settings, "const VkRect2D*", "pScissors", "const VkRect2D", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkRect2D); + } else { + if constexpr (Format == ApiDumpFormat::Text || Format == ApiDumpFormat::Html) { + dump_special("UNUSED", settings, "const VkRect2D*", "pScissors", indents + 1); + } else if constexpr (Format == ApiDumpFormat::Json) { + dump_json_UNUSED(settings, "const VkRect2D*", "pScissors", indents + 2); + } + } if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } @@ -22047,6 +22674,24 @@ void dump_VkFramebufferCreateInfo(const VkFramebufferCreateInfo& object, const A dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkSubpassDependency(const VkSubpassDependency& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type(object.srcSubpass, settings, "uint32_t", "srcSubpass", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.dstSubpass, settings, "uint32_t", "dstSubpass", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkPipelineStageFlags(object.srcStageMask, settings, "VkPipelineStageFlags", "srcStageMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkPipelineStageFlags(object.dstStageMask, settings, "VkPipelineStageFlags", "dstStageMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDependencyFlags(object.dependencyFlags, settings, "VkDependencyFlags", "dependencyFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkSubpassDescription(const VkSubpassDescription& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkSubpassDescriptionFlags(object.flags, settings, "VkSubpassDescriptionFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -22071,24 +22716,6 @@ void dump_VkSubpassDescription(const VkSubpassDescription& object, const ApiDump dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSubpassDependency(const VkSubpassDependency& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.srcSubpass, settings, "uint32_t", "srcSubpass", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.dstSubpass, settings, "uint32_t", "dstSubpass", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkPipelineStageFlags(object.srcStageMask, settings, "VkPipelineStageFlags", "srcStageMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkPipelineStageFlags(object.dstStageMask, settings, "VkPipelineStageFlags", "dstStageMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.srcAccessMask, settings, "VkAccessFlags", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkAccessFlags(object.dstAccessMask, settings, "VkAccessFlags", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkDependencyFlags(object.dependencyFlags, settings, "VkDependencyFlags", "dependencyFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkRenderPassCreateInfo(const VkRenderPassCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -22122,6 +22749,16 @@ void dump_VkClearDepthStencilValue(const VkClearDepthStencilValue& object, const dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkClearRect(const VkClearRect& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkRect2D(object.rect, settings, "VkRect2D", "rect", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.baseArrayLayer, settings, "uint32_t", "baseArrayLayer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.layerCount, settings, "uint32_t", "layerCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkClearValue(const VkClearValue& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_union, type_name, var_name, indents, address); dump_VkClearColorValue(object.color, settings, "VkClearColorValue", "color", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -22140,16 +22777,6 @@ void dump_VkClearAttachment(const VkClearAttachment& object, const ApiDumpSettin dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkClearRect(const VkClearRect& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkRect2D(object.rect, settings, "VkRect2D", "rect", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.baseArrayLayer, settings, "uint32_t", "baseArrayLayer", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.layerCount, settings, "uint32_t", "layerCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkImageBlit(const VkImageBlit& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkImageSubresourceLayers(object.srcSubresource, settings, "VkImageSubresourceLayers", "srcSubresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -23225,6 +23852,37 @@ void dump_VkPhysicalDeviceShaderDrawParametersFeatures(const VkPhysicalDeviceSha dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkConformanceVersion(const VkConformanceVersion& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type(object.major, settings, "uint8_t", "major", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.minor, settings, "uint8_t", "minor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.subminor, settings, "uint8_t", "subminor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.patch, settings, "uint8_t", "patch", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceDriverProperties(const VkPhysicalDeviceDriverProperties& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDriverId(object.driverID, settings, "VkDriverId", "driverID", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_char(object.driverName, settings, "char[VK_MAX_DRIVER_NAME_SIZE]", "driverName", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_char(object.driverInfo, settings, "char[VK_MAX_DRIVER_INFO_SIZE]", "driverInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkConformanceVersion(object.conformanceVersion, settings, "VkConformanceVersion", "conformanceVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceVulkan11Features(const VkPhysicalDeviceVulkan11Features& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -23406,18 +24064,6 @@ void dump_VkPhysicalDeviceVulkan12Features(const VkPhysicalDeviceVulkan12Feature dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkConformanceVersion(const VkConformanceVersion& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.major, settings, "uint8_t", "major", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.minor, settings, "uint8_t", "minor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.subminor, settings, "uint8_t", "subminor", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.patch, settings, "uint8_t", "patch", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkPhysicalDeviceVulkan12Properties(const VkPhysicalDeviceVulkan12Properties& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -23548,25 +24194,6 @@ void dump_VkImageFormatListCreateInfo(const VkImageFormatListCreateInfo& object, dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPhysicalDeviceDriverProperties(const VkPhysicalDeviceDriverProperties& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkDriverId(object.driverID, settings, "VkDriverId", "driverID", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_char(object.driverName, settings, "char[VK_MAX_DRIVER_NAME_SIZE]", "driverName", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_char(object.driverInfo, settings, "char[VK_MAX_DRIVER_INFO_SIZE]", "driverInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkConformanceVersion(object.conformanceVersion, settings, "VkConformanceVersion", "conformanceVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); - } - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkPhysicalDeviceVulkanMemoryModelFeatures(const VkPhysicalDeviceVulkanMemoryModelFeatures& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -24176,53 +24803,53 @@ void dump_VkSubpassDependency2(const VkSubpassDependency2& object, const ApiDump dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkRenderPassCreateInfo2(const VkRenderPassCreateInfo2& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSubpassBeginInfo(const VkSubpassBeginInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkRenderPassCreateFlags(object.flags, settings, "VkRenderPassCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.attachmentCount, settings, "uint32_t", "attachmentCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pointer_array(object.pAttachments, object.attachmentCount, settings, "const VkAttachmentDescription2*", "pAttachments", "const VkAttachmentDescription2", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkAttachmentDescription2); - dump_separate_members(settings); - dump_type(object.subpassCount, settings, "uint32_t", "subpassCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pointer_array(object.pSubpasses, object.subpassCount, settings, "const VkSubpassDescription2*", "pSubpasses", "const VkSubpassDescription2", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSubpassDescription2); - dump_separate_members(settings); - dump_type(object.dependencyCount, settings, "uint32_t", "dependencyCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pointer_array(object.pDependencies, object.dependencyCount, settings, "const VkSubpassDependency2*", "pDependencies", "const VkSubpassDependency2", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSubpassDependency2); - dump_separate_members(settings); - dump_type(object.correlatedViewMaskCount, settings, "uint32_t", "correlatedViewMaskCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pointer_array(object.pCorrelatedViewMasks, object.correlatedViewMaskCount, settings, "const uint32_t*", "pCorrelatedViewMasks", "const uint32_t", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); + dump_VkSubpassContents(object.contents, settings, "VkSubpassContents", "contents", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSubpassBeginInfo(const VkSubpassBeginInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSubpassEndInfo(const VkSubpassEndInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkSubpassContents(object.contents, settings, "VkSubpassContents", "contents", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSubpassEndInfo(const VkSubpassEndInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkRenderPassCreateInfo2(const VkRenderPassCreateInfo2& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkRenderPassCreateFlags(object.flags, settings, "VkRenderPassCreateFlags", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.attachmentCount, settings, "uint32_t", "attachmentCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pAttachments, object.attachmentCount, settings, "const VkAttachmentDescription2*", "pAttachments", "const VkAttachmentDescription2", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkAttachmentDescription2); + dump_separate_members(settings); + dump_type(object.subpassCount, settings, "uint32_t", "subpassCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pSubpasses, object.subpassCount, settings, "const VkSubpassDescription2*", "pSubpasses", "const VkSubpassDescription2", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSubpassDescription2); + dump_separate_members(settings); + dump_type(object.dependencyCount, settings, "uint32_t", "dependencyCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pDependencies, object.dependencyCount, settings, "const VkSubpassDependency2*", "pDependencies", "const VkSubpassDependency2", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkSubpassDependency2); + dump_separate_members(settings); + dump_type(object.correlatedViewMaskCount, settings, "uint32_t", "correlatedViewMaskCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pCorrelatedViewMasks, object.correlatedViewMaskCount, settings, "const uint32_t*", "pCorrelatedViewMasks", "const uint32_t", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } @@ -24316,30 +24943,30 @@ void dump_VkFramebufferAttachmentImageInfo(const VkFramebufferAttachmentImageInf dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkFramebufferAttachmentsCreateInfo(const VkFramebufferAttachmentsCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkRenderPassAttachmentBeginInfo(const VkRenderPassAttachmentBeginInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.attachmentImageInfoCount, settings, "uint32_t", "attachmentImageInfoCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.attachmentCount, settings, "uint32_t", "attachmentCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pAttachmentImageInfos, object.attachmentImageInfoCount, settings, "const VkFramebufferAttachmentImageInfo*", "pAttachmentImageInfos", "const VkFramebufferAttachmentImageInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkFramebufferAttachmentImageInfo); + dump_pointer_array(object.pAttachments, object.attachmentCount, settings, "const VkImageView*", "pAttachments", "const VkImageView", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkImageView); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkRenderPassAttachmentBeginInfo(const VkRenderPassAttachmentBeginInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkFramebufferAttachmentsCreateInfo(const VkFramebufferAttachmentsCreateInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_type(object.attachmentCount, settings, "uint32_t", "attachmentCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_type(object.attachmentImageInfoCount, settings, "uint32_t", "attachmentImageInfoCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer_array(object.pAttachments, object.attachmentCount, settings, "const VkImageView*", "pAttachments", "const VkImageView", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkImageView); + dump_pointer_array(object.pAttachmentImageInfos, object.attachmentImageInfoCount, settings, "const VkFramebufferAttachmentImageInfo*", "pAttachmentImageInfos", "const VkFramebufferAttachmentImageInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkFramebufferAttachmentImageInfo); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } @@ -25769,43 +26396,43 @@ void dump_VkPhysicalDeviceMaintenance5Properties(const VkPhysicalDeviceMaintenan dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkImageSubresource2(const VkImageSubresource2& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkSubresourceLayout2(const VkSubresourceLayout2& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkImageSubresource(object.imageSubresource, settings, "VkImageSubresource", "imageSubresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkSubresourceLayout(object.subresourceLayout, settings, "VkSubresourceLayout", "subresourceLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkDeviceImageSubresourceInfo(const VkDeviceImageSubresourceInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkImageSubresource2(const VkImageSubresource2& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pointer(object.pCreateInfo, settings, "const VkImageCreateInfo*", "pCreateInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkImageCreateInfo); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer(object.pSubresource, settings, "const VkImageSubresource2*", "pSubresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkImageSubresource2); + dump_VkImageSubresource(object.imageSubresource, settings, "VkImageSubresource", "imageSubresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkSubresourceLayout2(const VkSubresourceLayout2& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { +void dump_VkDeviceImageSubresourceInfo(const VkDeviceImageSubresourceInfo& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkSubresourceLayout(object.subresourceLayout, settings, "VkSubresourceLayout", "subresourceLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_pointer(object.pCreateInfo, settings, "const VkImageCreateInfo*", "pCreateInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkImageCreateInfo); + dump_separate_members(settings); + dump_pointer(object.pSubresource, settings, "const VkImageSubresource2*", "pSubresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkImageSubresource2); if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } @@ -28839,6 +29466,60 @@ void dump_VkRenderingFragmentShadingRateAttachmentInfoKHR(const VkRenderingFragm dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkPhysicalDeviceShaderConstantDataFeaturesKHR(const VkPhysicalDeviceShaderConstantDataFeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderConstantData, settings, "VkBool32", "shaderConstantData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceShaderAbortFeaturesKHR(const VkPhysicalDeviceShaderAbortFeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderAbort, settings, "VkBool32", "shaderAbort", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceFaultShaderAbortMessageInfoKHR(const VkDeviceFaultShaderAbortMessageInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.messageDataSize, settings, "uint64_t", "messageDataSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.pMessageData, settings, "void*", "pMessageData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceShaderAbortPropertiesKHR(const VkPhysicalDeviceShaderAbortPropertiesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxShaderAbortMessageSize, settings, "uint64_t", "maxShaderAbortMessageSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceShaderQuadControlFeaturesKHR(const VkPhysicalDeviceShaderQuadControlFeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -29228,6 +29909,314 @@ void dump_VkVideoEncodeSessionParametersFeedbackInfoKHR(const VkVideoEncodeSessi dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkDeviceAddressRangeKHR(const VkDeviceAddressRangeKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type_hex(object.address, settings, "VkDeviceAddress", "address", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkStridedDeviceAddressRangeKHR(const VkStridedDeviceAddressRangeKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type_hex(object.address, settings, "VkDeviceAddress", "address", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.stride, settings, "VkDeviceSize", "stride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceMemoryCopyKHR(const VkDeviceMemoryCopyKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.srcRange, settings, "VkDeviceAddressRangeKHR", "srcRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.srcFlags, settings, "VkAddressCommandFlagsKHR", "srcFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.dstRange, settings, "VkDeviceAddressRangeKHR", "dstRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.dstFlags, settings, "VkAddressCommandFlagsKHR", "dstFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkCopyDeviceMemoryInfoKHR(const VkCopyDeviceMemoryInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.regionCount, settings, "uint32_t", "regionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pRegions, object.regionCount, settings, "const VkDeviceMemoryCopyKHR*", "pRegions", "const VkDeviceMemoryCopyKHR", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceMemoryCopyKHR); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceMemoryImageCopyKHR(const VkDeviceMemoryImageCopyKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.addressRowLength, settings, "uint32_t", "addressRowLength", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.addressImageHeight, settings, "uint32_t", "addressImageHeight", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImageSubresourceLayers(object.imageSubresource, settings, "VkImageSubresourceLayers", "imageSubresource", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImageLayout(object.imageLayout, settings, "VkImageLayout", "imageLayout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkOffset3D(object.imageOffset, settings, "VkOffset3D", "imageOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkExtent3D(object.imageExtent, settings, "VkExtent3D", "imageExtent", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkCopyDeviceMemoryImageInfoKHR(const VkCopyDeviceMemoryImageInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImage(object.image, settings, "VkImage", "image", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.regionCount, settings, "uint32_t", "regionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pRegions, object.regionCount, settings, "const VkDeviceMemoryImageCopyKHR*", "pRegions", "const VkDeviceMemoryImageCopyKHR", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceMemoryImageCopyKHR); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkMemoryRangeBarrierKHR(const VkMemoryRangeBarrierKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkPipelineStageFlags2(object.srcStageMask, settings, "VkPipelineStageFlags2", "srcStageMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags2(object.srcAccessMask, settings, "VkAccessFlags2", "srcAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkPipelineStageFlags2(object.dstStageMask, settings, "VkPipelineStageFlags2", "dstStageMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccessFlags2(object.dstAccessMask, settings, "VkAccessFlags2", "dstAccessMask", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.srcQueueFamilyIndex, settings, "uint32_t", "srcQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.dstQueueFamilyIndex, settings, "uint32_t", "dstQueueFamilyIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkMemoryRangeBarriersInfoKHR(const VkMemoryRangeBarriersInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.memoryRangeBarrierCount, settings, "uint32_t", "memoryRangeBarrierCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pMemoryRangeBarriers, object.memoryRangeBarrierCount, settings, "const VkMemoryRangeBarrierKHR*", "pMemoryRangeBarriers", "const VkMemoryRangeBarrierKHR", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkMemoryRangeBarrierKHR); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR(const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.deviceAddressCommands, settings, "VkBool32", "deviceAddressCommands", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkBindIndexBuffer3InfoKHR(const VkBindIndexBuffer3InfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkIndexType(object.indexType, settings, "VkIndexType", "indexType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkBindVertexBuffer3InfoKHR(const VkBindVertexBuffer3InfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.setStride, settings, "VkBool32", "setStride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkStridedDeviceAddressRangeKHR(object.addressRange, settings, "VkStridedDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDrawIndirect2InfoKHR(const VkDrawIndirect2InfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkStridedDeviceAddressRangeKHR(object.addressRange, settings, "VkStridedDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.drawCount, settings, "uint32_t", "drawCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDrawIndirectCount2InfoKHR(const VkDrawIndirectCount2InfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkStridedDeviceAddressRangeKHR(object.addressRange, settings, "VkStridedDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.countAddressRange, settings, "VkDeviceAddressRangeKHR", "countAddressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.countAddressFlags, settings, "VkAddressCommandFlagsKHR", "countAddressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxDrawCount, settings, "uint32_t", "maxDrawCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDispatchIndirect2InfoKHR(const VkDispatchIndirect2InfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkConditionalRenderingBeginInfo2EXT(const VkConditionalRenderingBeginInfo2EXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkConditionalRenderingFlagsEXT(object.flags, settings, "VkConditionalRenderingFlagsEXT", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkBindTransformFeedbackBuffer2InfoEXT(const VkBindTransformFeedbackBuffer2InfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkMemoryMarkerInfoAMD(const VkMemoryMarkerInfoAMD& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkPipelineStageFlags2(object.stage, settings, "VkPipelineStageFlags2KHR", "stage", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.dstRange, settings, "VkDeviceAddressRangeKHR", "dstRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.dstFlags, settings, "VkAddressCommandFlagsKHR", "dstFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.marker, settings, "uint32_t", "marker", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkAccelerationStructureCreateInfo2KHR(const VkAccelerationStructureCreateInfo2KHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccelerationStructureCreateFlagsKHR(object.createFlags, settings, "VkAccelerationStructureCreateFlagsKHR", "createFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeKHR", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(object.addressFlags, settings, "VkAddressCommandFlagsKHR", "addressFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkAccelerationStructureTypeKHR(object.type, settings, "VkAccelerationStructureTypeKHR", "type", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -30386,16 +31375,6 @@ void dump_VkBindDescriptorBufferEmbeddedSamplersInfoEXT(const VkBindDescriptorBu dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkStridedDeviceAddressRangeKHR(const VkStridedDeviceAddressRangeKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type_hex(object.address, settings, "VkDeviceAddress", "address", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.stride, settings, "VkDeviceSize", "stride", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkCopyMemoryIndirectCommandKHR(const VkCopyMemoryIndirectCommandKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_type_hex(object.srcAddress, settings, "VkDeviceAddress", "srcAddress", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -30805,6 +31784,122 @@ void dump_VkPhysicalDeviceLayeredApiVulkanPropertiesKHR(const VkPhysicalDeviceLa dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkPhysicalDeviceFaultFeaturesKHR(const VkPhysicalDeviceFaultFeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.deviceFault, settings, "VkBool32", "deviceFault", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.deviceFaultVendorBinary, settings, "VkBool32", "deviceFaultVendorBinary", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.deviceFaultReportMasked, settings, "VkBool32", "deviceFaultReportMasked", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.deviceFaultDeviceLostOnMasked, settings, "VkBool32", "deviceFaultDeviceLostOnMasked", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceFaultPropertiesKHR(const VkPhysicalDeviceFaultPropertiesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxDeviceFaultCount, settings, "uint32_t", "maxDeviceFaultCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceFaultAddressInfoKHR(const VkDeviceFaultAddressInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkDeviceFaultAddressTypeKHR(object.addressType, settings, "VkDeviceFaultAddressTypeKHR", "addressType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type_hex(object.reportedAddress, settings, "VkDeviceAddress", "reportedAddress", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.addressPrecision, settings, "VkDeviceSize", "addressPrecision", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceFaultVendorInfoKHR(const VkDeviceFaultVendorInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_char(object.description, settings, "char[VK_MAX_DESCRIPTION_SIZE]", "description", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.vendorFaultCode, settings, "uint64_t", "vendorFaultCode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.vendorFaultData, settings, "uint64_t", "vendorFaultData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceFaultInfoKHR(const VkDeviceFaultInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceFaultFlagsKHR(object.flags, settings, "VkDeviceFaultFlagsKHR", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.groupId, settings, "uint64_t", "groupId", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_char(object.description, settings, "char[VK_MAX_DESCRIPTION_SIZE]", "description", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceFaultAddressInfoKHR(object.faultAddressInfo, settings, "VkDeviceFaultAddressInfoKHR", "faultAddressInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceFaultAddressInfoKHR(object.instructionAddressInfo, settings, "VkDeviceFaultAddressInfoKHR", "instructionAddressInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceFaultVendorInfoKHR(object.vendorInfo, settings, "VkDeviceFaultVendorInfoKHR", "vendorInfo", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceFaultDebugInfoKHR(const VkDeviceFaultDebugInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.vendorBinarySize, settings, "uint32_t", "vendorBinarySize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.pVendorBinaryData, settings, "void*", "pVendorBinaryData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDeviceFaultVendorBinaryHeaderVersionOneKHR(const VkDeviceFaultVendorBinaryHeaderVersionOneKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type(object.headerSize, settings, "uint32_t", "headerSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDeviceFaultVendorBinaryHeaderVersionKHR(object.headerVersion, settings, "VkDeviceFaultVendorBinaryHeaderVersionKHR", "headerVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.vendorID, settings, "uint32_t", "vendorID", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.deviceID, settings, "uint32_t", "deviceID", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.driverVersion, settings, "uint32_t", "driverVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_single_array(object.pipelineCacheUUID, VK_UUID_SIZE, settings, "uint8_t[VK_UUID_SIZE]", "pipelineCacheUUID", "uint8_t", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); + dump_separate_members(settings); + dump_type(object.applicationNameOffset, settings, "uint32_t", "applicationNameOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.applicationVersion, settings, "uint32_t", "applicationVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.engineNameOffset, settings, "uint32_t", "engineNameOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.engineVersion, settings, "uint32_t", "engineVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_api_version(object.apiVersion, settings, "uint32_t", "apiVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkMemoryBarrierAccessFlags3KHR(const VkMemoryBarrierAccessFlags3KHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -31078,6 +32173,32 @@ void dump_VkResolveImageModeInfoKHR(const VkResolveImageModeInfoKHR& object, con dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkPhysicalDeviceMaintenance11FeaturesKHR(const VkPhysicalDeviceMaintenance11FeaturesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maintenance11, settings, "VkBool32", "maintenance11", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR(const VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkExtent3D(object.optimalImageTransferGranularity, settings, "VkExtent3D", "optimalImageTransferGranularity", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkDebugReportCallbackCreateInfoEXT(const VkDebugReportCallbackCreateInfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -32417,14 +33538,6 @@ void dump_VkHostAddressRangeConstEXT(const VkHostAddressRangeConstEXT& object, c dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkDeviceAddressRangeEXT(const VkDeviceAddressRangeEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type_hex(object.address, settings, "VkDeviceAddress", "address", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.size, settings, "VkDeviceSize", "size", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkTexelBufferDescriptorInfoEXT(const VkTexelBufferDescriptorInfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -32433,7 +33546,7 @@ void dump_VkTexelBufferDescriptorInfoEXT(const VkTexelBufferDescriptorInfoEXT& o dump_separate_members(settings); dump_VkFormat(object.format, settings, "VkFormat", "format", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkDeviceAddressRangeEXT(object.addressRange, settings, "VkDeviceAddressRangeEXT", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkDeviceAddressRangeKHR(object.addressRange, settings, "VkDeviceAddressRangeEXT", "addressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } @@ -32483,7 +33596,7 @@ void dump_VkResourceDescriptorDataEXT(const VkResourceDescriptorDataEXT& object, } dump_separate_members(settings); if (ApiDumpInstance::current().getDescriptorType() == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER || ApiDumpInstance::current().getDescriptorType() == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER || ApiDumpInstance::current().getDescriptorType() == VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR || ApiDumpInstance::current().getDescriptorType() == VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV || ApiDumpInstance::current().getDescriptorType() == VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV) { - dump_pointer(object.pAddressRange, settings, "const VkDeviceAddressRangeEXT*", "pAddressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceAddressRangeEXT); + dump_pointer(object.pAddressRange, settings, "const VkDeviceAddressRangeEXT*", "pAddressRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceAddressRangeKHR); } dump_separate_members(settings); if (ApiDumpInstance::current().getDescriptorType() == VK_DESCRIPTOR_TYPE_TENSOR_ARM) { @@ -32514,7 +33627,7 @@ void dump_VkBindHeapInfoEXT(const VkBindHeapInfoEXT& object, const ApiDumpSettin dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkDeviceAddressRangeEXT(object.heapRange, settings, "VkDeviceAddressRangeEXT", "heapRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkDeviceAddressRangeKHR(object.heapRange, settings, "VkDeviceAddressRangeEXT", "heapRange", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_type(object.reservedRangeOffset, settings, "VkDeviceSize", "reservedRangeOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); @@ -33544,7 +34657,7 @@ void dump_VkAccelerationStructureInfoNV(const VkAccelerationStructureInfoNV& obj dump_separate_members(settings); dump_VkAccelerationStructureTypeKHR(object.type, settings, "VkAccelerationStructureTypeNV", "type", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkBuildAccelerationStructureFlagsKHR(object.flags, settings, "VkBuildAccelerationStructureFlagsNV", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkBuildAccelerationStructureFlagsKHR(object.flags, settings, "VkBuildAccelerationStructureFlagsKHR", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_type(object.instanceCount, settings, "uint32_t", "instanceCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); @@ -35511,6 +36624,47 @@ void dump_VkDeviceDiagnosticsConfigCreateInfoNV(const VkDeviceDiagnosticsConfigC } dump_end(settings, OutputConstruct::api_struct, indents); } +template +void dump_VkPerfHintInfoQCOM(const VkPerfHintInfoQCOM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkPerfHintTypeQCOM(object.type, settings, "VkPerfHintTypeQCOM", "type", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.scale, settings, "uint32_t", "scale", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceQueuePerfHintFeaturesQCOM(const VkPhysicalDeviceQueuePerfHintFeaturesQCOM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.queuePerfHint, settings, "VkBool32", "queuePerfHint", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceQueuePerfHintPropertiesQCOM(const VkPhysicalDeviceQueuePerfHintPropertiesQCOM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkQueueFlags(object.supportedQueues, settings, "VkQueueFlags", "supportedQueues", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} #if defined(VK_ENABLE_BETA_EXTENSIONS) template void dump_VkCudaModuleCreateInfoNV(const VkCudaModuleCreateInfoNV& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { @@ -35979,19 +37133,6 @@ void dump_VkPhysicalDeviceDescriptorBufferPropertiesEXT(const VkPhysicalDeviceDe dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.combinedImageSamplerDensityMapDescriptorSize, settings, "size_t", "combinedImageSamplerDensityMapDescriptorSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - if constexpr (Format == ApiDumpFormat::Text) { - dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); - } - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkPhysicalDeviceDescriptorBufferFeaturesEXT(const VkPhysicalDeviceDescriptorBufferFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -36196,6 +37337,19 @@ void dump_VkAccelerationStructureCaptureDescriptorDataInfoEXT(const VkAccelerati dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.combinedImageSamplerDensityMapDescriptorSize, settings, "size_t", "combinedImageSamplerDensityMapDescriptorSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -36603,26 +37757,6 @@ void dump_VkDeviceFaultCountsEXT(const VkDeviceFaultCountsEXT& object, const Api dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkDeviceFaultAddressInfoEXT(const VkDeviceFaultAddressInfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_VkDeviceFaultAddressTypeEXT(object.addressType, settings, "VkDeviceFaultAddressTypeEXT", "addressType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type_hex(object.reportedAddress, settings, "VkDeviceAddress", "reportedAddress", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.addressPrecision, settings, "VkDeviceSize", "addressPrecision", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template -void dump_VkDeviceFaultVendorInfoEXT(const VkDeviceFaultVendorInfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_char(object.description, settings, "char[VK_MAX_DESCRIPTION_SIZE]", "description", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.vendorFaultCode, settings, "uint64_t", "vendorFaultCode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.vendorFaultData, settings, "uint64_t", "vendorFaultData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkDeviceFaultInfoEXT(const VkDeviceFaultInfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -36631,9 +37765,9 @@ void dump_VkDeviceFaultInfoEXT(const VkDeviceFaultInfoEXT& object, const ApiDump dump_separate_members(settings); dump_char(object.description, settings, "char[VK_MAX_DESCRIPTION_SIZE]", "description", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer(object.pAddressInfos, settings, "VkDeviceFaultAddressInfoEXT*", "pAddressInfos", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceFaultAddressInfoEXT); + dump_pointer(object.pAddressInfos, settings, "VkDeviceFaultAddressInfoKHR*", "pAddressInfos", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceFaultAddressInfoKHR); dump_separate_members(settings); - dump_pointer(object.pVendorInfos, settings, "VkDeviceFaultVendorInfoEXT*", "pVendorInfos", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceFaultVendorInfoEXT); + dump_pointer(object.pVendorInfos, settings, "VkDeviceFaultVendorInfoKHR*", "pVendorInfos", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDeviceFaultVendorInfoKHR); dump_separate_members(settings); dump_type(object.pVendorBinaryData, settings, "void*", "pVendorBinaryData", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); if constexpr (Format == ApiDumpFormat::Text) { @@ -36642,32 +37776,6 @@ void dump_VkDeviceFaultInfoEXT(const VkDeviceFaultInfoEXT& object, const ApiDump dump_end(settings, OutputConstruct::api_struct, indents); } template -void dump_VkDeviceFaultVendorBinaryHeaderVersionOneEXT(const VkDeviceFaultVendorBinaryHeaderVersionOneEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { - dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); - dump_type(object.headerSize, settings, "uint32_t", "headerSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_VkDeviceFaultVendorBinaryHeaderVersionEXT(object.headerVersion, settings, "VkDeviceFaultVendorBinaryHeaderVersionEXT", "headerVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.vendorID, settings, "uint32_t", "vendorID", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.deviceID, settings, "uint32_t", "deviceID", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.driverVersion, settings, "uint32_t", "driverVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_single_array(object.pipelineCacheUUID, VK_UUID_SIZE, settings, "uint8_t[VK_UUID_SIZE]", "pipelineCacheUUID", "uint8_t", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); - dump_separate_members(settings); - dump_type(object.applicationNameOffset, settings, "uint32_t", "applicationNameOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.applicationVersion, settings, "uint32_t", "applicationVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.engineNameOffset, settings, "uint32_t", "engineNameOffset", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_type(object.engineVersion, settings, "uint32_t", "engineVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_separate_members(settings); - dump_api_version(object.apiVersion, settings, "uint32_t", "apiVersion", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); - dump_end(settings, OutputConstruct::api_struct, indents); -} -template void dump_VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -38059,6 +39167,40 @@ void dump_VkPhysicalDeviceSchedulingControlsPropertiesARM(const VkPhysicalDevice dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkDispatchParametersARM(const VkDispatchParametersARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.workGroupBatchSize, settings, "uint32_t", "workGroupBatchSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxQueuedWorkGroupBatches, settings, "uint32_t", "maxQueuedWorkGroupBatches", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxWarpsPerShaderCore, settings, "uint32_t", "maxWarpsPerShaderCore", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM(const VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.schedulingControlsMaxWarpsCount, settings, "uint32_t", "schedulingControlsMaxWarpsCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.schedulingControlsMaxQueuedBatchesCount, settings, "uint32_t", "schedulingControlsMaxQueuedBatchesCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.schedulingControlsMaxWorkGroupBatchSize, settings, "uint32_t", "schedulingControlsMaxWorkGroupBatchSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -38278,7 +39420,7 @@ void dump_VkDecompressMemoryRegionNV(const VkDecompressMemoryRegionNV& object, c dump_separate_members(settings); dump_type(object.decompressedSize, settings, "VkDeviceSize", "decompressedSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkMemoryDecompressionMethodFlagsEXT(object.decompressionMethod, settings, "VkMemoryDecompressionMethodFlagsNV", "decompressionMethod", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkMemoryDecompressionMethodFlagsEXT(object.decompressionMethod, settings, "VkMemoryDecompressionMethodFlagsEXT", "decompressionMethod", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_end(settings, OutputConstruct::api_struct, indents); } template @@ -39050,7 +40192,7 @@ void dump_VkTensorDependencyInfoARM(const VkTensorDependencyInfoARM& object, con dump_separate_members(settings); dump_type(object.tensorMemoryBarrierCount, settings, "uint32_t", "tensorMemoryBarrierCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer(object.pTensorMemoryBarriers, settings, "const VkTensorMemoryBarrierARM*", "pTensorMemoryBarriers", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkTensorMemoryBarrierARM); + dump_pointer_array(object.pTensorMemoryBarriers, object.tensorMemoryBarrierCount, settings, "const VkTensorMemoryBarrierARM*", "pTensorMemoryBarriers", "const VkTensorMemoryBarrierARM", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkTensorMemoryBarrierARM); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); } @@ -40238,7 +41380,7 @@ void dump_VkDataGraphPipelineCreateInfoARM(const VkDataGraphPipelineCreateInfoAR dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_VkPipelineCreateFlags2(object.flags, settings, "VkPipelineCreateFlags2KHR", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_VkPipelineCreateFlags2(object.flags, settings, "VkPipelineCreateFlags2", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_VkPipelineLayout(object.layout, settings, "VkPipelineLayout", "layout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); @@ -40510,6 +41652,35 @@ void dump_VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM(const V dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkDataGraphTOSANameQualityARM(const VkDataGraphTOSANameQualityARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_char(object.name, settings, "char[VK_MAX_DATA_GRAPH_TOSA_NAME_SIZE_ARM]", "name", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphTOSAQualityFlagsARM(object.qualityFlags, settings, "VkDataGraphTOSAQualityFlagsARM", "qualityFlags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkQueueFamilyDataGraphTOSAPropertiesARM(const VkQueueFamilyDataGraphTOSAPropertiesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.profileCount, settings, "uint32_t", "profileCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pProfiles, object.profileCount, settings, "const VkDataGraphTOSANameQualityARM*", "pProfiles", "const VkDataGraphTOSANameQualityARM", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDataGraphTOSANameQualityARM); + dump_separate_members(settings); + dump_type(object.extensionCount, settings, "uint32_t", "extensionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pExtensions, object.extensionCount, settings, "const VkDataGraphTOSANameQualityARM*", "pExtensions", "const VkDataGraphTOSANameQualityARM", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDataGraphTOSANameQualityARM); + dump_separate_members(settings); + dump_VkDataGraphTOSALevelARM(object.level, settings, "VkDataGraphTOSALevelARM", "level", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM(const VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -41669,6 +42840,7 @@ void dump_VkIndirectExecutionSetInfoEXT(const VkIndirectExecutionSetInfoEXT& obj template void dump_VkIndirectExecutionSetCreateInfoEXT(const VkIndirectExecutionSetCreateInfoEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + ApiDumpInstance::current().setIndirectExecutionSetInfoType(object.type); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -42274,19 +43446,85 @@ void dump_VkRenderPassPerformanceCountersByRegionBeginInfoARM(const VkRenderPass dump_separate_members(settings); dump_type(object.counterAddressCount, settings, "uint32_t", "counterAddressCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer(object.pCounterAddresses, settings, "const VkDeviceAddress*", "pCounterAddresses", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); + dump_pointer_array(object.pCounterAddresses, object.counterAddressCount, settings, "const VkDeviceAddress*", "pCounterAddresses", "const VkDeviceAddress", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); dump_separate_members(settings); dump_type(object.serializeRegions, settings, "VkBool32", "serializeRegions", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); dump_type(object.counterIndexCount, settings, "uint32_t", "counterIndexCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); dump_separate_members(settings); - dump_pointer(object.pCounterIndices, settings, "uint32_t*", "pCounterIndices", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); + dump_pointer_array(object.pCounterIndices, object.counterIndexCount, settings, "uint32_t*", "pCounterIndices", "uint32_t", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_type); if constexpr (Format == ApiDumpFormat::Text) { dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); } dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkPhysicalDeviceShaderInstrumentationFeaturesARM(const VkPhysicalDeviceShaderInstrumentationFeaturesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderInstrumentation, settings, "VkBool32", "shaderInstrumentation", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceShaderInstrumentationPropertiesARM(const VkPhysicalDeviceShaderInstrumentationPropertiesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.numMetrics, settings, "uint32_t", "numMetrics", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.perBasicBlockGranularity, settings, "VkBool32", "perBasicBlockGranularity", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkShaderInstrumentationCreateInfoARM(const VkShaderInstrumentationCreateInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkShaderInstrumentationMetricDescriptionARM(const VkShaderInstrumentationMetricDescriptionARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_char(object.name, settings, "char[VK_MAX_DESCRIPTION_SIZE]", "name", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_char(object.description, settings, "char[VK_MAX_DESCRIPTION_SIZE]", "description", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkShaderInstrumentationMetricDataHeaderARM(const VkShaderInstrumentationMetricDataHeaderARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_type(object.resultIndex, settings, "uint32_t", "resultIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.resultSubIndex, settings, "uint32_t", "resultSubIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkShaderStageFlags(object.stages, settings, "VkShaderStageFlags", "stages", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.basicBlockIndex, settings, "uint32_t", "basicBlockIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -42351,7 +43589,6 @@ void dump_VkPipelineFragmentDensityMapLayeredCreateInfoVALVE(const VkPipelineFra } dump_end(settings, OutputConstruct::api_struct, indents); } -#if defined(VK_ENABLE_BETA_EXTENSIONS) template void dump_VkSetPresentConfigNV(const VkSetPresentConfigNV& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); @@ -42380,7 +43617,6 @@ void dump_VkPhysicalDevicePresentMeteringFeaturesNV(const VkPhysicalDevicePresen } dump_end(settings, OutputConstruct::api_struct, indents); } -#endif // VK_ENABLE_BETA_EXTENSIONS template void dump_VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); @@ -42493,6 +43729,163 @@ void dump_VkPhysicalDeviceDataGraphModelFeaturesQCOM(const VkPhysicalDeviceDataG dump_end(settings, OutputConstruct::api_struct, indents); } template +void dump_VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM(const VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.dataGraphOpticalFlow, settings, "VkBool32", "dataGraphOpticalFlow", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkQueueFamilyDataGraphOpticalFlowPropertiesARM(const VkQueueFamilyDataGraphOpticalFlowPropertiesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowGridSizeFlagsARM(object.supportedOutputGridSizes, settings, "VkDataGraphOpticalFlowGridSizeFlagsARM", "supportedOutputGridSizes", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowGridSizeFlagsARM(object.supportedHintGridSizes, settings, "VkDataGraphOpticalFlowGridSizeFlagsARM", "supportedHintGridSizes", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.hintSupported, settings, "VkBool32", "hintSupported", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.costSupported, settings, "VkBool32", "costSupported", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.minWidth, settings, "uint32_t", "minWidth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.minHeight, settings, "uint32_t", "minHeight", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxWidth, settings, "uint32_t", "maxWidth", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.maxHeight, settings, "uint32_t", "maxHeight", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineOpticalFlowCreateInfoARM(const VkDataGraphPipelineOpticalFlowCreateInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.width, settings, "uint32_t", "width", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.height, settings, "uint32_t", "height", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkFormat(object.imageFormat, settings, "VkFormat", "imageFormat", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkFormat(object.flowVectorFormat, settings, "VkFormat", "flowVectorFormat", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkFormat(object.costFormat, settings, "VkFormat", "costFormat", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowGridSizeFlagsARM(object.outputGridSize, settings, "VkDataGraphOpticalFlowGridSizeFlagsARM", "outputGridSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowGridSizeFlagsARM(object.hintGridSize, settings, "VkDataGraphOpticalFlowGridSizeFlagsARM", "hintGridSize", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowPerformanceLevelARM(object.performanceLevel, settings, "VkDataGraphOpticalFlowPerformanceLevelARM", "performanceLevel", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowCreateFlagsARM(object.flags, settings, "VkDataGraphOpticalFlowCreateFlagsARM", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphOpticalFlowImageFormatPropertiesARM(const VkDataGraphOpticalFlowImageFormatPropertiesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkFormat(object.format, settings, "VkFormat", "format", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphOpticalFlowImageFormatInfoARM(const VkDataGraphOpticalFlowImageFormatInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowImageUsageFlagsARM(object.usage, settings, "VkDataGraphOpticalFlowImageUsageFlagsARM", "usage", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineOpticalFlowDispatchInfoARM(const VkDataGraphPipelineOpticalFlowDispatchInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphOpticalFlowExecuteFlagsARM(object.flags, settings, "VkDataGraphOpticalFlowExecuteFlagsARM", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.meanFlowL1NormHint, settings, "uint32_t", "meanFlowL1NormHint", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineResourceInfoImageLayoutARM(const VkDataGraphPipelineResourceInfoImageLayoutARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkImageLayout(object.layout, settings, "VkImageLayout", "layout", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineSingleNodeConnectionARM(const VkDataGraphPipelineSingleNodeConnectionARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.set, settings, "uint32_t", "set", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.binding, settings, "uint32_t", "binding", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphPipelineNodeConnectionTypeARM(object.connection, settings, "VkDataGraphPipelineNodeConnectionTypeARM", "connection", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineSingleNodeCreateInfoARM(const VkDataGraphPipelineSingleNodeCreateInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkDataGraphPipelineNodeTypeARM(object.nodeType, settings, "VkDataGraphPipelineNodeTypeARM", "nodeType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.connectionCount, settings, "uint32_t", "connectionCount", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pointer_array(object.pConnections, object.connectionCount, settings, "const VkDataGraphPipelineSingleNodeConnectionARM*", "pConnections", "const VkDataGraphPipelineSingleNodeConnectionARM", indents + (Format == ApiDumpFormat::Json ? 2 : 1), dump_VkDataGraphPipelineSingleNodeConnectionARM); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template void dump_VkPhysicalDeviceShaderLongVectorFeaturesEXT(const VkPhysicalDeviceShaderLongVectorFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); @@ -42585,6 +43978,122 @@ void dump_VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(const VkPhysicalD } dump_end(settings, OutputConstruct::api_struct, indents); } +#if defined(VK_USE_PLATFORM_UBM_SEC) +template +void dump_VkUbmSurfaceCreateInfoSEC(const VkUbmSurfaceCreateInfoSEC& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkUbmSurfaceCreateFlagsSEC(object.flags, settings, "VkUbmSurfaceCreateFlagsSEC", "flags", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.device, settings, "struct ubm_device*", "device", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.surface, settings, "struct ubm_surface*", "surface", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +#endif // VK_USE_PLATFORM_UBM_SEC +template +void dump_VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE(const VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderMixedFloatDotProductFloat16AccFloat32, settings, "VkBool32", "shaderMixedFloatDotProductFloat16AccFloat32", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderMixedFloatDotProductFloat16AccFloat16, settings, "VkBool32", "shaderMixedFloatDotProductFloat16AccFloat16", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderMixedFloatDotProductBFloat16Acc, settings, "VkBool32", "shaderMixedFloatDotProductBFloat16Acc", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.shaderMixedFloatDotProductFloat8AccFloat32, settings, "VkBool32", "shaderMixedFloatDotProductFloat8AccFloat32", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkThrottleHintSubmitInfoSEC(const VkThrottleHintSubmitInfoSEC& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkThrottleHintTypeSEC(object.throttleHint, settings, "VkThrottleHintTypeSEC", "throttleHint", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceThrottleHintFeaturesSEC(const VkPhysicalDeviceThrottleHintFeaturesSEC& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.throttleHint, settings, "VkBool32", "throttleHint", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM(const VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.dataGraphNeuralAcceleratorStatistics, settings, "VkBool32", "dataGraphNeuralAcceleratorStatistics", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineNeuralStatisticsCreateInfoARM(const VkDataGraphPipelineNeuralStatisticsCreateInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.allowNeuralStatistics, settings, "VkBool32", "allowNeuralStatistics", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM(const VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "const void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_VkNeuralAcceleratorStatisticsModeARM(object.mode, settings, "VkNeuralAcceleratorStatisticsModeARM", "mode", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "const void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} +template +void dump_VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT(const VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { + dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); + dump_VkStructureType(object.sType, settings, "VkStructureType", "sType", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_pNext(object.pNext, settings, "void*", "pNext", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + dump_separate_members(settings); + dump_type(object.primitiveRestartIndex, settings, "VkBool32", "primitiveRestartIndex", indents + (Format == ApiDumpFormat::Json ? 2 : 1)); + if constexpr (Format == ApiDumpFormat::Text) { + dump_pNext_trampoline(object.pNext, settings, "void*", "void", indents < 2 ? indents + 1 : indents); + } + dump_end(settings, OutputConstruct::api_struct, indents); +} template void dump_VkAccelerationStructureBuildRangeInfoKHR(const VkAccelerationStructureBuildRangeInfoKHR& object, const ApiDumpSettings& settings, const char* type_name, const char* var_name, int indents, const void* address = nullptr) { dump_start(settings, OutputConstruct::api_struct, type_name, var_name, indents, address); @@ -43134,18 +44643,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, } dump_start(settings, OutputConstruct::value, type_name, var_name, indents); switch (base_struct.sType) { - case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: - dump_string(settings, "VkBufferMemoryBarrier"); - break; - - case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: - dump_string(settings, "VkImageMemoryBarrier"); - break; - - case VK_STRUCTURE_TYPE_MEMORY_BARRIER: - dump_string(settings, "VkMemoryBarrier"); - break; - case VK_STRUCTURE_TYPE_APPLICATION_INFO: dump_string(settings, "VkApplicationInfo"); break; @@ -43218,6 +44715,18 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkCommandBufferBeginInfo"); break; + case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: + dump_string(settings, "VkBufferMemoryBarrier"); + break; + + case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: + dump_string(settings, "VkImageMemoryBarrier"); + break; + + case VK_STRUCTURE_TYPE_MEMORY_BARRIER: + dump_string(settings, "VkMemoryBarrier"); + break; + case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO: dump_string(settings, "VkEventCreateInfo"); break; @@ -43270,40 +44779,40 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkWriteDescriptorSet"); break; - case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineVertexInputStateCreateInfo"); - break; - - case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineInputAssemblyStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineColorBlendStateCreateInfo"); break; - case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineTessellationStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineDepthStencilStateCreateInfo"); break; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineViewportStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineDynamicStateCreateInfo"); break; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineRasterizationStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineInputAssemblyStateCreateInfo"); break; case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: dump_string(settings, "VkPipelineMultisampleStateCreateInfo"); break; - case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineDepthStencilStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineRasterizationStateCreateInfo"); break; - case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineColorBlendStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineTessellationStateCreateInfo"); break; - case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: - dump_string(settings, "VkPipelineDynamicStateCreateInfo"); + case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineVertexInputStateCreateInfo"); + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: + dump_string(settings, "VkPipelineViewportStateCreateInfo"); break; case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO: @@ -43582,6 +45091,10 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkPhysicalDeviceShaderDrawParametersFeatures"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: + dump_string(settings, "VkPhysicalDeviceDriverProperties"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: dump_string(settings, "VkPhysicalDeviceVulkan11Features"); break; @@ -43602,10 +45115,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkImageFormatListCreateInfo"); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: - dump_string(settings, "VkPhysicalDeviceDriverProperties"); - break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: dump_string(settings, "VkPhysicalDeviceVulkanMemoryModelFeatures"); break; @@ -43730,10 +45239,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkSubpassDependency2"); break; - case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: - dump_string(settings, "VkRenderPassCreateInfo2"); - break; - case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO: dump_string(settings, "VkSubpassBeginInfo"); break; @@ -43742,6 +45247,10 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkSubpassEndInfo"); break; + case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: + dump_string(settings, "VkRenderPassCreateInfo2"); + break; + case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: dump_string(settings, "VkSubpassDescriptionDepthStencilResolve"); break; @@ -43762,14 +45271,14 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkFramebufferAttachmentImageInfo"); break; - case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: - dump_string(settings, "VkFramebufferAttachmentsCreateInfo"); - break; - case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: dump_string(settings, "VkRenderPassAttachmentBeginInfo"); break; + case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: + dump_string(settings, "VkFramebufferAttachmentsCreateInfo"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: dump_string(settings, "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"); break; @@ -44030,6 +45539,10 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkPhysicalDeviceMaintenance5Properties"); break; + case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2: + dump_string(settings, "VkSubresourceLayout2"); + break; + case VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2: dump_string(settings, "VkImageSubresource2"); break; @@ -44038,10 +45551,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkDeviceImageSubresourceInfo"); break; - case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2: - dump_string(settings, "VkSubresourceLayout2"); - break; - case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO: dump_string(settings, "VkBufferUsageFlags2CreateInfo"); break; @@ -44696,6 +46205,22 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkRenderingFragmentShadingRateAttachmentInfoKHR"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR: + dump_string(settings, "VkPhysicalDeviceShaderConstantDataFeaturesKHR"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR: + dump_string(settings, "VkPhysicalDeviceShaderAbortFeaturesKHR"); + break; + + case VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR: + dump_string(settings, "VkDeviceFaultShaderAbortMessageInfoKHR"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR: + dump_string(settings, "VkPhysicalDeviceShaderAbortPropertiesKHR"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR: dump_string(settings, "VkPhysicalDeviceShaderQuadControlFeaturesKHR"); break; @@ -44788,6 +46313,70 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkVideoEncodeSessionParametersFeedbackInfoKHR"); break; + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR: + dump_string(settings, "VkDeviceMemoryCopyKHR"); + break; + + case VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR: + dump_string(settings, "VkCopyDeviceMemoryInfoKHR"); + break; + + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR: + dump_string(settings, "VkDeviceMemoryImageCopyKHR"); + break; + + case VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR: + dump_string(settings, "VkCopyDeviceMemoryImageInfoKHR"); + break; + + case VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR: + dump_string(settings, "VkMemoryRangeBarrierKHR"); + break; + + case VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR: + dump_string(settings, "VkMemoryRangeBarriersInfoKHR"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR: + dump_string(settings, "VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR"); + break; + + case VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR: + dump_string(settings, "VkBindIndexBuffer3InfoKHR"); + break; + + case VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR: + dump_string(settings, "VkBindVertexBuffer3InfoKHR"); + break; + + case VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR: + dump_string(settings, "VkDrawIndirect2InfoKHR"); + break; + + case VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR: + dump_string(settings, "VkDrawIndirectCount2InfoKHR"); + break; + + case VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR: + dump_string(settings, "VkDispatchIndirect2InfoKHR"); + break; + + case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT: + dump_string(settings, "VkConditionalRenderingBeginInfo2EXT"); + break; + + case VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT: + dump_string(settings, "VkBindTransformFeedbackBuffer2InfoEXT"); + break; + + case VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD: + dump_string(settings, "VkMemoryMarkerInfoAMD"); + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR: + dump_string(settings, "VkAccelerationStructureCreateInfo2KHR"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: dump_string(settings, "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR"); break; @@ -45152,6 +46741,22 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkPhysicalDeviceLayeredApiVulkanPropertiesKHR"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR: + dump_string(settings, "VkPhysicalDeviceFaultFeaturesKHR"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR: + dump_string(settings, "VkPhysicalDeviceFaultPropertiesKHR"); + break; + + case VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR: + dump_string(settings, "VkDeviceFaultInfoKHR"); + break; + + case VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR: + dump_string(settings, "VkDeviceFaultDebugInfoKHR"); + break; + case VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR: dump_string(settings, "VkMemoryBarrierAccessFlags3KHR"); break; @@ -45228,6 +46833,14 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkResolveImageModeInfoKHR"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR: + dump_string(settings, "VkPhysicalDeviceMaintenance11FeaturesKHR"); + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR: + dump_string(settings, "VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR"); + break; + case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: dump_string(settings, "VkDebugReportCallbackCreateInfoEXT"); break; @@ -46161,6 +47774,18 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: dump_string(settings, "VkDeviceDiagnosticsConfigCreateInfoNV"); break; + + case VK_STRUCTURE_TYPE_PERF_HINT_INFO_QCOM: + dump_string(settings, "VkPerfHintInfoQCOM"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM: + dump_string(settings, "VkPhysicalDeviceQueuePerfHintFeaturesQCOM"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM: + dump_string(settings, "VkPhysicalDeviceQueuePerfHintPropertiesQCOM"); + break; #if defined(VK_ENABLE_BETA_EXTENSIONS) case VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV: @@ -46266,10 +47891,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkPhysicalDeviceDescriptorBufferPropertiesEXT"); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: - dump_string(settings, "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"); - break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceDescriptorBufferFeaturesEXT"); break; @@ -46314,6 +47935,10 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkAccelerationStructureCaptureDescriptorDataInfoEXT"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: + dump_string(settings, "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT"); break; @@ -46734,6 +48359,14 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkPhysicalDeviceSchedulingControlsPropertiesARM"); break; + case VK_STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM: + dump_string(settings, "VkDispatchParametersARM"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM: + dump_string(settings, "VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT"); break; @@ -47300,6 +48933,10 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM"); break; + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM: + dump_string(settings, "VkQueueFamilyDataGraphTOSAPropertiesARM"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: dump_string(settings, "VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM"); break; @@ -47674,6 +49311,22 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkRenderPassPerformanceCountersByRegionBeginInfoARM"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM: + dump_string(settings, "VkPhysicalDeviceShaderInstrumentationFeaturesARM"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM: + dump_string(settings, "VkPhysicalDeviceShaderInstrumentationPropertiesARM"); + break; + + case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM: + dump_string(settings, "VkShaderInstrumentationCreateInfoARM"); + break; + + case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM: + dump_string(settings, "VkShaderInstrumentationMetricDescriptionARM"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT"); break; @@ -47693,7 +49346,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE: dump_string(settings, "VkPipelineFragmentDensityMapLayeredCreateInfoVALVE"); break; -#if defined(VK_ENABLE_BETA_EXTENSIONS) case VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV: dump_string(settings, "VkSetPresentConfigNV"); @@ -47702,7 +49354,6 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV: dump_string(settings, "VkPhysicalDevicePresentMeteringFeaturesNV"); break; -#endif // VK_ENABLE_BETA_EXTENSIONS case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT"); @@ -47732,6 +49383,42 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, dump_string(settings, "VkPhysicalDeviceDataGraphModelFeaturesQCOM"); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM: + dump_string(settings, "VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM"); + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM: + dump_string(settings, "VkQueueFamilyDataGraphOpticalFlowPropertiesARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM: + dump_string(settings, "VkDataGraphPipelineOpticalFlowCreateInfoARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM: + dump_string(settings, "VkDataGraphOpticalFlowImageFormatPropertiesARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM: + dump_string(settings, "VkDataGraphOpticalFlowImageFormatInfoARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM: + dump_string(settings, "VkDataGraphPipelineOpticalFlowDispatchInfoARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM: + dump_string(settings, "VkDataGraphPipelineResourceInfoImageLayoutARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM: + dump_string(settings, "VkDataGraphPipelineSingleNodeConnectionARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM: + dump_string(settings, "VkDataGraphPipelineSingleNodeCreateInfoARM"); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceShaderLongVectorFeaturesEXT"); break; @@ -47759,6 +49446,40 @@ void dump_pNext_struct_name(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT: dump_string(settings, "VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT"); break; +#if defined(VK_USE_PLATFORM_UBM_SEC) + + case VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC: + dump_string(settings, "VkUbmSurfaceCreateInfoSEC"); + break; +#endif // VK_USE_PLATFORM_UBM_SEC + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE: + dump_string(settings, "VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE"); + break; + + case VK_STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC: + dump_string(settings, "VkThrottleHintSubmitInfoSEC"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC: + dump_string(settings, "VkPhysicalDeviceThrottleHintFeaturesSEC"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM: + dump_string(settings, "VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM: + dump_string(settings, "VkDataGraphPipelineNeuralStatisticsCreateInfoARM"); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM: + dump_string(settings, "VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM"); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT: + dump_string(settings, "VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT"); + break; case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR: dump_string(settings, "VkAccelerationStructureGeometryTrianglesDataKHR"); @@ -47866,18 +49587,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, VkBaseInStructure base_struct{}; memcpy(&base_struct, object, sizeof(VkBaseInStructure)); switch (base_struct.sType) { - case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: - dump_VkBufferMemoryBarrier(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkBufferMemoryBarrier*" : "VkBufferMemoryBarrier"), "pNext", indents, reinterpret_cast(object)); - break; - - case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: - dump_VkImageMemoryBarrier(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkImageMemoryBarrier*" : "VkImageMemoryBarrier"), "pNext", indents, reinterpret_cast(object)); - break; - - case VK_STRUCTURE_TYPE_MEMORY_BARRIER: - dump_VkMemoryBarrier(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkMemoryBarrier*" : "VkMemoryBarrier"), "pNext", indents, reinterpret_cast(object)); - break; - case VK_STRUCTURE_TYPE_APPLICATION_INFO: dump_VkApplicationInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkApplicationInfo*" : "VkApplicationInfo"), "pNext", indents, reinterpret_cast(object)); break; @@ -47950,6 +49659,18 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkCommandBufferBeginInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkCommandBufferBeginInfo*" : "VkCommandBufferBeginInfo"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: + dump_VkBufferMemoryBarrier(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkBufferMemoryBarrier*" : "VkBufferMemoryBarrier"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: + dump_VkImageMemoryBarrier(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkImageMemoryBarrier*" : "VkImageMemoryBarrier"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_MEMORY_BARRIER: + dump_VkMemoryBarrier(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkMemoryBarrier*" : "VkMemoryBarrier"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO: dump_VkEventCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkEventCreateInfo*" : "VkEventCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; @@ -48002,40 +49723,40 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkWriteDescriptorSet(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkWriteDescriptorSet*" : "VkWriteDescriptorSet"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: - dump_VkPipelineVertexInputStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineVertexInputStateCreateInfo*" : "VkPipelineVertexInputStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); - break; - - case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: - dump_VkPipelineInputAssemblyStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineInputAssemblyStateCreateInfo*" : "VkPipelineInputAssemblyStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: + dump_VkPipelineColorBlendStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineColorBlendStateCreateInfo*" : "VkPipelineColorBlendStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: - dump_VkPipelineTessellationStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineTessellationStateCreateInfo*" : "VkPipelineTessellationStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: + dump_VkPipelineDepthStencilStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineDepthStencilStateCreateInfo*" : "VkPipelineDepthStencilStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: - dump_VkPipelineViewportStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineViewportStateCreateInfo*" : "VkPipelineViewportStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: + dump_VkPipelineDynamicStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineDynamicStateCreateInfo*" : "VkPipelineDynamicStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: - dump_VkPipelineRasterizationStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineRasterizationStateCreateInfo*" : "VkPipelineRasterizationStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: + dump_VkPipelineInputAssemblyStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineInputAssemblyStateCreateInfo*" : "VkPipelineInputAssemblyStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: dump_VkPipelineMultisampleStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineMultisampleStateCreateInfo*" : "VkPipelineMultisampleStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: - dump_VkPipelineDepthStencilStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineDepthStencilStateCreateInfo*" : "VkPipelineDepthStencilStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: + dump_VkPipelineRasterizationStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineRasterizationStateCreateInfo*" : "VkPipelineRasterizationStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: - dump_VkPipelineColorBlendStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineColorBlendStateCreateInfo*" : "VkPipelineColorBlendStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: + dump_VkPipelineTessellationStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineTessellationStateCreateInfo*" : "VkPipelineTessellationStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: - dump_VkPipelineDynamicStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineDynamicStateCreateInfo*" : "VkPipelineDynamicStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: + dump_VkPipelineVertexInputStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineVertexInputStateCreateInfo*" : "VkPipelineVertexInputStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: + dump_VkPipelineViewportStateCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineViewportStateCreateInfo*" : "VkPipelineViewportStateCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO: @@ -48314,6 +50035,10 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkPhysicalDeviceShaderDrawParametersFeatures(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderDrawParametersFeatures*" : "VkPhysicalDeviceShaderDrawParametersFeatures"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: + dump_VkPhysicalDeviceDriverProperties(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDriverProperties*" : "VkPhysicalDeviceDriverProperties"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: dump_VkPhysicalDeviceVulkan11Features(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceVulkan11Features*" : "VkPhysicalDeviceVulkan11Features"), "pNext", indents, reinterpret_cast(object)); break; @@ -48334,10 +50059,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkImageFormatListCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkImageFormatListCreateInfo*" : "VkImageFormatListCreateInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: - dump_VkPhysicalDeviceDriverProperties(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDriverProperties*" : "VkPhysicalDeviceDriverProperties"), "pNext", indents, reinterpret_cast(object)); - break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: dump_VkPhysicalDeviceVulkanMemoryModelFeatures(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceVulkanMemoryModelFeatures*" : "VkPhysicalDeviceVulkanMemoryModelFeatures"), "pNext", indents, reinterpret_cast(object)); break; @@ -48462,10 +50183,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkSubpassDependency2(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSubpassDependency2*" : "VkSubpassDependency2"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: - dump_VkRenderPassCreateInfo2(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkRenderPassCreateInfo2*" : "VkRenderPassCreateInfo2"), "pNext", indents, reinterpret_cast(object)); - break; - case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO: dump_VkSubpassBeginInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSubpassBeginInfo*" : "VkSubpassBeginInfo"), "pNext", indents, reinterpret_cast(object)); break; @@ -48474,6 +50191,10 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkSubpassEndInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSubpassEndInfo*" : "VkSubpassEndInfo"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: + dump_VkRenderPassCreateInfo2(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkRenderPassCreateInfo2*" : "VkRenderPassCreateInfo2"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: dump_VkSubpassDescriptionDepthStencilResolve(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSubpassDescriptionDepthStencilResolve*" : "VkSubpassDescriptionDepthStencilResolve"), "pNext", indents, reinterpret_cast(object)); break; @@ -48494,14 +50215,14 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkFramebufferAttachmentImageInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkFramebufferAttachmentImageInfo*" : "VkFramebufferAttachmentImageInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: - dump_VkFramebufferAttachmentsCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkFramebufferAttachmentsCreateInfo*" : "VkFramebufferAttachmentsCreateInfo"), "pNext", indents, reinterpret_cast(object)); - break; - case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: dump_VkRenderPassAttachmentBeginInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkRenderPassAttachmentBeginInfo*" : "VkRenderPassAttachmentBeginInfo"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: + dump_VkFramebufferAttachmentsCreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkFramebufferAttachmentsCreateInfo*" : "VkFramebufferAttachmentsCreateInfo"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: dump_VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*" : "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"), "pNext", indents, reinterpret_cast(object)); break; @@ -48762,6 +50483,10 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkPhysicalDeviceMaintenance5Properties(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceMaintenance5Properties*" : "VkPhysicalDeviceMaintenance5Properties"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2: + dump_VkSubresourceLayout2(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSubresourceLayout2*" : "VkSubresourceLayout2"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2: dump_VkImageSubresource2(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkImageSubresource2*" : "VkImageSubresource2"), "pNext", indents, reinterpret_cast(object)); break; @@ -48770,10 +50495,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkDeviceImageSubresourceInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceImageSubresourceInfo*" : "VkDeviceImageSubresourceInfo"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2: - dump_VkSubresourceLayout2(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSubresourceLayout2*" : "VkSubresourceLayout2"), "pNext", indents, reinterpret_cast(object)); - break; - case VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO: dump_VkBufferUsageFlags2CreateInfo(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkBufferUsageFlags2CreateInfo*" : "VkBufferUsageFlags2CreateInfo"), "pNext", indents, reinterpret_cast(object)); break; @@ -49428,6 +51149,22 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkRenderingFragmentShadingRateAttachmentInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkRenderingFragmentShadingRateAttachmentInfoKHR*" : "VkRenderingFragmentShadingRateAttachmentInfoKHR"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR: + dump_VkPhysicalDeviceShaderConstantDataFeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderConstantDataFeaturesKHR*" : "VkPhysicalDeviceShaderConstantDataFeaturesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR: + dump_VkPhysicalDeviceShaderAbortFeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderAbortFeaturesKHR*" : "VkPhysicalDeviceShaderAbortFeaturesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR: + dump_VkDeviceFaultShaderAbortMessageInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceFaultShaderAbortMessageInfoKHR*" : "VkDeviceFaultShaderAbortMessageInfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR: + dump_VkPhysicalDeviceShaderAbortPropertiesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderAbortPropertiesKHR*" : "VkPhysicalDeviceShaderAbortPropertiesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR: dump_VkPhysicalDeviceShaderQuadControlFeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderQuadControlFeaturesKHR*" : "VkPhysicalDeviceShaderQuadControlFeaturesKHR"), "pNext", indents, reinterpret_cast(object)); break; @@ -49520,6 +51257,70 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkVideoEncodeSessionParametersFeedbackInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkVideoEncodeSessionParametersFeedbackInfoKHR*" : "VkVideoEncodeSessionParametersFeedbackInfoKHR"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR: + dump_VkDeviceMemoryCopyKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceMemoryCopyKHR*" : "VkDeviceMemoryCopyKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR: + dump_VkCopyDeviceMemoryInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkCopyDeviceMemoryInfoKHR*" : "VkCopyDeviceMemoryInfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR: + dump_VkDeviceMemoryImageCopyKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceMemoryImageCopyKHR*" : "VkDeviceMemoryImageCopyKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR: + dump_VkCopyDeviceMemoryImageInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkCopyDeviceMemoryImageInfoKHR*" : "VkCopyDeviceMemoryImageInfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR: + dump_VkMemoryRangeBarrierKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkMemoryRangeBarrierKHR*" : "VkMemoryRangeBarrierKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR: + dump_VkMemoryRangeBarriersInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkMemoryRangeBarriersInfoKHR*" : "VkMemoryRangeBarriersInfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR: + dump_VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR*" : "VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR: + dump_VkBindIndexBuffer3InfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkBindIndexBuffer3InfoKHR*" : "VkBindIndexBuffer3InfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR: + dump_VkBindVertexBuffer3InfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkBindVertexBuffer3InfoKHR*" : "VkBindVertexBuffer3InfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR: + dump_VkDrawIndirect2InfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDrawIndirect2InfoKHR*" : "VkDrawIndirect2InfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR: + dump_VkDrawIndirectCount2InfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDrawIndirectCount2InfoKHR*" : "VkDrawIndirectCount2InfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR: + dump_VkDispatchIndirect2InfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDispatchIndirect2InfoKHR*" : "VkDispatchIndirect2InfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT: + dump_VkConditionalRenderingBeginInfo2EXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkConditionalRenderingBeginInfo2EXT*" : "VkConditionalRenderingBeginInfo2EXT"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT: + dump_VkBindTransformFeedbackBuffer2InfoEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkBindTransformFeedbackBuffer2InfoEXT*" : "VkBindTransformFeedbackBuffer2InfoEXT"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD: + dump_VkMemoryMarkerInfoAMD(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkMemoryMarkerInfoAMD*" : "VkMemoryMarkerInfoAMD"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR: + dump_VkAccelerationStructureCreateInfo2KHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkAccelerationStructureCreateInfo2KHR*" : "VkAccelerationStructureCreateInfo2KHR"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR: dump_VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR*" : "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR"), "pNext", indents, reinterpret_cast(object)); break; @@ -49884,6 +51685,22 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkPhysicalDeviceLayeredApiVulkanPropertiesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceLayeredApiVulkanPropertiesKHR*" : "VkPhysicalDeviceLayeredApiVulkanPropertiesKHR"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR: + dump_VkPhysicalDeviceFaultFeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceFaultFeaturesKHR*" : "VkPhysicalDeviceFaultFeaturesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR: + dump_VkPhysicalDeviceFaultPropertiesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceFaultPropertiesKHR*" : "VkPhysicalDeviceFaultPropertiesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR: + dump_VkDeviceFaultInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceFaultInfoKHR*" : "VkDeviceFaultInfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR: + dump_VkDeviceFaultDebugInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceFaultDebugInfoKHR*" : "VkDeviceFaultDebugInfoKHR"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR: dump_VkMemoryBarrierAccessFlags3KHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkMemoryBarrierAccessFlags3KHR*" : "VkMemoryBarrierAccessFlags3KHR"), "pNext", indents, reinterpret_cast(object)); break; @@ -49960,6 +51777,14 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkResolveImageModeInfoKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkResolveImageModeInfoKHR*" : "VkResolveImageModeInfoKHR"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_11_FEATURES_KHR: + dump_VkPhysicalDeviceMaintenance11FeaturesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceMaintenance11FeaturesKHR*" : "VkPhysicalDeviceMaintenance11FeaturesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_OPTIMAL_IMAGE_TRANSFER_GRANULARITY_PROPERTIES_KHR: + dump_VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR*" : "VkQueueFamilyOptimalImageTransferGranularityPropertiesKHR"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: dump_VkDebugReportCallbackCreateInfoEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDebugReportCallbackCreateInfoEXT*" : "VkDebugReportCallbackCreateInfoEXT"), "pNext", indents, reinterpret_cast(object)); break; @@ -50893,6 +52718,18 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: dump_VkDeviceDiagnosticsConfigCreateInfoNV(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDeviceDiagnosticsConfigCreateInfoNV*" : "VkDeviceDiagnosticsConfigCreateInfoNV"), "pNext", indents, reinterpret_cast(object)); break; + + case VK_STRUCTURE_TYPE_PERF_HINT_INFO_QCOM: + dump_VkPerfHintInfoQCOM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPerfHintInfoQCOM*" : "VkPerfHintInfoQCOM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_FEATURES_QCOM: + dump_VkPhysicalDeviceQueuePerfHintFeaturesQCOM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceQueuePerfHintFeaturesQCOM*" : "VkPhysicalDeviceQueuePerfHintFeaturesQCOM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_PERF_HINT_PROPERTIES_QCOM: + dump_VkPhysicalDeviceQueuePerfHintPropertiesQCOM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceQueuePerfHintPropertiesQCOM*" : "VkPhysicalDeviceQueuePerfHintPropertiesQCOM"), "pNext", indents, reinterpret_cast(object)); + break; #if defined(VK_ENABLE_BETA_EXTENSIONS) case VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV: @@ -50998,10 +52835,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkPhysicalDeviceDescriptorBufferPropertiesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDescriptorBufferPropertiesEXT*" : "VkPhysicalDeviceDescriptorBufferPropertiesEXT"), "pNext", indents, reinterpret_cast(object)); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: - dump_VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT*" : "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"), "pNext", indents, reinterpret_cast(object)); - break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT: dump_VkPhysicalDeviceDescriptorBufferFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDescriptorBufferFeaturesEXT*" : "VkPhysicalDeviceDescriptorBufferFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); break; @@ -51046,6 +52879,10 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkAccelerationStructureCaptureDescriptorDataInfoEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkAccelerationStructureCaptureDescriptorDataInfoEXT*" : "VkAccelerationStructureCaptureDescriptorDataInfoEXT"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT: + dump_VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT*" : "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT: dump_VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*" : "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); break; @@ -51466,6 +53303,14 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkPhysicalDeviceSchedulingControlsPropertiesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceSchedulingControlsPropertiesARM*" : "VkPhysicalDeviceSchedulingControlsPropertiesARM"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_DISPATCH_PARAMETERS_ARM: + dump_VkDispatchParametersARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDispatchParametersARM*" : "VkDispatchParametersARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_DISPATCH_PARAMETERS_PROPERTIES_ARM: + dump_VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM*" : "VkPhysicalDeviceSchedulingControlsDispatchParametersPropertiesARM"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT: dump_VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT*" : "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); break; @@ -52032,6 +53877,10 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM*" : "VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_TOSA_PROPERTIES_ARM: + dump_VkQueueFamilyDataGraphTOSAPropertiesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkQueueFamilyDataGraphTOSAPropertiesARM*" : "VkQueueFamilyDataGraphTOSAPropertiesARM"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM: dump_VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM*" : "VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM"), "pNext", indents, reinterpret_cast(object)); break; @@ -52406,6 +54255,22 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkRenderPassPerformanceCountersByRegionBeginInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkRenderPassPerformanceCountersByRegionBeginInfoARM*" : "VkRenderPassPerformanceCountersByRegionBeginInfoARM"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM: + dump_VkPhysicalDeviceShaderInstrumentationFeaturesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderInstrumentationFeaturesARM*" : "VkPhysicalDeviceShaderInstrumentationFeaturesARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM: + dump_VkPhysicalDeviceShaderInstrumentationPropertiesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderInstrumentationPropertiesARM*" : "VkPhysicalDeviceShaderInstrumentationPropertiesARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM: + dump_VkShaderInstrumentationCreateInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkShaderInstrumentationCreateInfoARM*" : "VkShaderInstrumentationCreateInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM: + dump_VkShaderInstrumentationMetricDescriptionARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkShaderInstrumentationMetricDescriptionARM*" : "VkShaderInstrumentationMetricDescriptionARM"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: dump_VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT*" : "VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); break; @@ -52425,7 +54290,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE: dump_VkPipelineFragmentDensityMapLayeredCreateInfoVALVE(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPipelineFragmentDensityMapLayeredCreateInfoVALVE*" : "VkPipelineFragmentDensityMapLayeredCreateInfoVALVE"), "pNext", indents, reinterpret_cast(object)); break; -#if defined(VK_ENABLE_BETA_EXTENSIONS) case VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV: dump_VkSetPresentConfigNV(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkSetPresentConfigNV*" : "VkSetPresentConfigNV"), "pNext", indents, reinterpret_cast(object)); @@ -52434,7 +54298,6 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV: dump_VkPhysicalDevicePresentMeteringFeaturesNV(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDevicePresentMeteringFeaturesNV*" : "VkPhysicalDevicePresentMeteringFeaturesNV"), "pNext", indents, reinterpret_cast(object)); break; -#endif // VK_ENABLE_BETA_EXTENSIONS case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT: dump_VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT*" : "VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); @@ -52464,6 +54327,42 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, dump_VkPhysicalDeviceDataGraphModelFeaturesQCOM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDataGraphModelFeaturesQCOM*" : "VkPhysicalDeviceDataGraphModelFeaturesQCOM"), "pNext", indents, reinterpret_cast(object)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_OPTICAL_FLOW_FEATURES_ARM: + dump_VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM*" : "VkPhysicalDeviceDataGraphOpticalFlowFeaturesARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_OPTICAL_FLOW_PROPERTIES_ARM: + dump_VkQueueFamilyDataGraphOpticalFlowPropertiesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkQueueFamilyDataGraphOpticalFlowPropertiesARM*" : "VkQueueFamilyDataGraphOpticalFlowPropertiesARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_CREATE_INFO_ARM: + dump_VkDataGraphPipelineOpticalFlowCreateInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineOpticalFlowCreateInfoARM*" : "VkDataGraphPipelineOpticalFlowCreateInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_ARM: + dump_VkDataGraphOpticalFlowImageFormatPropertiesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphOpticalFlowImageFormatPropertiesARM*" : "VkDataGraphOpticalFlowImageFormatPropertiesARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_OPTICAL_FLOW_IMAGE_FORMAT_INFO_ARM: + dump_VkDataGraphOpticalFlowImageFormatInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphOpticalFlowImageFormatInfoARM*" : "VkDataGraphOpticalFlowImageFormatInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_OPTICAL_FLOW_DISPATCH_INFO_ARM: + dump_VkDataGraphPipelineOpticalFlowDispatchInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineOpticalFlowDispatchInfoARM*" : "VkDataGraphPipelineOpticalFlowDispatchInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_IMAGE_LAYOUT_ARM: + dump_VkDataGraphPipelineResourceInfoImageLayoutARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineResourceInfoImageLayoutARM*" : "VkDataGraphPipelineResourceInfoImageLayoutARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CONNECTION_ARM: + dump_VkDataGraphPipelineSingleNodeConnectionARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineSingleNodeConnectionARM*" : "VkDataGraphPipelineSingleNodeConnectionARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SINGLE_NODE_CREATE_INFO_ARM: + dump_VkDataGraphPipelineSingleNodeCreateInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineSingleNodeCreateInfoARM*" : "VkDataGraphPipelineSingleNodeCreateInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT: dump_VkPhysicalDeviceShaderLongVectorFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderLongVectorFeaturesEXT*" : "VkPhysicalDeviceShaderLongVectorFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); break; @@ -52491,6 +54390,40 @@ void dump_pNext_trampoline(const void* object, const ApiDumpSettings& settings, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT: dump_VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT*" : "VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); break; +#if defined(VK_USE_PLATFORM_UBM_SEC) + + case VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC: + dump_VkUbmSurfaceCreateInfoSEC(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkUbmSurfaceCreateInfoSEC*" : "VkUbmSurfaceCreateInfoSEC"), "pNext", indents, reinterpret_cast(object)); + break; +#endif // VK_USE_PLATFORM_UBM_SEC + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE: + dump_VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE*" : "VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_THROTTLE_HINT_SUBMIT_INFO_SEC: + dump_VkThrottleHintSubmitInfoSEC(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkThrottleHintSubmitInfoSEC*" : "VkThrottleHintSubmitInfoSEC"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_THROTTLE_HINT_FEATURES_SEC: + dump_VkPhysicalDeviceThrottleHintFeaturesSEC(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceThrottleHintFeaturesSEC*" : "VkPhysicalDeviceThrottleHintFeaturesSEC"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_NEURAL_ACCELERATOR_STATISTICS_FEATURES_ARM: + dump_VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM*" : "VkPhysicalDeviceDataGraphNeuralAcceleratorStatisticsFeaturesARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_NEURAL_STATISTICS_CREATE_INFO_ARM: + dump_VkDataGraphPipelineNeuralStatisticsCreateInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineNeuralStatisticsCreateInfoARM*" : "VkDataGraphPipelineNeuralStatisticsCreateInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_NEURAL_STATISTICS_CREATE_INFO_ARM: + dump_VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM*" : "VkDataGraphPipelineSessionNeuralStatisticsCreateInfoARM"), "pNext", indents, reinterpret_cast(object)); + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_RESTART_INDEX_FEATURES_EXT: + dump_VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT*" : "VkPhysicalDevicePrimitiveRestartIndexFeaturesEXT"), "pNext", indents, reinterpret_cast(object)); + break; case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR: dump_VkAccelerationStructureGeometryTrianglesDataKHR(*reinterpret_cast(object), settings, (Format == ApiDumpFormat::Json ? "VkAccelerationStructureGeometryTrianglesDataKHR*" : "VkAccelerationStructureGeometryTrianglesDataKHR"), "pNext", indents, reinterpret_cast(object)); @@ -58380,6 +60313,340 @@ void dump_params_vkQueueSubmit2KHR(ApiDumpInstance& dump_inst, VkQueue queue, ui } } +template +void dump_params_vkCmdBindIndexBuffer3KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkBindIndexBuffer3InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkBindIndexBuffer3InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBindIndexBuffer3InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdBindVertexBuffers3KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindVertexBuffer3InfoKHR* pBindingInfos) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(firstBinding, settings, "uint32_t", "firstBinding", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(bindingCount, settings, "uint32_t", "bindingCount", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer_array(pBindingInfos, bindingCount, settings, "const VkBindVertexBuffer3InfoKHR*", "pBindingInfos", "const VkBindVertexBuffer3InfoKHR", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBindVertexBuffer3InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawIndirect2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDrawIndirect2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDrawIndirect2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawIndexedIndirect2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDrawIndirect2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDrawIndirect2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDispatchIndirect2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDispatchIndirect2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDispatchIndirect2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDispatchIndirect2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdCopyMemoryKHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryInfoKHR* pCopyMemoryInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCopyMemoryInfo, settings, "const VkCopyDeviceMemoryInfoKHR*", "pCopyMemoryInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkCopyDeviceMemoryInfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdCopyMemoryToImageKHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCopyMemoryInfo, settings, "const VkCopyDeviceMemoryImageInfoKHR*", "pCopyMemoryInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkCopyDeviceMemoryImageInfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdCopyImageToMemoryKHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCopyMemoryInfo, settings, "const VkCopyDeviceMemoryImageInfoKHR*", "pCopyMemoryInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkCopyDeviceMemoryImageInfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdUpdateMemoryKHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkDeviceSize dataSize, const void* pData) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pDstRange, settings, "const VkDeviceAddressRangeKHR*", "pDstRange", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDeviceAddressRangeKHR); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(dstFlags, settings, "VkAddressCommandFlagsKHR", "dstFlags", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(dataSize, settings, "VkDeviceSize", "dataSize", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(pData, settings, "const void*", "pData", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdFillMemoryKHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, uint32_t data) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pDstRange, settings, "const VkDeviceAddressRangeKHR*", "pDstRange", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDeviceAddressRangeKHR); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(dstFlags, settings, "VkAddressCommandFlagsKHR", "dstFlags", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(data, settings, "uint32_t", "data", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdCopyQueryPoolResultsToMemoryKHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, const VkStridedDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkQueryResultFlags queryResultFlags) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkQueryPool(queryPool, settings, "VkQueryPool", "queryPool", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(firstQuery, settings, "uint32_t", "firstQuery", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(queryCount, settings, "uint32_t", "queryCount", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pDstRange, settings, "const VkStridedDeviceAddressRangeKHR*", "pDstRange", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkStridedDeviceAddressRangeKHR); + dump_separate_members(settings); + dump_VkAddressCommandFlagsKHR(dstFlags, settings, "VkAddressCommandFlagsKHR", "dstFlags", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkQueryResultFlags(queryResultFlags, settings, "VkQueryResultFlags", "queryResultFlags", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawIndirectCount2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDrawIndirectCount2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDrawIndirectCount2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawIndexedIndirectCount2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDrawIndirectCount2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDrawIndirectCount2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdBeginConditionalRendering2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfo2EXT* pConditionalRenderingBegin) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pConditionalRenderingBegin, settings, "const VkConditionalRenderingBeginInfo2EXT*", "pConditionalRenderingBegin", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkConditionalRenderingBeginInfo2EXT); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdBindTransformFeedbackBuffers2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindTransformFeedbackBuffer2InfoEXT* pBindingInfos) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(firstBinding, settings, "uint32_t", "firstBinding", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(bindingCount, settings, "uint32_t", "bindingCount", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer_array(pBindingInfos, bindingCount, settings, "const VkBindTransformFeedbackBuffer2InfoEXT*", "pBindingInfos", "const VkBindTransformFeedbackBuffer2InfoEXT", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBindTransformFeedbackBuffer2InfoEXT); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdBeginTransformFeedback2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(firstCounterRange, settings, "uint32_t", "firstCounterRange", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(counterRangeCount, settings, "uint32_t", "counterRangeCount", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer_array(pCounterInfos, counterRangeCount, settings, "const VkBindTransformFeedbackBuffer2InfoEXT*", "pCounterInfos", "const VkBindTransformFeedbackBuffer2InfoEXT", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBindTransformFeedbackBuffer2InfoEXT); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdEndTransformFeedback2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(firstCounterRange, settings, "uint32_t", "firstCounterRange", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(counterRangeCount, settings, "uint32_t", "counterRangeCount", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer_array(pCounterInfos, counterRangeCount, settings, "const VkBindTransformFeedbackBuffer2InfoEXT*", "pCounterInfos", "const VkBindTransformFeedbackBuffer2InfoEXT", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBindTransformFeedbackBuffer2InfoEXT); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawIndirectByteCount2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo, uint32_t counterOffset, uint32_t vertexStride) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(instanceCount, settings, "uint32_t", "instanceCount", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(firstInstance, settings, "uint32_t", "firstInstance", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCounterInfo, settings, "const VkBindTransformFeedbackBuffer2InfoEXT*", "pCounterInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBindTransformFeedbackBuffer2InfoEXT); + dump_separate_members(settings); + dump_type(counterOffset, settings, "uint32_t", "counterOffset", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(vertexStride, settings, "uint32_t", "vertexStride", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawMeshTasksIndirect2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDrawIndirect2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDrawIndirect2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdDrawMeshTasksIndirectCount2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkDrawIndirectCount2InfoKHR*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDrawIndirectCount2InfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdWriteMarkerToMemoryAMD(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkMemoryMarkerInfoAMD* pInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pInfo, settings, "const VkMemoryMarkerInfoAMD*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkMemoryMarkerInfoAMD); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCreateAccelerationStructure2KHR(ApiDumpInstance& dump_inst, VkDevice device, const VkAccelerationStructureCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCreateInfo, settings, "const VkAccelerationStructureCreateInfo2KHR*", "pCreateInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAccelerationStructureCreateInfo2KHR); + dump_separate_members(settings); + dump_pointer(pAllocator, settings, "const VkAllocationCallbacks*", "pAllocator", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAllocationCallbacks); + dump_separate_members(settings); + dump_pointer(pAccelerationStructure, settings, "VkAccelerationStructureKHR*", "pAccelerationStructure", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAccelerationStructureKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + template void dump_params_vkCmdCopyBuffer2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) { const ApiDumpSettings& settings(dump_inst.settings()); @@ -58861,6 +61128,36 @@ void dump_params_vkCmdCopyMemoryToImageIndirectKHR(ApiDumpInstance& dump_inst, V } } +template +void dump_params_vkGetDeviceFaultReportsKHR(ApiDumpInstance& dump_inst, VkDevice device, uint64_t timeout, uint32_t* pFaultCounts, VkDeviceFaultInfoKHR* pFaultInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(timeout, settings, "uint64_t", "timeout", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pFaultCounts, settings, "uint32_t*", "pFaultCounts", (Format == ApiDumpFormat::Json ? 4 : 1), dump_type); + dump_separate_members(settings); + dump_pointer_array(pFaultInfo, *pFaultCounts, settings, "VkDeviceFaultInfoKHR*", "pFaultInfo", "VkDeviceFaultInfoKHR", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDeviceFaultInfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkGetDeviceFaultDebugInfoKHR(ApiDumpInstance& dump_inst, VkDevice device, VkDeviceFaultDebugInfoKHR* pDebugInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pDebugInfo, settings, "VkDeviceFaultDebugInfoKHR*", "pDebugInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDeviceFaultDebugInfoKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + template void dump_params_vkCmdEndRendering2KHR(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo) { const ApiDumpSettings& settings(dump_inst.settings()); @@ -60340,7 +62637,7 @@ void dump_params_vkDestroyAccelerationStructureNV(ApiDumpInstance& dump_inst, Vk } template -void dump_params_vkGetAccelerationStructureMemoryRequirementsNV(ApiDumpInstance& dump_inst, VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) { +void dump_params_vkGetAccelerationStructureMemoryRequirementsNV(ApiDumpInstance& dump_inst, VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) { const ApiDumpSettings& settings(dump_inst.settings()); if (settings.showParams()) { dump_pre_params_formatting(settings); @@ -60348,7 +62645,7 @@ void dump_params_vkGetAccelerationStructureMemoryRequirementsNV(ApiDumpInstance& dump_separate_members(settings); dump_pointer(pInfo, settings, "const VkAccelerationStructureMemoryRequirementsInfoNV*", "pInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAccelerationStructureMemoryRequirementsInfoNV); dump_separate_members(settings); - dump_pointer(pMemoryRequirements, settings, "VkMemoryRequirements2KHR*", "pMemoryRequirements", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkMemoryRequirements2); + dump_pointer(pMemoryRequirements, settings, "VkMemoryRequirements2*", "pMemoryRequirements", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkMemoryRequirements2); dump_post_params_formatting(settings); flush(settings); } @@ -61662,6 +63959,19 @@ void dump_params_vkGetPrivateDataEXT(ApiDumpInstance& dump_inst, VkDevice device flush(settings); } } + +template +void dump_params_vkQueueSetPerfHintQCOM(ApiDumpInstance& dump_inst, VkQueue queue, const VkPerfHintInfoQCOM* pPerfHintInfo) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkQueue(queue, settings, "VkQueue", "queue", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pPerfHintInfo, settings, "const VkPerfHintInfoQCOM*", "pPerfHintInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkPerfHintInfoQCOM); + dump_post_params_formatting(settings); + flush(settings); + } +} #if defined(VK_ENABLE_BETA_EXTENSIONS) template @@ -62301,13 +64611,13 @@ void dump_params_vkGetMemoryRemoteAddressNV(ApiDumpInstance& dump_inst, VkDevice } template -void dump_params_vkGetPipelinePropertiesEXT(ApiDumpInstance& dump_inst, VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) { +void dump_params_vkGetPipelinePropertiesEXT(ApiDumpInstance& dump_inst, VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) { const ApiDumpSettings& settings(dump_inst.settings()); if (settings.showParams()) { dump_pre_params_formatting(settings); dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); dump_separate_members(settings); - dump_pointer(pPipelineInfo, settings, "const VkPipelineInfoEXT*", "pPipelineInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkPipelineInfoKHR); + dump_pointer(pPipelineInfo, settings, "const VkPipelineInfoKHR*", "pPipelineInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkPipelineInfoKHR); dump_separate_members(settings); dump_pointer(pPipelineProperties, settings, "VkBaseOutStructure*", "pPipelineProperties", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBaseOutStructure); dump_post_params_formatting(settings); @@ -62744,6 +65054,19 @@ void dump_params_vkSetDeviceMemoryPriorityEXT(ApiDumpInstance& dump_inst, VkDevi } } +template +void dump_params_vkCmdSetDispatchParametersARM(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkDispatchParametersARM* pDispatchParameters) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pDispatchParameters, settings, "const VkDispatchParametersARM*", "pDispatchParameters", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDispatchParametersARM); + dump_post_params_formatting(settings); + flush(settings); + } +} + template void dump_params_vkGetDescriptorSetLayoutHostMappingInfoVALVE(ApiDumpInstance& dump_inst, VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) { const ApiDumpSettings& settings(dump_inst.settings()); @@ -64055,6 +66378,23 @@ void dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEngineProperti } } +template +void dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(ApiDumpInstance& dump_inst, VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties, VkBaseOutStructure* pProperties) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkPhysicalDevice(physicalDevice, settings, "VkPhysicalDevice", "physicalDevice", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(queueFamilyIndex, settings, "uint32_t", "queueFamilyIndex", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pQueueFamilyDataGraphProperties, settings, "const VkQueueFamilyDataGraphPropertiesARM*", "pQueueFamilyDataGraphProperties", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkQueueFamilyDataGraphPropertiesARM); + dump_separate_members(settings); + dump_pointer(pProperties, settings, "VkBaseOutStructure*", "pProperties", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkBaseOutStructure); + dump_post_params_formatting(settings); + flush(settings); + } +} + template void dump_params_vkCmdSetAttachmentFeedbackLoopEnableEXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) { const ApiDumpSettings& settings(dump_inst.settings()); @@ -64465,6 +66805,109 @@ void dump_params_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegion } } +template +void dump_params_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM(ApiDumpInstance& dump_inst, VkPhysicalDevice physicalDevice, uint32_t* pDescriptionCount, VkShaderInstrumentationMetricDescriptionARM* pDescriptions) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkPhysicalDevice(physicalDevice, settings, "VkPhysicalDevice", "physicalDevice", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pDescriptionCount, settings, "uint32_t*", "pDescriptionCount", (Format == ApiDumpFormat::Json ? 4 : 1), dump_type); + dump_separate_members(settings); + dump_pointer_array(pDescriptions, *pDescriptionCount, settings, "VkShaderInstrumentationMetricDescriptionARM*", "pDescriptions", "VkShaderInstrumentationMetricDescriptionARM", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkShaderInstrumentationMetricDescriptionARM); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCreateShaderInstrumentationARM(ApiDumpInstance& dump_inst, VkDevice device, const VkShaderInstrumentationCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderInstrumentationARM* pInstrumentation) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCreateInfo, settings, "const VkShaderInstrumentationCreateInfoARM*", "pCreateInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkShaderInstrumentationCreateInfoARM); + dump_separate_members(settings); + dump_pointer(pAllocator, settings, "const VkAllocationCallbacks*", "pAllocator", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAllocationCallbacks); + dump_separate_members(settings); + dump_pointer(pInstrumentation, settings, "VkShaderInstrumentationARM*", "pInstrumentation", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkShaderInstrumentationARM); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkDestroyShaderInstrumentationARM(ApiDumpInstance& dump_inst, VkDevice device, VkShaderInstrumentationARM instrumentation, const VkAllocationCallbacks* pAllocator) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkShaderInstrumentationARM(instrumentation, settings, "VkShaderInstrumentationARM", "instrumentation", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pAllocator, settings, "const VkAllocationCallbacks*", "pAllocator", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAllocationCallbacks); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdBeginShaderInstrumentationARM(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, VkShaderInstrumentationARM instrumentation) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkShaderInstrumentationARM(instrumentation, settings, "VkShaderInstrumentationARM", "instrumentation", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkCmdEndShaderInstrumentationARM(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkGetShaderInstrumentationValuesARM(ApiDumpInstance& dump_inst, VkDevice device, VkShaderInstrumentationARM instrumentation, uint32_t* pMetricBlockCount, void* pMetricValues, VkShaderInstrumentationValuesFlagsARM flags) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkShaderInstrumentationARM(instrumentation, settings, "VkShaderInstrumentationARM", "instrumentation", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pMetricBlockCount, settings, "uint32_t*", "pMetricBlockCount", (Format == ApiDumpFormat::Json ? 4 : 1), dump_type); + dump_separate_members(settings); + dump_type(pMetricValues, settings, "void*", "pMetricValues", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkShaderInstrumentationValuesFlagsARM(flags, settings, "VkShaderInstrumentationValuesFlagsARM", "flags", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkClearShaderInstrumentationMetricsARM(ApiDumpInstance& dump_inst, VkDevice device, VkShaderInstrumentationARM instrumentation) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkDevice(device, settings, "VkDevice", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_VkShaderInstrumentationARM(instrumentation, settings, "VkShaderInstrumentationARM", "instrumentation", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} + template void dump_params_vkCmdEndRendering2EXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo) { const ApiDumpSettings& settings(dump_inst.settings()); @@ -64491,6 +66934,27 @@ void dump_params_vkCmdBeginCustomResolveEXT(ApiDumpInstance& dump_inst, VkComman } } +template +void dump_params_vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(ApiDumpInstance& dump_inst, VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties, const VkDataGraphOpticalFlowImageFormatInfoARM* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkDataGraphOpticalFlowImageFormatPropertiesARM* pImageFormatProperties) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkPhysicalDevice(physicalDevice, settings, "VkPhysicalDevice", "physicalDevice", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(queueFamilyIndex, settings, "uint32_t", "queueFamilyIndex", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pQueueFamilyDataGraphProperties, settings, "const VkQueueFamilyDataGraphPropertiesARM*", "pQueueFamilyDataGraphProperties", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkQueueFamilyDataGraphPropertiesARM); + dump_separate_members(settings); + dump_pointer(pOpticalFlowImageFormatInfo, settings, "const VkDataGraphOpticalFlowImageFormatInfoARM*", "pOpticalFlowImageFormatInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDataGraphOpticalFlowImageFormatInfoARM); + dump_separate_members(settings); + dump_pointer(pFormatCount, settings, "uint32_t*", "pFormatCount", (Format == ApiDumpFormat::Json ? 4 : 1), dump_type); + dump_separate_members(settings); + dump_pointer_array(pImageFormatProperties, *pFormatCount, settings, "VkDataGraphOpticalFlowImageFormatPropertiesARM*", "pImageFormatProperties", "VkDataGraphOpticalFlowImageFormatPropertiesARM", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkDataGraphOpticalFlowImageFormatPropertiesARM); + dump_post_params_formatting(settings); + flush(settings); + } +} + template void dump_params_vkCmdSetComputeOccupancyPriorityNV(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, const VkComputeOccupancyPriorityParametersNV* pParameters) { const ApiDumpSettings& settings(dump_inst.settings()); @@ -64503,6 +66967,53 @@ void dump_params_vkCmdSetComputeOccupancyPriorityNV(ApiDumpInstance& dump_inst, flush(settings); } } +#if defined(VK_USE_PLATFORM_UBM_SEC) + +template +void dump_params_vkCreateUbmSurfaceSEC(ApiDumpInstance& dump_inst, VkInstance instance, const VkUbmSurfaceCreateInfoSEC* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkInstance(instance, settings, "VkInstance", "instance", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_pointer(pCreateInfo, settings, "const VkUbmSurfaceCreateInfoSEC*", "pCreateInfo", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkUbmSurfaceCreateInfoSEC); + dump_separate_members(settings); + dump_pointer(pAllocator, settings, "const VkAllocationCallbacks*", "pAllocator", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkAllocationCallbacks); + dump_separate_members(settings); + dump_pointer(pSurface, settings, "VkSurfaceKHR*", "pSurface", (Format == ApiDumpFormat::Json ? 4 : 1), dump_VkSurfaceKHR); + dump_post_params_formatting(settings); + flush(settings); + } +} + +template +void dump_params_vkGetPhysicalDeviceUbmPresentationSupportSEC(ApiDumpInstance& dump_inst, VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct ubm_device* device) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkPhysicalDevice(physicalDevice, settings, "VkPhysicalDevice", "physicalDevice", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(queueFamilyIndex, settings, "uint32_t", "queueFamilyIndex", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(device, settings, "struct ubm_device*", "device", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} +#endif // VK_USE_PLATFORM_UBM_SEC + +template +void dump_params_vkCmdSetPrimitiveRestartIndexEXT(ApiDumpInstance& dump_inst, VkCommandBuffer commandBuffer, uint32_t primitiveRestartIndex) { + const ApiDumpSettings& settings(dump_inst.settings()); + if (settings.showParams()) { + dump_pre_params_formatting(settings); + dump_VkCommandBuffer(commandBuffer, settings, "VkCommandBuffer", "commandBuffer", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_separate_members(settings); + dump_type(primitiveRestartIndex, settings, "uint32_t", "primitiveRestartIndex", (Format == ApiDumpFormat::Json ? 4 : 1)); + dump_post_params_formatting(settings); + flush(settings); + } +} template void dump_params_vkCreateAccelerationStructureKHR(ApiDumpInstance& dump_inst, VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { diff --git a/layersvt/generated/cputiming_dispatch.h b/layersvt/generated/cputiming_dispatch.h index feb06f3f7c..ce09700f88 100644 --- a/layersvt/generated/cputiming_dispatch.h +++ b/layersvt/generated/cputiming_dispatch.h @@ -586,6 +586,11 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEngi Timer timer(CPUTimingCategory::VkPhysicalDevice, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM"); instance_dispatch_table(physicalDevice)->GetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties); } +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties, VkBaseOutStructure* pProperties) { + Timer timer(CPUTimingCategory::VkPhysicalDevice, "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM"); + VkResult result = instance_dispatch_table(physicalDevice)->GetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pProperties); + return result; +} #if defined(VK_USE_PLATFORM_OHOS) VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { Timer timer(CPUTimingCategory::VkInstance, "vkCreateSurfaceOHOS"); @@ -603,6 +608,28 @@ VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceCo VkResult result = instance_dispatch_table(physicalDevice)->EnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions); return result; } +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM(VkPhysicalDevice physicalDevice, uint32_t* pDescriptionCount, VkShaderInstrumentationMetricDescriptionARM* pDescriptions) { + Timer timer(CPUTimingCategory::VkPhysicalDevice, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM"); + VkResult result = instance_dispatch_table(physicalDevice)->EnumeratePhysicalDeviceShaderInstrumentationMetricsARM(physicalDevice, pDescriptionCount, pDescriptions); + return result; +} +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, const VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties, const VkDataGraphOpticalFlowImageFormatInfoARM* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkDataGraphOpticalFlowImageFormatPropertiesARM* pImageFormatProperties) { + Timer timer(CPUTimingCategory::VkPhysicalDevice, "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM"); + VkResult result = instance_dispatch_table(physicalDevice)->GetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphProperties, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties); + return result; +} +#if defined(VK_USE_PLATFORM_UBM_SEC) +VKAPI_ATTR VkResult VKAPI_CALL vkCreateUbmSurfaceSEC(VkInstance instance, const VkUbmSurfaceCreateInfoSEC* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { + Timer timer(CPUTimingCategory::VkInstance, "vkCreateUbmSurfaceSEC"); + VkResult result = instance_dispatch_table(instance)->CreateUbmSurfaceSEC(instance, pCreateInfo, pAllocator, pSurface); + return result; +} +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceUbmPresentationSupportSEC(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct ubm_device* device) { + Timer timer(CPUTimingCategory::VkPhysicalDevice, "vkGetPhysicalDeviceUbmPresentationSupportSEC"); + VkBool32 result = instance_dispatch_table(physicalDevice)->GetPhysicalDeviceUbmPresentationSupportSEC(physicalDevice, queueFamilyIndex, device); + return result; +} +#endif // VK_USE_PLATFORM_UBM_SEC // Autogen device functions @@ -1897,6 +1924,95 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(VkQueue queue, uint32_t submitC VkResult result = device_dispatch_table(queue)->QueueSubmit2KHR(queue, submitCount, pSubmits, fence); return result; } +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer3KHR(VkCommandBuffer commandBuffer, const VkBindIndexBuffer3InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdBindIndexBuffer3KHR"); + device_dispatch_table(commandBuffer)->CmdBindIndexBuffer3KHR(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers3KHR(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindVertexBuffer3InfoKHR* pBindingInfos) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdBindVertexBuffers3KHR"); + device_dispatch_table(commandBuffer)->CmdBindVertexBuffers3KHR(commandBuffer, firstBinding, bindingCount, pBindingInfos); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawIndirect2KHR"); + device_dispatch_table(commandBuffer)->CmdDrawIndirect2KHR(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawIndexedIndirect2KHR"); + device_dispatch_table(commandBuffer)->CmdDrawIndexedIndirect2KHR(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect2KHR(VkCommandBuffer commandBuffer, const VkDispatchIndirect2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDispatchIndirect2KHR"); + device_dispatch_table(commandBuffer)->CmdDispatchIndirect2KHR(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryKHR(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryInfoKHR* pCopyMemoryInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdCopyMemoryKHR"); + device_dispatch_table(commandBuffer)->CmdCopyMemoryKHR(commandBuffer, pCopyMemoryInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageKHR(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdCopyMemoryToImageKHR"); + device_dispatch_table(commandBuffer)->CmdCopyMemoryToImageKHR(commandBuffer, pCopyMemoryInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToMemoryKHR(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdCopyImageToMemoryKHR"); + device_dispatch_table(commandBuffer)->CmdCopyImageToMemoryKHR(commandBuffer, pCopyMemoryInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateMemoryKHR(VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkDeviceSize dataSize, const void* pData) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdUpdateMemoryKHR"); + device_dispatch_table(commandBuffer)->CmdUpdateMemoryKHR(commandBuffer, pDstRange, dstFlags, dataSize, pData); +} +VKAPI_ATTR void VKAPI_CALL vkCmdFillMemoryKHR(VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, uint32_t data) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdFillMemoryKHR"); + device_dispatch_table(commandBuffer)->CmdFillMemoryKHR(commandBuffer, pDstRange, dstFlags, data); +} +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResultsToMemoryKHR(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, const VkStridedDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkQueryResultFlags queryResultFlags) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdCopyQueryPoolResultsToMemoryKHR"); + device_dispatch_table(commandBuffer)->CmdCopyQueryPoolResultsToMemoryKHR(commandBuffer, queryPool, firstQuery, queryCount, pDstRange, dstFlags, queryResultFlags); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawIndirectCount2KHR"); + device_dispatch_table(commandBuffer)->CmdDrawIndirectCount2KHR(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount2KHR(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawIndexedIndirectCount2KHR"); + device_dispatch_table(commandBuffer)->CmdDrawIndexedIndirectCount2KHR(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRendering2EXT(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfo2EXT* pConditionalRenderingBegin) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdBeginConditionalRendering2EXT"); + device_dispatch_table(commandBuffer)->CmdBeginConditionalRendering2EXT(commandBuffer, pConditionalRenderingBegin); +} +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindTransformFeedbackBuffer2InfoEXT* pBindingInfos) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdBindTransformFeedbackBuffers2EXT"); + device_dispatch_table(commandBuffer)->CmdBindTransformFeedbackBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBindingInfos); +} +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedback2EXT(VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdBeginTransformFeedback2EXT"); + device_dispatch_table(commandBuffer)->CmdBeginTransformFeedback2EXT(commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); +} +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedback2EXT(VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdEndTransformFeedback2EXT"); + device_dispatch_table(commandBuffer)->CmdEndTransformFeedback2EXT(commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCount2EXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo, uint32_t counterOffset, uint32_t vertexStride) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawIndirectByteCount2EXT"); + device_dispatch_table(commandBuffer)->CmdDrawIndirectByteCount2EXT(commandBuffer, instanceCount, firstInstance, pCounterInfo, counterOffset, vertexStride); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirect2EXT(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawMeshTasksIndirect2EXT"); + device_dispatch_table(commandBuffer)->CmdDrawMeshTasksIndirect2EXT(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCount2EXT(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdDrawMeshTasksIndirectCount2EXT"); + device_dispatch_table(commandBuffer)->CmdDrawMeshTasksIndirectCount2EXT(commandBuffer, pInfo); +} +VKAPI_ATTR void VKAPI_CALL vkCmdWriteMarkerToMemoryAMD(VkCommandBuffer commandBuffer, const VkMemoryMarkerInfoAMD* pInfo) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdWriteMarkerToMemoryAMD"); + device_dispatch_table(commandBuffer)->CmdWriteMarkerToMemoryAMD(commandBuffer, pInfo); +} +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructure2KHR(VkDevice device, const VkAccelerationStructureCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { + Timer timer(CPUTimingCategory::VkDevice, "vkCreateAccelerationStructure2KHR"); + VkResult result = device_dispatch_table(device)->CreateAccelerationStructure2KHR(device, pCreateInfo, pAllocator, pAccelerationStructure); + return result; +} VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) { Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdCopyBuffer2KHR"); device_dispatch_table(commandBuffer)->CmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo); @@ -2028,6 +2144,16 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectKHR(VkCommandBuffer com Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdCopyMemoryToImageIndirectKHR"); device_dispatch_table(commandBuffer)->CmdCopyMemoryToImageIndirectKHR(commandBuffer, pCopyMemoryToImageIndirectInfo); } +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultReportsKHR(VkDevice device, uint64_t timeout, uint32_t* pFaultCounts, VkDeviceFaultInfoKHR* pFaultInfo) { + Timer timer(CPUTimingCategory::VkDevice, "vkGetDeviceFaultReportsKHR"); + VkResult result = device_dispatch_table(device)->GetDeviceFaultReportsKHR(device, timeout, pFaultCounts, pFaultInfo); + return result; +} +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultDebugInfoKHR(VkDevice device, VkDeviceFaultDebugInfoKHR* pDebugInfo) { + Timer timer(CPUTimingCategory::VkDevice, "vkGetDeviceFaultDebugInfoKHR"); + VkResult result = device_dispatch_table(device)->GetDeviceFaultDebugInfoKHR(device, pDebugInfo); + return result; +} VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2KHR(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo) { Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdEndRendering2KHR"); device_dispatch_table(commandBuffer)->CmdEndRendering2KHR(commandBuffer, pRenderingEndInfo); @@ -2367,7 +2493,7 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(VkDevice device, VkA Timer timer(CPUTimingCategory::VkDevice, "vkDestroyAccelerationStructureNV"); device_dispatch_table(device)->DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator); } -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) { +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements) { Timer timer(CPUTimingCategory::VkDevice, "vkGetAccelerationStructureMemoryRequirementsNV"); device_dispatch_table(device)->GetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements); } @@ -2689,6 +2815,11 @@ VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT(VkDevice device, VkObjectType obj Timer timer(CPUTimingCategory::VkDevice, "vkGetPrivateDataEXT"); device_dispatch_table(device)->GetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData); } +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerfHintQCOM(VkQueue queue, const VkPerfHintInfoQCOM* pPerfHintInfo) { + Timer timer(CPUTimingCategory::VkQueue, "vkQueueSetPerfHintQCOM"); + VkResult result = device_dispatch_table(queue)->QueueSetPerfHintQCOM(queue, pPerfHintInfo); + return result; +} #if defined(VK_ENABLE_BETA_EXTENSIONS) VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaModuleNV(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule) { Timer timer(CPUTimingCategory::VkDevice, "vkCreateCudaModuleNV"); @@ -2862,7 +2993,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV(VkDevice device, const VkResult result = device_dispatch_table(device)->GetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress); return result; } -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) { +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, VkBaseOutStructure* pPipelineProperties) { Timer timer(CPUTimingCategory::VkDevice, "vkGetPipelinePropertiesEXT"); VkResult result = device_dispatch_table(device)->GetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties); return result; @@ -2973,6 +3104,10 @@ VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT(VkDevice device, VkDevic Timer timer(CPUTimingCategory::VkDevice, "vkSetDeviceMemoryPriorityEXT"); device_dispatch_table(device)->SetDeviceMemoryPriorityEXT(device, memory, priority); } +VKAPI_ATTR void VKAPI_CALL vkCmdSetDispatchParametersARM(VkCommandBuffer commandBuffer, const VkDispatchParametersARM* pDispatchParameters) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdSetDispatchParametersARM"); + device_dispatch_table(commandBuffer)->CmdSetDispatchParametersARM(commandBuffer, pDispatchParameters); +} VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) { Timer timer(CPUTimingCategory::VkDevice, "vkGetDescriptorSetLayoutHostMappingInfoVALVE"); device_dispatch_table(device)->GetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping); @@ -3428,6 +3563,32 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryMetalHandlePropertiesEXT(VkDevice devi return result; } #endif // VK_USE_PLATFORM_METAL_EXT +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderInstrumentationARM(VkDevice device, const VkShaderInstrumentationCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderInstrumentationARM* pInstrumentation) { + Timer timer(CPUTimingCategory::VkDevice, "vkCreateShaderInstrumentationARM"); + VkResult result = device_dispatch_table(device)->CreateShaderInstrumentationARM(device, pCreateInfo, pAllocator, pInstrumentation); + return result; +} +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderInstrumentationARM(VkDevice device, VkShaderInstrumentationARM instrumentation, const VkAllocationCallbacks* pAllocator) { + Timer timer(CPUTimingCategory::VkDevice, "vkDestroyShaderInstrumentationARM"); + device_dispatch_table(device)->DestroyShaderInstrumentationARM(device, instrumentation, pAllocator); +} +VKAPI_ATTR void VKAPI_CALL vkCmdBeginShaderInstrumentationARM(VkCommandBuffer commandBuffer, VkShaderInstrumentationARM instrumentation) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdBeginShaderInstrumentationARM"); + device_dispatch_table(commandBuffer)->CmdBeginShaderInstrumentationARM(commandBuffer, instrumentation); +} +VKAPI_ATTR void VKAPI_CALL vkCmdEndShaderInstrumentationARM(VkCommandBuffer commandBuffer) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdEndShaderInstrumentationARM"); + device_dispatch_table(commandBuffer)->CmdEndShaderInstrumentationARM(commandBuffer); +} +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInstrumentationValuesARM(VkDevice device, VkShaderInstrumentationARM instrumentation, uint32_t* pMetricBlockCount, void* pMetricValues, VkShaderInstrumentationValuesFlagsARM flags) { + Timer timer(CPUTimingCategory::VkDevice, "vkGetShaderInstrumentationValuesARM"); + VkResult result = device_dispatch_table(device)->GetShaderInstrumentationValuesARM(device, instrumentation, pMetricBlockCount, pMetricValues, flags); + return result; +} +VKAPI_ATTR void VKAPI_CALL vkClearShaderInstrumentationMetricsARM(VkDevice device, VkShaderInstrumentationARM instrumentation) { + Timer timer(CPUTimingCategory::VkDevice, "vkClearShaderInstrumentationMetricsARM"); + device_dispatch_table(device)->ClearShaderInstrumentationMetricsARM(device, instrumentation); +} VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2EXT(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo) { Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdEndRendering2EXT"); device_dispatch_table(commandBuffer)->CmdEndRendering2EXT(commandBuffer, pRenderingEndInfo); @@ -3440,6 +3601,10 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetComputeOccupancyPriorityNV(VkCommandBuffer co Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdSetComputeOccupancyPriorityNV"); device_dispatch_table(commandBuffer)->CmdSetComputeOccupancyPriorityNV(commandBuffer, pParameters); } +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartIndexEXT(VkCommandBuffer commandBuffer, uint32_t primitiveRestartIndex) { + Timer timer(CPUTimingCategory::VkCommandBuffer, "vkCmdSetPrimitiveRestartIndexEXT"); + device_dispatch_table(commandBuffer)->CmdSetPrimitiveRestartIndexEXT(commandBuffer, primitiveRestartIndex); +} VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure) { Timer timer(CPUTimingCategory::VkDevice, "vkCreateAccelerationStructureKHR"); VkResult result = device_dispatch_table(device)->CreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure); @@ -3823,6 +3988,8 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_instance_functions(VkIn return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM); if (strcmp(pName, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM") == 0) return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM); + if (strcmp(pName, "vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM") == 0) + return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphEngineOperationPropertiesARM); #if defined(VK_USE_PLATFORM_OHOS) if (strcmp(pName, "vkCreateSurfaceOHOS") == 0) return reinterpret_cast(vkCreateSurfaceOHOS); @@ -3831,6 +3998,16 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_instance_functions(VkIn return reinterpret_cast(vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV); if (strcmp(pName, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM") == 0) return reinterpret_cast(vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM); + if (strcmp(pName, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM") == 0) + return reinterpret_cast(vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM); + if (strcmp(pName, "vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM") == 0) + return reinterpret_cast(vkGetPhysicalDeviceQueueFamilyDataGraphOpticalFlowImageFormatsARM); +#if defined(VK_USE_PLATFORM_UBM_SEC) + if (strcmp(pName, "vkCreateUbmSurfaceSEC") == 0) + return reinterpret_cast(vkCreateUbmSurfaceSEC); + if (strcmp(pName, "vkGetPhysicalDeviceUbmPresentationSupportSEC") == 0) + return reinterpret_cast(vkGetPhysicalDeviceUbmPresentationSupportSEC); +#endif // VK_USE_PLATFORM_UBM_SEC return nullptr; } @@ -4427,6 +4604,50 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_device_functions(VkDevi return reinterpret_cast(vkCmdWriteTimestamp2KHR); if (strcmp(pName, "vkQueueSubmit2KHR") == 0 && (!device || device_dispatch_table(device)->QueueSubmit2KHR)) return reinterpret_cast(vkQueueSubmit2KHR); + if (strcmp(pName, "vkCmdBindIndexBuffer3KHR") == 0 && (!device || device_dispatch_table(device)->CmdBindIndexBuffer3KHR)) + return reinterpret_cast(vkCmdBindIndexBuffer3KHR); + if (strcmp(pName, "vkCmdBindVertexBuffers3KHR") == 0 && (!device || device_dispatch_table(device)->CmdBindVertexBuffers3KHR)) + return reinterpret_cast(vkCmdBindVertexBuffers3KHR); + if (strcmp(pName, "vkCmdDrawIndirect2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndirect2KHR)) + return reinterpret_cast(vkCmdDrawIndirect2KHR); + if (strcmp(pName, "vkCmdDrawIndexedIndirect2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndexedIndirect2KHR)) + return reinterpret_cast(vkCmdDrawIndexedIndirect2KHR); + if (strcmp(pName, "vkCmdDispatchIndirect2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDispatchIndirect2KHR)) + return reinterpret_cast(vkCmdDispatchIndirect2KHR); + if (strcmp(pName, "vkCmdCopyMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyMemoryKHR)) + return reinterpret_cast(vkCmdCopyMemoryKHR); + if (strcmp(pName, "vkCmdCopyMemoryToImageKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyMemoryToImageKHR)) + return reinterpret_cast(vkCmdCopyMemoryToImageKHR); + if (strcmp(pName, "vkCmdCopyImageToMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyImageToMemoryKHR)) + return reinterpret_cast(vkCmdCopyImageToMemoryKHR); + if (strcmp(pName, "vkCmdUpdateMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdUpdateMemoryKHR)) + return reinterpret_cast(vkCmdUpdateMemoryKHR); + if (strcmp(pName, "vkCmdFillMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdFillMemoryKHR)) + return reinterpret_cast(vkCmdFillMemoryKHR); + if (strcmp(pName, "vkCmdCopyQueryPoolResultsToMemoryKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyQueryPoolResultsToMemoryKHR)) + return reinterpret_cast(vkCmdCopyQueryPoolResultsToMemoryKHR); + if (strcmp(pName, "vkCmdDrawIndirectCount2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndirectCount2KHR)) + return reinterpret_cast(vkCmdDrawIndirectCount2KHR); + if (strcmp(pName, "vkCmdDrawIndexedIndirectCount2KHR") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndexedIndirectCount2KHR)) + return reinterpret_cast(vkCmdDrawIndexedIndirectCount2KHR); + if (strcmp(pName, "vkCmdBeginConditionalRendering2EXT") == 0 && (!device || device_dispatch_table(device)->CmdBeginConditionalRendering2EXT)) + return reinterpret_cast(vkCmdBeginConditionalRendering2EXT); + if (strcmp(pName, "vkCmdBindTransformFeedbackBuffers2EXT") == 0 && (!device || device_dispatch_table(device)->CmdBindTransformFeedbackBuffers2EXT)) + return reinterpret_cast(vkCmdBindTransformFeedbackBuffers2EXT); + if (strcmp(pName, "vkCmdBeginTransformFeedback2EXT") == 0 && (!device || device_dispatch_table(device)->CmdBeginTransformFeedback2EXT)) + return reinterpret_cast(vkCmdBeginTransformFeedback2EXT); + if (strcmp(pName, "vkCmdEndTransformFeedback2EXT") == 0 && (!device || device_dispatch_table(device)->CmdEndTransformFeedback2EXT)) + return reinterpret_cast(vkCmdEndTransformFeedback2EXT); + if (strcmp(pName, "vkCmdDrawIndirectByteCount2EXT") == 0 && (!device || device_dispatch_table(device)->CmdDrawIndirectByteCount2EXT)) + return reinterpret_cast(vkCmdDrawIndirectByteCount2EXT); + if (strcmp(pName, "vkCmdDrawMeshTasksIndirect2EXT") == 0 && (!device || device_dispatch_table(device)->CmdDrawMeshTasksIndirect2EXT)) + return reinterpret_cast(vkCmdDrawMeshTasksIndirect2EXT); + if (strcmp(pName, "vkCmdDrawMeshTasksIndirectCount2EXT") == 0 && (!device || device_dispatch_table(device)->CmdDrawMeshTasksIndirectCount2EXT)) + return reinterpret_cast(vkCmdDrawMeshTasksIndirectCount2EXT); + if (strcmp(pName, "vkCmdWriteMarkerToMemoryAMD") == 0 && (!device || device_dispatch_table(device)->CmdWriteMarkerToMemoryAMD)) + return reinterpret_cast(vkCmdWriteMarkerToMemoryAMD); + if (strcmp(pName, "vkCreateAccelerationStructure2KHR") == 0 && (!device || device_dispatch_table(device)->CreateAccelerationStructure2KHR)) + return reinterpret_cast(vkCreateAccelerationStructure2KHR); if (strcmp(pName, "vkCmdCopyBuffer2KHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyBuffer2KHR)) return reinterpret_cast(vkCmdCopyBuffer2KHR); if (strcmp(pName, "vkCmdCopyImage2KHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyImage2KHR)) @@ -4489,6 +4710,10 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_device_functions(VkDevi return reinterpret_cast(vkCmdCopyMemoryIndirectKHR); if (strcmp(pName, "vkCmdCopyMemoryToImageIndirectKHR") == 0 && (!device || device_dispatch_table(device)->CmdCopyMemoryToImageIndirectKHR)) return reinterpret_cast(vkCmdCopyMemoryToImageIndirectKHR); + if (strcmp(pName, "vkGetDeviceFaultReportsKHR") == 0 && (!device || device_dispatch_table(device)->GetDeviceFaultReportsKHR)) + return reinterpret_cast(vkGetDeviceFaultReportsKHR); + if (strcmp(pName, "vkGetDeviceFaultDebugInfoKHR") == 0 && (!device || device_dispatch_table(device)->GetDeviceFaultDebugInfoKHR)) + return reinterpret_cast(vkGetDeviceFaultDebugInfoKHR); if (strcmp(pName, "vkCmdEndRendering2KHR") == 0 && (!device || device_dispatch_table(device)->CmdEndRendering2KHR)) return reinterpret_cast(vkCmdEndRendering2KHR); if (strcmp(pName, "vkDebugMarkerSetObjectTagEXT") == 0 && (!device || device_dispatch_table(device)->DebugMarkerSetObjectTagEXT)) @@ -4791,6 +5016,8 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_device_functions(VkDevi return reinterpret_cast(vkSetPrivateDataEXT); if (strcmp(pName, "vkGetPrivateDataEXT") == 0 && (!device || device_dispatch_table(device)->GetPrivateDataEXT)) return reinterpret_cast(vkGetPrivateDataEXT); + if (strcmp(pName, "vkQueueSetPerfHintQCOM") == 0 && (!device || device_dispatch_table(device)->QueueSetPerfHintQCOM)) + return reinterpret_cast(vkQueueSetPerfHintQCOM); #if defined(VK_ENABLE_BETA_EXTENSIONS) if (strcmp(pName, "vkCreateCudaModuleNV") == 0 && (!device || device_dispatch_table(device)->CreateCudaModuleNV)) return reinterpret_cast(vkCreateCudaModuleNV); @@ -4923,6 +5150,8 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_device_functions(VkDevi return reinterpret_cast(vkCmdDrawClusterIndirectHUAWEI); if (strcmp(pName, "vkSetDeviceMemoryPriorityEXT") == 0 && (!device || device_dispatch_table(device)->SetDeviceMemoryPriorityEXT)) return reinterpret_cast(vkSetDeviceMemoryPriorityEXT); + if (strcmp(pName, "vkCmdSetDispatchParametersARM") == 0 && (!device || device_dispatch_table(device)->CmdSetDispatchParametersARM)) + return reinterpret_cast(vkCmdSetDispatchParametersARM); if (strcmp(pName, "vkGetDescriptorSetLayoutHostMappingInfoVALVE") == 0 && (!device || device_dispatch_table(device)->GetDescriptorSetLayoutHostMappingInfoVALVE)) return reinterpret_cast(vkGetDescriptorSetLayoutHostMappingInfoVALVE); if (strcmp(pName, "vkGetDescriptorSetHostMappingVALVE") == 0 && (!device || device_dispatch_table(device)->GetDescriptorSetHostMappingVALVE)) @@ -5139,12 +5368,26 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL cputiming_known_device_functions(VkDevi if (strcmp(pName, "vkGetMemoryMetalHandlePropertiesEXT") == 0 && (!device || device_dispatch_table(device)->GetMemoryMetalHandlePropertiesEXT)) return reinterpret_cast(vkGetMemoryMetalHandlePropertiesEXT); #endif // VK_USE_PLATFORM_METAL_EXT + if (strcmp(pName, "vkCreateShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->CreateShaderInstrumentationARM)) + return reinterpret_cast(vkCreateShaderInstrumentationARM); + if (strcmp(pName, "vkDestroyShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->DestroyShaderInstrumentationARM)) + return reinterpret_cast(vkDestroyShaderInstrumentationARM); + if (strcmp(pName, "vkCmdBeginShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->CmdBeginShaderInstrumentationARM)) + return reinterpret_cast(vkCmdBeginShaderInstrumentationARM); + if (strcmp(pName, "vkCmdEndShaderInstrumentationARM") == 0 && (!device || device_dispatch_table(device)->CmdEndShaderInstrumentationARM)) + return reinterpret_cast(vkCmdEndShaderInstrumentationARM); + if (strcmp(pName, "vkGetShaderInstrumentationValuesARM") == 0 && (!device || device_dispatch_table(device)->GetShaderInstrumentationValuesARM)) + return reinterpret_cast(vkGetShaderInstrumentationValuesARM); + if (strcmp(pName, "vkClearShaderInstrumentationMetricsARM") == 0 && (!device || device_dispatch_table(device)->ClearShaderInstrumentationMetricsARM)) + return reinterpret_cast(vkClearShaderInstrumentationMetricsARM); if (strcmp(pName, "vkCmdEndRendering2EXT") == 0 && (!device || device_dispatch_table(device)->CmdEndRendering2EXT)) return reinterpret_cast(vkCmdEndRendering2EXT); if (strcmp(pName, "vkCmdBeginCustomResolveEXT") == 0 && (!device || device_dispatch_table(device)->CmdBeginCustomResolveEXT)) return reinterpret_cast(vkCmdBeginCustomResolveEXT); if (strcmp(pName, "vkCmdSetComputeOccupancyPriorityNV") == 0 && (!device || device_dispatch_table(device)->CmdSetComputeOccupancyPriorityNV)) return reinterpret_cast(vkCmdSetComputeOccupancyPriorityNV); + if (strcmp(pName, "vkCmdSetPrimitiveRestartIndexEXT") == 0 && (!device || device_dispatch_table(device)->CmdSetPrimitiveRestartIndexEXT)) + return reinterpret_cast(vkCmdSetPrimitiveRestartIndexEXT); if (strcmp(pName, "vkCreateAccelerationStructureKHR") == 0 && (!device || device_dispatch_table(device)->CreateAccelerationStructureKHR)) return reinterpret_cast(vkCreateAccelerationStructureKHR); if (strcmp(pName, "vkDestroyAccelerationStructureKHR") == 0 && (!device || device_dispatch_table(device)->DestroyAccelerationStructureKHR)) diff --git a/layersvt/json/VkLayer_api_dump.json.in b/layersvt/json/VkLayer_api_dump.json.in index 9a1081bd6f..6f7fab95f7 100644 --- a/layersvt/json/VkLayer_api_dump.json.in +++ b/layersvt/json/VkLayer_api_dump.json.in @@ -4,7 +4,7 @@ "name": "VK_LAYER_LUNARG_api_dump", "type": "GLOBAL", "library_path": "@JSON_LIBRARY_PATH@", - "api_version": "1.4.342", + "api_version": "1.4.350", "implementation_version": "2", "description": "LunarG API dump layer", "introduction": "The API Dump utility layer prints API calls, parameters, and values to the identified output stream.", diff --git a/scripts/generate_source.py b/scripts/generate_source.py index 3d5cb2ae65..7a21b6cb21 100755 --- a/scripts/generate_source.py +++ b/scripts/generate_source.py @@ -50,10 +50,11 @@ def RunGenerators(api: str, registry: str, video_registry: str, directory: str, sys.path.insert(0, registry_headers_path) try: from reg import Registry - except: + except Exception as err: print("ModuleNotFoundError: No module named 'reg'") # normal python error message print(f'{registry_headers_path} is not pointing to the Vulkan-Headers registry directory.') print("Inside Vulkan-Headers there is a registry/reg.py file that is used.") + print(f"Error {err=}, {type(err)=}") sys.exit(1) # Return without call stack so easy to spot error from base_generator import BaseGeneratorOptions diff --git a/scripts/generators/api_dump_generator.py b/scripts/generators/api_dump_generator.py index 10e81dcf13..23146a1d72 100644 --- a/scripts/generators/api_dump_generator.py +++ b/scripts/generators/api_dump_generator.py @@ -69,7 +69,7 @@ 'ApiDumpInstance::current().setDescriptorType(object.type);', 'VkResourceDescriptorInfoEXT': 'ApiDumpInstance::current().setDescriptorType(object.type);', - 'VkIndirectExecutionSetInfoEXT': + 'VkIndirectExecutionSetCreateInfoEXT': 'ApiDumpInstance::current().setIndirectExecutionSetInfoType(object.type);', 'VkIndirectCommandsLayoutTokenEXT': 'ApiDumpInstance::current().setIndirectCommandsLayoutToken(object.type);', @@ -954,7 +954,7 @@ def write_value(self, var, parent): else: if var.pointer and var.type not in self.only_use_as_pointer_types and var.type not in self.vk.funcPointers.keys() and var.type not in ['void', 'char'] and not (var.name == 'pNext' and var.fullType in ['void*', 'const void*']): pointer_type = f'dump_type' - if (var.type in self.vulkan_defined_types): + if (call_type in self.vulkan_defined_types): pointer_type = f'dump_{call_type}' self.write(f'dump_pointer({value}, settings, "{custom_fullType}", "{var.name}", {indent}, {pointer_type});') diff --git a/scripts/known_good.json b/scripts/known_good.json index 25c0278d9f..69465df105 100644 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -6,7 +6,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.4.342", + "commit": "v1.4.350", "cmake_options": [ "-DVULKAN_HEADERS_ENABLE_MODULE=OFF" ] @@ -17,7 +17,7 @@ "sub_dir": "Vulkan-Utility-Libraries", "build_dir": "Vulkan-Utility-Libraries/build", "install_dir": "Vulkan-Utility-Libraries/build/install", - "commit": "v1.4.342", + "commit": "v1.4.350", "deps": [ { "var_name": "VULKAN_HEADERS_INSTALL_DIR", @@ -31,7 +31,7 @@ "sub_dir": "Vulkan-Loader", "build_dir": "Vulkan-Loader/build", "install_dir": "Vulkan-Loader/build/install", - "commit": "v1.4.342", + "commit": "v1.4.350", "deps": [ { "var_name": "VULKAN_HEADERS_INSTALL_DIR", @@ -50,7 +50,7 @@ "sub_dir": "Vulkan-Tools", "build_dir": "Vulkan-Tools/build", "install_dir": "Vulkan-Tools/build/install", - "commit": "v1.4.342", + "commit": "v1.4.350", "deps": [ { "var_name": "VULKAN_HEADERS_INSTALL_DIR", diff --git a/vkconfig_cmd/main_layers.cpp b/vkconfig_cmd/main_layers.cpp index ad3ba9995b..d1daeccfcf 100644 --- a/vkconfig_cmd/main_layers.cpp +++ b/vkconfig_cmd/main_layers.cpp @@ -87,22 +87,21 @@ static int RunLayersSurrender(Configurator& configurator, const CommandLine& com } static int RunLayersPath(Configurator& configurator, const CommandLine& command_line) { - printf("vkconfig: [INFO] Paths to find Vulkan Layers\n"); + printf("vkconfig: [INFO] Vulkan Layers paths:\n"); - for (int layers_paths_index = 0, layers_paths_count = LAYERS_PATHS_COUNT; layers_paths_index < layers_paths_count; - ++layers_paths_index) { - const std::vector& paths = configurator.layers.paths[layers_paths_index]; - printf("\n%s:\n", GetLabel(static_cast(layers_paths_index))); + const std::set& layer_display_list = configurator.layers.BuildLayerDisplayList(); - if (paths.empty()) { - printf(" - None\n"); - } else { - for (std::size_t i = 0, n = paths.size(); i < n; ++i) { - if (paths[i].enabled) { - printf(" - %s\n", paths[i].path.AbsolutePath().c_str()); - } - } + for (auto it = layer_display_list.begin(), end = layer_display_list.end(); it != end; ++it) { + const Layer* layer = configurator.layers.FindFromManifest(it->id.manifest_path, true); + if (layer == nullptr) { + continue; } + + const std::string status = layer->status == STATUS_STABLE ? "" : format(" (%s)", ::GetToken(layer->status)); + const std::string text = format("%s - %s%s, %s layer", layer->key.c_str(), layer->api_version.str().c_str(), status.c_str(), + ::GetToken(layer->type)); + + printf(" - %s\n", text.c_str()); } return 0; diff --git a/vkconfig_cmd/main_loader.cpp b/vkconfig_cmd/main_loader.cpp index 10d0bd1449..22307c16d1 100644 --- a/vkconfig_cmd/main_loader.cpp +++ b/vkconfig_cmd/main_loader.cpp @@ -145,7 +145,7 @@ static int RunLoaderSurrender(Configurator& configurator, const CommandLine& com fprintf(stderr, "vkconfig: Failed to surrender Vulkan Layers configuration...\n"); } } else { - fprintf(stderr, "vkconfig: No active Vulkan Loader configuration, nothing to surrender\n"); + fprintf(stderr, "vkconfig: No active Vulkan Layers configuration, nothing to surrender\n"); } return surrender_result ? 0 : -1; diff --git a/vkconfig_cmd/resources.qrc b/vkconfig_cmd/resources.qrc index 4f0b5fe900..6e4c38cd0a 100644 --- a/vkconfig_cmd/resources.qrc +++ b/vkconfig_cmd/resources.qrc @@ -1,12 +1,12 @@ ../vkconfig_core/configurations/API dump.json + ../vkconfig_core/configurations/API dump with Validation.json ../vkconfig_core/configurations/Crash Diagnostic.json ../vkconfig_core/configurations/Disable All Vulkan Layers.json ../vkconfig_core/configurations/Frame Capture.json ../vkconfig_core/configurations/Portability.json ../vkconfig_core/configurations/Validation.json - ../vkconfig_core/configurations/Validation with API Dump Log.json diff --git a/vkconfig_core/application_singleton.cpp b/vkconfig_core/application_singleton.cpp index fe6c51d84d..befe4694f1 100644 --- a/vkconfig_core/application_singleton.cpp +++ b/vkconfig_core/application_singleton.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/command_line.cpp b/vkconfig_core/command_line.cpp index d624108702..1ba79a3e5c 100644 --- a/vkconfig_core/command_line.cpp +++ b/vkconfig_core/command_line.cpp @@ -640,8 +640,8 @@ void CommandLine::usage() const { printf("\tversion = Display %s version.\n", VKCONFIG_NAME); printf("\tgui = Launch the graphical interface.\n"); printf("\treset = Reset layers configurations.\n"); - printf("\tloader = Configure system the Vulkan Loader configuration.\n"); - printf("\tlayers = List the Vulkan layers found on the system.\n"); + printf("\tloader = Configure system the Vulkan Layers configuration.\n"); + printf("\tlayers = Configure system the Vulkan Layers configuration.\n"); printf("\tsettings = Create layer settings and documentation files for Vulkan developers.\n"); printf("\n"); printf(" (Run 'vkconfig help ' for detailed usage of %s commands.)\n", VKCONFIG_NAME); @@ -673,13 +673,13 @@ void CommandLine::usage() const { } case HELP_LAYERS: { printf("Name\n"); - printf("\t'layers' - Command to list the Vulkan layers found on the system.\n"); + printf("\t'layers' - Command to configure system Vulkan Layers configuration.\n"); printf("\n"); printf("Synopsis\n"); printf("\tvkconfig layers (--list | -l)\n"); printf("\tvkconfig layers (--list-verbose | -lv)\n"); printf("\tvkconfig layers (--path | -p)\n"); - printf("\tvkconfig layers (--override | -o) \n"); + printf("\tvkconfig layers (--override | -o) \n"); printf("\tvkconfig layers (--surrender | -s)\n"); printf("\n"); printf("Description\n"); @@ -692,20 +692,16 @@ void CommandLine::usage() const { printf("\tvkconfig layers (--path | -p)\n"); printf("\t\tList the Vulkan layers locations found by %s on the system.\n", VKCONFIG_NAME); printf("\n"); - printf("\tvkconfig layers (--override | -o) \n"); - printf("\t\tOverride the Vulkan layers using generated by %s.\n", VKCONFIG_NAME); - printf("\t (DEPRECATED: Use `vkconfig loader --override` instead.)\n"); + printf("\tvkconfig layers (--override | -o) \n"); + printf("\t\tOverride the Vulkan layers using generated by %s.\n", VKCONFIG_NAME); printf("\n"); printf("\tvkconfig layers (--surrender | -s)\n"); printf("\t\tSurrender the Vulkan layers control to Vulkan applications.\n"); - printf("\t (DEPRECATED: Use `vkconfig loader --surrender` instead.)\n"); break; } case HELP_LOADER: { printf("Name\n"); - printf( - "\t'loader' - Command to configure system Vulkan Loader configuration, including layers, loader logging and " - "drivers.\n"); + printf("\t'loader' - Command to configure system Vulkan Layers configuration.\n"); printf("\n"); printf("Synopsis\n"); printf("\tvkconfig loader (--override | -o) ( | | )\n"); @@ -723,7 +719,7 @@ void CommandLine::usage() const { printf("\t (Run 'vkconfig loader --list' to enumerate the available configurations.)\n"); printf("\n"); printf("\tvkconfig loader (--surrender | -s)\n"); - printf("\t\tSurrender the Vulkan Loader configuration to Vulkan applications.\n"); + printf("\t\tSurrender the Vulkan Layers configuration to Vulkan applications.\n"); printf("\n"); printf("\tvkconfig loader (--list | -l)\n"); printf("\t\tList the Vulkan Layers configurations found by %s on the system.\n", VKCONFIG_NAME); diff --git a/vkconfig_core/configuration.cpp b/vkconfig_core/configuration.cpp index 7656778023..fe1e709610 100644 --- a/vkconfig_core/configuration.cpp +++ b/vkconfig_core/configuration.cpp @@ -158,6 +158,9 @@ bool Configuration::Load(const Path& full_path, const LayerManager& layers) { if (json_layer_object.value("rank") != QJsonValue::Undefined) { parameter.overridden_rank = json_layer_object.value("rank").toInt(); } + if (json_layer_object.value("was_explicitly_rank") != QJsonValue::Undefined) { + parameter.was_explicitly_rank = json_layer_object.value("was_explicitly_rank").toBool(); + } if (json_layer_object.value("version") != QJsonValue::Undefined) { const std::string& version = ReadStringValue(json_layer_object, "version"); parameter.api_version = version == "latest" ? Version::LATEST : Version(version.c_str()); @@ -173,7 +176,7 @@ bool Configuration::Load(const Path& full_path, const LayerManager& layers) { if (layer != nullptr) { parameter.manifest = layer->manifest_path; - parameter.type = layer->type; + // parameter.type = layer->type; } if (parameter.api_version != Version::LATEST) { @@ -249,7 +252,7 @@ bool Configuration::Save(const Path& full_path, bool export_mode) const { for (std::size_t i = 0, n = this->parameters.size(); i < n; ++i) { const Parameter& parameter = this->parameters[i]; - if (parameter.type == LAYER_TYPE_IMPLICIT && parameter.control == LAYER_CONTROL_AUTO) { + if (export_mode && parameter.IsAutoImplicitLayer()) { continue; } @@ -261,6 +264,7 @@ bool Configuration::Save(const Path& full_path, bool export_mode) const { } json_layer.insert("control", GetToken(parameter.control)); json_layer.insert("rank", parameter.overridden_rank); + json_layer.insert("was_explicitly_rank", parameter.was_explicitly_rank); json_layer.insert("version", parameter.api_version == Version::LATEST ? "latest" : parameter.api_version.str().c_str()); if (parameter.builtin == LAYER_BUILTIN_NONE && !export_mode) { json_layer.insert("manifest", parameter.manifest.RelativePath().c_str()); @@ -526,20 +530,39 @@ void Configuration::GatherParameters(const LayerManager& layers) { std::swap(this->parameters, gathered_parameters); } +void Configuration::ResetLayersOrder(const LayerManager& layers) { + for (std::size_t i = 0, n = this->parameters.size(); i < n; ++i) { + this->parameters[i].was_explicitly_rank = false; + this->parameters[i].overridden_rank = Parameter::NO_RANK; + } + + ::OrderParameter(this->parameters, layers); +} + void Configuration::Reorder(const std::vector& layer_names) { std::vector ordered_parameters; int rank = 0; for (std::size_t i = 0, n = layer_names.size(); i < n; ++i) { - Parameter* parameter = this->Find(layer_names[i]); - if (parameter == nullptr) { - continue; - } + if (layer_names[i] == implicit_layers) { + std::vector parameters = this->GatherImplicitAutoLayers(); + for (std::size_t j = 0, p = parameters.size(); j < p; ++j) { + Parameter* parameter = parameters[j]; + parameter->overridden_rank = rank; + ++rank; + ordered_parameters.push_back(*parameter); + } + } else { + Parameter* parameter = this->Find(layer_names[i]); + if (parameter == nullptr) { + continue; + } - parameter->overridden_rank = rank; - ++rank; - ordered_parameters.push_back(*parameter); + parameter->overridden_rank = rank; + ++rank; + ordered_parameters.push_back(*parameter); + } } // Add the remaining parameters not listed in `layer_names` @@ -563,6 +586,19 @@ void Configuration::Reorder(const std::vector& layer_names) { this->parameters = ordered_parameters; } +std::vector Configuration::GatherImplicitAutoLayers() { + std::vector result; + + for (std::size_t i = 0, n = this->parameters.size(); i < n; ++i) { + Parameter* parameter = &this->parameters[i]; + if (parameter->IsAutoImplicitLayer()) { + result.push_back(parameter); + } + } + + return result; +} + bool Configuration::IsDefault() const { const std::vector& builtin_configuration_files = CollectFilePaths(":/configurations/"); for (std::size_t i = 0, n = builtin_configuration_files.size(); i < n; ++i) { diff --git a/vkconfig_core/configuration.h b/vkconfig_core/configuration.h index 9a17aeae39..e7ff6764a6 100644 --- a/vkconfig_core/configuration.h +++ b/vkconfig_core/configuration.h @@ -54,20 +54,18 @@ class Configuration { void SwitchLayerVersion(const LayerManager& layers, const std::string& layer_key, const Path& manifest_path); void SwitchLayerLatest(const LayerManager& layers, const std::string& layer_key); void GatherParameters(const LayerManager& layers); + void ResetLayersOrder(const LayerManager& layers); void Reorder(const std::vector& layer_names); + std::vector GatherImplicitAutoLayers(); + std::string key = "New Configuration"; // User readable display of the configuration name (may contain spaces) int version = 1; int platform_flags = PLATFORM_DESKTOP_BIT; LayerControl default_control = LAYER_CONTROL_AUTO; bool override_settings = false; Path override_settings_path; - // bool override_layers = true; // Keep or not ? std::string selected_layer_name; - // bool override_driver = false; - // std::string override_driver_name = DEFAULT_PHYSICAL_DEVICE; - // bool override_loader = true; - // int loader_log_messages_flags = GetBit(LOG_ERROR); std::vector parameters; diff --git a/vkconfig_core/configurations/Validation with API Dump Log.json b/vkconfig_core/configurations/API dump with Validation.json similarity index 99% rename from vkconfig_core/configurations/Validation with API Dump Log.json rename to vkconfig_core/configurations/API dump with Validation.json index 5e1e3ae657..16c195e73b 100644 --- a/vkconfig_core/configurations/Validation with API Dump Log.json +++ b/vkconfig_core/configurations/API dump with Validation.json @@ -1,7 +1,7 @@ { "file_format_version": "3.0.0", "configuration": { - "name": "API dump", + "name": "API dump with Validation", "version": 1, "platforms": [ "WINDOWS", diff --git a/vkconfig_core/configurations/Discard Ordering and Enabling Layers.json b/vkconfig_core/configurations/Discard Ordering and Enabling Layers.json new file mode 100644 index 0000000000..e0fdbf378f --- /dev/null +++ b/vkconfig_core/configurations/Discard Ordering and Enabling Layers.json @@ -0,0 +1,44 @@ +{ + "file_format_version": "3.0.0", + "configuration": { + "name": "Discard Ordering and Enabling Layers", + "version": 1, + "platforms": [ + "WINDOWS", + "LINUX", + "MACOS" + ], + "selected_layer_name": "", + "default_layer_control": "discard", + "override_layers": true, + "override_loader": false, + "loader_message_types": [ + "error", + "warn", + "info", + "debug", + "perf", + "layer", + "driver" + ], + "layers": [ + { + "builtin": "unordered_layer_location", + "control": "auto", + "name": "Vulkan Layers Located by Vulkan Applications", + "override_settings": true, + "platforms": [ + "WINDOWS_X86", + "WINDOWS_ARM", + "LINUX", + "MACOS" + ], + "rank": 9, + "settings": [ + ], + "type": "Explicit", + "version": "latest" + } + ] + } +} diff --git a/vkconfig_core/configurator.cpp b/vkconfig_core/configurator.cpp index ac3713e0f6..04f7b9ce92 100644 --- a/vkconfig_core/configurator.cpp +++ b/vkconfig_core/configurator.cpp @@ -132,7 +132,8 @@ bool Configurator::Init(ConfiguratorMode configurator_mode) { this->has_crashed = true; // This is set to `false` when saving on exit. this->Save(); - if (::RequireLoading(this->mode)) { + // if (::RequireLoading(this->mode)) { + if (this->mode == CONFIGURATOR_MODE_GUI) { this->UpdateVulkanSystemInfo(); } @@ -196,7 +197,7 @@ QJsonObject Configurator::CreateJsonSettingObject(const Configurator::LoaderSett json_settings.insert("app_keys", json_app_keys); } - if (loader_settings.override_layers) { + if (this->layers_override_enabled || this->mode == CONFIGURATOR_MODE_CMD) { json_settings.insert("layers", json_layers); } @@ -244,6 +245,14 @@ QJsonObject Configurator::CreateJsonSettingObject(const Configurator::LoaderSett } json_settings.insert("device_configurations", json_devices); } break; + case DRIVER_MODE_NONE: { + QJsonArray json_devices; + json_settings.insert("device_configurations", json_devices); + } break; + default: { + assert(0); + break; + } } } @@ -316,6 +325,13 @@ QJsonObject Configurator::CreateJsonGlobalObject() const { } json_settings.insert("device_configurations", json_devices); } break; + case DRIVER_MODE_NONE: { + QJsonArray json_devices; + json_settings.insert("device_configurations", json_devices); + } break; + default: { + assert(0); + } } } @@ -442,7 +458,7 @@ bool Configurator::WriteLoaderSettings(OverrideArea override_area, const Path& l break; } default: - case EXECUTABLE_NONE: + assert(0); break; } @@ -526,7 +542,9 @@ bool Configurator::Surrender(OverrideArea override_area) { result_layers_settings = global_removed; } - if (::EnabledExecutables(this->executable_scope)) { + if (this->GetExecutableScope() == EXECUTABLE_PER || + (this->GetExecutableScope() == EXECUTABLE_ALL && + this->GetAllEnabledExecutableBehavior() == EXECUTABLE_ALL_ENABLED_WORKING_DIR)) { const std::vector& executables = this->executables.GetExecutables(); for (std::size_t i = 0, n = executables.size(); i < n; ++i) { Path path(executables[i].GetActiveOptions()->working_folder.RelativePath() + "/vk_layer_settings.txt"); @@ -557,6 +575,7 @@ void Configurator::Reset(bool hard) { this->Surrender(OVERRIDE_AREA_LOADER_SETTINGS_BIT); const Path& vkconfig_init_path = ::Path(Path::INIT); + vkconfig_init_path.Backup(); vkconfig_init_path.Remove(); QSettings settings("LunarG", VKCONFIG_SHORT_NAME); @@ -841,9 +860,9 @@ std::string Configurator::Log() const { if (this->GetExecutableScope() == EXECUTABLE_ANY || this->GetExecutableScope() == EXECUTABLE_ALL) { const Configuration* configuration = this->GetActiveConfiguration(); if (configuration != nullptr) { - log += format(" - Active Vulkan Loader Configuration: '%s'\n", configuration->key.c_str()); + log += format(" - Active Vulkan Layers Configuration: '%s'\n", configuration->key.c_str()); } else { - log += " - No Active Vulkan Loader Configuration\n"; + log += " - No Active Vulkan Layers Configuration\n"; } } /* @@ -1089,15 +1108,65 @@ bool Configurator::Load() { // TAB_CONFIGURATIONS if (json_interface_object.value(GetToken(TAB_CONFIGURATIONS)) != QJsonValue::Undefined) { const QJsonObject& json_object = json_interface_object.value(GetToken(TAB_CONFIGURATIONS)).toObject(); - this->advanced = json_object.value("advanced").toBool(); + if (json_object.value("override_layers") != QJsonValue::Undefined) { + this->layers_override_enabled = json_object.value("override_layers").toBool(); + } + if (json_object.value("layers_display_mode") != QJsonValue::Undefined) { + this->layers_display_mode = + ::GetLayersDisplayMode(json_object.value("layers_display_mode").toString().toStdString().c_str()); + } this->executable_scope = ::GetExecutableScope(json_object.value("executable_scope").toString().toStdString().c_str()); this->selected_global_configuration = json_object.value("selected_global_configuration").toString().toStdString(); } - // TAB_LAYERS - if (json_interface_object.value(GetToken(TAB_LAYERS)) != QJsonValue::Undefined) { - const QJsonObject& json_object = json_interface_object.value(GetToken(TAB_LAYERS)).toObject(); - (void)json_object; + // TAB_LAYERS_PATHS + if (json_interface_object.value(GetToken(TAB_LAYERS_PATHS)) != QJsonValue::Undefined) { + const QJsonObject& json_object = json_interface_object.value(GetToken(TAB_LAYERS_PATHS)).toObject(); + if (json_object.value("last_driver_dir") != QJsonValue::Undefined) { + this->layers.last_layers_dir = json_object.value("last_driver_dir").toString().toStdString(); + } + if (json_object.value("validate_manifests") != QJsonValue::Undefined) { + this->layers.validate_manifests = json_object.value("validate_manifests").toBool(); + } + if (json_object.value("layers") != QJsonValue::Undefined) { + const QJsonObject& json_object_paths = json_object.value("layers").toObject(); + QStringList keys = json_object_paths.keys(); + for (std::size_t i = 0, n = keys.size(); i < n; ++i) { + const QJsonArray& json_descriptors = json_object_paths.value(keys[i]).toArray(); + + std::vector descriptors; + for (std::size_t j = 0, o = json_descriptors.size(); j < o; ++j) { + const QJsonObject& json_descriptor_object = json_descriptors[j].toObject(); + + LayerDisplay display; + display.id.key = json_descriptor_object.value("key").toString().toStdString(); + display.id.manifest_path = keys[i].toStdString(); + display.id.api_version = Version::NONE; + display.descriptor.enabled = json_descriptor_object.value("enabled").toBool(); + display.descriptor.removed = json_descriptor_object.value("removed").toBool(); + display.descriptor.validated = + ::GetLayerValidated(json_descriptor_object.value("validated").toString().toStdString().c_str()); + if (json_descriptor_object.value("last_modified") != QJsonValue::Undefined) { + display.descriptor.last_modified = + json_descriptor_object.value("last_modified").toString().toStdString(); + } + descriptors.push_back(display); + } + + Path path(keys[i].toStdString()); + if (!path.Exists()) { + continue; + } + + this->layers.AppendInit(path, descriptors); + } + } + if (json_object.value("paths") != QJsonValue::Undefined) { + const QJsonArray& json_paths = json_object.value("paths").toArray(); + for (std::size_t i = 0, n = json_paths.size(); i < n; ++i) { + this->layers.gui_added_layers_paths.insert(json_paths[i].toString().toStdString()); + } + } } // TAB_DRIVERS @@ -1141,8 +1210,8 @@ bool Configurator::Load() { } } - if (json_object.value("last_driver_path") != QJsonValue::Undefined) { - this->last_driver_path = json_object.value("last_driver_path").toString().toStdString(); + if (json_object.value("last_driver_dir") != QJsonValue::Undefined) { + this->last_driver_dir = json_object.value("last_driver_dir").toString().toStdString(); } if (json_object.value("driver_paths") != QJsonValue::Undefined) { const QJsonObject& json_object_paths = json_object.value("driver_paths").toObject(); @@ -1180,6 +1249,10 @@ bool Configurator::Load() { if (json_interface_object.value(GetToken(TAB_PREFERENCES)) != QJsonValue::Undefined) { const QJsonObject& json_object = json_interface_object.value(GetToken(TAB_PREFERENCES)).toObject(); + if (json_object.value("validate_manifests") != QJsonValue::Undefined) { + this->layers.validate_manifests = json_object.value("validate_manifests").toBool(); + } + if (json_object.value("use_notify_releases") != QJsonValue::Undefined) { this->use_notify_releases = json_object.value("use_notify_releases").toBool(); } @@ -1208,6 +1281,10 @@ bool Configurator::Load() { this->theme_dark_alternate_color = json_object.value("theme_dark_alternate_color").toString(); } + if (json_object.value("app_log_max_blocks") != QJsonValue::Undefined) { + this->app_log_max_blocks = json_object.value("app_log_max_blocks").toInteger(); + } + if (json_object.value("latest_sdk_version") != QJsonValue::Undefined) { this->latest_sdk_version = Version(json_object.value("latest_sdk_version").toString().toStdString().c_str()); } @@ -1224,10 +1301,17 @@ bool Configurator::Load() { ::SetHomePath(json_object.value("VULKAN_HOME").toString().toStdString()); } + if (json_object.value("layers_show_scope") != QJsonValue::Undefined) { + this->configuration_show_scope = json_object.value("layers_show_scope").toBool(); + } else { + this->configuration_show_scope = this->executable_scope != EXECUTABLE_ANY; + } + if (json_object.value("all_enabled_executables_behavior") != QJsonValue::Undefined) { this->executable_behavior = ::GetExecutableAllEnabledBehavior( json_object.value("all_enabled_executables_behavior").toString().toStdString().c_str()); } + if (json_object.value("VULKAN_DOWNLOAD") != QJsonValue::Undefined) { ::SetDownloadPath(json_object.value("VULKAN_DOWNLOAD").toString().toStdString()); } @@ -1277,16 +1361,62 @@ bool Configurator::Save() const { // TAB_CONFIGURATIONS { QJsonObject json_object; - json_object.insert("advanced", this->advanced); + json_object.insert("override_layers", this->layers_override_enabled); + json_object.insert("layers_display_mode", ::GetToken(this->layers_display_mode)); json_object.insert("executable_scope", ::GetToken(this->executable_scope)); json_object.insert("selected_global_configuration", this->selected_global_configuration.c_str()); json_interface_object.insert(::GetToken(TAB_CONFIGURATIONS), json_object); } - // TAB_LAYERS + // TAB_LAYERS_PATHS { + std::map> data = this->layers.BuildLayerStoreList(); + + QJsonObject json_layers; + for (auto it = data.begin(); it != data.end(); ++it) { + std::map descriptors = it->second; + + QJsonArray json_layer_descriptors; + + bool is_user_added_path = + this->layers.gui_added_layers_paths.find(it->first.AbsoluteDir()) != this->layers.gui_added_layers_paths.end(); + + bool keep = false; // Only remember paths that don't have all layer removed + + for (auto jt = it->second.begin(); jt != it->second.end(); ++jt) { + if (!jt->second.descriptor.removed) { + keep = true; + } + + QJsonObject json_descriptor; + json_descriptor.insert("key", jt->first.c_str()); + json_descriptor.insert("validated", ::GetToken(jt->second.descriptor.validated)); + json_descriptor.insert("enabled", jt->second.descriptor.enabled); + json_descriptor.insert("removed", jt->second.descriptor.removed); + json_descriptor.insert("last_modified", jt->second.descriptor.last_modified.c_str()); + json_layer_descriptors.append(json_descriptor); + } + + if (is_user_added_path) { + if (keep) { + json_layers.insert(it->first.AbsolutePath().c_str(), json_layer_descriptors); + } + } else { + json_layers.insert(it->first.AbsolutePath().c_str(), json_layer_descriptors); + } + } + + QJsonArray json_paths; + for (auto it = this->layers.gui_added_layers_paths.begin(); it != this->layers.gui_added_layers_paths.end(); ++it) { + json_paths.append(it->AbsolutePath().c_str()); + } + QJsonObject json_object; - json_interface_object.insert(GetToken(TAB_LAYERS), json_object); + json_object.insert("paths", json_paths); + json_object.insert("layers", json_layers); + json_object.insert("validate_manifests", this->layers.validate_manifests); + json_object.insert("last_driver_dir", this->layers.last_layers_dir.AbsolutePath().c_str()); + json_interface_object.insert(::GetToken(TAB_LAYERS_PATHS), json_object); } // TAB_DRIVER @@ -1325,7 +1455,7 @@ bool Configurator::Save() const { } json_object.insert("driver_override_list", json_driver_override_list_array); - json_object.insert("last_driver_path", this->last_driver_path.RelativePath().c_str()); + json_object.insert("last_driver_dir", this->last_driver_dir.RelativePath().c_str()); QJsonObject json_object_paths; for (auto it = this->driver_paths.begin(); it != this->driver_paths.end(); ++it) { QJsonObject json_object_path; @@ -1342,6 +1472,7 @@ bool Configurator::Save() const { // TAB_APPLICATIONS { QJsonObject json_object; + json_object.insert("stdout_display", ::GetToken(this->stdout_display)); json_interface_object.insert(GetToken(TAB_APPLICATIONS), json_object); } @@ -1363,11 +1494,13 @@ bool Configurator::Save() const { json_object.insert("theme_dark_alternate_enabled", this->theme_dark_alternate_enabled); json_object.insert("theme_light_alternate_color", this->theme_light_alternate_color.name()); json_object.insert("theme_dark_alternate_color", this->theme_dark_alternate_color.name()); + json_object.insert("app_log_max_blocks", this->app_log_max_blocks); json_object.insert("use_notify_releases", this->use_notify_releases); json_object.insert("latest_sdk_version", this->latest_sdk_version.str().c_str()); json_object.insert("show_external_layers_settings", this->show_external_layers_settings); json_object.insert("VULKAN_HOME", ::Path(Path::HOME).RelativePath().c_str()); json_object.insert("VULKAN_DOWNLOAD", ::Path(Path::DOWNLOAD).RelativePath().c_str()); + json_object.insert("layers_show_scope", this->configuration_show_scope); json_object.insert("all_enabled_executables_behavior", ::GetToken(this->executable_behavior)); json_interface_object.insert(GetToken(TAB_PREFERENCES), json_object); @@ -1449,9 +1582,13 @@ bool Configurator::ShouldNotify() const { } bool Configurator::HasActiveSettings() const { + if (!this->layers_override_enabled) { + return false; + } + switch (this->executable_scope) { default: - case EXECUTABLE_NONE: + assert(0); return false; case EXECUTABLE_ALL: case EXECUTABLE_PER: @@ -1483,18 +1620,20 @@ bool Configurator::HasActiveSettings() const { } bool Configurator::HasEnabledUI(EnabledUI enabled_ui) const { + if (!this->layers_override_enabled) { + return false; + } + switch (enabled_ui) { default: assert(false); return false; case ENABLE_UI_CONFIG: { switch (this->GetExecutableScope()) { - default: - case EXECUTABLE_NONE: - return false; case EXECUTABLE_ALL: case EXECUTABLE_PER: return this->executables.GetActiveExecutable() != nullptr; + default: case EXECUTABLE_ANY: return true; } diff --git a/vkconfig_core/configurator.h b/vkconfig_core/configurator.h index 6745e5c71a..fbcdc02348 100644 --- a/vkconfig_core/configurator.h +++ b/vkconfig_core/configurator.h @@ -28,12 +28,14 @@ #include "executable_manager.h" #include "type_platform.h" #include "type_override_area.h" +#include "type_stdout_display.h" #include "type_hide_message.h" #include "type_tab.h" #include "type_executable_mode.h" #include "type_executable_all_enabled_behavior.h" #include "type_configurator_mode.h" #include "type_diagnostic_mode.h" +#include "type_layers_display_mode.h" #include "type_generate_settings.h" #include "type_driver_mode.h" #include "type_theme_mode.h" @@ -68,7 +70,6 @@ class Configurator { struct LoaderSettings { Path executable_path; std::vector layers; - bool override_layers = true; }; static Configurator& Get(); @@ -165,28 +166,30 @@ class Configurator { const ConfiguratorMode& mode; - bool force_full_loader_log = false; bool reset_hard = false; bool has_crashed = false; TabType active_tab = TAB_CONFIGURATIONS; - bool advanced = true; + LayersDisplayMode layers_display_mode = LAYERS_DISPLAY_EXPLICIT_ONLY; Path last_path_status = Path(Path::HOME).AbsolutePath() + "/diagnostics"; - Path last_driver_path = Path(Path::HOME).AbsolutePath() + "/*.json"; + Path last_driver_dir = Path(Path::HOME).AbsolutePath(); Path last_path_launch_log = Path(Path::HOME).AbsolutePath() + "/application_log.txt"; Version online_sdk_version = Version::NONE; Version latest_sdk_version = Version::NONE; Version current_sdk_version = Version::VKHEADER; + bool configuration_show_scope = false; + bool layers_override_enabled = true; bool driver_override_enabled = false; DriverMode driver_override_mode = DRIVER_MODE_SINGLE; DeviceInfo driver_override_info; std::vector driver_override_list; std::map driver_paths; bool driver_paths_enabled = false; - bool loader_log_enabled = false; int loader_log_messages_flags = GetBit(LOG_ERROR); + StdoutDisplay stdout_display = STDOUT_DISPLAY_ON_EXIT; + QByteArray window_geometry; QByteArray window_state; ThemeMode current_theme_mode = THEME_MODE_AUTO; @@ -194,6 +197,7 @@ class Configurator { bool theme_dark_alternate_enabled = false; QColor theme_light_alternate_color = 0xF8F8F8; QColor theme_dark_alternate_color = 0x202020; + int app_log_max_blocks = 2048; private: int hide_message_boxes_flags = 0; diff --git a/vkconfig_core/executable_manager.cpp b/vkconfig_core/executable_manager.cpp index c56584bb72..25612e2e4f 100644 --- a/vkconfig_core/executable_manager.cpp +++ b/vkconfig_core/executable_manager.cpp @@ -195,10 +195,14 @@ bool ExecutableManager::Load(const QJsonObject& json_root_object, ConfiguratorMo executable_options.label = json_options_object.value("label").toString().toStdString(); executable_options.working_folder = json_options_object.value("working_folder").toString().toStdString(); + std::vector args; const QJsonArray& json_command_lines_array = json_options_object.value("arguments").toArray(); for (int k = 0, p = json_command_lines_array.size(); k < p; ++k) { - executable_options.args.push_back(json_command_lines_array[k].toString().toStdString()); + args.push_back(json_command_lines_array[k].toString().toStdString()); } + // Workaround to resolved badly stored arguments when we were using SplitSpace instead of SplitArgs to fill the + // executable arguments option in the UI + executable_options.args = SplitArgs(Merge(args, " ")); const QJsonArray& json_environment_variables_array = json_options_object.value("environment_variables").toArray(); for (int k = 0, p = json_environment_variables_array.size(); k < p; ++k) { diff --git a/vkconfig_core/generate_layers_settings_env.cpp b/vkconfig_core/generate_layers_settings_env.cpp index 1f8f26ca9e..2400fcb829 100644 --- a/vkconfig_core/generate_layers_settings_env.cpp +++ b/vkconfig_core/generate_layers_settings_env.cpp @@ -52,35 +52,37 @@ bool GenerateSettingsEnv(Configurator& configurator, ExportEnvMode mode, const P stream << COMMENT << "\n"; stream << COMMENT << format("This code was generated by Vulkan Configurator %s\n\n", Version::VKCONFIG.str().c_str()).c_str(); - /* - stream << COMMENT << "Loader Settings:\n"; + stream << COMMENT << "Loader Settings:\n"; - const std::vector& stderr_log = ::GetLogTokens(configurator.loader_log_messages_flags); - const std::string stderr_logs = Merge(stderr_log, ","); + const std::vector& stderr_log = ::GetLogTokens(configurator.loader_log_messages_flags); + const std::string stderr_logs = Merge(stderr_log, ","); + /* if (configurator.loader_log_enabled) { + stream << COMMENT << "Vulkan Loader enabled and ordered:\n"; stream << EXPORT << "VK_LOADER_DEBUG=" << stderr_logs.c_str() << "\n"; } - - { - stream << EXPORT << "VK_INSTANCE_LAYERS="; - std::vector layer_list; - for (std::size_t i = 0, n = configuration->parameters.size(); i < n; ++i) { - const Parameter& parameter = configuration->parameters[i]; - if (parameter.builtin == LAYER_BUILTIN_UNORDERED) { - continue; - } - if (parameter.control != LAYER_CONTROL_ON) { - continue; - } - layer_list.push_back(parameter.key); + */ + // if (configurator.layers_override_enabled) + { + stream << COMMENT << "Vulkan Layers enabled and ordered:\n"; + stream << EXPORT << "VK_INSTANCE_LAYERS="; + std::vector layer_list; + for (std::size_t i = 0, n = configuration->parameters.size(); i < n; ++i) { + const Parameter& parameter = configuration->parameters[i]; + if (parameter.builtin == LAYER_BUILTIN_UNORDERED) { + continue; } - stream << Merge(layer_list, ",").c_str(); - stream << "\n"; + if (parameter.control != LAYER_CONTROL_ON) { + continue; + } + layer_list.push_back(parameter.key); } - + stream << Merge(layer_list, ",").c_str(); stream << "\n"; - */ + } + + stream << "\n"; // Loop through all the layers for (std::size_t j = 0, n = configuration->parameters.size(); j < n; ++j) { diff --git a/vkconfig_core/generate_layers_settings_file.cpp b/vkconfig_core/generate_layers_settings_file.cpp index 8f0ad434e4..046a5be25d 100644 --- a/vkconfig_core/generate_layers_settings_file.cpp +++ b/vkconfig_core/generate_layers_settings_file.cpp @@ -22,7 +22,8 @@ // Create and write vk_layer_settings.txt file bool GenerateSettingsTXT(Configurator& configurator, OverrideArea override_area, const Path& layers_settings_path) { - if (override_area & OVERRIDE_AREA_LAYERS_SETTINGS_BIT) { + if (configurator.mode == CONFIGURATOR_MODE_CMD || + (configurator.layers_override_enabled && (override_area & OVERRIDE_AREA_LAYERS_SETTINGS_BIT))) { std::vector layers_settings_array; switch (configurator.GetExecutableScope()) { @@ -37,27 +38,32 @@ bool GenerateSettingsTXT(Configurator& configurator, OverrideArea override_area, case EXECUTABLE_PER: { const std::vector& executables = configurator.executables.GetExecutables(); - std::string configuration_name = configurator.GetSelectedGlobalConfiguration(); - for (std::size_t i = 0, n = executables.size(); i < n; ++i) { if (!executables[i].enabled) { continue; } - if (::EnabledExecutables(configurator.GetExecutableScope())) { - configuration_name = executables[i].configuration; - } - LayersSettings settings; settings.executable_path = executables[i].path; - settings.configuration_name = configuration_name; - settings.settings_path = executables[i].GetLocalLayersSettingsPath(); + + if (configurator.GetExecutableScope() == EXECUTABLE_PER) { + settings.configuration_name = executables[i].configuration; + settings.settings_path = executables[i].GetLocalLayersSettingsPath(); + } else { + settings.configuration_name = configurator.GetSelectedGlobalConfiguration(); + if (configurator.GetAllEnabledExecutableBehavior() == EXECUTABLE_ALL_ENABLED_WORKING_DIR) { + settings.settings_path = executables[i].GetLocalLayersSettingsPath(); + } else { + settings.settings_path = layers_settings_path; + } + } + layers_settings_array.push_back(settings); } break; } default: - case EXECUTABLE_NONE: + assert(0); break; } @@ -156,12 +162,12 @@ bool GenerateSettingsTXT(Configurator& configurator, OverrideArea override_area, has_missing_layers = true; configurator.Log( LOG_ERROR, - format("`%s` layer is set to `%s` in `%s` loader configuration but missing and being ignored\n", + format("`%s` layer is set to `%s` in `%s` layers configuration but missing and being ignored\n", parameter.key.c_str(), ::GetLabel(parameter.control), configuration->key.c_str())); } else { configurator.Log( LOG_WARN, - format("`%s` layer is set to `%s` in `%s` loader configuration but missing and being ignored\n", + format("`%s` layer is set to `%s` in `%s` layers configuration but missing and being ignored\n", parameter.key.c_str(), ::GetLabel(parameter.control), configuration->key.c_str())); } continue; diff --git a/vkconfig_core/generate_layers_settings_hpp.cpp b/vkconfig_core/generate_layers_settings_hpp.cpp index 97538d8f3e..6e8dc8af52 100644 --- a/vkconfig_core/generate_layers_settings_hpp.cpp +++ b/vkconfig_core/generate_layers_settings_hpp.cpp @@ -278,6 +278,16 @@ bool GenerateSettingsCode(Configurator& configurator, ExportHppMode mode, const stream << "// `LayerSettings` allows initializing layer settings from Vulkan application code.\n"; stream << "struct LayerSettings {\n"; + stream << "\tstd::vector layer_list {\n"; + for (std::size_t parameter_index = 0, parameter_count = configuration->parameters.size(); parameter_index < parameter_count; + ++parameter_index) { + const Parameter& parameter = configuration->parameters[parameter_index]; + if (parameter.control == LAYER_CONTROL_ON && parameter.builtin == LAYER_BUILTIN_NONE) { + stream << format("\t\t\"%s\",\n", parameter.key.c_str()).c_str(); + } + } + stream << "\t};\n"; + for (std::size_t parameter_index = 0, parameter_count = configuration->parameters.size(); parameter_index < parameter_count; ++parameter_index) { const Parameter& parameter = configuration->parameters[parameter_index]; @@ -315,10 +325,18 @@ bool GenerateSettingsCode(Configurator& configurator, ExportHppMode mode, const stream << "\t// \tconst VkLayerSettingEXT* pSettings;\n"; stream << "\t// } VkLayerSettingsCreateInfoEXT;\n\n"; + stream << "\tstd::vector layers() {\n"; + stream << "\t\tstd::vector results;\n"; + stream << "\t\tfor (std::size_t i = 0, n = layer_list.size(); i < n; ++i) {\n"; + stream << "\t\t\tresults.push_back(layer_list[i].c_str());\n"; + stream << "\t\t};\n"; + stream << "\t\treturn results;\n"; + stream << "\t};\n\n"; + if (mode == EXPORT_HPP_VULKAN_HPP) { - stream << "\tstd::vector info() {\n"; + stream << "\tstd::vector settings() {\n"; } else { - stream << "\tstd::vector info() {\n"; + stream << "\tstd::vector settings() {\n"; } for (std::size_t parameter_index = 0, parameter_count = configuration->parameters.size(); parameter_index < parameter_count; diff --git a/vkconfig_core/header.h b/vkconfig_core/header.h index 4c01a38f44..5224d7513a 100644 --- a/vkconfig_core/header.h +++ b/vkconfig_core/header.h @@ -29,17 +29,17 @@ #include struct Header { - Header() : status(STATUS_STABLE), view(SETTING_VIEW_STANDARD), platform_flags(PLATFORM_DESKTOP_BIT), expanded(true) {} + Header() {} std::string label; std::string description; std::string detailed; Path url; - StatusType status; + StatusType status = STATUS_STABLE; std::string deprecated_by_key; - SettingView view; - int platform_flags; - bool expanded; + SettingView view = SETTING_VIEW_STANDARD; + int platform_flags = PLATFORM_DESKTOP_BIT; + bool expanded = true; }; void LoadMetaHeader(Header& header, const QJsonObject& json_object); diff --git a/vkconfig_core/json.cpp b/vkconfig_core/json.cpp index 93b0cc6c2f..20af9301f7 100644 --- a/vkconfig_core/json.cpp +++ b/vkconfig_core/json.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,12 +25,12 @@ #include -QJsonDocument ParseJsonFile(const char* file) { - QFile file_schema(file); - const bool result = file_schema.open(QIODevice::ReadOnly | QIODevice::Text); +QJsonDocument ParseJsonFile(const char* path) { + QFile file(path); + const bool result = file.open(QIODevice::ReadOnly | QIODevice::Text); if (result) { - const QString& data = file_schema.readAll(); - file_schema.close(); + const QString& data = file.readAll(); + file.close(); QJsonParseError json_parse_error; const QJsonDocument& json_document = QJsonDocument::fromJson(data.toUtf8(), &json_parse_error); diff --git a/vkconfig_core/json_validator.cpp b/vkconfig_core/json_validator.cpp index 43b34f1c71..791debdbd1 100644 --- a/vkconfig_core/json_validator.cpp +++ b/vkconfig_core/json_validator.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/layer.cpp b/vkconfig_core/layer.cpp index 0fa35136d7..c65bee62f7 100644 --- a/vkconfig_core/layer.cpp +++ b/vkconfig_core/layer.cpp @@ -33,7 +33,6 @@ #include "util.h" #include "path.h" #include "json.h" -#include "json_validator.h" #include "is_dll_32.h" #include "configurator.h" @@ -41,40 +40,48 @@ #include #include #include -#include #include -#include -#include #include #include #include -bool operator<(const LayersPathInfo& a, const LayersPathInfo& b) { return a.path.RelativePath() < b.path.RelativePath(); } +#include +#include -bool Found(const std::vector& data, const Path& path) { - for (std::size_t i = 0, n = data.size(); i < n; ++i) { - if (data[i].path == path) { - return true; +const char* GetToken(LayerValidated status) { + static const char* TOKENS[] = { + "NONE", // LAYER_VALIDATE_NONE + "PASS", // LAYER_VALIDATE_PASS + "FAIL", // LAYER_VALIDATE_FAIL + }; + static_assert(std::size(TOKENS) == LAYER_VALIDATE_COUNT); + + return TOKENS[status]; +} + +LayerValidated GetLayerValidated(const char* token) { + for (int i = LAYER_VALIDATE_FIRST, l = LAYER_VALIDATE_LAST; i <= l; ++i) { + const LayerValidated status = static_cast(i); + if (std::strcmp(::GetToken(status), token) == 0) { + return status; } } - return false; + return LAYER_VALIDATE_FIRST; } Layer::Layer() : status(STATUS_STABLE), platforms(PLATFORM_DESKTOP_BIT) {} Layer::Layer(const std::string& key) : key(key), status(STATUS_STABLE), platforms(PLATFORM_DESKTOP_BIT) {} -Layer::Layer(const std::string& key, const Version& file_format_version, const Version& api_version, - const std::string& implementation_version, const std::string& library_path) - : key(key), - file_format_version(file_format_version), - binary_path(library_path), - api_version(api_version), - implementation_version(implementation_version), - status(STATUS_STABLE), - platforms(PLATFORM_DESKTOP_BIT) {} +LayerId Layer::GetId() const { + LayerId id; + id.manifest_path = this->manifest_path; + id.key = this->key; + id.api_version = this->api_version; + return id; +} bool Layer::IsValid() const { return file_format_version != Version::NONE && !key.empty() && !binary_path.Empty() && api_version != Version::NONE && @@ -103,30 +110,6 @@ LayerControl Layer::GetActualControl() const { } } -std::string Layer::GetActualControlTooltip() const { - if (this->type == LAYER_TYPE_IMPLICIT) { - if (!this->disable_env.empty()) { - if (qEnvironmentVariableIsSet(this->disable_env.c_str())) { - return format("'%s' is set", this->disable_env.c_str()); - } - } - - if (!this->enable_env.empty()) { - const std::string& value = qgetenv(this->enable_env.c_str()).toStdString(); - if (value == this->enable_value) { - return format("'%s' is set to '%s'.", this->enable_env.c_str(), value.c_str()); - } else { - return format("Set '%s' to '%s' to enable '%s' by default.", this->enable_env.c_str(), this->enable_value.c_str(), - this->key.c_str()); - } - } - - return format("Set '%s' to disable '%s' by default.", this->disable_env.c_str(), this->key.c_str()); - } else { - return ::GetDescription(LAYER_CONTROL_AUTO); - } -} - int Layer::FindPresetIndex(const SettingDataSet& settings) const { for (std::size_t i = 0, n = this->presets.size(); i < n; ++i) { if (::HasPreset(settings, this->presets[i].settings)) { @@ -203,8 +186,117 @@ void Layer::FillPresetSettings(SettingDataSet& settings_data, const std::vector< } } -LayerLoadStatus Layer::Load(const Path& full_path_to_file, LayerType type, bool request_validate_manifest, - const std::map& layers_found, ConfiguratorMode configurator_mode) { +LayerLoadStatus Layer::Load(const QJsonObject& json_layer_object) { + this->key = ReadStringValue(json_layer_object, "name"); + + if (this->key == "VK_LAYER_LUNARG_override" || !(this->key.rfind("VK_", 0) == 0)) { + return LAYER_LOAD_IGNORED; + } + + this->api_version = ReadVersionValue(json_layer_object, "api_version"); + + const QJsonValue& json_library_path_value = json_layer_object.value("library_path"); + if (json_library_path_value != QJsonValue::Undefined) { + this->binary_path = json_library_path_value.toString().toStdString(); + } + + const Path& binary = this->manifest_path.AbsoluteDir() + "/" + this->binary_path.AbsolutePath(); + if (::IsDLL32Bit(binary.AbsolutePath())) { + this->is_32bits = true; + return LAYER_LOAD_IGNORED; + } + + if (json_layer_object.value("prefix") != QJsonValue::Undefined) { + this->prefix = ReadStringValue(json_layer_object, "prefix"); + } + this->implementation_version = ReadStringValue(json_layer_object, "implementation_version"); + if (json_layer_object.value("status") != QJsonValue::Undefined) { + this->status = GetStatusType(ReadStringValue(json_layer_object, "status").c_str()); + } + if (json_layer_object.value("platforms") != QJsonValue::Undefined) { + this->platforms = GetPlatformFlags(ReadStringArray(json_layer_object, "platforms")); + } + this->description = ReadStringValue(json_layer_object, "description"); + if (json_layer_object.value("introduction") != QJsonValue::Undefined) { + this->introduction = ReadStringValue(json_layer_object, "introduction"); + } + if (json_layer_object.value("url") != QJsonValue::Undefined) { + this->url = Path(ReadStringValue(json_layer_object, "url"), false); + } + + if (json_layer_object.value("disable_environment") != QJsonValue::Undefined) { + const QJsonObject& json_env_object = json_layer_object.value("disable_environment").toObject(); + const QStringList keys = json_env_object.keys(); + this->disable_env = keys[0].toStdString(); + } + if (json_layer_object.value("enable_environment") != QJsonValue::Undefined) { + const QJsonObject& json_env_object = json_layer_object.value("enable_environment").toObject(); + const QStringList keys = json_env_object.keys(); + this->enable_env = keys[0].toStdString(); + this->enable_value = ReadStringValue(json_env_object, this->enable_env.c_str()); + } + + const QJsonValue& json_features_value = json_layer_object.value("features"); + if (json_features_value != QJsonValue::Undefined) { + const QJsonObject& json_features_object = json_features_value.toObject(); + + // Load layer settings + this->settings.clear(); + const QJsonValue& json_settings_value = json_features_object.value("settings"); + if (json_settings_value != QJsonValue::Undefined) { + this->AddSettingsSet(this->settings, nullptr, json_settings_value); + } + + // Load default settings preset + this->presets.clear(); + if (!this->settings.empty()) { + LayerPreset preset; + preset.label = "Default"; + preset.platform_flags = this->platforms; + + this->FillPresetSettings((SettingDataSet&)preset.settings, this->settings); + + this->presets.push_back(preset); + } + + // Load layer presets + const QJsonValue& json_presets_value = json_features_object.value("presets"); + if (json_presets_value != QJsonValue::Undefined) { + assert(json_presets_value.isArray()); + const QJsonArray& json_preset_array = json_presets_value.toArray(); + for (int preset_index = 0, preset_count = json_preset_array.size(); preset_index < preset_count; ++preset_index) { + const QJsonObject& json_preset_object = json_preset_array[preset_index].toObject(); + + LayerPreset preset; + preset.platform_flags = this->platforms; + ::LoadMetaHeader(preset, json_preset_object); + + const QJsonArray& json_setting_array = ReadArray(json_preset_object, "settings"); + for (int setting_index = 0, setting_count = json_setting_array.size(); setting_index < setting_count; + ++setting_index) { + this->AddSettingData((SettingDataSet&)preset.settings, json_setting_array[setting_index]); + } + + this->presets.push_back(preset); + } + } + + // Load dependence + if (json_settings_value != QJsonValue::Undefined) { + this->AddSettingsDependences(json_settings_value); + } + + // Load messages + if (json_settings_value != QJsonValue::Undefined) { + this->AddSettingsMessages(json_settings_value); + } + } + + return this->IsValid() ? LAYER_LOAD_ADDED : LAYER_LOAD_INVALID; +} + +/* +LayerLoadStatus Layer::Load(const Path& full_path_to_file, LayerType type, ConfiguratorMode configurator_mode) { this->type = type; // Set layer type, no way to know this from the json file if (full_path_to_file.Empty()) { @@ -222,13 +314,6 @@ LayerLoadStatus Layer::Load(const Path& full_path_to_file, LayerType type, bool this->manifest_path = full_path_to_file; this->last_modified = full_path_to_file.LastModified(); - auto it = layers_found.find(full_path_to_file.AbsolutePath().c_str()); - if (it != layers_found.end()) { - if (it->second.disabled && it->second.last_modified == this->last_modified) { - return LAYER_LOAD_FAILED; - } - } - // Convert the text to a JSON document & validate it. // It does need to be a valid json formatted file. QJsonParseError json_parse_error; @@ -247,7 +332,7 @@ LayerLoadStatus Layer::Load(const Path& full_path_to_file, LayerType type, bool if (json_root_object.value("file_format_version") == QJsonValue::Undefined) { return LAYER_LOAD_IGNORED; // Not a layer JSON file } - if (json_root_object.value("layer") == QJsonValue::Undefined) { + if (json_root_object.value("layer") == QJsonValue::Undefined && json_root_object.value("layers") == QJsonValue::Undefined) { return LAYER_LOAD_IGNORED; // Not a layer JSON file } @@ -273,25 +358,9 @@ LayerLoadStatus Layer::Load(const Path& full_path_to_file, LayerType type, bool return LAYER_LOAD_INVALID; } - const QJsonObject& json_layer_object = ReadObject(json_root_object, "layer"); - - this->key = ReadStringValue(json_layer_object, "name"); - - if (this->key == "VK_LAYER_LUNARG_override") { - return LAYER_LOAD_IGNORED; - } - - this->api_version = ReadVersionValue(json_layer_object, "api_version"); - JsonValidator validator; - std::string cached_last_modified; - if (it != layers_found.end()) { - cached_last_modified = it->second.last_modified; - } - const bool should_validate = request_validate_manifest && ((last_modified != cached_last_modified) || !it->second.validated); - const bool is_valid = should_validate ? validator.Check(json_text) : true; - + const bool is_valid = request_validate_manifest ? validator.Check(json_text) : true; if (!is_valid) { switch (configurator_mode) { default: { @@ -332,104 +401,24 @@ LayerLoadStatus Layer::Load(const Path& full_path_to_file, LayerType type, bool return LAYER_LOAD_INVALID; } - const QJsonValue& json_library_path_value = json_layer_object.value("library_path"); - if (json_library_path_value != QJsonValue::Undefined) { - this->binary_path = json_library_path_value.toString().toStdString(); - } - - const Path& binary = this->manifest_path.AbsoluteDir() + "/" + this->binary_path.AbsolutePath(); - if (::IsDLL32Bit(binary.AbsolutePath())) { - this->is_32bits = true; - return LAYER_LOAD_INVALID; - } - - if (json_layer_object.value("prefix") != QJsonValue::Undefined) { - this->prefix = ReadStringValue(json_layer_object, "prefix"); - } - this->implementation_version = ReadStringValue(json_layer_object, "implementation_version"); - if (json_layer_object.value("status") != QJsonValue::Undefined) { - this->status = GetStatusType(ReadStringValue(json_layer_object, "status").c_str()); - } - if (json_layer_object.value("platforms") != QJsonValue::Undefined) { - this->platforms = GetPlatformFlags(ReadStringArray(json_layer_object, "platforms")); - } - this->description = ReadStringValue(json_layer_object, "description"); - if (json_layer_object.value("introduction") != QJsonValue::Undefined) { - this->introduction = ReadStringValue(json_layer_object, "introduction"); - } - if (json_layer_object.value("url") != QJsonValue::Undefined) { - this->url = Path(ReadStringValue(json_layer_object, "url"), false); - } - - if (json_layer_object.value("disable_environment") != QJsonValue::Undefined) { - const QJsonObject& json_env_object = json_layer_object.value("disable_environment").toObject(); - const QStringList keys = json_env_object.keys(); - this->disable_env = keys[0].toStdString(); - } - if (json_layer_object.value("enable_environment") != QJsonValue::Undefined) { - const QJsonObject& json_env_object = json_layer_object.value("enable_environment").toObject(); - const QStringList keys = json_env_object.keys(); - this->enable_env = keys[0].toStdString(); - this->enable_value = ReadStringValue(json_env_object, this->enable_env.c_str()); - } - - const QJsonValue& json_features_value = json_layer_object.value("features"); - if (json_features_value != QJsonValue::Undefined) { - const QJsonObject& json_features_object = json_features_value.toObject(); - - // Load layer settings - this->settings.clear(); - const QJsonValue& json_settings_value = json_features_object.value("settings"); - if (json_settings_value != QJsonValue::Undefined) { - this->AddSettingsSet(this->settings, nullptr, json_settings_value); - } - - // Load default settings preset - this->presets.clear(); - if (!this->settings.empty()) { - LayerPreset preset; - preset.label = "Default"; - preset.platform_flags = this->platforms; - - this->FillPresetSettings((SettingDataSet&)preset.settings, this->settings); - - this->presets.push_back(preset); - } - - // Load layer presets - const QJsonValue& json_presets_value = json_features_object.value("presets"); - if (json_presets_value != QJsonValue::Undefined) { - assert(json_presets_value.isArray()); - const QJsonArray& json_preset_array = json_presets_value.toArray(); - for (int preset_index = 0, preset_count = json_preset_array.size(); preset_index < preset_count; ++preset_index) { - const QJsonObject& json_preset_object = json_preset_array[preset_index].toObject(); - - LayerPreset preset; - preset.platform_flags = this->platforms; - ::LoadMetaHeader(preset, json_preset_object); - - const QJsonArray& json_setting_array = ReadArray(json_preset_object, "settings"); - for (int setting_index = 0, setting_count = json_setting_array.size(); setting_index < setting_count; - ++setting_index) { - this->AddSettingData((SettingDataSet&)preset.settings, json_setting_array[setting_index]); - } - - this->presets.push_back(preset); - } - } - - // Load dependence - if (json_settings_value != QJsonValue::Undefined) { - this->AddSettingsDependences(json_settings_value); - } - - // Load messages - if (json_settings_value != QJsonValue::Undefined) { - this->AddSettingsMessages(json_settings_value); + if (json_root_object.value("layers") == QJsonValue::Undefined) { + const QJsonArray& json_layers_array = json_root_object.value("layers").toArray(); + for (int i = 0, n = json_layers_array.size(); i < n; ++i) { + const QJsonObject& json_layer_object = json_layers_array[i].toObject(); + return this->LoadLayer(json_layer_object); } + } else { + const QJsonObject& json_layer_object = ReadObject(json_root_object, "layer"); + return this->LoadLayer(json_layer_object); + } +} +*/ +bool operator<(const Layer& layer_a, const Layer& layer_b) { + if (layer_a.key == layer_b.key) { + return layer_a.api_version < layer_b.api_version; + } else { + return layer_a.key < layer_b.key; } - - return this->IsValid() ? LAYER_LOAD_ADDED : LAYER_LOAD_INVALID; // Not all JSON file are layer JSON valid } void CollectDefaultSettingData(const SettingMetaSet& meta_set, SettingDataSet& data_set) { @@ -594,6 +583,13 @@ void Layer::AddSettingsMessages(const QJsonValue& json_settings_value) { message.informative = json_message_object.value("informative").toString().toStdString(); message.severity = ::GetSeverityType(json_message_object.value("severity").toString().toStdString().c_str()); + if (json_message_object.value("platforms") != QJsonValue::Undefined) { + int platform_flags = GetPlatformFlags(ReadStringArray(json_message_object, "platforms")); + if (!(platform_flags & (1 << VKC_PLATFORM))) { + continue; // Skipping messages not applied on the current platform + } + } + const QJsonValue& json_conditions_value = json_message_object.value("conditions"); assert(json_conditions_value != QJsonValue::Undefined); const QJsonArray& json_settings_array = json_conditions_value.toArray(); diff --git a/vkconfig_core/layer.h b/vkconfig_core/layer.h index 5fbf7d3e8e..b4c5fb1500 100644 --- a/vkconfig_core/layer.h +++ b/vkconfig_core/layer.h @@ -36,27 +36,10 @@ #include #include -struct LayerStatus { - std::string last_modified; - bool validated = false; - bool disabled = false; -}; - -struct LayersPathInfo { - Path path; - LayerType type = LAYER_TYPE_EXPLICIT; - bool enabled = true; -}; - -bool operator<(const LayersPathInfo& a, const LayersPathInfo& b); - -bool Found(const std::vector& data, const Path& path); - enum LayerLoadStatus { LAYER_LOAD_ADDED = 0, LAYER_LOAD_RELOADED, LAYER_LOAD_UNMODIFIED, - LAYER_LOAD_FAILED, LAYER_LOAD_INVALID, LAYER_LOAD_IGNORED, @@ -64,25 +47,49 @@ enum LayerLoadStatus { LAYER_LOAD_LAST = LAYER_LOAD_IGNORED, }; -inline bool IsDisabled(LayerLoadStatus status) { - return status == LAYER_LOAD_FAILED || status == LAYER_LOAD_INVALID || status == LAYER_LOAD_IGNORED; -} - enum { LAYER_LOAD_COUNT = LAYER_LOAD_LAST - LAYER_LOAD_FIRST + 1 }; +enum LayerValidated { + LAYER_VALIDATE_NONE = 0, + LAYER_VALIDATE_PASS, + LAYER_VALIDATE_FAIL, + + LAYER_VALIDATE_FIRST = LAYER_VALIDATE_NONE, + LAYER_VALIDATE_LAST = LAYER_VALIDATE_FAIL, +}; + +enum { LAYER_VALIDATE_COUNT = LAYER_VALIDATE_LAST - LAYER_VALIDATE_FIRST + 1 }; + +const char* GetToken(LayerValidated status); + +LayerValidated GetLayerValidated(const char* token); + +struct LayerId { + Path manifest_path; + std::string key; + Version api_version; +}; + +struct LayerDescriptor { + std::string last_modified; + LayerValidated validated = LAYER_VALIDATE_NONE; + bool enabled = true; + bool removed = false; + bool recent = false; +}; + class Layer { public: enum { NO_PRESET = -1, DEFAULT_PRESET = 0 }; Layer(); Layer(const std::string& key); - Layer(const std::string& key, const Version& file_format_version, const Version& api_version, - const std::string& implementation_version, const std::string& library_path); + + LayerId GetId() const; bool IsValid() const; LayerControl GetActualControl() const; - std::string GetActualControlTooltip() const; int FindPresetIndex(const SettingDataSet& settings) const; @@ -103,7 +110,7 @@ class Layer { Path binary_path; Version api_version; std::string implementation_version; - std::string last_modified; + // std::string last_modified; StatusType status; std::string description; std::string introduction; @@ -116,13 +123,13 @@ class Layer { std::string enable_env; std::string enable_value; bool is_32bits = false; - bool enabled = true; std::vector settings; std::vector presets; - LayerLoadStatus Load(const Path& full_path_to_file, LayerType type, bool request_validate_manifest, - const std::map& layers_found, ConfiguratorMode configurator_mode); + LayerLoadStatus Load(const QJsonObject& json_layer_object); + + LayerDescriptor descriptor; private: Layer& operator=(const Layer&) = delete; @@ -130,4 +137,6 @@ class Layer { std::vector > memory; // Settings are deleted when all layers instances are deleted. }; +bool operator<(const Layer& layer_a, const Layer& layer_b); + void CollectDefaultSettingData(const SettingMetaSet& meta_set, SettingDataSet& data_set); diff --git a/vkconfig_core/layer_manager.cpp b/vkconfig_core/layer_manager.cpp index 84ac360960..6dc76f9d92 100644 --- a/vkconfig_core/layer_manager.cpp +++ b/vkconfig_core/layer_manager.cpp @@ -22,43 +22,43 @@ #include "util.h" #include "type_platform.h" #include "registry.h" +#include "json_validator.h" #include +#include +#include -std::vector GetEnvVariablePaths(const char *variable_name, LayerType type) { - std::vector result; +static std::vector GetEnvVariablePaths(const char *variable_name, LayerType type) { + std::vector result; const char *SEPARATOR = GetToken(PARSE_ENV_VAR); const std::vector &paths = UniqueStrings(Split(qgetenv(variable_name).toStdString(), SEPARATOR)); result.resize(paths.size()); for (std::size_t i = 0, n = paths.size(); i < n; ++i) { - result[i].path = paths[i]; - result[i].enabled = true; - result[i].type = type; + result[i] = paths[i]; } return result; } -std::vector GetImplicitLayerPaths() { - std::vector result; +static std::vector GetImplicitLayerPaths() { + std::vector result; #if VKC_ENV == VKC_ENV_WIN32 - const std::vector &admin_registry_paths = + const std::vector &admin_registry_paths = LoadRegistrySoftwareLayers("HKEY_LOCAL_MACHINE\\Software\\Khronos\\Vulkan\\ImplicitLayers", LAYER_TYPE_IMPLICIT); result.insert(result.begin(), admin_registry_paths.begin(), admin_registry_paths.end()); - const std::vector &user_registry_paths = + const std::vector &user_registry_paths = LoadRegistrySoftwareLayers("HKEY_CURRENT_USER\\Software\\Khronos\\Vulkan\\ImplicitLayers", LAYER_TYPE_IMPLICIT); result.insert(result.begin(), user_registry_paths.begin(), user_registry_paths.end()); // Search for drivers specific layers - const std::vector &drivers_registry_paths = + const std::vector &drivers_registry_paths = LoadRegistrySystemLayers("HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Class\\...\\VulkanImplicitLayers"); result.insert(result.begin(), drivers_registry_paths.begin(), drivers_registry_paths.end()); #else - std::vector paths; if (VKC_PLATFORM == PLATFORM_MACOS) { static const char *LAYERS_PATHS[] = { "/usr/local/share/vulkan/implicit_layer.d", @@ -66,7 +66,7 @@ std::vector GetImplicitLayerPaths() { }; for (std::size_t i = 0, n = std::size(LAYERS_PATHS); i < n; ++i) { - paths.push_back(LAYERS_PATHS[i]); + result.push_back(LAYERS_PATHS[i]); } } else { static const char *LAYERS_PATHS[] = { @@ -86,39 +86,31 @@ std::vector GetImplicitLayerPaths() { }; for (std::size_t i = 0, n = std::size(LAYERS_PATHS); i < n; ++i) { - paths.push_back(LAYERS_PATHS[i]); + result.push_back(LAYERS_PATHS[i]); } } - - for (std::size_t i = 0, n = paths.size(); i < n; ++i) { - LayersPathInfo info; - info.type = LAYER_TYPE_IMPLICIT; - info.path = paths[i]; - result.push_back(info); - } #endif return result; } -std::vector GetExplicitLayerPaths() { - std::vector result; +std::vector GetExplicitLayerPaths() { + std::vector result; #if VKC_ENV == VKC_ENV_WIN32 - const std::vector &admin_registry_paths = + const std::vector &admin_registry_paths = LoadRegistrySoftwareLayers("HKEY_LOCAL_MACHINE\\Software\\Khronos\\Vulkan\\ExplicitLayers", LAYER_TYPE_EXPLICIT); result.insert(result.begin(), admin_registry_paths.begin(), admin_registry_paths.end()); - const std::vector &user_registry_paths = + const std::vector &user_registry_paths = LoadRegistrySoftwareLayers("HKEY_CURRENT_USER\\Software\\Khronos\\Vulkan\\ExplicitLayers", LAYER_TYPE_EXPLICIT); result.insert(result.begin(), user_registry_paths.begin(), user_registry_paths.end()); // Search for drivers specific layers - const std::vector &drivers_registry_paths = + const std::vector &drivers_registry_paths = LoadRegistrySystemLayers("HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Class\\...\\VulkanExplicitLayers"); result.insert(result.begin(), drivers_registry_paths.begin(), drivers_registry_paths.end()); #else - std::vector paths; if (VKC_PLATFORM == PLATFORM_MACOS) { static const char *LAYERS_PATHS[] = { "/usr/local/share/vulkan/explicit_layer.d", @@ -126,7 +118,7 @@ std::vector GetExplicitLayerPaths() { }; for (std::size_t i = 0, n = std::size(LAYERS_PATHS); i < n; ++i) { - paths.push_back(LAYERS_PATHS[i]); + result.push_back(LAYERS_PATHS[i]); } } else { static const char *LAYERS_PATHS[] = { @@ -146,42 +138,25 @@ std::vector GetExplicitLayerPaths() { }; for (std::size_t i = 0, n = std::size(LAYERS_PATHS); i < n; ++i) { - paths.push_back(LAYERS_PATHS[i]); + result.push_back(LAYERS_PATHS[i]); } } - - for (std::size_t i = 0, n = paths.size(); i < n; ++i) { - LayersPathInfo info; - info.type = LAYER_TYPE_EXPLICIT; - info.path = paths[i]; - result.push_back(info); - } #endif return result; } -static LayersPathInfo *FindPathInfo(std::array, LAYERS_PATHS_COUNT> &paths, const std::string &path) { - for (int paths_type_index = LAYERS_PATHS_FIRST; paths_type_index <= LAYERS_PATHS_LAST; ++paths_type_index) { - for (std::size_t i = 0, n = paths[paths_type_index].size(); i < n; ++i) { - if (paths[paths_type_index][i].path == path) { - return &paths[paths_type_index][i]; - } - } - } - - return nullptr; -} - -LayerManager::LayerManager() { this->InitSystemPaths(); } +LayerManager::LayerManager() {} bool LayerManager::Load(const QJsonObject &json_root_object, ConfiguratorMode configurator_mode) { + this->available_layers.clear(); + // LAYERS_PATHS_GUI if (json_root_object.value("layers") != QJsonValue::Undefined) { const QJsonObject &json_layers_object = json_root_object.value("layers").toObject(); - if (json_layers_object.value("last_layers_path") != QJsonValue::Undefined) { - this->last_layers_path = json_layers_object.value("last_layers_path").toString().toStdString(); + if (json_layers_object.value("last_layers_dir") != QJsonValue::Undefined) { + this->last_layers_dir = json_layers_object.value("last_layers_dir").toString().toStdString(); } if (json_layers_object.value("validate_manifests") != QJsonValue::Undefined) { @@ -195,26 +170,14 @@ bool LayerManager::Load(const QJsonObject &json_root_object, ConfiguratorMode co for (int i = 0, n = json_layers_found_keys.length(); i < n; ++i) { const QJsonObject &json_status_object = json_layers_found_object.value(json_layers_found_keys[i]).toObject(); - LayerStatus layer_status; - layer_status.last_modified = json_status_object.value("last_modified").toString().toStdString(); - layer_status.validated = json_status_object.value("validated").toBool(); - layer_status.disabled = json_status_object.value("disabled").toBool(); - - const Path &manifest_path = json_layers_found_keys[i].toStdString(); - - this->layers_found.insert(std::make_pair(manifest_path, layer_status)); - } - } - - if (json_layers_object.value("paths") != QJsonValue::Undefined) { - const QJsonObject &json_paths_object = json_layers_object.value("paths").toObject(); - const QStringList &json_paths_keys = json_paths_object.keys(); + LayerDisplay layer; + layer.id.manifest_path = json_layers_found_keys[i].toStdString(); + layer.descriptor.enabled = !json_status_object.value("disabled").toBool(); + layer.descriptor.validated = LAYER_VALIDATE_NONE; - for (int i = 0, n = json_paths_keys.length(); i < n; ++i) { - LayersPathInfo info; - info.path = json_paths_keys[i].toStdString(); - info.enabled = json_paths_object.value(json_paths_keys[i].toStdString().c_str()).toBool(); - this->AppendPath(info); + std::vector layers; + layers.push_back(layer); + this->AppendInit(layer.id.manifest_path, layers); } } } @@ -225,31 +188,12 @@ bool LayerManager::Load(const QJsonObject &json_root_object, ConfiguratorMode co } bool LayerManager::Save(QJsonObject &json_root_object) const { - QJsonObject json_layers_status_object; - for (auto it = this->layers_found.begin(); it != this->layers_found.end(); ++it) { - QJsonObject json_layer_status_object; - json_layer_status_object.insert("last_modified", it->second.last_modified.c_str()); - json_layer_status_object.insert("validated", it->second.validated); - json_layer_status_object.insert("disabled", it->second.disabled); - json_layers_status_object.insert(it->first.AbsolutePath().c_str(), json_layer_status_object); - } - - QJsonObject json_paths_object; - for (int paths_type_index = LAYERS_PATHS_FIRST; paths_type_index <= LAYERS_PATHS_LAST; ++paths_type_index) { - const std::vector &path_infos = this->paths[paths_type_index]; - - for (std::size_t i = 0, n = path_infos.size(); i < n; ++i) { - json_paths_object.insert(path_infos[i].path.RelativePath().c_str(), path_infos[i].enabled); - } - } - QJsonObject json_layers_object; json_layers_object.insert("validate_manifests", this->validate_manifests); - json_layers_object.insert("last_layers_path", this->last_layers_path.RelativePath().c_str()); - json_layers_object.insert("found", json_layers_status_object); - json_layers_object.insert("paths", json_paths_object); - - json_root_object.insert("layers", json_layers_object); + json_layers_object.insert("last_layers_dir", this->last_layers_dir.RelativePath().c_str()); + // json_layers_object.insert("found", json_layers_found_object); + // json_layers_object.insert("removed", json_layers_removed_array); + // json_root_object.insert("layers", json_layers_object); return true; } @@ -257,48 +201,35 @@ bool LayerManager::Save(QJsonObject &json_root_object) const { std::string LayerManager::Log() const { std::string log; - for (std::size_t group_index = 0, group_count = this->paths.size(); group_index < group_count; ++group_index) { - const std::vector &paths_group = this->paths[group_index]; - if (paths_group.empty()) { - log += format(" %d. %s paths:\n", group_index + 1, ::GetLabel(static_cast(group_index))); - log += format(" - None\n"); + for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { + const Layer *layer = &this->available_layers[i]; + + if (layer->type == LAYER_TYPE_IMPLICIT) { + log += format(" * %s - %s (Auto: %s)", layer->key.c_str(), layer->api_version.str().c_str(), + GetLabel(layer->GetActualControl())); } else { - log += format(" %d. %s paths:\n", group_index + 1, ::GetLabel(static_cast(group_index))); + log += format(" * %s - %s", layer->key.c_str(), layer->api_version.str().c_str()); } - for (std::size_t path_index = 0, path_count = paths_group.size(); path_index < path_count; ++path_index) { - log += format(" - %s (%s)\n", paths_group[path_index].path.AbsolutePath().c_str(), - paths_group[path_index].enabled ? "Enabled" : "Disabled"); + if (layer->status != STATUS_STABLE) { + log += format(" (%s)", GetToken(layer->status)); + } + log += "\n"; - const std::vector layers = this->GatherLayers(paths_group[path_index]); + log += format(" %s\n", layer->manifest_path.AbsolutePath().c_str()); + log += "\n"; - for (std::size_t i = 0, n = layers.size(); i < n; ++i) { - if (layers[i]->type == LAYER_TYPE_IMPLICIT) { - log += format(" * %s - %s (Auto: %s)", layers[i]->key.c_str(), layers[i]->api_version.str().c_str(), - GetLabel(layers[i]->GetActualControl())); + if (layer->type == LAYER_TYPE_IMPLICIT) { + if (!layer->disable_env.empty()) { + const std::string &value = qEnvironmentVariableIsSet(layer->disable_env.c_str()) ? "set" : "not set"; + log += format(" '%s' is %s\n", layer->disable_env.c_str(), value.c_str()); + } + if (!layer->enable_env.empty()) { + if (qEnvironmentVariableIsSet(layer->enable_env.c_str())) { + const std::string &value = qgetenv(layer->enable_env.c_str()).toStdString(); + log += format(" '%s' is set to '%s'\n", layer->enable_env.c_str(), value.c_str()); } else { - log += format(" * %s - %s", layers[i]->key.c_str(), layers[i]->api_version.str().c_str()); - } - - if (layers[i]->status != STATUS_STABLE) { - log += format(" (%s)", GetToken(layers[i]->status)); - } - log += "\n"; - - if (layers[i]->type == LAYER_TYPE_IMPLICIT) { - if (!layers[i]->disable_env.empty()) { - const std::string &value = qEnvironmentVariableIsSet(layers[i]->disable_env.c_str()) ? "set" : "not set"; - log += format(" '%s' is %s\n", layers[i]->disable_env.c_str(), value.c_str()); - } - if (!layers[i]->enable_env.empty()) { - if (qEnvironmentVariableIsSet(layers[i]->enable_env.c_str())) { - const std::string &value = qgetenv(layers[i]->enable_env.c_str()).toStdString(); - log += format(" '%s' is set to '%s'\n", layers[i]->enable_env.c_str(), value.c_str()); - } else { - log += format(" '%s' is not set to '%s'\n", layers[i]->enable_env.c_str(), - layers[i]->enable_value.c_str()); - } - } + log += format(" '%s' is not set to '%s'\n", layer->enable_env.c_str(), layer->enable_value.c_str()); } } } @@ -309,57 +240,25 @@ std::string LayerManager::Log() const { return log; } -void LayerManager::InitSystemPaths() { - this->available_layers.clear(); - this->layers_found.clear(); - - this->paths[LAYERS_PATHS_IMPLICIT_SYSTEM] = GetImplicitLayerPaths(); - - // LAYERS_PATHS_IMPLICIT_ENV_SET: VK_IMPLICIT_LAYER_PATH env variables - this->paths[LAYERS_PATHS_IMPLICIT_ENV_SET] = GetEnvVariablePaths("VK_IMPLICIT_LAYER_PATH", LAYER_TYPE_IMPLICIT); - - // LAYERS_PATHS_IMPLICIT_ENV_ADD: VK_ADD_IMPLICIT_LAYER_PATH env variables - this->paths[LAYERS_PATHS_IMPLICIT_ENV_ADD] = GetEnvVariablePaths("VK_ADD_IMPLICIT_LAYER_PATH", LAYER_TYPE_IMPLICIT); - - // LAYERS_PATHS_EXPLICIT_SYSTEM - this->paths[LAYERS_PATHS_EXPLICIT_SYSTEM] = GetExplicitLayerPaths(); - - // LAYERS_PATHS_EXPLICIT_ENV_SET: VK_LAYER_PATH env variables - this->paths[LAYERS_PATHS_EXPLICIT_ENV_SET] = GetEnvVariablePaths("VK_LAYER_PATH", LAYER_TYPE_EXPLICIT); - - // LAYERS_PATHS_EXPLICIT_ENV_ADD: VK_ADD_LAYER_PATH env variables - this->paths[LAYERS_PATHS_EXPLICIT_ENV_ADD] = GetEnvVariablePaths("VK_ADD_LAYER_PATH", LAYER_TYPE_EXPLICIT); - - // LAYERS_PATHS_GUI - this->paths[LAYERS_PATHS_GUI].clear(); - - // LAYERS_PATHS_SDK - this->paths[LAYERS_PATHS_SDK].clear(); - { - LayersPathInfo info; - info.path = Path(Path::SDK_EXPLICIT_LAYERS); - info.enabled = true; - this->paths[LAYERS_PATHS_SDK].push_back(info); - } -} - void LayerManager::Clear() { this->available_layers.clear(); } bool LayerManager::Empty() const { return this->available_layers.empty(); } std::size_t LayerManager::Size() const { return this->available_layers.size(); } -std::vector LayerManager::GatherManifests(const std::string &layer_name) const { +std::vector LayerManager::GatherManifests(const std::string &layer_key) const { std::vector result; for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - if (!this->available_layers[i].enabled) { + if (!this->available_layers[i].descriptor.enabled) { continue; } - if (this->available_layers[i].key == layer_name) { - result.push_back(this->available_layers[i].manifest_path); + if (this->available_layers[i].key != layer_key) { + continue; } + + result.push_back(this->available_layers[i].manifest_path); } std::sort(result.rbegin(), result.rend()); @@ -367,17 +266,19 @@ std::vector LayerManager::GatherManifests(const std::string &layer_name) c return result; } -std::vector LayerManager::GatherVersions(const std::string &layer_name) const { +std::vector LayerManager::GatherVersions(const std::string &layer_key) const { std::vector result; for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - if (!this->available_layers[i].enabled) { + if (!this->available_layers[i].descriptor.enabled) { continue; } - if (this->available_layers[i].key == layer_name) { - result.push_back(this->available_layers[i].api_version); + if (this->available_layers[i].key != layer_key) { + continue; } + + result.push_back(this->available_layers[i].api_version); } std::sort(result.rbegin(), result.rend()); @@ -385,8 +286,63 @@ std::vector LayerManager::GatherVersions(const std::string &layer_name) return result; } +const Layer *LayerManager::Find(LayerId id, bool enable_only) const { + for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { + const Layer &layer = this->available_layers[i]; + + if (!layer.descriptor.enabled && enable_only) { + continue; + } + + if (layer.manifest_path != id.manifest_path) { + continue; + } + + if (layer.key != id.key) { + continue; + } + + if (layer.api_version != Version::LATEST) { + if (layer.api_version != id.api_version) { + continue; + } + } + + return &this->available_layers[i]; + } + + return nullptr; +} + +Layer *LayerManager::Find(LayerId id, bool enable_only) { + for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { + Layer &layer = this->available_layers[i]; + + if (!layer.descriptor.enabled && enable_only) { + continue; + } + + if (layer.manifest_path != id.manifest_path) { + continue; + } + + if (layer.key != id.key) { + continue; + } + + if (layer.api_version != Version::LATEST) { + if (layer.api_version != id.api_version) { + continue; + } + } + + return &this->available_layers[i]; + } + + return nullptr; +} + const Layer *LayerManager::Find(const std::string &layer_name, const Version &layer_version) const { - // Version::VERSION_NULL refer to latest version if (layer_version == Version::LATEST) { const std::vector &version = this->GatherVersions(layer_name); if (version.empty()) { @@ -422,7 +378,7 @@ const Layer *LayerManager::FindLastModified(const std::string &layer_name, const const Layer *result = nullptr; for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - if (this->available_layers[i].enabled == false) { + if (!this->available_layers[i].descriptor.enabled) { continue; } if (this->available_layers[i].key != layer_name) { @@ -431,8 +387,9 @@ const Layer *LayerManager::FindLastModified(const std::string &layer_name, const if (this->available_layers[i].api_version != version) { continue; } + if (result != nullptr) { - if (result->last_modified > this->available_layers[i].last_modified) { + if (result->descriptor.last_modified > this->available_layers[i].descriptor.last_modified) { continue; } } @@ -445,8 +402,10 @@ const Layer *LayerManager::FindLastModified(const std::string &layer_name, const const Layer *LayerManager::FindFromManifest(const Path &manifest_path, bool find_disabled_layers) const { for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - if (!find_disabled_layers && this->available_layers[i].enabled == false) { - continue; + if (!find_disabled_layers) { + if (!this->available_layers[i].descriptor.enabled) { + continue; + } } if (this->available_layers[i].manifest_path == manifest_path) { @@ -458,8 +417,10 @@ const Layer *LayerManager::FindFromManifest(const Path &manifest_path, bool find Layer *LayerManager::FindFromManifest(const Path &manifest_path, bool find_disabled_layers) { for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - if (!find_disabled_layers && this->available_layers[i].enabled == false) { - continue; + if (!find_disabled_layers) { + if (!this->available_layers[i].descriptor.enabled) { + continue; + } } if (this->available_layers[i].manifest_path == manifest_path) { @@ -469,170 +430,266 @@ Layer *LayerManager::FindFromManifest(const Path &manifest_path, bool find_disab return nullptr; } -// Find all installed layers on the system. -void LayerManager::LoadAllInstalledLayers(ConfiguratorMode configurator_mode) { - this->available_layers.clear(); +void LayerManager::ApplyLayerDescriptor() { + for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { + Layer &layer = this->available_layers[i]; - for (std::size_t group_index = 0, group_count = this->paths.size(); group_index < group_count; ++group_index) { - const LayersPaths layers_path = static_cast(group_index); + auto it = this->layer_init.find(layer.manifest_path); + if (it == this->layer_init.end()) { + continue; + } - const std::vector &paths_group = this->paths[group_index]; - for (std::size_t i = 0, n = paths_group.size(); i < n; ++i) { - this->LoadLayersFromPath(paths_group[i].path, paths_group[i].type, configurator_mode); - this->UpdatePathEnabled(paths_group[i], layers_path); + for (std::size_t j = 0, o = it->second.size(); j < o; ++j) { + const LayerDisplay &init = it->second[j]; + + if (!init.id.key.empty()) { + if (init.id.key != layer.key) { + continue; + } + } + + layer.descriptor.removed = init.descriptor.removed; } } } -void LayerManager::LoadLayersFromPath(const Path &layers_path, LayerType type, ConfiguratorMode configurator_mode) { - const std::vector &layers_paths = CollectFilePaths(layers_path); +// Find all installed layers on the system. +void LayerManager::LoadAllInstalledLayers(ConfiguratorMode configurator_mode) { + std::array, LAYERS_PATHS_COUNT> paths; - for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { - this->LoadLayer(layers_paths[i], type, configurator_mode); - } -} + // Search new layers + paths[LAYERS_PATHS_IMPLICIT_SYSTEM] = GetImplicitLayerPaths(); -LayerLoadStatus LayerManager::LoadLayer(const Path &layer_path, LayerType type, ConfiguratorMode configurator_mode) { - const std::string &last_modified = layer_path.LastModified(); + // LAYERS_PATHS_IMPLICIT_ENV_SET: VK_IMPLICIT_LAYER_PATH env variables + paths[LAYERS_PATHS_IMPLICIT_ENV_SET] = GetEnvVariablePaths("VK_IMPLICIT_LAYER_PATH", LAYER_TYPE_IMPLICIT); + + // LAYERS_PATHS_IMPLICIT_ENV_ADD: VK_ADD_IMPLICIT_LAYER_PATH env variables + paths[LAYERS_PATHS_IMPLICIT_ENV_ADD] = GetEnvVariablePaths("VK_ADD_IMPLICIT_LAYER_PATH", LAYER_TYPE_IMPLICIT); + + // LAYERS_PATHS_EXPLICIT_SYSTEM + paths[LAYERS_PATHS_EXPLICIT_SYSTEM] = GetExplicitLayerPaths(); - Layer *already_loaded_layer = this->FindFromManifest(layer_path, true); - if (already_loaded_layer != nullptr) { - // Already loaded - auto it = this->layers_found.find(layer_path); - if (it != layers_found.end()) { - if (last_modified == it->second.last_modified) { - return LAYER_LOAD_UNMODIFIED; + // LAYERS_PATHS_EXPLICIT_ENV_SET: VK_LAYER_PATH env variables + paths[LAYERS_PATHS_EXPLICIT_ENV_SET] = GetEnvVariablePaths("VK_LAYER_PATH", LAYER_TYPE_EXPLICIT); + + // LAYERS_PATHS_EXPLICIT_ENV_ADD: VK_ADD_LAYER_PATH env variables + paths[LAYERS_PATHS_EXPLICIT_ENV_ADD] = GetEnvVariablePaths("VK_ADD_LAYER_PATH", LAYER_TYPE_EXPLICIT); + + // LAYERS_PATHS_SDK + paths[LAYERS_PATHS_SDK].push_back(Path(Path::SDK_EXPLICIT_LAYERS)); + + // LAYERS_PATHS_GUI + std::vector added_paths = this->BuildLayerPaths(); + paths[LAYERS_PATHS_GUI].insert(paths[LAYERS_PATHS_GUI].begin(), added_paths.begin(), added_paths.end()); + + for (std::size_t group_index = 0, group_count = paths.size(); group_index < group_count; ++group_index) { + const LayersPaths layers_path = static_cast(group_index); + + const std::vector &paths_group = paths[group_index]; + for (std::size_t i = 0, n = paths_group.size(); i < n; ++i) { + const std::vector &layers_paths = ::CollectLayersPaths(paths_group[i]); + + for (std::size_t p = 0, o = layers_paths.size(); p < o; ++p) { + this->LoadLayers(layers_paths[p], ::GetLayerType(layers_path), configurator_mode); } } + } - // Modified to reload - LayerLoadStatus status = - already_loaded_layer->Load(layer_path, type, this->validate_manifests, this->layers_found, configurator_mode); - if (status == LAYER_LOAD_ADDED) { - it->second.last_modified = already_loaded_layer->last_modified; - return LAYER_LOAD_RELOADED; - } else { - it->second.disabled = IsDisabled(status); - return status; - } - } else { - Layer layer; - LayerLoadStatus status = layer.Load(layer_path, type, this->validate_manifests, this->layers_found, configurator_mode); - if (status == LAYER_LOAD_ADDED) { - this->available_layers.push_back(layer); - } + // this->ApplyLayerDescriptor(); +} - auto it = this->layers_found.find(layer_path); - if (it != layers_found.end()) { - it->second.disabled = IsDisabled(status); - it->second.validated = this->validate_manifests && !it->second.disabled; - it->second.last_modified = layer.last_modified; - } else { - LayerStatus found; - found.disabled = IsDisabled(status); - found.validated = this->validate_manifests && !found.disabled; - found.last_modified = layer.last_modified; - this->layers_found.insert(std::make_pair(layer.manifest_path, found)); +LayerValidated LayerManager::Validate(const Path &layer_path, QString json_text, ConfiguratorMode configurator_mode) const { + JsonValidator validator; + bool result = validator.Check(json_text); + + if (!result) { + switch (configurator_mode) { + default: { + } break; + case CONFIGURATOR_MODE_GUI: { + QMessageBox alert; + alert.setWindowTitle("Failed to load a layer manifest..."); + alert.setText(format("%s is not a valid layer file", layer_path.AbsolutePath().c_str()).c_str()); + alert.setInformativeText("Do you want to save the JSON schema validation log?"); + alert.setIcon(QMessageBox::Critical); + alert.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + alert.setDefaultButton(QMessageBox::Yes); + int result = alert.exec(); + if (result == QMessageBox::Yes) { + const QString &selected_path = QFileDialog::getSaveFileName( + nullptr, format("Export %s validation log", layer_path.AbsolutePath().c_str()).c_str(), + (AbsolutePath(Path::HOME) + "/" + layer_path.Basename() + "_log.txt").c_str(), "Log(*.txt)"); + QFile log_file(selected_path); + const bool result = log_file.open(QIODevice::WriteOnly | QIODevice::Text); + if (result) { + QDesktopServices::openUrl(QUrl::fromLocalFile(selected_path)); + log_file.write(validator.message.toStdString().c_str()); + log_file.close(); + } else { + QMessageBox alert; + alert.setWindowTitle("Failed to save layer manifest log..."); + alert.setText(format("Couldn't not open %s file...", selected_path.toStdString().c_str()).c_str()); + alert.setIcon(QMessageBox::Critical); + alert.exec(); + } + } + } break; + case CONFIGURATOR_MODE_CMD: { + fprintf(stderr, "vkconfig: [ERROR] Couldn't validate layer file: %s\n", layer_path.AbsolutePath().c_str()); + fprintf(stderr, "\n%s\n)", validator.message.toStdString().c_str()); + } break; } - - return status; } + + return result ? LAYER_VALIDATE_PASS : LAYER_VALIDATE_FAIL; } -bool LayerManager::AreLayersEnabled(const LayersPathInfo &path_info) const { - for (int paths_type_index = LAYERS_PATHS_FIRST; paths_type_index <= LAYERS_PATHS_LAST; ++paths_type_index) { - for (std::size_t i = 0, n = this->paths[paths_type_index].size(); i < n; ++i) { - if (this->paths[paths_type_index][i].path == path_info.path) { - if (this->paths[paths_type_index][i].enabled) { - return true; // If one path is enabled, then the layer remains enable - } +LayerDescriptor LayerManager::GetDescriptor(const Path &layer_path, const std::string &layer_key) const { + auto it = layer_init.find(layer_path); + if (it != layer_init.end()) { + const std::vector &data = it->second; + for (std::size_t i = 0, n = data.size(); i < n; ++i) { + const LayerDisplay &display = data[i]; + if (display.id.key == layer_key) { + return display.descriptor; } } } - return false; + return LayerDescriptor(); } -void LayerManager::AppendPath(const LayersPathInfo &info) { - LayersPathInfo *existing_info = FindPathInfo(this->paths, info.path.RelativePath()); - if (existing_info != nullptr) { - existing_info->enabled = info.enabled; - } else { - this->paths[LAYERS_PATHS_GUI].push_back(info); +LayerLoadStatus LayerManager::LoadLayers(const Path &layer_path, LayerType type, ConfiguratorMode configurator_mode) { + QFile file(layer_path.AbsolutePath().c_str()); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + assert(0); + return LAYER_LOAD_INVALID; } - std::sort(this->paths[LAYERS_PATHS_GUI].begin(), this->paths[LAYERS_PATHS_GUI].end()); -} + QString json_text = file.readAll(); + file.close(); -void LayerManager::RemovePath(const LayersPathInfo &path_info) { - const std::vector &layers_paths = CollectFilePaths(path_info.path); + // Convert the text to a JSON document & validate it. + // It does need to be a valid json formatted file. + QJsonParseError json_parse_error; + const QJsonDocument &json_document = QJsonDocument::fromJson(json_text.toUtf8(), &json_parse_error); + if (json_parse_error.error != QJsonParseError::NoError) { + return LAYER_LOAD_INVALID; + } - for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { - Layer *layer = this->FindFromManifest(layers_paths[i]); - if (layer == nullptr) { - continue; - } + // Make sure it's not empty + if (json_document.isNull() || json_document.isEmpty()) { + return LAYER_LOAD_INVALID; + } - layer->enabled = false; + Version file_format_version; + const QJsonObject &json_root_object = json_document.object(); + if (json_root_object.value("file_format_version") != QJsonValue::Undefined) { + file_format_version = Version(json_root_object.value("file_format_version").toString().toStdString().c_str()); } - for (int paths_type_index = LAYERS_PATHS_FIRST; paths_type_index <= LAYERS_PATHS_LAST; ++paths_type_index) { - std::vector new_path_list; - for (std::size_t i = 0, n = this->paths[paths_type_index].size(); i < n; ++i) { - if (path_info.path == this->paths[paths_type_index][i].path) { + LayerLoadStatus status = LAYER_LOAD_ADDED; + const std::string &last_modified = layer_path.LastModified(); + + if (json_root_object.value("layers") != QJsonValue::Undefined) { + const QJsonArray &json_layers_array = json_root_object.value("layers").toArray(); + + for (int i = 0, n = json_layers_array.size(); i < n; ++i) { + const QJsonObject &json_layer_object = json_layers_array[i].toObject(); + + std::string key = ReadStringValue(json_layer_object, "name"); + + if (key == "VK_LAYER_LUNARG_override" || !(key.rfind("VK_", 0) == 0)) { + status = LAYER_LOAD_IGNORED; continue; } - new_path_list.push_back(this->paths[paths_type_index][i]); - } - this->paths[paths_type_index] = new_path_list; - } -} + LayerDescriptor descriptor = this->GetDescriptor(layer_path, key); + + if (this->validate_manifests && (descriptor.last_modified != last_modified) || !descriptor.validated) { + descriptor.validated = this->Validate(layer_path, json_text, configurator_mode); + descriptor.last_modified = last_modified; + } -void LayerManager::UpdatePathEnabled(const LayersPathInfo &path_info, LayersPaths paths_type_index) { - for (std::size_t i = 0, n = this->paths[paths_type_index].size(); i < n; ++i) { - if (path_info.path == this->paths[paths_type_index][i].path) { - this->paths[paths_type_index][i].enabled = path_info.enabled; - break; + status = this->LoadLayer(json_layer_object, layer_path, type, file_format_version, descriptor); } - } + } else if (json_root_object.value("layer") != QJsonValue::Undefined) { + const QJsonObject &json_layer_object = json_root_object.value("layer").toObject(); - this->UpdateLayersEnabled(path_info); -} + std::string layer_key = ReadStringValue(json_layer_object, "name"); -void LayerManager::UpdateLayersEnabled(const LayersPathInfo &path_info) { - const bool are_enabled = this->AreLayersEnabled(path_info); + if (layer_key == "VK_LAYER_LUNARG_override" || !(layer_key.rfind("VK_", 0) == 0)) { + return LAYER_LOAD_IGNORED; + } - const std::vector &layers_paths = ::CollectFilePaths(path_info.path); + LayerDescriptor descriptor = this->GetDescriptor(layer_path, layer_key); - for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { - Layer *layer = this->FindFromManifest(layers_paths[i], true); - if (layer == nullptr) { - continue; + if (this->validate_manifests && + (descriptor.last_modified != last_modified || descriptor.validated == LAYER_VALIDATE_NONE)) { + descriptor.validated = this->Validate(layer_path, json_text, configurator_mode); + descriptor.last_modified = last_modified; } - layer->enabled = are_enabled; + status = this->LoadLayer(json_layer_object, layer_path, type, file_format_version, descriptor); + } else { + assert(0); } + + return status; } -std::vector LayerManager::CollectManifestPaths() const { - std::vector results; +LayerLoadStatus LayerManager::LoadLayer(const QJsonObject &json_layer_object, const Path &layer_path, LayerType type, + Version file_format_version, LayerDescriptor descriptor) { + Layer layer; + layer.type = type; + layer.manifest_path = layer_path; + layer.file_format_version = file_format_version; + layer.descriptor = descriptor; - for (int paths_type_index = LAYERS_PATHS_FIRST; paths_type_index <= LAYERS_PATHS_LAST; ++paths_type_index) { - for (std::size_t i = 0, n = this->paths[paths_type_index].size(); i < n; ++i) { - const std::vector &layers_paths = ::CollectFilePaths(this->paths[paths_type_index][i].path); - results.insert(results.end(), layers_paths.begin(), layers_paths.end()); + LayerLoadStatus status = layer.Load(json_layer_object); + if (status == LAYER_LOAD_INVALID || status == LAYER_LOAD_IGNORED) { + return status; + } + + Layer *duplicated_layer = this->Find(layer.GetId(), false); + if (duplicated_layer != nullptr) { + if (duplicated_layer->descriptor.removed) { + duplicated_layer->descriptor.removed = false; + duplicated_layer->descriptor.enabled = true; + } else if (duplicated_layer->descriptor.last_modified != layer.descriptor.last_modified) { + // Reload when the manifest was updated + LayerLoadStatus reloaded_status = duplicated_layer->Load(json_layer_object); + status = reloaded_status == LAYER_LOAD_ADDED ? LAYER_LOAD_RELOADED : reloaded_status; + } else { + status = LAYER_LOAD_UNMODIFIED; } + } else { + this->available_layers.push_back(layer); } - return results; + return status; +} + +void LayerManager::RemoveLayer(LayerId id) { + Layer *layer = this->Find(id, false); + assert(layer); + + layer->descriptor.enabled = false; + layer->descriptor.removed = true; +} + +void LayerManager::EnableLayer(LayerId id, bool enable) { + Layer *layer = this->Find(id, false); + assert(layer); + + layer->descriptor.enabled = enable; } std::vector LayerManager::GatherLayerNames() const { std::vector result; for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - if (this->available_layers[i].enabled == false) { + if (!this->available_layers[i].descriptor.enabled) { continue; } @@ -646,17 +703,104 @@ std::vector LayerManager::GatherLayerNames() const { return result; } -std::vector LayerManager::GatherLayers(const LayersPathInfo &path_info) const { - std::vector result; +bool operator<(const LayerDisplay &a, const LayerDisplay &b) { + if (a.id.key == b.id.key) { + return a.id.api_version < b.id.api_version; + } else { + return a.id.key < b.id.key; + } +} + +std::map> LayerManager::BuildLayerStoreList() const { + std::map> result; + + for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { + const Layer *layer = &this->available_layers[i]; + if (layer == nullptr) { + continue; + } + /* + if (layer->descriptor.removed) { + continue; + } + */ + LayerDisplay layer_display; + layer_display.id.manifest_path = layer->manifest_path; + layer_display.id.key = layer->key; + layer_display.id.api_version = layer->api_version; + layer_display.descriptor = layer->descriptor; + + auto it = result.find(layer->manifest_path); + if (it == result.end()) { + std::map entry; + entry.insert(std::make_pair(layer->key, layer_display)); + result.insert(std::make_pair(layer->manifest_path, entry)); + } else { + auto jt = it->second.find(layer->key); + if (jt == it->second.end()) { + it->second.insert(std::make_pair(layer->key, layer_display)); + } else { + assert(0); + } + } + } + + for (auto it = this->layer_init.begin(), end = this->layer_init.end(); it != end; ++it) { + auto jt = result.find(it->first); + if (jt == result.end()) { + const std::vector &display = it->second; + std::map entry; + + for (std::size_t i = 0, n = display.size(); i < n; ++i) { + entry.insert(std::make_pair(display[i].id.key, display[i])); + } + + result.insert(std::make_pair(it->first, entry)); + } + } + + return result; +} + +std::set LayerManager::BuildLayerDisplayList() const { + std::set result; for (std::size_t i = 0, n = this->available_layers.size(); i < n; ++i) { - const std::string &layer_path = path_info.path.AbsolutePath(); - const std::string ¤t_layer_path = this->available_layers[i].manifest_path.AbsolutePath(); - if (current_layer_path.find(layer_path) == std::string::npos) { + const Layer *layer = &this->available_layers[i]; + if (layer == nullptr) { continue; } + if (layer->descriptor.removed) { + continue; + } + + LayerDisplay layer_display; + layer_display.id.manifest_path = layer->manifest_path; + layer_display.id.key = layer->key; + layer_display.id.api_version = layer->api_version; + layer_display.descriptor = layer->descriptor; + result.insert(layer_display); + } + + return result; +} - result.push_back(&this->available_layers[i]); +std::vector LayerManager::BuildLayerPaths() const { + std::vector result; + + for (auto it = this->layer_init.begin(); it != this->layer_init.end(); ++it) { + bool keep = false; + + for (auto jt = it->second.begin(); jt != it->second.end(); ++jt) { + if (!jt->descriptor.removed) { + keep = true; + break; + } + } + + if (keep) { + result.push_back(it->first); + } } return result; diff --git a/vkconfig_core/layer_manager.h b/vkconfig_core/layer_manager.h index 888c608c15..22bf976237 100644 --- a/vkconfig_core/layer_manager.h +++ b/vkconfig_core/layer_manager.h @@ -28,6 +28,14 @@ #include #include #include +#include + +struct LayerDisplay { + LayerId id; + LayerDescriptor descriptor; +}; + +bool operator<(const LayerDisplay& a, const LayerDisplay& b); class LayerManager : public Serialize { public: @@ -41,34 +49,47 @@ class LayerManager : public Serialize { bool Empty() const; std::size_t Size() const; - std::vector GatherManifests(const std::string& layer_name) const; - std::vector GatherVersions(const std::string& layer_name) const; - const Layer* Find(const std::string& layer_name, const Version& version = Version::LATEST) const; - const Layer* FindLastModified(const std::string& layer_name, const Version& version) const; + std::vector GatherManifests(const std::string& layer_key) const; + std::vector GatherVersions(const std::string& layer_key) const; + + const Layer* Find(LayerId id, bool enable_only = true) const; + Layer* Find(LayerId id, bool enable_only = true); + + const Layer* Find(const std::string& layer_key, const Version& version = Version::LATEST) const; + const Layer* FindLastModified(const std::string& layer_key, const Version& version) const; const Layer* FindFromManifest(const Path& manifest_path, bool find_disabled_layers = false) const; Layer* FindFromManifest(const Path& manifest_path, bool find_disabled_layers = false); void LoadAllInstalledLayers(ConfiguratorMode configurator_mode); - void LoadLayersFromPath(const Path& layers_path, LayerType type, ConfiguratorMode configurator_mode); - LayerLoadStatus LoadLayer(const Path& layer_path, LayerType type, ConfiguratorMode configurator_mode); + LayerLoadStatus LoadLayers(const Path& layer_path, LayerType type, ConfiguratorMode configurator_mode); - bool AreLayersEnabled(const LayersPathInfo& path_info) const; - void AppendPath(const LayersPathInfo& path_info); - void RemovePath(const LayersPathInfo& path_info); - void UpdatePathEnabled(const LayersPathInfo& path_info, LayersPaths layers_paths); - std::vector CollectManifestPaths() const; + void RemoveLayer(LayerId id); + void EnableLayer(LayerId id, bool enable); + + std::set BuildLayerDisplayList() const; + std::map> BuildLayerStoreList() const; + std::vector BuildLayerPaths() const; + LayerDescriptor GetDescriptor(const Path& layer_path, const std::string& layer_key) const; std::vector GatherLayerNames() const; - std::vector GatherLayers(const LayersPathInfo& path_info) const; + + std::set gui_added_layers_paths; std::vector available_layers; - std::array, LAYERS_PATHS_COUNT> paths; - Path last_layers_path = Path(Path::HOME); + Path last_layers_dir = Path(Path::HOME); bool validate_manifests = false; + void AppendInit(const Path& path, const std::vector& layers) { + this->layer_init.insert(std::make_pair(path, layers)); + } + private: - void InitSystemPaths(); - void UpdateLayersEnabled(const LayersPathInfo& path_info); + LayerValidated Validate(const Path& layer_path, QString json_text, ConfiguratorMode configurator_mode) const; + + LayerLoadStatus LoadLayer(const QJsonObject& json_layer_object, const Path& layer_path, LayerType type, + Version file_format_version, LayerDescriptor descriptor); + + void ApplyLayerDescriptor(); - std::map layers_found; + std::map> layer_init; }; diff --git a/vkconfig_core/layers/layers_schema.json b/vkconfig_core/layers/layers_schema.json index bffcc659df..d38972a772 100644 --- a/vkconfig_core/layers/layers_schema.json +++ b/vkconfig_core/layers/layers_schema.json @@ -5,8 +5,7 @@ "description": "JSON Schema for validating the Vulkan Layer Manifest Files", "additionalProperties": true, "required": [ - "file_format_version", - "layer" + "file_format_version" ], "definitions": { "version": { @@ -1717,6 +1716,12 @@ "file_format_version": { "$ref": "#/definitions/version" }, + "ICD": { + "type": "object", + "additionalProperties": true, + "properties": { + } + }, "layer": { "type": "object", "additionalProperties": true, @@ -1812,6 +1817,102 @@ } } } + }, + "layers": { + "type": "array", + "additionalProperties": true, + "required": [ + "name", + "api_version", + "implementation_version", + "description" + ], + "properties": { + "name": { + "description": "The string used to uniquely identify this layer to applications.", + "type": "string", + "pattern": "^VK_LAYER_[A-Z0-9]+_[A-Za-z0-9_]+" + }, + "shortcut": { + "description": "Short name used to reference a layer variable. Eg on Android: debug.vvl.validate_core instead of debug.vulkan.khronos_validation.validate_core", + "type": "string" + }, + "library_path": { + "description": "The library_path specifies either a filename, a relative pathname, or a full pathname to a layer shared library file. If library_path specifies a relative pathname, it is relative to the path of the JSON manifest file (e.g. for cases when an application provides a layer that is in the same folder hierarchy as the rest of the application files). If library_path specifies a filename, the library must live in the system's shared object search path. There are no rules about the name of the layer shared library files other than it should end with the appropriate suffix (.DLL on Windows, .so on Linux, and .dylib on macOS). This field must not be present if component_layers is defined.", + "type": "string" + }, + "api_version": { + "description": "The major.minor.patch version number of the Vulkan API that the shared library file for the library was built against.", + "$ref": "#/definitions/version" + }, + "implementation_version": { + "description": "The version of the layer implemented. If the layer itself has any major changes, this number should change so the loader and/or application can identify it properly.", + "type": "string" + }, + "description": { + "description": "A high-level description of the layer and its intended use.", + "type": "string" + }, + "introduction": { + "description": "A detailed description of the layer and its intended use. Introduced with version 1.2.0.", + "type": "string" + }, + "url": { + "description": "A link to the layer home page. Introduced with version 1.2.0.", + "type": "string" + }, + "platforms": { + "description": "The list of platforms supported by the layer. Introduced with version 1.2.0.", + "$ref": "#/definitions/platforms" + }, + "status": { + "description": "The development status of the layer. When the node is missing, the value is gathered from a parent node or set to STABLE when no parent node has defined the node. Introduced with version 1.2.0.", + "$ref": "#/definitions/status" + }, + "features": { + "type": "object", + "additionalProperties": true, + "properties": { + "settings": { + "$ref": "#/definitions/settings_meta" + }, + "presets": { + "type": "array", + "items": { + "required": [ + "label", + "description", + "settings" + ], + "additionalProperties": true, + "properties": { + "label": { + "description": "The label used to identify the preset to the user eyes.", + "type": "string" + }, + "description": { + "description": "The description of the preset to example it's purpose.", + "type": "string" + }, + "url": { + "description": "A url for more documentation about the preset.", + "type": "string" + }, + "platforms": { + "$ref": "#/definitions/platforms" + }, + "status": { + "$ref": "#/definitions/status" + }, + "settings": { + "$ref": "#/definitions/settings_data" + } + } + } + } + } + } + } } } } diff --git a/vkconfig_core/message.h b/vkconfig_core/message.h index 4197c75182..b1aaa7d3b2 100644 --- a/vkconfig_core/message.h +++ b/vkconfig_core/message.h @@ -20,6 +20,7 @@ #pragma once +#include "type_platform.h" #include "type_severity.h" #include "type_button.h" #include "type_action.h" @@ -53,6 +54,7 @@ struct Message { std::string key; std::string title; int version = 1; + int platform_flags = PLATFORM_DESKTOP_BIT; std::string description; std::string informative; SeverityType severity; diff --git a/vkconfig_core/parameter.cpp b/vkconfig_core/parameter.cpp index 07ad2db757..c4c04746d8 100644 --- a/vkconfig_core/parameter.cpp +++ b/vkconfig_core/parameter.cpp @@ -40,6 +40,10 @@ static bool IsValidationLayer(const std::string& key) { return key == "VK_LAYER_ static bool IsProfilesLayer(const std::string& key) { return key == "VK_LAYER_KHRONOS_profiles"; } +bool Parameter::IsAutoImplicitLayer() const { + return this->type == LAYER_TYPE_IMPLICIT && this->control == LAYER_CONTROL_AUTO && !this->was_explicitly_rank; +} + bool Parameter::ApplyPresetSettings(const LayerPreset& preset) { for (std::size_t preset_index = 0, preset_count = preset.settings.size(); preset_index < preset_count; ++preset_index) { const SettingData* preset_setting = preset.settings[preset_index]; diff --git a/vkconfig_core/parameter.h b/vkconfig_core/parameter.h index 9cc0717952..c4ad0850cc 100644 --- a/vkconfig_core/parameter.h +++ b/vkconfig_core/parameter.h @@ -27,6 +27,8 @@ #include +static const char* implicit_layers = "implicit_layers"; + enum ParameterRank { PARAMETER_RANK_MISSING_LAYER = 0, PARAMETER_RANK_IMPLICIT_LAYER, @@ -45,6 +47,8 @@ struct Parameter { Parameter(const std::string& key, const LayerControl control) : key(key), control(control) {} + bool IsAutoImplicitLayer() const; + bool ApplyPresetSettings(const LayerPreset& preset); bool GetExpanded(const std::string& setting_key, const std::string& flag = "") const; void SetExpanded(const std::string& setting_key, const std::string& flag, bool expanded); @@ -59,6 +63,7 @@ struct Parameter { Version api_version = Version::LATEST; Path manifest; bool override_settings = true; + bool was_explicitly_rank = false; }; ParameterRank GetParameterOrdering(const LayerManager& layers, const Parameter& parameter); diff --git a/vkconfig_core/path.cpp b/vkconfig_core/path.cpp index 6ec2ab6580..dc1e0f75de 100644 --- a/vkconfig_core/path.cpp +++ b/vkconfig_core/path.cpp @@ -189,6 +189,28 @@ bool Path::Create(bool as_file) const { return true; } +bool Path::Backup() const { + if (this->IsFile()) { + QFile file(this->AbsolutePath().c_str()); + + QDateTime date_time = QDateTime::currentDateTime(); + std::string date = date_time.toString(Qt::ISODate).toStdString(); + std::replace(date.begin(), date.end(), ':', '-'); + + std::string path = this->AbsolutePath(); + std::string extension = path.substr(path.find_last_of(".")); + std::string prefix = path.substr(0, path.find_last_of(".")); + //"vkconfig-" + date_time.toString(Qt::ISODate).toStdString() + ".json"; + + std::string dest = prefix + "-" + date + extension; + + bool result = file.copy(dest.c_str()); + return result; + } else { + return false; + } +} + bool Path::Remove() const { if (!this->Exists()) { return false; @@ -546,6 +568,16 @@ std::string AbsolutePath(Path::Builtin path, bool native_separator) { return Pat std::string RelativePath(Path::Builtin path) { return Path(path).RelativePath(); } +bool Found(const std::vector& data, const Path& path) { + for (std::size_t i = 0, n = data.size(); i < n; ++i) { + if (data[i] == path) { + return true; + } + } + + return false; +} + std::vector CollectFilePaths(const Path& path, const char* filter) { std::vector result; @@ -565,6 +597,56 @@ std::vector CollectFilePaths(const Path& path, const char* filter) { return result; } +std::vector CollectLayersPaths(const Path& directory) { + std::vector paths = CollectFilePaths(directory, "*json"); + + std::vector results; + for (std::size_t i = 0, n = paths.size(); i < n; ++i) { + const QJsonDocument& document = ::ParseJsonFile(paths[i].AbsolutePath().c_str()); + if (document.isNull() || document.isEmpty()) { + continue; + } + + const QJsonObject& json_root_object = document.object(); + if (json_root_object.value("file_format_version") == QJsonValue::Undefined) { + continue; // Not a layer JSON file + } + + if (json_root_object.value("layer") == QJsonValue::Undefined && json_root_object.value("layers") == QJsonValue::Undefined) { + continue; + } + + results.push_back(paths[i]); + } + + return results; +} + +std::vector CollectDriversPaths(const Path& directory) { + std::vector paths = CollectFilePaths(directory, "*json"); + + std::vector results; + for (std::size_t i = 0, n = paths.size(); i < n; ++i) { + const QJsonDocument& document = ::ParseJsonFile(paths[i].AbsolutePath().c_str()); + if (document.isNull() || document.isEmpty()) { + continue; + } + + const QJsonObject& json_root_object = document.object(); + if (json_root_object.value("file_format_version") == QJsonValue::Undefined) { + continue; // Not a driver JSON file + } + + if (json_root_object.value("ICD") == QJsonValue::Undefined) { + continue; + } + + results.push_back(paths[i]); + } + + return results; +} + static std::vector LoadProfiles(const QJsonDocument& doc) { assert(!doc.isNull() && !doc.isEmpty()); diff --git a/vkconfig_core/path.h b/vkconfig_core/path.h index 3342628105..51b5ffd78d 100644 --- a/vkconfig_core/path.h +++ b/vkconfig_core/path.h @@ -61,6 +61,7 @@ class Path { void Clear(); bool Exists() const; bool Create(bool as_file = false) const; + bool Backup() const; bool Remove() const; std::string Filename() const; std::string Basename() const; @@ -80,6 +81,8 @@ class Path { friend bool operator!=(const Path& a, const Path& b); }; +bool Found(const std::vector& data, const Path& path); + std::string AbsolutePath(Path::Builtin path, bool native_separator = true); std::string RelativePath(Path::Builtin path); @@ -97,6 +100,10 @@ void SetDownloadPath(const std::string& path); std::vector CollectFilePaths(const Path& directory, const char* filter = "*json"); +std::vector CollectLayersPaths(const Path& directory); + +std::vector CollectDriversPaths(const Path& directory); + std::vector CollectProfileNamesFromFile(const Path& profile_path); std::vector CollectProfileNamesFromDir(const Path& profile_path); diff --git a/vkconfig_core/registry.cpp b/vkconfig_core/registry.cpp index b4dc2ec65d..444672860c 100644 --- a/vkconfig_core/registry.cpp +++ b/vkconfig_core/registry.cpp @@ -82,7 +82,7 @@ void RemoveRegistryEntriesForLayers() { } /// Look for device specific layers -static void LoadDeviceRegistry(DEVINST id, const QString &entry, std::vector &layers_paths) { +static void LoadDeviceRegistry(DEVINST id, const QString &entry, std::vector &layers_paths) { HKEY key; if (CM_Open_DevNode_Key(id, KEY_QUERY_VALUE, 0, RegDisposition_OpenExisting, &key, CM_REGISTRY_SOFTWARE) != CR_SUCCESS) return; @@ -102,11 +102,7 @@ static void LoadDeviceRegistry(DEVINST id, const QString &entry, std::vector LoadRegistrySystemLayers(const char *input_path) { - std::vector layers_paths; +std::vector LoadRegistrySystemLayers(const char *input_path) { + std::vector layers_paths; QString path(input_path); @@ -202,23 +198,25 @@ std::vector LoadRegistrySystemLayers(const char *input_path) { return layers_paths; } -std::vector LoadRegistrySoftwareLayers(const char *path, LayerType type) { - std::vector result; +std::vector LoadRegistrySoftwareLayers(const char *path, LayerType type) { + std::vector result; QSettings settings(path, QSettings::NativeFormat); const QStringList &files = settings.allKeys(); for (int i = 0, n = files.size(); i < n; ++i) { Path path(files[i].toStdString()); - LayersPathInfo info; - info.type = type; - info.path = path.IsFile() ? path.AbsoluteDir() : path.AbsolutePath(); + Path manifest_path = path.IsFile() ? path.AbsoluteDir() : path.AbsolutePath(); - if (::Found(result, info.path)) { + if (!manifest_path.Exists()) { continue; } - result.push_back(info); + if (::Found(result, manifest_path)) { + continue; + } + + result.push_back(manifest_path); } return result; diff --git a/vkconfig_core/registry.h b/vkconfig_core/registry.h index 2fd52d9740..8a1bdc5810 100644 --- a/vkconfig_core/registry.h +++ b/vkconfig_core/registry.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,8 +33,8 @@ void AppendRegistryEntriesForLayers(QString override_file, QString settings_file void RemoveRegistryEntriesForLayers(); -std::vector LoadRegistrySystemLayers(const char* path); +std::vector LoadRegistrySystemLayers(const char* path); -std::vector LoadRegistrySoftwareLayers(const char* path, LayerType type); +std::vector LoadRegistrySoftwareLayers(const char* path, LayerType type); #endif // VKC_ENV == VKC_ENV_WIN32 diff --git a/vkconfig_core/setting_float.h b/vkconfig_core/setting_float.h index 28121c9709..8a98d2bd4f 100644 --- a/vkconfig_core/setting_float.h +++ b/vkconfig_core/setting_float.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_frames.cpp b/vkconfig_core/setting_frames.cpp index 2d8cbd53ae..fa85c87854 100644 --- a/vkconfig_core/setting_frames.cpp +++ b/vkconfig_core/setting_frames.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_frames.h b/vkconfig_core/setting_frames.h index 78dda22fdf..4c6bc2ed02 100644 --- a/vkconfig_core/setting_frames.h +++ b/vkconfig_core/setting_frames.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_group.cpp b/vkconfig_core/setting_group.cpp index cd2f96aa41..af312d29e3 100644 --- a/vkconfig_core/setting_group.cpp +++ b/vkconfig_core/setting_group.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_group.h b/vkconfig_core/setting_group.h index 2282189418..bf23d8b461 100644 --- a/vkconfig_core/setting_group.h +++ b/vkconfig_core/setting_group.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_int.cpp b/vkconfig_core/setting_int.cpp index d0ffae06fd..8ba1dd75fb 100644 --- a/vkconfig_core/setting_int.cpp +++ b/vkconfig_core/setting_int.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_int.h b/vkconfig_core/setting_int.h index f504baab28..e1f1b7f798 100644 --- a/vkconfig_core/setting_int.h +++ b/vkconfig_core/setting_int.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/setting_list.h b/vkconfig_core/setting_list.h index 7d563229ca..564c558d3d 100644 --- a/vkconfig_core/setting_list.h +++ b/vkconfig_core/setting_list.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.bat b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.bat index 70c489ce94..90c1622d86 100644 --- a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.bat +++ b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.bat @@ -13,7 +13,11 @@ :: See the License for the specific language governing permissions and :: limitations under the License. :: -:: This code was generated by Vulkan Configurator 3.4.3 +:: This code was generated by Vulkan Configurator 3.5.1 + +:: Loader Settings: +:: Vulkan Layers enabled and ordered: +set VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_reference_1_2_1 :: reference layer diff --git a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.sh b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.sh index 31f1e2eb9e..ff164edd5a 100644 --- a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.sh +++ b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.sh @@ -13,7 +13,11 @@ #! See the License for the specific language governing permissions and #! limitations under the License. #! -#! This code was generated by Vulkan Configurator 3.4.3 +#! This code was generated by Vulkan Configurator 3.5.1 + +#! Loader Settings: +#! Vulkan Layers enabled and ordered: +export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_reference_1_2_1 #! reference layer diff --git a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.txt b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.txt index 1a0bc53b63..54dedcae41 100644 --- a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.txt +++ b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.txt @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# This code was generated by Vulkan Configurator 3.4.3 +# This code was generated by Vulkan Configurator 3.5.1 # reference layer # ========================================== diff --git a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_h_code b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_h_code index 9a484c8a57..ce26e07a8c 100644 --- a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_h_code +++ b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_h_code @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This code was generated by Vulkan Configurator 3.4.3 + * This code was generated by Vulkan Configurator 3.5.1 */ #pragma once @@ -300,6 +300,9 @@ private: // `LayerSettings` allows initializing layer settings from Vulkan application code. struct LayerSettings { + std::vector layer_list { + "VK_LAYER_LUNARG_reference_1_2_1", + }; Reference121SettingData reference_1_2_1; // Use for VkLayerSettingsCreateInfoEXT `settingCount` and `pSettings` argument @@ -311,7 +314,15 @@ struct LayerSettings { // const VkLayerSettingEXT* pSettings; // } VkLayerSettingsCreateInfoEXT; - std::vector info() { + std::vector layers() { + std::vector results; + for (std::size_t i = 0, n = layer_list.size(); i < n; ++i) { + results.push_back(layer_list[i].c_str()); + }; + return results; + }; + + std::vector settings() { this->reference_1_2_1.init(); std::vector init{ diff --git a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_hpp_code b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_hpp_code index fe9ef76574..7fa5d0fb50 100644 --- a/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_hpp_code +++ b/vkconfig_core/test/generated/VK_LAYER_LUNARG_reference_1_2_1.vulkan_hpp_code @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This code was generated by Vulkan Configurator 3.4.3 + * This code was generated by Vulkan Configurator 3.5.1 */ #pragma once @@ -300,6 +300,9 @@ private: // `LayerSettings` allows initializing layer settings from Vulkan application code. struct LayerSettings { + std::vector layer_list { + "VK_LAYER_LUNARG_reference_1_2_1", + }; Reference121SettingData reference_1_2_1; // Use for VkLayerSettingsCreateInfoEXT `settingCount` and `pSettings` argument @@ -311,7 +314,15 @@ struct LayerSettings { // const VkLayerSettingEXT* pSettings; // } VkLayerSettingsCreateInfoEXT; - std::vector info() { + std::vector layers() { + std::vector results; + for (std::size_t i = 0, n = layer_list.size(); i < n; ++i) { + results.push_back(layer_list[i].c_str()); + }; + return results; + }; + + std::vector settings() { this->reference_1_2_1.init(); std::vector init{ diff --git a/vkconfig_core/test/generated/vk_layer_settings.bat b/vkconfig_core/test/generated/vk_layer_settings.bat index 70c489ce94..90c1622d86 100644 --- a/vkconfig_core/test/generated/vk_layer_settings.bat +++ b/vkconfig_core/test/generated/vk_layer_settings.bat @@ -13,7 +13,11 @@ :: See the License for the specific language governing permissions and :: limitations under the License. :: -:: This code was generated by Vulkan Configurator 3.4.3 +:: This code was generated by Vulkan Configurator 3.5.1 + +:: Loader Settings: +:: Vulkan Layers enabled and ordered: +set VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_reference_1_2_1 :: reference layer diff --git a/vkconfig_core/test/generated/vk_layer_settings.sh b/vkconfig_core/test/generated/vk_layer_settings.sh index 31f1e2eb9e..ff164edd5a 100644 --- a/vkconfig_core/test/generated/vk_layer_settings.sh +++ b/vkconfig_core/test/generated/vk_layer_settings.sh @@ -13,7 +13,11 @@ #! See the License for the specific language governing permissions and #! limitations under the License. #! -#! This code was generated by Vulkan Configurator 3.4.3 +#! This code was generated by Vulkan Configurator 3.5.1 + +#! Loader Settings: +#! Vulkan Layers enabled and ordered: +export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_reference_1_2_1 #! reference layer diff --git a/vkconfig_core/test/generated/vk_layer_settings.txt b/vkconfig_core/test/generated/vk_layer_settings.txt index 1a0bc53b63..54dedcae41 100644 --- a/vkconfig_core/test/generated/vk_layer_settings.txt +++ b/vkconfig_core/test/generated/vk_layer_settings.txt @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# This code was generated by Vulkan Configurator 3.4.3 +# This code was generated by Vulkan Configurator 3.5.1 # reference layer # ========================================== diff --git a/vkconfig_core/test/generated/vulkan_hpp_layer_settings.code b/vkconfig_core/test/generated/vulkan_hpp_layer_settings.code index fe9ef76574..7fa5d0fb50 100644 --- a/vkconfig_core/test/generated/vulkan_hpp_layer_settings.code +++ b/vkconfig_core/test/generated/vulkan_hpp_layer_settings.code @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This code was generated by Vulkan Configurator 3.4.3 + * This code was generated by Vulkan Configurator 3.5.1 */ #pragma once @@ -300,6 +300,9 @@ private: // `LayerSettings` allows initializing layer settings from Vulkan application code. struct LayerSettings { + std::vector layer_list { + "VK_LAYER_LUNARG_reference_1_2_1", + }; Reference121SettingData reference_1_2_1; // Use for VkLayerSettingsCreateInfoEXT `settingCount` and `pSettings` argument @@ -311,7 +314,15 @@ struct LayerSettings { // const VkLayerSettingEXT* pSettings; // } VkLayerSettingsCreateInfoEXT; - std::vector info() { + std::vector layers() { + std::vector results; + for (std::size_t i = 0, n = layer_list.size(); i < n; ++i) { + results.push_back(layer_list[i].c_str()); + }; + return results; + }; + + std::vector settings() { this->reference_1_2_1.init(); std::vector init{ diff --git a/vkconfig_core/test/generated/vulkan_layer_settings.code b/vkconfig_core/test/generated/vulkan_layer_settings.code index 9a484c8a57..ce26e07a8c 100644 --- a/vkconfig_core/test/generated/vulkan_layer_settings.code +++ b/vkconfig_core/test/generated/vulkan_layer_settings.code @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This code was generated by Vulkan Configurator 3.4.3 + * This code was generated by Vulkan Configurator 3.5.1 */ #pragma once @@ -300,6 +300,9 @@ private: // `LayerSettings` allows initializing layer settings from Vulkan application code. struct LayerSettings { + std::vector layer_list { + "VK_LAYER_LUNARG_reference_1_2_1", + }; Reference121SettingData reference_1_2_1; // Use for VkLayerSettingsCreateInfoEXT `settingCount` and `pSettings` argument @@ -311,7 +314,15 @@ struct LayerSettings { // const VkLayerSettingEXT* pSettings; // } VkLayerSettingsCreateInfoEXT; - std::vector info() { + std::vector layers() { + std::vector results; + for (std::size_t i = 0, n = layer_list.size(); i < n; ++i) { + results.push_back(layer_list[i].c_str()); + }; + return results; + }; + + std::vector settings() { this->reference_1_2_1.init(); std::vector init{ diff --git a/vkconfig_core/test/resources.qrc b/vkconfig_core/test/resources.qrc index 2d9d021070..230c27cf83 100644 --- a/vkconfig_core/test/resources.qrc +++ b/vkconfig_core/test/resources.qrc @@ -63,12 +63,13 @@ ../configurations/API dump.json + ../configurations/API dump with Validation.json ../configurations/Crash Diagnostic.json ../configurations/Disable All Vulkan Layers.json + ../configurations/Discard Ordering and Enabling Layers.json ../configurations/Frame Capture.json ../configurations/Portability.json ../configurations/Validation.json - ../configurations/Validation with API Dump Log.json diff --git a/vkconfig_core/test/test_command_line.cpp b/vkconfig_core/test/test_command_line.cpp index 9757d3035a..10511b5544 100644 --- a/vkconfig_core/test/test_command_line.cpp +++ b/vkconfig_core/test/test_command_line.cpp @@ -876,6 +876,31 @@ TEST(test_command_line, usage_mode_settings_html_default_implicit_and_output) { EXPECT_EQ(HELP_DEFAULT, command_line.help); } +TEST(test_command_line, usage_mode_settings_html_default_implicit_and_output_whitespace) { + static char* argv[] = {(char*)"vkconfig", (char*)"settings", // settings + (char*)"--generate", (char*)"html", // generate + (char*)"--output", (char*)"\"./my directory/my settings.html\""}; + int argc = static_cast(std::size(argv)); + + CommandLine command_line(argc, argv); + + EXPECT_EQ(COMMAND_SETTINGS, command_line.command); + EXPECT_EQ(COMMAND_RESET_SOFT, command_line.command_reset_arg); + EXPECT_EQ(COMMAND_LAYERS_NONE, command_line.command_layers_arg); + EXPECT_EQ(COMMAND_LOADER_NONE, command_line.command_loader_arg); + EXPECT_EQ(COMMAND_DOC_NONE, command_line.command_doc_arg); + EXPECT_EQ(GENERATE_SETTINGS_HTML, command_line.generate_settings_mode); + EXPECT_TRUE(command_line.selected_layers_name.empty()); + EXPECT_STREQ("default", command_line.selected_configuration_name.c_str()); + EXPECT_TRUE(command_line.GetInputPath().Empty()); + EXPECT_STREQ("\"./my directory/my settings.html\"", + ConvertStandardSeparators(command_line.GetOutputPath().RelativePath()).c_str()); + EXPECT_EQ(false, command_line.dry_run); + EXPECT_EQ(ERROR_NONE, command_line.error); + EXPECT_TRUE(command_line.error_args.empty()); + EXPECT_EQ(HELP_DEFAULT, command_line.help); +} + TEST(test_command_line, usage_mode_settings_html_default_explicit_and_output) { static char* argv[] = {(char*)"vkconfig", (char*)"settings", // settings (char*)"--generate", (char*)"html", // generate diff --git a/vkconfig_core/test/test_configuration.cpp b/vkconfig_core/test/test_configuration.cpp index 8008de56f0..af9bc81187 100644 --- a/vkconfig_core/test/test_configuration.cpp +++ b/vkconfig_core/test/test_configuration.cpp @@ -27,6 +27,14 @@ #include +static void InitLayer(LayerManager& layer_manager) { + const std::vector& layers_paths = ::CollectFilePaths(":/layers"); + + for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { + layer_manager.LoadLayers(layers_paths[i], LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + } +} + static bool operator==(const Configuration& a, const Configuration& b) { if (a.key != b.key) return false; @@ -194,7 +202,7 @@ TEST(test_configuration, make_duplicate_tagged_name_mix) { TEST(test_configuration, create) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); @@ -214,7 +222,7 @@ TEST(test_configuration, create) { TEST(test_configuration, create_disabled) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::CreateDisabled(layer_manager); @@ -234,7 +242,7 @@ TEST(test_configuration, create_disabled) { TEST(test_configuration, SwitchLayerVersion) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); for (std::size_t i = 0, n = configuration.parameters.size(); i < n; ++i) { @@ -261,7 +269,7 @@ TEST(test_configuration, SwitchLayerVersion) { TEST(test_configuration, gather_parameters_exist) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration; configuration.key = "New Configuration"; @@ -294,7 +302,7 @@ TEST(test_configuration, gather_parameters_exist) { TEST(test_configuration, gather_parameters_repeat) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration; configuration.key = "New Configuration"; @@ -324,11 +332,11 @@ TEST(test_configuration, gather_parameters_repeat) { TEST(test_configuration, gather_parameters_missing) { LayerManager layer_manager; + ::InitLayer(layer_manager); Configuration configuration; configuration.key = "New Configuration"; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); configuration.GatherParameters(layer_manager); layer_manager.Clear(); @@ -361,11 +369,11 @@ TEST(test_configuration, gather_parameters_missing) { TEST(test_configuration, HasMissingLayer_UnsupportPlatform) { LayerManager layer_manager; + ::InitLayer(layer_manager); Configuration configuration; configuration.key = "New Configuration"; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); configuration.GatherParameters(layer_manager); layer_manager.Clear(); @@ -381,11 +389,11 @@ TEST(test_configuration, HasMissingLayer_UnsupportPlatform) { TEST(test_configuration, HasMissingLayer_Off) { LayerManager layer_manager; + ::InitLayer(layer_manager); Configuration configuration; configuration.key = "New Configuration"; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); configuration.GatherParameters(layer_manager); layer_manager.Clear(); @@ -401,11 +409,11 @@ TEST(test_configuration, HasMissingLayer_Off) { TEST(test_configuration, gather_parameters_missing_but_unsupported_platform) { LayerManager layer_manager; + ::InitLayer(layer_manager); Configuration configuration; configuration.key = "New Configuration"; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); configuration.GatherParameters(layer_manager); layer_manager.Clear(); @@ -421,7 +429,7 @@ TEST(test_configuration, gather_parameters_missing_but_unsupported_platform) { TEST(test_configuration, Reorder_full) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); @@ -457,7 +465,7 @@ TEST(test_configuration, Reorder_full) { TEST(test_configuration, Reorder_partial) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); @@ -485,7 +493,7 @@ TEST(test_configuration, Reorder_partial) { TEST(test_configuration, Reorder_missing) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); @@ -515,7 +523,7 @@ TEST(test_configuration, Reorder_missing) { TEST(test_configuration, Reorder_empty) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); std::size_t size = configuration.parameters.size(); @@ -527,19 +535,19 @@ TEST(test_configuration, Reorder_empty) { } TEST(test_configuration, IsDefault_True) { - LayerManager layers; - layers.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + LayerManager layer_manager; + ::InitLayer(layer_manager); Configuration configuration; - const bool loaded = configuration.Load(":/configurations/Validation.json", layers); + const bool loaded = configuration.Load(":/configurations/Validation.json", layer_manager); EXPECT_TRUE(loaded); EXPECT_TRUE(configuration.IsDefault()); } TEST(test_configuration, IsDefault_False) { - LayerManager layers; - layers.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + LayerManager layer_manager; + ::InitLayer(layer_manager); - Configuration configuration = Configuration::Create(layers, "New Configuration"); + Configuration configuration = Configuration::Create(layer_manager, "New Configuration"); EXPECT_FALSE(configuration.IsDefault()); } diff --git a/vkconfig_core/test/test_configuration_built_in.cpp b/vkconfig_core/test/test_configuration_built_in.cpp index 94fcc8ab05..182eb4b8a4 100644 --- a/vkconfig_core/test/test_configuration_built_in.cpp +++ b/vkconfig_core/test/test_configuration_built_in.cpp @@ -55,11 +55,17 @@ static bool operator==(const Parameter& a, const Parameter& b) { static bool operator!=(const std::vector& a, const std::vector& b) { return !(a == b); } -std::map Dummy() { return std::map(); } +static void InitLayer(LayerManager& layer_manager) { + const std::vector& layers_paths = ::CollectFilePaths(":/sdk"); + + for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { + layer_manager.LoadLayers(layers_paths[i], LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + } +} struct TestBuilin { TestBuilin() : layer_manager() { - this->layer_manager.LoadLayersFromPath(":/sdk", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(this->layer_manager); EXPECT_TRUE(!this->layer_manager.available_layers.empty()); } diff --git a/vkconfig_core/test/test_configuration_manager.cpp b/vkconfig_core/test/test_configuration_manager.cpp index d7e9e754ca..724e25c753 100644 --- a/vkconfig_core/test/test_configuration_manager.cpp +++ b/vkconfig_core/test/test_configuration_manager.cpp @@ -22,6 +22,14 @@ #include +static void InitLayer(LayerManager& layer_manager, const char* dir) { + const std::vector& layers_paths = ::CollectFilePaths(dir); + + for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { + layer_manager.LoadLayers(layers_paths[i], LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + } +} + TEST(test_configuration_manager, init_default) { ConfigurationManager configuration_manager; @@ -35,7 +43,7 @@ TEST(test_configuration_manager, init_default) { TEST(test_configuration_manager, create_remove) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; @@ -67,7 +75,7 @@ TEST(test_configuration_manager, create_remove) { TEST(test_configuration_manager, duplicate_names) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; @@ -93,7 +101,7 @@ TEST(test_configuration_manager, duplicate_names) { TEST(test_configuration_manager, duplicate_object) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; @@ -117,7 +125,7 @@ TEST(test_configuration_manager, duplicate_object) { TEST(test_configuration_manager, sort) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; @@ -138,7 +146,7 @@ TEST(test_configuration_manager, sort) { TEST(test_configuration_manager, default_configuration) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; configuration_manager.LoadDefaultConfigurations(layer_manager); @@ -149,7 +157,7 @@ TEST(test_configuration_manager, default_configuration) { TEST(test_configuration_manager, RenameConfiguration) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; configuration_manager.LoadDefaultConfigurations(layer_manager); @@ -172,7 +180,7 @@ TEST(test_configuration_manager, RenameConfiguration) { TEST(test_configuration_manager, SaveConfiguration) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; EXPECT_TRUE(configuration_manager.Empty()); @@ -202,7 +210,7 @@ TEST(test_configuration_manager, SaveConfiguration) { TEST(test_configuration_manager, ExportImport) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/layers"); ConfigurationManager configuration_manager; configuration_manager.LoadDefaultConfigurations(layer_manager); @@ -237,7 +245,7 @@ TEST(test_configuration_manager, UpdateConfigurations) { EXPECT_STREQ(missing_layers_init[0].c_str(), "VK_LAYER_KHRONOS_validation"); EXPECT_EQ(2, configuration_init->parameters.size()); - layer_manager.LoadLayersFromPath(":/sdk", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager, ":/sdk"); configuration_manager.UpdateConfigurations(layer_manager); std::size_t count_update = configuration_manager.available_configurations.size(); diff --git a/vkconfig_core/test/test_date.cpp b/vkconfig_core/test/test_date.cpp index 36d8e4b901..6d65e46291 100644 --- a/vkconfig_core/test/test_date.cpp +++ b/vkconfig_core/test/test_date.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_generate_settings.cpp b/vkconfig_core/test/test_generate_settings.cpp index d8adb545cb..ecfbc9f4e2 100644 --- a/vkconfig_core/test/test_generate_settings.cpp +++ b/vkconfig_core/test/test_generate_settings.cpp @@ -42,8 +42,7 @@ Configurator& GetTestConfigurator() { path.Create(); Configurator& configurator = Configurator::Get(); - configurator.layers.LoadLayersFromPath(":/layers/VK_LAYER_LUNARG_reference_1_2_1.json", LAYER_TYPE_EXPLICIT, - CONFIGURATOR_MODE_CMD); + configurator.layers.LoadLayers(":/layers/VK_LAYER_LUNARG_reference_1_2_1.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); configurator.configurations.CreateConfiguration(configurator.layers, "configuration"); configurator.SetActiveConfigurationName("configuration"); return configurator; @@ -58,6 +57,15 @@ std::string Read(const Path& path) { return data.toStdString(); } +TEST(test_settings, init) { + const std::vector& settings = layer_settings.settings(); + std::vector layers = layer_settings.layers(); + + VkInstanceCreateInfo create_info; + create_info.enabledLayerCount = static_cast(layers.size()); + create_info.ppEnabledLayerNames = &layers[0]; +} + TEST(test_settings, config_generate_html) { const std::string path(std::string(CMAKE_CURRENT_SOURCE_DIR) + "/tmp"); diff --git a/vkconfig_core/test/test_json.cpp b/vkconfig_core/test/test_json.cpp index f95ebb5ee3..56d6750285 100644 --- a/vkconfig_core/test/test_json.cpp +++ b/vkconfig_core/test/test_json.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_layer.cpp b/vkconfig_core/test/test_layer.cpp index ccac948d2c..13a82a9a1d 100644 --- a/vkconfig_core/test/test_layer.cpp +++ b/vkconfig_core/test/test_layer.cpp @@ -19,6 +19,7 @@ */ #include "../layer.h" +#include "../layer_manager.h" #include "../util.h" #include "../setting_string.h" #include "../setting_filesystem.h" @@ -36,8 +37,6 @@ static SettingMetaString* InstantiateString(Layer& layer, const std::string& key return static_cast(layer.Instantiate(layer.settings, key, SETTING_STRING)); } -static std::map Dummy() { return std::map(); } - TEST(test_layer, collect_settings) { Layer layer; @@ -59,11 +58,14 @@ TEST(test_layer, collect_settings) { } TEST(test_layer, load_header_overridden) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_00.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_00.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_STREQ("VK_LAYER_LUNARG_test_00", layer.key.c_str()); EXPECT_STREQ(Path(".\\VkLayer_test.dll").RelativePath().c_str(), layer.binary_path.RelativePath().c_str()); @@ -76,18 +78,20 @@ TEST(test_layer, load_header_overridden) { EXPECT_EQ(true, layer.enable_env.empty()); EXPECT_EQ(true, layer.enable_value.empty()); EXPECT_EQ(false, layer.is_32bits); - EXPECT_EQ(true, layer.enabled); EXPECT_STREQ("${LUNARG_SDK}/layer_dummy.html", layer.url.RelativePath(false).c_str()); EXPECT_TRUE(layer.settings.empty()); EXPECT_TRUE(layer.presets.empty()); } TEST(test_layer, load_header_default) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_01.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_01.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_STREQ("VK_LAYER_LUNARG_test_01", layer.key.c_str()); EXPECT_STREQ(Path(".\\VkLayer_test.dll").RelativePath().c_str(), layer.binary_path.RelativePath().c_str()); @@ -102,11 +106,14 @@ TEST(test_layer, load_header_default) { } TEST(test_layer, load_header_override) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_02.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_02.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(PLATFORM_WINDOWS_BIT | PLATFORM_LINUX_BIT, layer.platforms); EXPECT_EQ(STATUS_BETA, layer.status); @@ -115,11 +122,14 @@ TEST(test_layer, load_header_override) { } TEST(test_layer, load_setting_interit) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_03.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_03.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(PLATFORM_WINDOWS_BIT | PLATFORM_LINUX_BIT, layer.platforms); EXPECT_EQ(STATUS_BETA, layer.status); @@ -138,11 +148,14 @@ TEST(test_layer, load_setting_interit) { } TEST(test_layer, load_preset_interit) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(PLATFORM_WINDOWS_BIT | PLATFORM_LINUX_BIT, layer.platforms); EXPECT_EQ(STATUS_BETA, layer.status); @@ -158,18 +171,21 @@ TEST(test_layer, load_preset_interit) { EXPECT_EQ(STATUS_ALPHA, layer.presets[2].status); const LayerLoadStatus reloaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); - EXPECT_EQ(reloaded, LAYER_LOAD_ADDED); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + EXPECT_EQ(reloaded, LAYER_LOAD_UNMODIFIED); EXPECT_EQ(1, layer.settings.size()); EXPECT_EQ(3, layer.presets.size()); } TEST(test_layer, load_setting_children_interit) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_05.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_05.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(1, layer.presets.size()); EXPECT_EQ(1, layer.settings.size()); @@ -189,11 +205,14 @@ TEST(test_layer, load_setting_children_interit) { } TEST(test_layer, load_setting_enum_interit) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_06.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_06.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(PLATFORM_WINDOWS_BIT | PLATFORM_LINUX_BIT | PLATFORM_MACOS_BIT | PLATFORM_ANDROID_BIT, layer.platforms); EXPECT_EQ(STATUS_BETA, layer.status); @@ -232,11 +251,14 @@ TEST(test_layer, load_setting_enum_interit) { } TEST(test_layer, load_setting_missing) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_07.json", LAYER_TYPE_IMPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_07.json", LAYER_TYPE_IMPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(PLATFORM_WINDOWS_BIT | PLATFORM_LINUX_BIT, layer.platforms); EXPECT_EQ(STATUS_BETA, layer.status); @@ -247,17 +269,20 @@ TEST(test_layer, load_setting_missing) { EXPECT_EQ(layer_controlA, LAYER_CONTROL_ON); const LayerLoadStatus reloaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_07.json", LAYER_TYPE_IMPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_07.json", LAYER_TYPE_IMPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(1, layer.settings.size()); EXPECT_EQ(2, layer.presets.size()); } TEST(test_layer, load_env_variable) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_08.json", LAYER_TYPE_IMPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_08.json", LAYER_TYPE_IMPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_STREQ("VK_LAYER_LUNARG_test_08", layer.key.c_str()); EXPECT_STREQ(Path(".\\VkLayer_test.dll").RelativePath().c_str(), layer.binary_path.RelativePath().c_str()); @@ -270,7 +295,6 @@ TEST(test_layer, load_env_variable) { EXPECT_STREQ("VK_LAYER_TEST08_ENABLE", layer.enable_env.c_str()); EXPECT_STREQ("1", layer.enable_value.c_str()); EXPECT_EQ(false, layer.is_32bits); - EXPECT_EQ(true, layer.enabled); EXPECT_STREQ("${LUNARG_SDK}/layer_dummy.html", layer.url.RelativePath(false).c_str()); EXPECT_TRUE(layer.settings.empty()); EXPECT_TRUE(layer.presets.empty()); @@ -302,11 +326,14 @@ TEST(test_layer, load_env_variable) { } TEST(test_layer, load_setting_message) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_09.json", LAYER_TYPE_IMPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_09.json", LAYER_TYPE_IMPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 2, 0), layer.file_format_version); EXPECT_EQ(PLATFORM_WINDOWS_BIT | PLATFORM_LINUX_BIT, layer.platforms); EXPECT_EQ(STATUS_BETA, layer.status); @@ -327,11 +354,14 @@ TEST(test_layer, load_setting_message) { } TEST(test_layer, load_1_1_0_header) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_reference_1_1_0.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_reference_1_1_0.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + EXPECT_EQ(Version(1, 1, 0), layer.file_format_version); EXPECT_STREQ("VK_LAYER_LUNARG_reference_1_1_0", layer.key.c_str()); EXPECT_STREQ(Path(".\\VkLayer_reference.dll").RelativePath().c_str(), layer.binary_path.RelativePath().c_str()); @@ -346,11 +376,14 @@ TEST(test_layer, load_1_1_0_header) { } TEST(test_layer, load_1_2_0_preset_and_setting_type) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_reference_1_2_0.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_reference_1_2_0.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + // Preset Enum { const std::size_t index = 1; diff --git a/vkconfig_core/test/test_layer_manager.cpp b/vkconfig_core/test/test_layer_manager.cpp index 59054267a1..c24e2d92c8 100644 --- a/vkconfig_core/test/test_layer_manager.cpp +++ b/vkconfig_core/test/test_layer_manager.cpp @@ -22,6 +22,14 @@ #include +static void InitLayer(LayerManager& layer_manager) { + const std::vector& layers_paths = ::CollectFilePaths(":/layers"); + + for (std::size_t i = 0, n = layers_paths.size(); i < n; ++i) { + layer_manager.LoadLayers(layers_paths[i], LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + } +} + TEST(test_layer_manager, clear) { LayerManager layer_manager; @@ -46,20 +54,11 @@ TEST(test_layer_manager, save_json) { LayerManager layer_manager; bool result = layer_manager.Save(json_root_object); EXPECT_TRUE(result); - - EXPECT_TRUE(json_root_object.value("layers") != QJsonValue::Undefined); - - if (json_root_object.value("layers") != QJsonValue::Undefined) { - const QJsonObject& json_layers_object = json_root_object.value("layers").toObject(); - - EXPECT_TRUE(json_layers_object.value("found") != QJsonValue::Undefined); - EXPECT_TRUE(json_layers_object.value("paths") != QJsonValue::Undefined); - } } TEST(test_layer_manager, load_all) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); EXPECT_EQ(17, layer_manager.Size()); EXPECT_TRUE(!layer_manager.Empty()); @@ -72,7 +71,7 @@ TEST(test_layer_manager, load_dir) { LayerManager layer_manager; EXPECT_TRUE(layer_manager.Empty()); - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); EXPECT_TRUE(layer_manager.Find("VK_LAYER_LUNARG_reference_1_1_0", Version::LATEST) != nullptr); layer_manager.Clear(); @@ -85,7 +84,7 @@ TEST(test_layer_manager, load_file) { LayerManager layer_manager; EXPECT_TRUE(layer_manager.Empty()); - layer_manager.LoadLayersFromPath(":/layers/VK_LAYER_LUNARG_reference_1_1_0.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_reference_1_1_0.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_TRUE(!layer_manager.Empty()); EXPECT_EQ(1, layer_manager.Size()); @@ -98,8 +97,8 @@ TEST(test_layer_manager, load_file) { TEST(test_layer_manager, reset) { LayerManager layer_manager; + ::InitLayer(layer_manager); - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_FALSE(layer_manager.Empty()); layer_manager.Clear(); @@ -108,7 +107,7 @@ TEST(test_layer_manager, reset) { TEST(test_layer_manager, find_single) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); EXPECT_TRUE(layer_manager.Find("VK_LAYER_LUNARG_test_03", Version::LATEST) != nullptr); @@ -119,24 +118,23 @@ TEST(test_layer_manager, find_single) { TEST(test_layer_manager, reload) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); EXPECT_TRUE(layer_manager.Size() > 1); const std::size_t initial_size = layer_manager.Size(); LayerLoadStatus status1 = - layer_manager.LoadLayer(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(status1, LAYER_LOAD_UNMODIFIED); Layer* layer1 = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_test_04.json", false); - layer1->enabled = false; const std::size_t reloaded_size1 = layer_manager.Size(); EXPECT_EQ(initial_size, reloaded_size1); LayerLoadStatus status2 = - layer_manager.LoadLayer(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(status2, LAYER_LOAD_UNMODIFIED); const std::size_t reloaded_size2 = layer_manager.Size(); @@ -145,7 +143,7 @@ TEST(test_layer_manager, reload) { TEST(test_layer_manager, find_multiple) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); const Layer* layer135 = layer_manager.Find("VK_LAYER_LUNARG_version", Version(1, 1, 135)); EXPECT_TRUE(layer135 != nullptr); @@ -182,20 +180,21 @@ TEST(test_layer_manager, find_multiple) { TEST(test_layer_manager, FindLastModified) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); + const std::size_t initial_count = layer_manager.Size(); Layer* layer204_modified = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", false); - layer204_modified->last_modified = "1"; + layer204_modified->descriptor.last_modified = "1"; Path modified_path = layer204_modified->manifest_path; layer204_modified->manifest_path = ":/layers/VK_LAYER_LUNARG_version_204_copy.json"; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); const std::size_t reloaded_count = layer_manager.Size(); EXPECT_EQ(initial_count + 1, reloaded_count); Layer* layer204 = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", false); - layer204->last_modified = "0"; + layer204->descriptor.last_modified = "0"; Layer* layer204_first = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204_copy.json", false); Layer* layer204_copy = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", false); @@ -203,51 +202,48 @@ TEST(test_layer_manager, FindLastModified) { const Layer* last0 = layer_manager.FindLastModified("VK_LAYER_LUNARG_version", Version(1, 3, 204)); EXPECT_EQ(layer204_first, last0); - layer204_copy->last_modified = "2"; + layer204_copy->descriptor.last_modified = "2"; const Layer* last1 = layer_manager.FindLastModified("VK_LAYER_LUNARG_version", Version(1, 3, 204)); EXPECT_EQ(layer204_copy, last1); } TEST(test_layer_manager, FindFromManifest) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); + const std::size_t initial_count = layer_manager.Size(); Layer* layer204 = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", false); EXPECT_TRUE(layer204 != nullptr); EXPECT_STREQ(layer204->key.c_str(), "VK_LAYER_LUNARG_version"); EXPECT_EQ(layer204->api_version, Version(1, 3, 204)); - EXPECT_TRUE(layer204->enabled); Layer* layer208 = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_208.json", false); EXPECT_TRUE(layer208 == nullptr); - layer204->enabled = false; + layer204->descriptor.enabled = false; + Layer* layer204_disabledA = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", false); EXPECT_TRUE(layer204_disabledA == nullptr); Layer* layer204_disabledB = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", true); // find disabled layers anyway EXPECT_TRUE(layer204_disabledB != nullptr); - EXPECT_FALSE(layer204_disabledB->enabled); - layer204_disabledB->enabled = true; - Layer* layer204_disabledC = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", false); + Layer* layer204_disabledC = layer_manager.FindFromManifest(":/layers/VK_LAYER_LUNARG_version_204.json", true); EXPECT_TRUE(layer204_disabledC != nullptr); - EXPECT_TRUE(layer204_disabledC->enabled); - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); const std::size_t enabled_count = layer_manager.Size(); EXPECT_EQ(initial_count, enabled_count); - layer204->enabled = false; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); const std::size_t disabled_count = layer_manager.Size(); EXPECT_EQ(initial_count, disabled_count); } TEST(test_layer_manager, GatherManifests) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); const std::vector& versions_notfound = layer_manager.GatherManifests("VK_LAYER_LUNARG_version_not_found"); EXPECT_TRUE(versions_notfound.empty()); @@ -260,16 +256,17 @@ TEST(test_layer_manager, GatherManifests) { EXPECT_EQ(layer0->api_version, Version(1, 3, 290)); const Layer* layer1 = layer_manager.FindFromManifest(versions_found[1]); EXPECT_EQ(layer1->api_version, Version(1, 3, 204)); - const Layer* layer2 = layer_manager.FindFromManifest(versions_found[2]); + Layer* layer2 = layer_manager.FindFromManifest(versions_found[2]); EXPECT_EQ(layer2->api_version, Version(1, 2, 193)); const Layer* layer3 = layer_manager.FindFromManifest(versions_found[3]); EXPECT_EQ(layer3->api_version, Version(1, 1, 135)); + layer2->descriptor.enabled = false; + const Layer* layer193 = layer_manager.Find("VK_LAYER_LUNARG_version", Version(1, 2, 193)); EXPECT_TRUE(layer193 != nullptr); Layer* layer_edit = layer_manager.FindFromManifest(layer193->manifest_path); - layer_edit->enabled = false; const std::vector& versions_found_b = layer_manager.GatherManifests("VK_LAYER_LUNARG_version"); EXPECT_FALSE(versions_found_b.empty()); @@ -284,7 +281,7 @@ TEST(test_layer_manager, GatherManifests) { TEST(test_layer_manager, GatherVersions) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); const std::vector& versions_notfound = layer_manager.GatherVersions("VK_LAYER_LUNARG_version_not_found"); EXPECT_TRUE(versions_notfound.empty()); @@ -297,11 +294,12 @@ TEST(test_layer_manager, GatherVersions) { EXPECT_EQ(versions_found[2], Version(1, 2, 193)); EXPECT_EQ(versions_found[3], Version(1, 1, 135)); - const Layer* layer193 = layer_manager.Find("VK_LAYER_LUNARG_version", Version(1, 2, 193)); + LayerId layer_id{Path(":/layers/VK_LAYER_LUNARG_version_193.json"), "VK_LAYER_LUNARG_version", Version(1, 2, 193)}; + + Layer* layer193 = layer_manager.Find(layer_id); EXPECT_TRUE(layer193 != nullptr); - Layer* layer_edit = layer_manager.FindFromManifest(layer193->manifest_path); - layer_edit->enabled = false; + layer193->descriptor.enabled = false; const std::vector& versions_found_b = layer_manager.GatherVersions("VK_LAYER_LUNARG_version"); EXPECT_FALSE(versions_found_b.empty()); @@ -313,7 +311,7 @@ TEST(test_layer_manager, GatherVersions) { TEST(test_layer_manager, BuildLayerNameList) { LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); EXPECT_EQ(layer_manager.GatherLayerNames().size(), 14); } @@ -324,80 +322,11 @@ TEST(test_layer_manager, avoid_duplicate) { LayerManager layer_manager; EXPECT_TRUE(layer_manager.Empty()); - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); std::size_t first_load_count = layer_manager.Size(); - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); + ::InitLayer(layer_manager); std::size_t second_load_count = layer_manager.Size(); EXPECT_EQ(first_load_count, second_load_count); } - -TEST(test_layer_manager, custom_path_append_remove) { - LayerManager layer_manager; - - LayersPathInfo infoA; - infoA.path = ":/layers"; - LayersPathInfo infoB; - infoB.path = ":/layersB"; - LayersPathInfo infoC; - infoC.path = ":/layersC"; - - layer_manager.AppendPath(infoA); - layer_manager.AppendPath(infoB); - layer_manager.AppendPath(infoC); - - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 3); - - layer_manager.AppendPath(infoA); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 3); - - layer_manager.RemovePath(infoA); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 2); - - layer_manager.AppendPath(infoA); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 3); - - layer_manager.RemovePath(infoA); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 2); - - layer_manager.RemovePath(infoA); // Check that removing an already removed path doesn't cause any issue - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 2); - - layer_manager.RemovePath(infoB); - layer_manager.RemovePath(infoC); - - EXPECT_TRUE(layer_manager.paths[LAYERS_PATHS_GUI].empty()); -} - -TEST(test_layer_manager, custom_path_update_layers) { - LayerManager layer_manager; - layer_manager.LoadLayersFromPath(":/layers", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); - - LayersPathInfo info; - info.path = ":/layers"; - // info.enabled = true; default value - - layer_manager.AppendPath(info); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 1); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI][0].enabled, true); - for (std::size_t i = 0, n = layer_manager.available_layers.size(); i < n; ++i) { - EXPECT_TRUE(layer_manager.available_layers[i].enabled); - } - - info.enabled = false; - layer_manager.UpdatePathEnabled(info, LAYERS_PATHS_GUI); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI][0].enabled, false); - for (std::size_t i = 0, n = layer_manager.available_layers.size(); i < n; ++i) { - EXPECT_FALSE(layer_manager.available_layers[i].enabled); - } - - info.enabled = true; - layer_manager.UpdatePathEnabled(info, LAYERS_PATHS_GUI); - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI][0].enabled, true); - for (std::size_t i = 0, n = layer_manager.available_layers.size(); i < n; ++i) { - EXPECT_TRUE(layer_manager.available_layers[i].enabled); - } - - EXPECT_EQ(layer_manager.paths[LAYERS_PATHS_GUI].size(), 1); -} diff --git a/vkconfig_core/test/test_layer_preset.cpp b/vkconfig_core/test/test_layer_preset.cpp index 113e4bc202..5ece200a04 100644 --- a/vkconfig_core/test/test_layer_preset.cpp +++ b/vkconfig_core/test/test_layer_preset.cpp @@ -20,14 +20,13 @@ #include "../layer.h" #include "../layer_preset.h" +#include "../layer_manager.h" #include "../setting_string.h" #include "../setting_int.h" #include "../util.h" #include -static std::map Dummy() { return std::map(); } - static SettingMetaString* InstantiateString(Layer& layer, const std::string& key) { return static_cast(layer.Instantiate(layer.settings, key, SETTING_STRING)); } @@ -66,11 +65,14 @@ TEST(test_layer_preset, has_preset) { } TEST(test_layer_preset, find_preset_index_no_preset) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_03.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_03.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + SettingDataSet layer_settings; ::CollectDefaultSettingData(layer.settings, layer_settings); @@ -79,22 +81,28 @@ TEST(test_layer_preset, find_preset_index_no_preset) { } TEST(test_layer_preset, find_preset_index_empty) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + SettingDataSet layer_settings; int index = layer.FindPresetIndex(layer_settings); EXPECT_EQ(index, Layer::NO_PRESET); } TEST(test_layer_preset, find_preset_index_found) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_04.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + SettingDataSet layer_settings; ::CollectDefaultSettingData(layer.settings, layer_settings); SettingDataInt& setting = static_cast(*layer_settings[0]); @@ -116,11 +124,14 @@ TEST(test_layer_preset, find_preset_index_found) { } TEST(test_layer_preset, find_preset_index_missing_value) { - Layer layer; + LayerManager layer_manager; + const LayerLoadStatus load_loaded = - layer.Load(":/layers/VK_LAYER_LUNARG_test_07.json", LAYER_TYPE_EXPLICIT, false, Dummy(), CONFIGURATOR_MODE_CMD); + layer_manager.LoadLayers(":/layers/VK_LAYER_LUNARG_test_07.json", LAYER_TYPE_EXPLICIT, CONFIGURATOR_MODE_CMD); EXPECT_EQ(load_loaded, LAYER_LOAD_ADDED); + Layer& layer = layer_manager.available_layers[0]; + SettingDataSet layer_settings; ::CollectDefaultSettingData(layer.settings, layer_settings); diff --git a/vkconfig_core/test/test_parameter.cpp b/vkconfig_core/test/test_parameter.cpp index 25a9dfe883..3a9421e560 100644 --- a/vkconfig_core/test/test_parameter.cpp +++ b/vkconfig_core/test/test_parameter.cpp @@ -25,10 +25,34 @@ #include -inline SettingMetaString* InstantiateString(Layer& layer, const std::string& key) { +static SettingMetaString* InstantiateString(Layer& layer, const std::string& key) { return static_cast(layer.Instantiate(layer.settings, key, SETTING_STRING)); } +static void AddLayer(LayerManager& layers, const char* key, LayerType type) { + std::string path = format("./%s.json", key); + + Layer layer(key); + layer.file_format_version = Version(1, 0, 0); + layer.api_version = Version(1, 2, 148); + layer.implementation_version = "1"; + layer.type = type; + layer.manifest_path = path; + + layers.available_layers.push_back(layer); +} + +static void InitLayers(LayerManager& layers) { + AddLayer(layers, "VK_LAYER_KHRONOS_implicit", LAYER_TYPE_IMPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_explicit", LAYER_TYPE_EXPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_validation", LAYER_TYPE_EXPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_profiles", LAYER_TYPE_EXPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_timeline_semaphore", LAYER_TYPE_EXPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_synchronization2", LAYER_TYPE_EXPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_shader_object", LAYER_TYPE_EXPLICIT); + AddLayer(layers, "VK_LAYER_KHRONOS_memory_decompression", LAYER_TYPE_EXPLICIT); +} + TEST(test_parameter, apply_settings) { Layer layer; @@ -65,47 +89,40 @@ TEST(test_parameter, apply_settings) { TEST(test_parameter, ordering_found_parameter_rank) { LayerManager layers; - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_implicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_explicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_validation", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_profiles", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_timeline_semaphore", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_synchronization2", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_shader_object", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_memory_decompression", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - - layers.available_layers[0].type = LAYER_TYPE_IMPLICIT; + ::InitLayers(layers); + + Parameter parameter_validation("VK_LAYER_KHRONOS_validation", LAYER_CONTROL_AUTO); + EXPECT_EQ(PARAMETER_RANK_VALIDATION_LAYER, GetParameterOrdering(layers, parameter_validation)); + + Parameter parameter_profile("VK_LAYER_KHRONOS_profiles", LAYER_CONTROL_ON); + EXPECT_EQ(PARAMETER_RANK_PROFILES_LAYER, GetParameterOrdering(layers, parameter_profile)); + + Parameter parameter_timeline_semaphore("VK_LAYER_KHRONOS_timeline_semaphore", LAYER_CONTROL_OFF); + EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, GetParameterOrdering(layers, parameter_timeline_semaphore)); + + Parameter parameter_synchronization2("VK_LAYER_KHRONOS_synchronization2", LAYER_CONTROL_AUTO); + EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, GetParameterOrdering(layers, parameter_synchronization2)); + + Parameter parameter_shader_object("VK_LAYER_KHRONOS_shader_object", LAYER_CONTROL_ON); + EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, GetParameterOrdering(layers, parameter_shader_object)); + + Parameter parameter_memory_decompression("VK_LAYER_KHRONOS_memory_decompression", LAYER_CONTROL_OFF); + EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, GetParameterOrdering(layers, parameter_memory_decompression)); + + Parameter parameter_explicit("VK_LAYER_KHRONOS_explicit", LAYER_CONTROL_ON); + EXPECT_EQ(PARAMETER_RANK_EXPLICIT_LAYER, GetParameterOrdering(layers, parameter_explicit)); Parameter parameter_implicit("VK_LAYER_KHRONOS_implicit", LAYER_CONTROL_OFF); parameter_implicit.type = LAYER_TYPE_IMPLICIT; - - EXPECT_EQ(PARAMETER_RANK_VALIDATION_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_validation", LAYER_CONTROL_AUTO))); - EXPECT_EQ(PARAMETER_RANK_PROFILES_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_profiles", LAYER_CONTROL_ON))); - EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_timeline_semaphore", LAYER_CONTROL_OFF))); - EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_synchronization2", LAYER_CONTROL_AUTO))); - EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_shader_object", LAYER_CONTROL_ON))); - EXPECT_EQ(PARAMETER_RANK_EXTENSION_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_memory_decompression", LAYER_CONTROL_OFF))); - EXPECT_EQ(PARAMETER_RANK_EXPLICIT_LAYER, - GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_explicit", LAYER_CONTROL_ON))); EXPECT_EQ(PARAMETER_RANK_IMPLICIT_LAYER, GetParameterOrdering(layers, parameter_implicit)); - EXPECT_EQ(PARAMETER_RANK_MISSING_LAYER, GetParameterOrdering(layers, Parameter("VK_LAYER_KHRONOS_missing", LAYER_CONTROL_OFF))); + + Parameter parameter_missing("VK_LAYER_KHRONOS_missing", LAYER_CONTROL_OFF); + EXPECT_EQ(PARAMETER_RANK_MISSING_LAYER, GetParameterOrdering(layers, parameter_missing)); } TEST(test_parameter, has_missing_layer) { LayerManager layers; - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_implicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_explicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); + ::InitLayers(layers); std::vector parameters; parameters.push_back(Parameter("VK_LAYER_KHRONOS_implicit", LAYER_CONTROL_AUTO)); @@ -118,8 +135,7 @@ TEST(test_parameter, has_missing_layer) { TEST(test_parameter, no_missing_layer) { LayerManager layers; - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_implicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_explicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); + ::InitLayers(layers); std::vector parameters; parameters.push_back(Parameter("VK_LAYER_KHRONOS_implicit", LAYER_CONTROL_AUTO)); @@ -132,20 +148,7 @@ TEST(test_parameter, no_missing_layer) { TEST(test_parameter, order_parameter_automatic) { LayerManager layers; - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_implicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_explicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_validation", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_profiles", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_timeline_semaphore", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_synchronization2", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_shader_object", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_memory_decompression", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers[0].type = LAYER_TYPE_IMPLICIT; + ::InitLayers(layers); Parameter unordered_layers(::GetToken(LAYER_BUILTIN_UNORDERED), LAYER_CONTROL_AUTO); unordered_layers.builtin = LAYER_BUILTIN_UNORDERED; @@ -193,18 +196,7 @@ TEST(test_parameter, order_parameter_automatic) { TEST(test_parameter, order_parameter_manual_partial) { LayerManager layers; - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_implicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_explicit", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_validation", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back(Layer("VK_LAYER_KHRONOS_profiles", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_timeline_semaphore", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_synchronization2", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_memory_decompression", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); - layers.available_layers[0].type = LAYER_TYPE_IMPLICIT; + ::InitLayers(layers); std::vector parameters; parameters.push_back(Parameter("VK_LAYER_KHRONOS_implicit", LAYER_CONTROL_AUTO)); @@ -246,8 +238,13 @@ TEST(test_parameter, order_parameter_manual_partial) { EXPECT_STREQ(parameters[8].key.c_str(), "VK_LAYER_KHRONOS_timeline_semaphore"); // Insert a new layer in the parameter list - layers.available_layers.push_back( - Layer("VK_LAYER_KHRONOS_shader_object", Version(1, 0, 0), Version(1, 2, 148), "1", "layer.json")); + Layer layer("VK_LAYER_KHRONOS_shader_object"); + layer.manifest_path = "./layer.json"; + layer.api_version = Version(1, 2, 148); + layer.file_format_version = Version(1, 0, 0); + layer.implementation_version = "1"; + + layers.available_layers.push_back(layer); Parameter parameter_implicit2("VK_LAYER_KHRONOS_shader_object", LAYER_CONTROL_AUTO); parameters.push_back(parameter_implicit2); diff --git a/vkconfig_core/test/test_setting.cpp b/vkconfig_core/test/test_setting.cpp index 4af1c111d2..0cb451d0d6 100644 --- a/vkconfig_core/test/test_setting.cpp +++ b/vkconfig_core/test/test_setting.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,11 +24,10 @@ TEST(test_setting, is_enum_true) { EXPECT_EQ(true, IsEnum(SETTING_ENUM)); } -TEST(test_setting, is_flags_true) { EXPECT_EQ(true, IsFlags(SETTING_FLAGS)); } +TEST(test_setting, is_flags_true) { EXPECT_EQ(true, IsFlags(SETTING_FLAGS)); } TEST(test_setting, is_enum_false) { EXPECT_EQ(false, IsEnum(SETTING_STRING)); } TEST(test_setting, get_setting_token) { EXPECT_STREQ("STRING", GetToken(SETTING_STRING)); } TEST(test_setting, get_setting_type) { EXPECT_EQ(SETTING_STRING, GetSettingType("STRING")); } - diff --git a/vkconfig_core/test/test_setting_type_bool.cpp b/vkconfig_core/test/test_setting_type_bool.cpp index c063b74504..7f1b57e0b1 100644 --- a/vkconfig_core/test/test_setting_type_bool.cpp +++ b/vkconfig_core/test/test_setting_type_bool.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_bool_numeric.cpp b/vkconfig_core/test/test_setting_type_bool_numeric.cpp index 477da3c816..7cf93408f0 100644 --- a/vkconfig_core/test/test_setting_type_bool_numeric.cpp +++ b/vkconfig_core/test/test_setting_type_bool_numeric.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_enum.cpp b/vkconfig_core/test/test_setting_type_enum.cpp index 280a8dbd3e..196a0cdb83 100644 --- a/vkconfig_core/test/test_setting_type_enum.cpp +++ b/vkconfig_core/test/test_setting_type_enum.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_file_load.cpp b/vkconfig_core/test/test_setting_type_file_load.cpp index 1a3c0f2df4..b393fd860c 100644 --- a/vkconfig_core/test/test_setting_type_file_load.cpp +++ b/vkconfig_core/test/test_setting_type_file_load.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_file_save.cpp b/vkconfig_core/test/test_setting_type_file_save.cpp index a472bd0bb4..61085ddd74 100644 --- a/vkconfig_core/test/test_setting_type_file_save.cpp +++ b/vkconfig_core/test/test_setting_type_file_save.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_flags.cpp b/vkconfig_core/test/test_setting_type_flags.cpp index da5c8d803d..275853a8c1 100644 --- a/vkconfig_core/test/test_setting_type_flags.cpp +++ b/vkconfig_core/test/test_setting_type_flags.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_float.cpp b/vkconfig_core/test/test_setting_type_float.cpp index 39ab01ab49..c778629edb 100644 --- a/vkconfig_core/test/test_setting_type_float.cpp +++ b/vkconfig_core/test/test_setting_type_float.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_folder_save.cpp b/vkconfig_core/test/test_setting_type_folder_save.cpp index d8a3030ec1..a5af8d6d50 100644 --- a/vkconfig_core/test/test_setting_type_folder_save.cpp +++ b/vkconfig_core/test/test_setting_type_folder_save.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_frames.cpp b/vkconfig_core/test/test_setting_type_frames.cpp index 11e2a90265..37a8a35944 100644 --- a/vkconfig_core/test/test_setting_type_frames.cpp +++ b/vkconfig_core/test/test_setting_type_frames.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_group.cpp b/vkconfig_core/test/test_setting_type_group.cpp index ca5ec56e20..d7f19c1d4b 100644 --- a/vkconfig_core/test/test_setting_type_group.cpp +++ b/vkconfig_core/test/test_setting_type_group.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_int.cpp b/vkconfig_core/test/test_setting_type_int.cpp index 806c1f4f7a..82ef462f2b 100644 --- a/vkconfig_core/test/test_setting_type_int.cpp +++ b/vkconfig_core/test/test_setting_type_int.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_list.cpp b/vkconfig_core/test/test_setting_type_list.cpp index 2087db2149..8b19304f86 100644 --- a/vkconfig_core/test/test_setting_type_list.cpp +++ b/vkconfig_core/test/test_setting_type_list.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_setting_type_string.cpp b/vkconfig_core/test/test_setting_type_string.cpp index 225c0b58ec..b30eba3162 100644 --- a/vkconfig_core/test/test_setting_type_string.cpp +++ b/vkconfig_core/test/test_setting_type_string.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_core/test/test_util.cpp b/vkconfig_core/test/test_util.cpp index 55c179f741..60d18f1934 100644 --- a/vkconfig_core/test/test_util.cpp +++ b/vkconfig_core/test/test_util.cpp @@ -135,7 +135,7 @@ TEST(test_util, trim_surrounding_whitepace) { std::vector strings; strings.push_back("-o profile.json"); strings.push_back(" -o profile.json "); - strings.push_back("\"-o profile.json\""); + strings.push_back("\t-o profile.json\n"); for (std::size_t i = 0, n = strings.size(); i < n; ++i) { std::string trimed_string = TrimSurroundingWhitespace(strings[i]); @@ -144,6 +144,94 @@ TEST(test_util, trim_surrounding_whitepace) { } } +TEST(test_util, split_args_single) { + const std::string source_arg = "--argA"; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(1, split_arg.size()); + EXPECT_STREQ("--argA", split_arg[0].c_str()); +} + +TEST(test_util, split_args_single_with_parem) { + const std::string source_arg = "--argA value-A"; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(1, split_arg.size()); + EXPECT_STREQ("--argA value-A", split_arg[0].c_str()); +} + +TEST(test_util, split_args_single_no_quote) { + const std::string source_arg = "--argA value A"; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(1, split_arg.size()); + EXPECT_STREQ("--argA value A", split_arg[0].c_str()); +} + +TEST(test_util, split_args_multiple_no_quote) { + const std::string source_arg = "--argA value A --argB"; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(2, split_arg.size()); + EXPECT_STREQ("--argA value A", split_arg[0].c_str()); + EXPECT_STREQ("--argB", split_arg[1].c_str()); +} + +TEST(test_util, split_args_single_with_quote_with_space) { + const std::string source_arg = "--argA \"value A\""; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(1, split_arg.size()); + EXPECT_STREQ("--argA \"value A\"", split_arg[0].c_str()); +} + +TEST(test_util, split_args_single_with_quote_without_space) { + const std::string source_arg = "--argA \"value-A\""; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(1, split_arg.size()); + EXPECT_STREQ("--argA \"value-A\"", split_arg[0].c_str()); +} + +TEST(test_util, split_args_single_with_quote_and_extra) { + const std::string source_arg = "--argA \"value-A\" --argB"; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(2, split_arg.size()); + EXPECT_STREQ("--argA \"value-A\"", split_arg[0].c_str()); + EXPECT_STREQ("--argB", split_arg[1].c_str()); +} + +TEST(test_util, split_args_single_with_command_quote_without_space) { + const std::string source_arg = "command --argA \"value-A\""; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(2, split_arg.size()); + EXPECT_STREQ("command", split_arg[0].c_str()); + EXPECT_STREQ("--argA \"value-A\"", split_arg[1].c_str()); +} + +TEST(test_util, split_args_single_with_command_double_quote_without_space) { + const std::string source_arg = "command area --argA \"value-A\""; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(3, split_arg.size()); + EXPECT_STREQ("command", split_arg[0].c_str()); + EXPECT_STREQ("area", split_arg[1].c_str()); + EXPECT_STREQ("--argA \"value-A\"", split_arg[2].c_str()); +} + +TEST(test_util, split_args_multiple) { + const std::string source_arg = "--argA --argB valueB --argC \"value C\" --argD value D"; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(4, split_arg.size()); + EXPECT_STREQ("--argA", split_arg[0].c_str()); + EXPECT_STREQ("--argB valueB", split_arg[1].c_str()); + EXPECT_STREQ("--argC \"value C\"", split_arg[2].c_str()); + EXPECT_STREQ("--argD value D", split_arg[3].c_str()); +} + +TEST(test_util, split_args_multiple_mix) { + const std::string source_arg = "cargo run --example solari --features=\"bevy_solari https free_camera\""; + const std::vector split_arg = SplitArgs(source_arg); + EXPECT_EQ(4, split_arg.size()); + EXPECT_STREQ("cargo", split_arg[0].c_str()); + EXPECT_STREQ("run", split_arg[1].c_str()); + EXPECT_STREQ("--example solari", split_arg[2].c_str()); + EXPECT_STREQ("--features=\"bevy_solari https free_camera\"", split_arg[3].c_str()); +} + TEST(test_util, split_arg_default) { const std::string source_arg = "--argA --argB=valueB \"--argC=value C\" --argD=\"value D\""; const std::vector split_arg = SplitSpace(source_arg); diff --git a/vkconfig_core/type_diagnostic_mode.cpp b/vkconfig_core/type_diagnostic_mode.cpp index ed629be60d..62b9767397 100644 --- a/vkconfig_core/type_diagnostic_mode.cpp +++ b/vkconfig_core/type_diagnostic_mode.cpp @@ -30,7 +30,7 @@ const char* GetToken(DiagnosticMode mode) { "Vulkan Info Text", // DIAGNOSTIC_VULKAN_INFO_TEXT "Vulkan Profile", // DIAGNOSTIC_VULKAN_PROFILE "Vulkan Loader Log", // DIAGNOSTIC_VULKAN_LOADER_LOG - "Vulkan Loader Configuration", // DIAGNOSTIC_ACTIVE_LOADER_CONFIGURATION + "Vulkan Layers Configuration", // DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION "Vulkan Layers Settings", // DIAGNOSTIC_VULKAN_LAYERS_SETTINGS "Vulkan Loader Settings", // DIAGNOSTIC_VULKAN_LOADER_SETTINGS }; @@ -57,7 +57,7 @@ const char* GetFilename(DiagnosticMode mode) { "/vkconfig_vulkanInfo.txt", // DIAGNOSTIC_VULKAN_INFO_TEXT "/vkconfig_vulkanInfo.json", // DIAGNOSTIC_VULKAN_PROFILE "/vkconfig_loader_log.txt", // DIAGNOSTIC_VULKAN_LOADER_LOG - "/vkconfig_loader_configuration.json", // DIAGNOSTIC_ACTIVE_LOADER_CONFIGURATION + "/vkconfig_layers_configuration.json", // DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION "/vkconfig_layers_settings.txt", // DIAGNOSTIC_VULKAN_LAYERS_SETTINGS "/vkconfig_loader_settings.json", // DIAGNOSTIC_VULKAN_LOADER_SETTINGS }; diff --git a/vkconfig_core/type_diagnostic_mode.h b/vkconfig_core/type_diagnostic_mode.h index 4d4340fd81..b62746d487 100644 --- a/vkconfig_core/type_diagnostic_mode.h +++ b/vkconfig_core/type_diagnostic_mode.h @@ -26,7 +26,7 @@ enum DiagnosticMode { // Enum value can't be changed DIAGNOSTIC_VULKAN_INFO_TEXT, DIAGNOSTIC_VULKAN_PROFILE, DIAGNOSTIC_VULKAN_LOADER_LOG, - DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION, + DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION, DIAGNOSTIC_VULKAN_LAYERS_SETTINGS, DIAGNOSTIC_VULKAN_LOADER_SETTINGS, diff --git a/vkconfig_core/type_driver_mode.cpp b/vkconfig_core/type_driver_mode.cpp index d6f858c249..03c7827d52 100644 --- a/vkconfig_core/type_driver_mode.cpp +++ b/vkconfig_core/type_driver_mode.cpp @@ -27,6 +27,7 @@ const char* GetToken(DriverMode mode) { static const char* TOKENS[] = { "Single", // DRIVER_MODE_SINGLE "Sorted", // DRIVER_MODE_SORTED + "None", // DRIVER_MODE_NONE }; static_assert(std::size(TOKENS) == DRIVER_MODE_COUNT); diff --git a/vkconfig_core/type_driver_mode.h b/vkconfig_core/type_driver_mode.h index 8149930dd1..af5294875c 100644 --- a/vkconfig_core/type_driver_mode.h +++ b/vkconfig_core/type_driver_mode.h @@ -23,9 +23,10 @@ enum DriverMode { DRIVER_MODE_SINGLE = 0, DRIVER_MODE_SORTED, + DRIVER_MODE_NONE, DRIVER_MODE_FIRST = DRIVER_MODE_SINGLE, - DRIVER_MODE_LAST = DRIVER_MODE_SORTED + DRIVER_MODE_LAST = DRIVER_MODE_NONE }; enum { DRIVER_MODE_COUNT = DRIVER_MODE_LAST - DRIVER_MODE_FIRST + 1 }; diff --git a/vkconfig_core/type_executable_mode.cpp b/vkconfig_core/type_executable_mode.cpp index 63cfcf2cd5..ed876c9206 100644 --- a/vkconfig_core/type_executable_mode.cpp +++ b/vkconfig_core/type_executable_mode.cpp @@ -25,7 +25,6 @@ const char* GetLabel(ExecutableScope scope) { static const char* TABLE[]{ - "No Vulkan Executable", // EXECUTABLE_NONE "Any Running Vulkan Executable", // EXECUTABLE_ANY "All Enabled Vulkan Executables", // EXECUTABLE_ALL "Per Vulkan Working Directory", // EXECUTABLE_PER @@ -39,10 +38,9 @@ const char* GetLabel(ExecutableScope scope) { const char* GetTooltip(ExecutableScope scope) { static const char* TABLE[]{ - "Vulkan Configurator won't affect the Vulkan layers for any executable running on the system.", // EXECUTABLE_NONE - "Apply the active layers configuration to any executable running.", // EXECUTABLE_ANY - "Apply the active layers configuration to all enabled executables.", // EXECUTABLE_ALL - "Apply a dedicated layers configuration for each Vulkan executable.", // EXECUTABLE_PER + "Apply the active layers configuration to any executable running.", // EXECUTABLE_ANY + "Apply the active layers configuration to all enabled executables.", // EXECUTABLE_ALL + "Apply a dedicated layers configuration for each Vulkan executable.", // EXECUTABLE_PER }; static_assert(std::size(TABLE) == EXECUTABLE_SCOPE_COUNT, @@ -53,10 +51,9 @@ const char* GetTooltip(ExecutableScope scope) { const char* GetToken(ExecutableScope scope) { static const char* TABLE[]{ - "NONE", // EXECUTABLE_NONE - "ANY", // EXECUTABLE_ANY - "ALL", // EXECUTABLE_ALL - "PER", // EXECUTABLE_PER + "ANY", // EXECUTABLE_ANY + "ALL", // EXECUTABLE_ALL + "PER", // EXECUTABLE_PER }; static_assert(std::size(TABLE) == EXECUTABLE_SCOPE_COUNT, @@ -73,7 +70,7 @@ ExecutableScope GetExecutableScope(const char* token) { } } - return EXECUTABLE_NONE; + return EXECUTABLE_ANY; } bool EnabledExecutables(ExecutableScope scope) { return scope == EXECUTABLE_ALL || scope == EXECUTABLE_PER; } diff --git a/vkconfig_core/type_executable_mode.h b/vkconfig_core/type_executable_mode.h index eebe4f89aa..027dd1a03f 100644 --- a/vkconfig_core/type_executable_mode.h +++ b/vkconfig_core/type_executable_mode.h @@ -21,12 +21,11 @@ #pragma once enum ExecutableScope { // Enum value can't be changed - EXECUTABLE_NONE = 0, - EXECUTABLE_ANY, + EXECUTABLE_ANY = 0, EXECUTABLE_ALL, EXECUTABLE_PER, - EXECUTABLE_SCOPE_FIRST = EXECUTABLE_NONE, + EXECUTABLE_SCOPE_FIRST = EXECUTABLE_ANY, EXECUTABLE_SCOPE_LAST = EXECUTABLE_PER }; diff --git a/vkconfig_core/type_hide_message.cpp b/vkconfig_core/type_hide_message.cpp index 7317156bc3..489bde32da 100644 --- a/vkconfig_core/type_hide_message.cpp +++ b/vkconfig_core/type_hide_message.cpp @@ -48,7 +48,8 @@ const char* GetToken(HideMessageType value) { "HIDE_MESSAGE_WARN_DARK_THEME_ICON", "HIDE_MESSAGE_QUESTION_REMOVING_LAYERS_PATH", "HIDE_MESSAGE_QUESTION_REMOVING_DRIVER_PATH", - "HIDE_MESSAGE_ERROR_32BIT"}; + "HIDE_MESSAGE_ERROR_32BIT", + "HIDE_MESSAGE_LAYERS_ORDER_RESET"}; static_assert(std::size(TOKENS) == HIDE_MESSAGE_COUNT); if (value >= HIDE_MESSAGE_FIRST && value <= HIDE_MESSAGE_LAST) { diff --git a/vkconfig_core/type_hide_message.h b/vkconfig_core/type_hide_message.h index e430aaeb0a..a9e61f8e1b 100644 --- a/vkconfig_core/type_hide_message.h +++ b/vkconfig_core/type_hide_message.h @@ -47,9 +47,10 @@ enum HideMessageType { HIDE_MESSAGE_QUESTION_REMOVING_LAYERS_PATH, HIDE_MESSAGE_QUESTION_REMOVING_DRIVER_PATH, HIDE_MESSAGE_ERROR_32BIT, + HIDE_MESSAGE_LAYERS_ORDER_RESET, HIDE_MESSAGE_FIRST = HIDE_MESSAGE_NEED_APPLICATION_RESTART, - HIDE_MESSAGE_LAST = HIDE_MESSAGE_ERROR_32BIT, + HIDE_MESSAGE_LAST = HIDE_MESSAGE_LAYERS_ORDER_RESET, HIDE_MESSAGE_INVALID = ~0, }; diff --git a/vkconfig_core/type_layer_builtin.cpp b/vkconfig_core/type_layer_builtin.cpp index aa0daffbe7..af3fe6b909 100644 --- a/vkconfig_core/type_layer_builtin.cpp +++ b/vkconfig_core/type_layer_builtin.cpp @@ -44,18 +44,8 @@ const char* GetToken(LayerBuiltin builtin) { const char* GetLabel(LayerBuiltin builtin) { static const char* TABLE[] = { - "N/A", // LAYER_BUILTIN_NONE - "Vulkan Layers Located by the Vulkan Application", // LAYER_BUILTIN_UNORDERED - }; - static_assert(std::size(TABLE) == LAYER_BUILTIN_COUNT); - - return TABLE[builtin]; -} - -const char* GetDescription(LayerBuiltin builtin) { - static const char* TABLE[] = { - "N/A", // LAYER_BUILTIN_NONE - "Vulkan Layers are located by the Vulkan Application by setting 'VK_ADD_LAYER_PATH' Application at launch", // LAYER_BUILTIN_UNORDERED + "N/A", // LAYER_BUILTIN_NONE + "Vulkan Layers Located by Vulkan Applications", // LAYER_BUILTIN_UNORDERED }; static_assert(std::size(TABLE) == LAYER_BUILTIN_COUNT); diff --git a/vkconfig_core/type_layer_builtin.h b/vkconfig_core/type_layer_builtin.h index 08ec82d5ef..f50143b51d 100644 --- a/vkconfig_core/type_layer_builtin.h +++ b/vkconfig_core/type_layer_builtin.h @@ -33,4 +33,3 @@ enum { LAYER_BUILTIN_COUNT = LAYER_BUILTIN_LAST - LAYER_BUILTIN_FIRST + 1 }; LayerBuiltin GetLayerBuiltin(const char* token); const char* GetToken(LayerBuiltin builtin); const char* GetLabel(LayerBuiltin builtin); -const char* GetDescription(LayerBuiltin builtin); diff --git a/vkconfig_core/type_layer_control.cpp b/vkconfig_core/type_layer_control.cpp index 215540626c..1d3cda04b2 100644 --- a/vkconfig_core/type_layer_control.cpp +++ b/vkconfig_core/type_layer_control.cpp @@ -70,15 +70,3 @@ const char* GetLabel(LayerControl control) { return TABLE[control]; } - -const char* GetDescription(LayerControl control) { - static const char* TOKENS[] = { - "Explicit layers are disabled by default and implicit layers are enabled by default.", // LAYER_CONTROL_AUTO - "Discard the layer, don't notify the Vulkan Loader that this layer exists.", // LAYER_CONTROL_DISCARD - "Enable the layer, ensuring its execution.", // LAYER_CONTROL_ON - "Disable the layer, preventing its execution.", // LAYER_CONTROL_OFF - }; - static_assert(std::size(TOKENS) == LAYER_CONTROL_COUNT); - - return TOKENS[control]; -} diff --git a/vkconfig_core/type_layer_control.h b/vkconfig_core/type_layer_control.h index d090f38080..e6c19e9df2 100644 --- a/vkconfig_core/type_layer_control.h +++ b/vkconfig_core/type_layer_control.h @@ -42,4 +42,3 @@ LayerControl MapToUnordered(LayerControl control); LayerControl GetLayerControl(const char* token); const char* GetToken(LayerControl control); const char* GetLabel(LayerControl control); -const char* GetDescription(LayerControl control); diff --git a/vkconfig_core/type_layers_display_mode.cpp b/vkconfig_core/type_layers_display_mode.cpp new file mode 100644 index 0000000000..30e98660bb --- /dev/null +++ b/vkconfig_core/type_layers_display_mode.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Richard S. Wright Jr. + * - Christophe Riccio + */ + +#include "type_layers_display_mode.h" + +#include +#include + +const char* GetToken(LayersDisplayMode mode) { + static const char* TOKENS[] = { + "all", // LAYERS_DISPLAY_ALL + "explicit", // LAYERS_DISPLAY_EXPLICIT_ONLY + "enabled", // LAYERS_DISPLAY_ENABLED_ONLY + }; + static_assert(std::size(TOKENS) == LAYERS_DISPLAY_COUNT); + + return TOKENS[mode]; +} + +const char* GetLabel(LayersDisplayMode mode) { + static const char* TOKENS[] = { + "Show all available layers", // LAYERS_DISPLAY_ALL + "Bundle default implicit layers", // LAYERS_DISPLAY_EXPLICIT_ONLY + "Show only enabled layers", // LAYERS_DISPLAY_ENABLED_ONLY + }; + static_assert(std::size(TOKENS) == LAYERS_DISPLAY_COUNT); + + return TOKENS[mode]; +} + +LayersDisplayMode GetLayersDisplayMode(const char* token) { + for (int i = LAYERS_DISPLAY_FIRST, l = LAYERS_DISPLAY_LAST; i <= l; ++i) { + const LayersDisplayMode mode = static_cast(i); + if (std::strcmp(::GetToken(mode), token) == 0) { + return mode; + } + } + + return LAYERS_DISPLAY_ALL; +} diff --git a/vkconfig_core/type_layers_display_mode.h b/vkconfig_core/type_layers_display_mode.h new file mode 100644 index 0000000000..0dcc12216c --- /dev/null +++ b/vkconfig_core/type_layers_display_mode.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Richard S. Wright Jr. + * - Christophe Riccio + */ + +#pragma once + +enum LayersDisplayMode { // Enum value can't be changed + LAYERS_DISPLAY_ALL = 0, + LAYERS_DISPLAY_EXPLICIT_ONLY, + LAYERS_DISPLAY_ENABLED_ONLY, + + LAYERS_DISPLAY_FIRST = LAYERS_DISPLAY_ALL, + LAYERS_DISPLAY_LAST = LAYERS_DISPLAY_ENABLED_ONLY +}; + +enum { LAYERS_DISPLAY_COUNT = LAYERS_DISPLAY_LAST - LAYERS_DISPLAY_FIRST + 1 }; + +const char* GetToken(LayersDisplayMode mode); + +const char* GetLabel(LayersDisplayMode mode); + +LayersDisplayMode GetLayersDisplayMode(const char* token); \ No newline at end of file diff --git a/vkconfig_core/type_layers_paths.cpp b/vkconfig_core/type_layers_paths.cpp index a0f607536c..11ee9a9195 100644 --- a/vkconfig_core/type_layers_paths.cpp +++ b/vkconfig_core/type_layers_paths.cpp @@ -33,7 +33,23 @@ const char* GetLabel(LayersPaths Layers_paths_type) { "Vulkan Configurator", // LAYERS_PATHS_GUI "${VULKAN_SDK}", // LAYERS_PATHS_SDK }; - static_assert(std::size(TABLE) == LAYERS_PATHS_COUNT, "The tranlation table size doesn't match the enum number of elements"); + static_assert(std::size(TABLE) == LAYERS_PATHS_COUNT); + + return TABLE[Layers_paths_type]; +} + +LayerType GetLayerType(LayersPaths Layers_paths_type) { + static LayerType TABLE[] = { + LAYER_TYPE_IMPLICIT, // LAYERS_PATHS_IMPLICIT_SYSTEM + LAYER_TYPE_IMPLICIT, // LAYERS_PATHS_IMPLICIT_ENV_SET + LAYER_TYPE_IMPLICIT, // LAYERS_PATHS_IMPLICIT_ENV_ADD + LAYER_TYPE_EXPLICIT, // LAYERS_PATHS_EXPLICIT_SYSTEM + LAYER_TYPE_EXPLICIT, // LAYERS_PATHS_EXPLICIT_ENV_SET + LAYER_TYPE_EXPLICIT, // LAYERS_PATHS_EXPLICIT_ENV_ADD + LAYER_TYPE_EXPLICIT, // LAYERS_PATHS_GUI + LAYER_TYPE_EXPLICIT, // LAYERS_PATHS_SDK + }; + static_assert(std::size(TABLE) == LAYERS_PATHS_COUNT); return TABLE[Layers_paths_type]; } diff --git a/vkconfig_core/type_layers_paths.h b/vkconfig_core/type_layers_paths.h index 2b43cfaf90..6aa990639a 100644 --- a/vkconfig_core/type_layers_paths.h +++ b/vkconfig_core/type_layers_paths.h @@ -39,3 +39,5 @@ enum LayersPaths { enum { LAYERS_PATHS_COUNT = LAYERS_PATHS_LAST - LAYERS_PATHS_FIRST + 1 }; const char* GetLabel(LayersPaths Layers_paths_type); + +LayerType GetLayerType(LayersPaths Layers_paths_type); diff --git a/vkconfig_core/type_stdout_display.cpp b/vkconfig_core/type_stdout_display.cpp new file mode 100644 index 0000000000..b498d09f98 --- /dev/null +++ b/vkconfig_core/type_stdout_display.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Christophe Riccio + */ + +#include "type_stdout_display.h" + +#include +#include + +const char* GetToken(StdoutDisplay mode) { + static const char* TABLE[]{ + "ON_EXIT", // STDOUT_DISPLAY_EXIT + "STREAM", // STDOUT_DISPLAY_STREAM + }; + static_assert(std::size(TABLE) == STDOUT_DISPLAY_COUNT); + + return TABLE[mode - STDOUT_DISPLAY_FIRST]; +} + +StdoutDisplay GetStdoutDiaplay(const char* token) { + for (int i = STDOUT_DISPLAY_FIRST, n = STDOUT_DISPLAY_LAST; i <= n; ++i) { + const StdoutDisplay mode = static_cast(i); + if (std::strcmp(::GetToken(mode), token) == 0) { + return mode; + } + } + + return STDOUT_DISPLAY_FIRST; +} diff --git a/vkconfig_core/type_stdout_display.h b/vkconfig_core/type_stdout_display.h new file mode 100644 index 0000000000..919322744f --- /dev/null +++ b/vkconfig_core/type_stdout_display.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Christophe Riccio + */ + +#pragma once + +enum StdoutDisplay { // Enum value can't be changed + STDOUT_DISPLAY_ON_EXIT = 0, + STDOUT_DISPLAY_STREAM, + + STDOUT_DISPLAY_FIRST = STDOUT_DISPLAY_ON_EXIT, + STDOUT_DISPLAY_LAST = STDOUT_DISPLAY_STREAM +}; + +enum { STDOUT_DISPLAY_COUNT = STDOUT_DISPLAY_LAST - STDOUT_DISPLAY_FIRST + 1 }; + +const char* GetToken(StdoutDisplay mode); +StdoutDisplay GetStdoutDiaplay(const char* token); diff --git a/vkconfig_core/type_tab.cpp b/vkconfig_core/type_tab.cpp index 84913f046b..fbde0f0fc2 100644 --- a/vkconfig_core/type_tab.cpp +++ b/vkconfig_core/type_tab.cpp @@ -25,14 +25,14 @@ const char* GetLabel(TabType type) { static const char* TOKENS[]{ - "Vulkan Layers", // TAB_CONFIGURATIONS - "Vulkan Layers Paths", // TAB_LAYERS - "Vulkan Drivers", // TAB_DRIVERS - "Application Launcher", // TAB_APPLICATIONS - "Diagnostics", // TAB_DIAGNOSTIC - "Documentation", // TAB_DOCUMENTATION - "Preferences", // TAB_PREFERENCES - "About" // TAB_ABOUT + "Vulkan Layers Configuration", // TAB_CONFIGURATIONS + "Vulkan Layers Available", // TAB_LAYERS_PATHS + "Vulkan Drivers", // TAB_DRIVERS + "Application Launcher", // TAB_APPLICATIONS + "Diagnostics", // TAB_DIAGNOSTIC + "Documentation", // TAB_DOCUMENTATION + "Preferences", // TAB_PREFERENCES + "About" // TAB_ABOUT }; static_assert(std::size(TOKENS) == TAB_COUNT, "The tranlation table size doesn't match the enum number of elements"); @@ -43,7 +43,7 @@ const char* GetLabel(TabType type) { const char* GetToken(TabType type) { static const char* TOKENS[]{ "CONFIGURATIONS", // TAB_CONFIGURATIONS - "LAYERS", // TAB_LAYERS + "LAYERS", // TAB_LAYERS_PATHS "DRIVERS", // TAB_DRIVERS "APPLICATIONS", // TAB_APPLICATIONS "DIAGNOSTIC", // TAB_DIAGNOSTIC diff --git a/vkconfig_core/type_tab.h b/vkconfig_core/type_tab.h index 5384844df5..abfcfc177e 100644 --- a/vkconfig_core/type_tab.h +++ b/vkconfig_core/type_tab.h @@ -22,7 +22,7 @@ enum TabType { TAB_CONFIGURATIONS = 0, - TAB_LAYERS, + TAB_LAYERS_PATHS, TAB_DRIVERS, TAB_APPLICATIONS, TAB_DIAGNOSTIC, diff --git a/vkconfig_core/util.cpp b/vkconfig_core/util.cpp index 1f464d59fd..ae9116bfb5 100644 --- a/vkconfig_core/util.cpp +++ b/vkconfig_core/util.cpp @@ -214,6 +214,35 @@ std::vector SplitSpace(const std::string& parse) { return split_result; } +std::vector SplitArgs(const std::string& value) { + std::vector space_splitted = SplitSpace(value); + + std::vector split_result; + + bool previous_value_had_dash = false; + for (std::size_t i = 0, n = space_splitted.size(); i < n; ++i) { + std::string value = space_splitted[i]; + if (value.empty()) { + continue; + } + + if (split_result.empty()) { + split_result.push_back(value); + previous_value_had_dash = value[0] == '-'; + continue; + } + + if (previous_value_had_dash && value[0] != '-') { + split_result[split_result.size() - 1] += " " + value; + } else { + split_result.push_back(value); + previous_value_had_dash = value[0] == '-'; + } + } + + return split_result; +} + std::string Merge(const std::vector& value, const std::string& delimiter) { std::string result; diff --git a/vkconfig_core/util.h b/vkconfig_core/util.h index 69f69ef068..d7b986a78e 100644 --- a/vkconfig_core/util.h +++ b/vkconfig_core/util.h @@ -65,12 +65,14 @@ bool IsStringFound(const std::vector& list, const std::string& valu std::string TrimString(const std::string& str, const std::string& whitespaces = " \t"); -std::string TrimSurroundingWhitespace(const std::string& str, const std::string& whitespaces = " \"\t\n\r"); +std::string TrimSurroundingWhitespace(const std::string& str, const std::string& whitespaces = " \t\n\r"); std::vector Split(const std::string& value, const std::string& delimiter); std::vector SplitSpace(const std::string& value); +std::vector SplitArgs(const std::string& value); + std::string Merge(const std::vector& value, const std::string& delimiter); std::vector ConvertString(const QStringList& string_list); diff --git a/vkconfig_core/version.cpp b/vkconfig_core/version.cpp index f72ed2a375..6effd0a1db 100644 --- a/vkconfig_core/version.cpp +++ b/vkconfig_core/version.cpp @@ -28,7 +28,7 @@ #include #include -const Version Version::VKCONFIG(3, 4, 3); +const Version Version::VKCONFIG(3, 5, 1); const Version Version::VKHEADER(VK_HEADER_VERSION_COMPLETE); const Version Version::NONE(0, 0, 0); const Version Version::LATEST(~0, ~0, ~0); diff --git a/vkconfig_core/vulkan_util.cpp b/vkconfig_core/vulkan_util.cpp index 3d66bc3e0b..3215294118 100644 --- a/vkconfig_core/vulkan_util.cpp +++ b/vkconfig_core/vulkan_util.cpp @@ -35,6 +35,9 @@ std::string GetUUIDString(const uint8_t deviceUUID[VK_UUID_SIZE]) { for (std::size_t i = 0, n = VK_UUID_SIZE; i < n; ++i) { result += format("%02X", deviceUUID[i]); + if (i == 3 || i == 5 || i == 7) { + result += "-"; + } } return result; diff --git a/vkconfig_gui/CHANGELOG.md b/vkconfig_gui/CHANGELOG.md index 954becc862..a3695103d0 100644 --- a/vkconfig_gui/CHANGELOG.md +++ b/vkconfig_gui/CHANGELOG.md @@ -1,9 +1,50 @@ -## Vulkan Configurator 3.4.3 - May 2026 -[Vulkan SDK 1.4.3XX.0](https://github.com/LunarG/VulkanTools/tree/main) +## Vulkan Configurator 3.5.1 - July 2026 + +### Fixes: +- Fix dark mode message on Linux showing when not expected + +## Vulkan Configurator 3.5.0 - May 2026 +[Vulkan SDK 1.4.350.0](https://github.com/LunarG/VulkanTools/tree/vulkan-sdk-1.4.350) + +### Features: +- Add selecting Vulkan Layers configuration from system tray +- Add selecting Vullan physical device from system tray +- Add enabling Vullan loader log from system tray +- Add Vulkan Drivers override mode for no physical device ### Improvements: +- Clarify UI to clarify what is overridden by Vulkan Configurator: Layers, Devices, Loader log - Improve generated layer settings C++ library to output to code for `vulkan.hpp` - Clean up generated layer settings C++ library for less friction on use +- Add preferences settings to show "Vulkan Executables Scope" +- Add `vkconfig.json` backup when doing a "Reset To Default" #2570 +- Add "Discard Ordering and Enabling Layers" default configuration #2596 +- Improve Vulkan drivers loading, add all drivers in a part at once +- Refactor layers tab to display layer sorted by name and enabling them individually +- Add layer search bar in layer tab +- Show paths instead of Vulkan Configurator variables +- Improve UI consistency +- Move 'Validate Layer Manifest' settings to the preference tab +- Improve keyboard shortcuts +- Add layer display option to show only explicit layers #2636 +- Add enabled and ordered layers to generated configuration files #2634 #2565 +- Improve "search" usability with highligher +- Add layer messages only on specified platforms #2650 +- Improve application launcher log stream speed + +### Fixes: +- Fix command line whitespace decoding #2625 +- Fix application launcher 'options' edit #2598 +- Fix "Vulkan Layers Located by Vulkan Applications" tooltips #2595 +- Fix "discard" layer control tooltip #2595 +- Fix "Validation with API Dump log" configuration not loaded +- Fix high CPU usage on idle when no layers configuration is active #2603 +- Fix UUID display in log, following the RFC9562 standard +- Fix icon to remove a Vulkan driver +- Fix key binding shortcuts (Eg: CTRL+F to search things on various tabs) +- Fix `VK_LAYER_NV_present` or `VK_LAYER_NV_optimus` not found #2597 +- Fix per-layer settings checkbox to prevent writing the settings being ignored +- Fix missing layer setting status to setting group type ## Vulkan Configurator 3.4.2 - Febuary 2026 [Vulkan SDK 1.4.341.0](https://github.com/LunarG/VulkanTools/tree/vulkan-sdk-1.4.341) @@ -25,7 +66,7 @@ - Add `settings --layers` command lines option to list multiple layer names when generating files - Add Validation and API Dump default configuration for interleaved log in stdout - Add diagnostic log refresh button -- Add layer settings reset to default values button +- Add layer settings reset to default values button #2573 - Improved UI to set an external `vk_layer_settings.txt` file - Improved "View Enabled Layers" and "Configure All Layers" UI - Add buttons to open Vulkan SDK directories in diagnostics tab #2585 diff --git a/vkconfig_gui/README.md b/vkconfig_gui/README.md index e4af9ee31b..c3ae8c88d0 100644 --- a/vkconfig_gui/README.md +++ b/vkconfig_gui/README.md @@ -35,40 +35,44 @@ Vulkan Configurator is designed around multiple tabs, each dedicated to specific ### Vulkan Layers Configuration tab -This tab allows configuring Vulkan layers. This includes enabling and specifying the Vulkan layers order on the Vulkan developers matching. Each layer can be configure using the Vulkan Layers settings. +This tab allows configuring Vulkan layers. This includes enabling and ordering Vulkan layers executed by the Vulkan applications. Each layer can be configure using the Vulkan Layers settings. -

+

The context menu of the layers configuration allows generating layer settings files of all types: documentation, `vk_layer_settings.txt`, environment variables scripts and `VK_EXT_layer_settings` C++ helper library. -### Vulkan Layers Paths tab +### Vulkan Layers Available tab This tab allows adding additional Vulkan layers, potentially Vulkan versions of the same Vulkan layer. -

+

### Vulkan Drivers tab This tab allows adding Vulkan drivers but also either sorting or forcing Vulkan physical devices to all Vulkan applications. -

+

-### Vulkan Applications tab +### Application Launcher tab This tab is an application launcher enabling to quickly test Vulkan system changes. -

+

### Vulkan Diagnostics tab -This tab allows generating multiple log, including Vulkan loader log, Vulkan loader configuration, Vulkaninfo, etc. These logs can be exported and shared for examples to submit issues on Vulkan github repository. +This tab allows generating multiple log, including Vulkan loader log, Vulkan loader configuration, Vulkaninfo, etc. These logs can be exported and shared, for examples, to submit issues on Vulkan github repositories. -

+

### Vulkan Documentation tab +This tab allows accessing common Vulkan documentation including Vulkan specification and Vulkan SDK documentation. +

### Vulkan Preferences tab +This tab allows tayloring Vulkan Configurator UI and behavior to Vulkan developers preferences. +

diff --git a/vkconfig_gui/combo_box.h b/vkconfig_gui/combo_box.h index 828ae3d671..0b2550f9df 100644 --- a/vkconfig_gui/combo_box.h +++ b/vkconfig_gui/combo_box.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/highlighter.cpp b/vkconfig_gui/highlighter.cpp new file mode 100644 index 0000000000..4400d17e8f --- /dev/null +++ b/vkconfig_gui/highlighter.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Christophe Riccio + */ + +#include "highlighter.h" +#include "tab.h" + +Highlighter::Highlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) { + this->format.setFontWeight(QFont::ExtraBold); + this->format.setFontUnderline(true); + this->format.setUnderlineStyle(QTextCharFormat::WaveUnderline); +} + +void Highlighter::setColor(const QColor &color) { + this->format.setBackground(color); + this->Update(); +} + +void Highlighter::setSearch(const QString &text) { + this->search = text; + this->Update(); +} + +void Highlighter::setCase(bool enabled) { + this->search_case = enabled; + this->Update(); +} + +void Highlighter::setWhole(bool enabled) { + this->search_whole = enabled; + this->Update(); +} + +void Highlighter::setRegex(bool enabled) { + this->search_regex = enabled; + this->Update(); +} + +void Highlighter::Update() { + this->pattern = QRegularExpression( + this->search, this->search_case ? QRegularExpression::NoPatternOption : QRegularExpression::CaseInsensitiveOption); + this->rehighlight(); +} + +void Highlighter::highlightBlock(const QString &text) { + QRegularExpressionMatchIterator matchIterator = this->pattern.globalMatch(text); + while (matchIterator.hasNext()) { + QRegularExpressionMatch match = matchIterator.next(); + this->setFormat(match.capturedStart(), match.capturedLength(), this->format); + } +} diff --git a/vkconfig_gui/highlighter.h b/vkconfig_gui/highlighter.h new file mode 100644 index 0000000000..f96a22fdc6 --- /dev/null +++ b/vkconfig_gui/highlighter.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Christophe Riccio + */ + +#pragma once + +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QTextDocument; +QT_END_NAMESPACE + +class Highlighter : public QSyntaxHighlighter { + Q_OBJECT + + public: + Highlighter(QTextDocument *parent = nullptr); + + void setColor(const QColor &color); + void setSearch(const QString &text); + void setCase(bool enabled); + void setWhole(bool enabled); + void setRegex(bool enabled); + + protected: + void highlightBlock(const QString &text) override; + + private: + void Update(); + + QString search; + bool search_case = false; + bool search_whole = false; + bool search_regex = false; + + QRegularExpression pattern; + QTextCharFormat format; +}; diff --git a/vkconfig_gui/images/1-vulkan-layers-configuration.gif b/vkconfig_gui/images/1-vulkan-layers-configuration.gif new file mode 100644 index 0000000000..654d635a22 Binary files /dev/null and b/vkconfig_gui/images/1-vulkan-layers-configuration.gif differ diff --git a/vkconfig_gui/images/2-vulkan-layers-available.gif b/vkconfig_gui/images/2-vulkan-layers-available.gif new file mode 100644 index 0000000000..20ab519757 Binary files /dev/null and b/vkconfig_gui/images/2-vulkan-layers-available.gif differ diff --git a/vkconfig_gui/images/3-vulkan-drivers.gif b/vkconfig_gui/images/3-vulkan-drivers.gif new file mode 100644 index 0000000000..c5bfddaec5 Binary files /dev/null and b/vkconfig_gui/images/3-vulkan-drivers.gif differ diff --git a/vkconfig_gui/images/4-application-launcher.gif b/vkconfig_gui/images/4-application-launcher.gif new file mode 100644 index 0000000000..7f35308fda Binary files /dev/null and b/vkconfig_gui/images/4-application-launcher.gif differ diff --git a/vkconfig_gui/images/5-diagnostics.gif b/vkconfig_gui/images/5-diagnostics.gif new file mode 100644 index 0000000000..a29a2dbfa7 Binary files /dev/null and b/vkconfig_gui/images/5-diagnostics.gif differ diff --git a/vkconfig_gui/images/6-documentation.png b/vkconfig_gui/images/6-documentation.png index fa0dbcfc0e..eec5ee6fa4 100644 Binary files a/vkconfig_gui/images/6-documentation.png and b/vkconfig_gui/images/6-documentation.png differ diff --git a/vkconfig_gui/images/7-preferences.png b/vkconfig_gui/images/7-preferences.png index c83baf2356..2e1b385638 100644 Binary files a/vkconfig_gui/images/7-preferences.png and b/vkconfig_gui/images/7-preferences.png differ diff --git a/vkconfig_gui/main.cpp b/vkconfig_gui/main.cpp index adaeb92c69..9466e0f8d0 100644 --- a/vkconfig_gui/main.cpp +++ b/vkconfig_gui/main.cpp @@ -110,7 +110,9 @@ int main(int argc, char* argv[]) { QMessageBox alert; alert.QDialog::setWindowTitle("Vulkan Configurator failed to start..."); alert.setText("Could not find a Vulkan Loader. Please install the Vulkan SDK."); - alert.setInformativeText("https://vulkan.lunarg.com/sdk/home"); + alert.setInformativeText( + "For more information: Read the Vulkan SDK 'Getting Started' " + "documentation"); alert.setIcon(QMessageBox::Critical); alert.exec(); return -1; diff --git a/vkconfig_gui/mainwindow.cpp b/vkconfig_gui/mainwindow.cpp index 78b691870b..2daa389fb1 100644 --- a/vkconfig_gui/mainwindow.cpp +++ b/vkconfig_gui/mainwindow.cpp @@ -20,6 +20,7 @@ */ #include "mainwindow.h" +#include "style.h" #include "../vkconfig_core/configurator.h" #include "../vkconfig_core/util.h" @@ -40,23 +41,19 @@ #include #include #include +#include +#include +#include #include MainWindow::MainWindow(QApplication &app, QWidget *parent) - : QMainWindow(parent), - _tray_icon(nullptr), - _tray_icon_menu(nullptr), - _tray_restore_action(nullptr), - _tray_layers{nullptr, nullptr, nullptr, nullptr}, - _tray_quit_action(nullptr), - app(app), - ui(new Ui::MainWindow) { + : QMainWindow(parent), _tray_icon(nullptr), app(app), ui(new Ui::MainWindow) { ui->setupUi(this); this->tabs[TAB_DIAGNOSTIC].reset(new TabDiagnostics(*this, ui)); this->tabs[TAB_APPLICATIONS].reset(new TabApplications(*this, ui)); - this->tabs[TAB_LAYERS].reset(new TabLayers(*this, ui)); + this->tabs[TAB_LAYERS_PATHS].reset(new TabLayers(*this, ui)); this->tabs[TAB_CONFIGURATIONS].reset(new TabConfigurations(*this, ui)); this->tabs[TAB_DOCUMENTATION].reset(new TabDocumentation(*this, ui)); this->tabs[TAB_DRIVERS].reset(new TabDrivers(*this, ui)); @@ -77,8 +74,10 @@ MainWindow::MainWindow(QApplication &app, QWidget *parent) } this->ui->tab_widget->setCurrentIndex(configurator.active_tab); + this->ui->tab_widget->installEventFilter(this); + + this->connect(ui->tab_widget, SIGNAL(currentChanged(int)), this, SLOT(on_tab_widget_currentChanged(int))); - this->InitTray(); this->UpdateUI(UPDATE_REBUILD_UI); configurator.Override(OVERRIDE_AREA_ALL); @@ -103,66 +102,257 @@ void MainWindow::UpdateUI(UpdateUIMode mode) { this->UpdateUI_Status(); } -void MainWindow::InitTray() { - if (QSystemTrayIcon::isSystemTrayAvailable()) { - this->_tray_quit_action = new QAction("&Quit", this); - this->connect(this->_tray_quit_action, &QAction::triggered, qApp, &QCoreApplication::quit); - this->_tray_restore_action = new QAction("Open &Vulkan Configurator", this); - this->connect(this->_tray_restore_action, &QAction::triggered, this, &MainWindow::trayActionRestore); - - this->_tray_icon_menu = new QMenu(this); - this->_tray_icon_menu->addAction(this->_tray_restore_action); - this->_tray_icon_menu->addSeparator(); - for (int i = 0, n = EXECUTABLE_SCOPE_COUNT; i < n; ++i) { - this->_tray_layers[i] = new QAction(::GetLabel(static_cast(i)), this); - this->_tray_layers[i]->setCheckable(true); - this->_tray_icon_menu->addAction(this->_tray_layers[i]); - } - - this->connect(this->_tray_layers[EXECUTABLE_NONE], &QAction::toggled, this, &MainWindow::on_tray_none); - this->connect(this->_tray_layers[EXECUTABLE_ANY], &QAction::toggled, this, &MainWindow::on_tray_any); - this->connect(this->_tray_layers[EXECUTABLE_ALL], &QAction::toggled, this, &MainWindow::on_tray_all); - this->connect(this->_tray_layers[EXECUTABLE_PER], &QAction::toggled, this, &MainWindow::on_tray_per); - - this->_tray_icon_menu->addSeparator(); - this->_tray_icon_menu->addAction(this->_tray_quit_action); - this->_tray_icon = new QSystemTrayIcon(this); - this->_tray_icon->setContextMenu(this->_tray_icon_menu); - this->_tray_icon->show(); - this->connect(this->_tray_icon, &QSystemTrayIcon::activated, this, &MainWindow::iconActivated); - } -} - void MainWindow::UpdateUI_Status() { const Configurator &configurator = Configurator::Get(); this->setWindowTitle(GetMainWindowTitle().c_str()); + if (QSystemTrayIcon::isSystemTrayAvailable()) { - for (int i = 0, n = EXECUTABLE_SCOPE_COUNT; i < n; ++i) { - this->_tray_layers[i]->blockSignals(true); - this->_tray_layers[i]->setChecked(configurator.GetExecutableScope() == i); - this->_tray_layers[i]->blockSignals(false); + // Device + { + QMenu *menu = new QMenu(this); + QSignalMapper *mapper_device = new QSignalMapper(menu); + QSignalMapper *mapper_layers = new QSignalMapper(menu); + + QAction *tray_restore_action = new QAction("&Show Vulkan Configurator UI", this); + tray_restore_action->setIcon(QIcon(":/resourcefiles/vkconfig-on.png")); + QFont font = tray_restore_action->font(); + font.setBold(true); + tray_restore_action->setFont(font); + this->connect(tray_restore_action, &QAction::triggered, this, &MainWindow::OnTrayActionShow); + menu->addAction(tray_restore_action); + + menu->addSeparator(); + const bool enabled_device = configurator.driver_override_enabled; + + QAction *tray_override = new QAction("Override System Vulkan &Device with:", this); + tray_override->setFont(font); + tray_override->setCheckable(true); + tray_override->setChecked(enabled_device); + + this->connect(tray_override, &QAction::toggled, this, &MainWindow::OnTrayActionOverrideDevice); + menu->addAction(tray_override); + + for (std::size_t i = 0, n = configurator.vulkan_system_info.physicalDevices.size(); i < n; ++i) { + const VulkanPhysicalDeviceInfo &info = configurator.vulkan_system_info.physicalDevices[i]; + const DeviceInfo &device_info = ::GetDeviceInfo(info); + + QAction *action = new QAction(format("%s (%s)", info.GetLabel().c_str(), info.GetVersion().c_str()).c_str()); + action->setCheckable(true); + action->setChecked(device_info == configurator.driver_override_info); + action->setEnabled(enabled_device); + + menu->addAction(action); + + this->connect(action, SIGNAL(triggered()), mapper_device, SLOT(map())); + mapper_device->setMapping(action, i); + } + + this->connect(mapper_device, &QSignalMapper::mappedInt, this, &MainWindow::OnDeviceChanged); + + menu->addSeparator(); + const bool enabled_layers = configurator.layers_override_enabled && configurator.GetExecutableScope() != EXECUTABLE_PER; + + QAction *tray_override_layers = new QAction("Override System Vulkan &Layers Configuration with:", this); + tray_override_layers->setFont(font); + tray_override_layers->setCheckable(true); + tray_override_layers->setChecked(enabled_layers); + + this->connect(tray_override_layers, &QAction::toggled, this, &MainWindow::OnTrayActionOverrideLayers); + menu->addAction(tray_override_layers); + + for (std::size_t i = 0, n = configurator.configurations.available_configurations.size(); i < n; ++i) { + const Configuration &configuration = configurator.configurations.available_configurations[i]; + + QAction *action = new QAction(configuration.key.c_str(), this); + action->setCheckable(true); + action->setChecked(configuration.key == configurator.GetSelectedGlobalConfiguration()); + action->setEnabled(enabled_layers); + + menu->addAction(action); + + this->connect(action, SIGNAL(triggered()), mapper_layers, SLOT(map())); + mapper_layers->setMapping(action, i); + } + + this->connect(mapper_layers, &QSignalMapper::mappedInt, this, &MainWindow::OnLayersChanged); + + menu->addSeparator(); + + QAction *tray_override_loader = new QAction("Override System Vulkan Loader Log", this); + tray_override_loader->setFont(font); + tray_override_loader->setCheckable(true); + tray_override_loader->setChecked(configurator.loader_log_enabled); + this->connect(tray_override_loader, &QAction::toggled, this, &MainWindow::OnTrayActionOverrideLog); + menu->addAction(tray_override_loader); + + menu->addSeparator(); + + QAction *tray_quit_action = new QAction("&Quit Vulkan Configurator", this); + tray_quit_action->setIcon(::Get(configurator.current_theme_mode, ::ICON_EXIT)); + tray_quit_action->setFont(font); + this->connect(tray_quit_action, &QAction::triggered, qApp, &QCoreApplication::quit); + menu->addAction(tray_quit_action); + + if (this->_tray_icon != nullptr) { + delete this->_tray_icon; + } + + this->_tray_icon = new QSystemTrayIcon(this); + this->_tray_icon->setContextMenu(menu); + this->_tray_icon->show(); + this->connect(this->_tray_icon, &QSystemTrayIcon::activated, this, &MainWindow::OnIconActivated); + + if (configurator.layers_override_enabled || configurator.driver_override_enabled || configurator.loader_log_enabled) { + this->_tray_icon->setIcon(QIcon(":/resourcefiles/vkconfig-on.png")); + } else { + this->_tray_icon->setIcon(QIcon(":/resourcefiles/vkconfig-off.png")); + } } } - if (configurator.GetExecutableScope() != EXECUTABLE_NONE) { - const QIcon icon(":/resourcefiles/vkconfig-on.png"); - this->setWindowIcon(icon); + /* if (QSystemTrayIcon::isSystemTrayAvailable()) { - this->_tray_icon->setIcon(icon); - this->_tray_icon->setToolTip("Layers controlled by the Vulkan Configurator"); + // Layers + { + QMenu *menu_layers = new QMenu(this); + QSignalMapper *mapper = new QSignalMapper(this); + + QAction *tray_restore_action = new QAction("&Show Vulkan Configurator UI", this); + tray_restore_action->setIcon(QIcon(":/resourcefiles/vkconfig-on.png")); + QFont font = tray_restore_action->font(); + font.setBold(true); + tray_restore_action->setFont(font); + this->connect(tray_restore_action, &QAction::triggered, this, &MainWindow::OnTrayActionShow); + menu_layers->addAction(tray_restore_action); + + menu_layers->addSeparator(); + const bool enabled_layers = configurator.layers_override_enabled && configurator.GetExecutableScope() != + EXECUTABLE_PER; + + QAction *tray_override_layers = new QAction("Override System Vulkan &Layers Configuration with:", this); + tray_override_layers->setFont(font); + tray_override_layers->setCheckable(true); + tray_override_layers->setChecked(enabled_layers); + + this->connect(tray_override_layers, &QAction::toggled, this, &MainWindow::OnTrayActionOverrideLayers); + menu_layers->addAction(tray_override_layers); + + for (std::size_t i = 0, n = configurator.configurations.available_configurations.size(); i < n; ++i) { + const Configuration &configuration = configurator.configurations.available_configurations[i]; + + QAction *action = new QAction(configuration.key.c_str(), this); + action->setCheckable(true); + action->setChecked(configuration.key == configurator.GetSelectedGlobalConfiguration()); + action->setEnabled(enabled_layers); + + // this->connect(action, &QAction::toggled, this, &MainWindow::OnTrayActionOverrideLayers); + menu_layers->addAction(action); + + this->connect(action, SIGNAL(triggered()), mapper, SLOT(map())); + mapper->setMapping(action, i); + } + + this->connect(mapper, &QSignalMapper::mappedInt, this, &MainWindow::OnLayersChanged); + + menu_layers->addSeparator(); + + QAction *tray_quit_action = new QAction("&Quit Vulkan Configurator", this); + tray_quit_action->setIcon(::Get(configurator.current_theme_mode, ::ICON_EXIT)); + tray_quit_action->setFont(font); + this->connect(tray_quit_action, &QAction::triggered, qApp, &QCoreApplication::quit); + menu_layers->addAction(tray_quit_action); + + if (this->_tray_icon_layers != nullptr) { + delete this->_tray_icon_layers; + } + + this->_tray_icon_layers = new QSystemTrayIcon(this); + this->_tray_icon_layers->setContextMenu(menu_layers); + this->_tray_icon_layers->show(); + this->connect(this->_tray_icon_layers, &QSystemTrayIcon::activated, this, &MainWindow::OnIconActivated); + + if (configurator.layers_override_enabled) { + this->_tray_icon_layers->setIcon(::Get(configurator.current_theme_mode, ::ICON_LAYERS_ON)); + } else { + this->_tray_icon_layers->setIcon(::Get(configurator.current_theme_mode, ::ICON_LAYERS_OFF)); + } + } + + // Device + { + QMenu *menu = new QMenu(this); + QSignalMapper *mapper = new QSignalMapper(this); + + QAction *tray_restore_action = new QAction("&Show Vulkan Configurator UI", this); + tray_restore_action->setIcon(QIcon(":/resourcefiles/vkconfig-on.png")); + QFont font = tray_restore_action->font(); + font.setBold(true); + tray_restore_action->setFont(font); + this->connect(tray_restore_action, &QAction::triggered, this, &MainWindow::OnTrayActionShow); + menu->addAction(tray_restore_action); + + menu->addSeparator(); + const bool enabled_device = configurator.driver_override_enabled; + + QAction *tray_override = new QAction("Override System Vulkan &Device with:", this); + tray_override->setFont(font); + tray_override->setCheckable(true); + tray_override->setChecked(enabled_device); + + this->connect(tray_override, &QAction::toggled, this, &MainWindow::OnTrayActionOverrideDevice); + menu->addAction(tray_override); + + for (std::size_t i = 0, n = configurator.vulkan_system_info.physicalDevices.size(); i < n; ++i) { + const VulkanPhysicalDeviceInfo &info = configurator.vulkan_system_info.physicalDevices[i]; + const DeviceInfo &device_info = ::GetDeviceInfo(info); + + QAction *action = new QAction(format("%s (%s)", info.GetLabel().c_str(), info.GetVersion().c_str()).c_str()); + action->setCheckable(true); + action->setChecked(device_info == configurator.driver_override_info); + action->setEnabled(enabled_device); + + menu->addAction(action); + + this->connect(action, SIGNAL(triggered()), mapper, SLOT(map())); + mapper->setMapping(action, i); + } + + this->connect(mapper, &QSignalMapper::mappedInt, this, &MainWindow::OnDeviceChanged); + + menu->addSeparator(); + + QAction *tray_quit_action = new QAction("&Quit Vulkan Configurator", this); + tray_quit_action->setIcon(::Get(configurator.current_theme_mode, ::ICON_EXIT)); + tray_quit_action->setFont(font); + this->connect(tray_quit_action, &QAction::triggered, qApp, &QCoreApplication::quit); + menu->addAction(tray_quit_action); + + if (this->_tray_icon_device != nullptr) { + delete this->_tray_icon_device; + } + + this->_tray_icon_device = new QSystemTrayIcon(this); + this->_tray_icon_device->setContextMenu(menu); + this->_tray_icon_device->show(); + this->connect(this->_tray_icon_device, &QSystemTrayIcon::activated, this, &MainWindow::OnIconActivated); + + if (configurator.driver_override_enabled) { + this->_tray_icon_device->setIcon(::Get(configurator.current_theme_mode, ::ICON_DEVICE_ON)); + } else { + this->_tray_icon_device->setIcon(::Get(configurator.current_theme_mode, ::ICON_DEVICE_OFF)); + } + } } + */ + if (configurator.layers_override_enabled || configurator.driver_override_enabled) { + this->setWindowIcon(QIcon(":/resourcefiles/vkconfig-on.png")); } else { - const QIcon icon(":/resourcefiles/vkconfig-off.png"); - this->setWindowIcon(icon); - if (QSystemTrayIcon::isSystemTrayAvailable()) { - this->_tray_icon->setIcon(icon); - this->_tray_icon->setToolTip("Layers controlled by the Vulkan Applications"); - } + this->setWindowIcon(QIcon(":/resourcefiles/vkconfig-off.png")); } } -void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) { +void MainWindow::OnIconActivated(QSystemTrayIcon::ActivationReason reason) { switch (reason) { default: break; @@ -182,50 +372,56 @@ void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) { } } -void MainWindow::trayActionRestore() { +void MainWindow::OnTrayActionShow() { this->hide(); this->showNormal(); this->UpdateUI(UPDATE_REBUILD_UI); } -void MainWindow::on_tray_none(bool checked) { - if (checked) { - Configurator &configurator = Configurator::Get(); - configurator.SetExecutableScope(EXECUTABLE_NONE); - configurator.Override(OVERRIDE_AREA_ALL); +void MainWindow::OnTrayActionOverrideLayers(bool toggled) { + Configurator &configurator = Configurator::Get(); + configurator.layers_override_enabled = toggled; + configurator.Override(OVERRIDE_AREA_ALL); - this->UpdateUI(UPDATE_REBUILD_UI); - } + this->tabs[TAB_CONFIGURATIONS]->UpdateUI(UPDATE_REBUILD_UI); + this->UpdateUI(UPDATE_REBUILD_UI); } -void MainWindow::on_tray_any(bool checked) { - if (checked) { - Configurator &configurator = Configurator::Get(); - configurator.SetExecutableScope(EXECUTABLE_ANY); - configurator.Override(OVERRIDE_AREA_ALL); +void MainWindow::OnLayersChanged(int index) { + Configurator &configurator = Configurator::Get(); + configurator.SetActiveConfigurationName(configurator.configurations.available_configurations[index].key); + configurator.Override(OVERRIDE_AREA_ALL); - this->UpdateUI(UPDATE_REBUILD_UI); - } + this->tabs[TAB_CONFIGURATIONS]->UpdateUI(UPDATE_REBUILD_UI); + this->UpdateUI(UPDATE_REBUILD_UI); } -void MainWindow::on_tray_all(bool checked) { - if (checked) { - Configurator &configurator = Configurator::Get(); - configurator.SetExecutableScope(EXECUTABLE_ALL); - configurator.Override(OVERRIDE_AREA_ALL); +void MainWindow::OnTrayActionOverrideDevice(bool toggled) { + Configurator &configurator = Configurator::Get(); + configurator.driver_override_mode = DRIVER_MODE_SINGLE; + configurator.driver_override_enabled = toggled; + configurator.Override(OVERRIDE_AREA_LOADER_SETTINGS_BIT); - this->UpdateUI(UPDATE_REBUILD_UI); - } + this->tabs[TAB_DRIVERS]->UpdateUI(UPDATE_REBUILD_UI); + this->UpdateUI(UPDATE_REBUILD_UI); } -void MainWindow::on_tray_per(bool checked) { - if (checked) { - Configurator &configurator = Configurator::Get(); - configurator.SetExecutableScope(EXECUTABLE_PER); - configurator.Override(OVERRIDE_AREA_ALL); +void MainWindow::OnDeviceChanged(int index) { + Configurator &configurator = Configurator::Get(); + configurator.driver_override_info = ::GetDeviceInfo(configurator.vulkan_system_info.physicalDevices[index]); + configurator.Override(OVERRIDE_AREA_LOADER_SETTINGS_BIT); - this->UpdateUI(UPDATE_REBUILD_UI); - } + this->tabs[TAB_DRIVERS]->UpdateUI(UPDATE_REBUILD_UI); + this->UpdateUI(UPDATE_REBUILD_UI); +} + +void MainWindow::OnTrayActionOverrideLog(bool toggled) { + Configurator &configurator = Configurator::Get(); + configurator.loader_log_enabled = toggled; + configurator.Override(OVERRIDE_AREA_LOADER_SETTINGS_BIT); + + this->tabs[TAB_DIAGNOSTIC]->UpdateUI(UPDATE_REBUILD_UI); + this->UpdateUI(UPDATE_REBUILD_UI); } /// The only thing we need to do here is clear the configuration if @@ -241,7 +437,7 @@ void MainWindow::closeEvent(QCloseEvent *event) { if (!(configurator.Get(HIDE_MESSAGE_USE_SYSTEM_TRAY))) { std::string shut_down_state; - if (configurator.GetExecutableScope() != EXECUTABLE_NONE) { + if (configurator.layers_override_enabled) { shut_down_state = "Vulkan Layers override will remain in effect while Vulkan Configurator remain active in the system tray."; } else { @@ -295,7 +491,7 @@ void MainWindow::showEvent(QShowEvent *event) { bool MainWindow::eventFilter(QObject *target, QEvent *event) { if (this->tabs[this->ui->tab_widget->currentIndex()] == nullptr) { - return false; + return true; } return this->tabs[this->ui->tab_widget->currentIndex()]->EventFilter(target, event); @@ -315,5 +511,33 @@ void MainWindow::on_tab_widget_currentChanged(int index) { Configurator &configurator = Configurator::Get(); configurator.active_tab = static_cast(index); + switch (configurator.active_tab) { + case TAB_CONFIGURATIONS: { + } break; + case TAB_LAYERS_PATHS: { + // QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->tab_widget); + // this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); + + // QShortcut *shortcut_open = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_O), this->ui->layers_list); + // this->connect(shortcut_open, SIGNAL(activated()), this, SLOT(on_layers_browse_pressed())); + } break; + case TAB_DRIVERS: { + // QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->tab_widget); + // this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); + } break; + case TAB_APPLICATIONS: { + // QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->tab_widget); + // this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); + } break; + case TAB_DIAGNOSTIC: { + } break; + case TAB_DOCUMENTATION: { + } break; + case TAB_PREFERENCES: { + } break; + case TAB_ABOUT: { + } break; + } + this->tabs[index]->UpdateUI(UPDATE_REBUILD_UI); } diff --git a/vkconfig_gui/mainwindow.h b/vkconfig_gui/mainwindow.h index 5bca6d87c9..2c08ede66c 100644 --- a/vkconfig_gui/mainwindow.h +++ b/vkconfig_gui/mainwindow.h @@ -39,7 +39,7 @@ #include #include -#include +#include class MainWindow : public QMainWindow { Q_OBJECT @@ -57,33 +57,26 @@ class MainWindow : public QMainWindow { void changeEvent(QEvent *event) override; QSystemTrayIcon *_tray_icon = nullptr; - QMenu *_tray_icon_menu = nullptr; - QAction *_tray_restore_action = nullptr; - std::array _tray_layers; - QAction *_tray_quit_action = nullptr; - - private slots: - void trayActionRestore(); - void on_tray_none(bool checked); - void on_tray_any(bool checked); - void on_tray_all(bool checked); - void on_tray_per(bool checked); - - void iconActivated(QSystemTrayIcon::ActivationReason reason); public Q_SLOTS: void commitDataRequest(QSessionManager &manager); void on_tab_widget_currentChanged(int index); + void OnIconActivated(QSystemTrayIcon::ActivationReason reason); + void OnTrayActionShow(); + void OnTrayActionOverrideLayers(bool toggled); + void OnTrayActionOverrideDevice(bool toggled); + void OnTrayActionOverrideLog(bool toggled); + void OnLayersChanged(int index); + void OnDeviceChanged(int index); + void UpdateUI_Status(); private: MainWindow(const MainWindow &) = delete; MainWindow &operator=(const MainWindow &) = delete; - void InitTray(); - public: QApplication &app; diff --git a/vkconfig_gui/mainwindow.ui b/vkconfig_gui/mainwindow.ui index 6d343c0eec..9e36a9d1ba 100644 --- a/vkconfig_gui/mainwindow.ui +++ b/vkconfig_gui/mainwindow.ui @@ -91,7 +91,7 @@ QTabWidget::Rounded - 7 + 0 @@ -120,10 +120,26 @@ 0 - - + + + + Arial + 10 + true + + + + Toggle to control the Vulkan Layers used by running Vulkan Executables (Ctrl+Space) + + + + Configure System Vulkan Layers + + + true + 11 @@ -208,7 +224,10 @@ - Vulkan Layers Configuration Scope: + Vulkan Executables Scope: + + + false @@ -888,6 +907,13 @@ + + + Arial + 10 + true + + false @@ -897,9 +923,9 @@ Locate Vulkan Layers versions - + - 0 + 7 5 @@ -914,9 +940,25 @@ 5 - + + + + Arial + 10 + true + + + + List of Vulkan Layers found on the system + - + Vulkan Layers located on the system + + + false + + + false @@ -946,18 +988,54 @@ 0 - + + + + 0 + 0 + + 16777215 24 + + + Arial + 10 + false + + + + Enter search text to filter layers in the list... (Ctrl+F) + + + Enter search text to filter layers in the list... (Ctrl+F) + + + + + + + + 24 + 24 + + + + + Arial + 10 + false + + - Check to validate the layer manifests wheen adding a user path. This may take some time... + Clear layer filter - Validate Layer Manifests + @@ -981,6 +1059,25 @@ 24 + + + 0 + 24 + + + + + 0 + 24 + + + + + Arial + 10 + false + + 24 @@ -990,6 +1087,9 @@ false + + QProgressBar::BottomToTop + Loading layers... %p% @@ -997,6 +1097,12 @@ + + + 0 + 0 + + 0 @@ -1009,8 +1115,18 @@ 24 + + + Arial + 10 + false + + + + Add a Vulkan Layer manifests path... (Ctrl+O) + - Enter a Vulkan layers directory to control them in Vulkan Configurator + Add a Vulkan Layer manifests path... (Ctrl+O) @@ -1034,8 +1150,15 @@ 24 + + + Arial + 10 + false + + - Append a user-defined layers path + Add Additional Layers (CTRL+O) @@ -1068,8 +1191,15 @@ 24 + + + Arial + 10 + false + + - Reload all modified layer manifest + Reload all modified layer manifest (CTRL+R) @@ -1085,39 +1215,20 @@ - - - - 0 - 0 - + + + + Arial + 10 + false + QFrame::NoFrame - - Qt::ScrollBarAlwaysOn - - - QAbstractScrollArea::AdjustToContents - true - - false - - - false - - - false - - - - 1 - - @@ -1160,8 +1271,14 @@ true + + Toggle to control Vulkan Physical Device used by all running Vulkan executables (Ctrl+Space) + + + + - Override Vulkan Devices to all Vulkan applications: + Configure System Vulkan Devices true @@ -1171,7 +1288,7 @@ - 0 + 7 5 @@ -1252,6 +1369,11 @@ Order Vulkan physical devices + + + No Vulkan physical device available + + @@ -1270,25 +1392,6 @@ - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - @@ -1402,119 +1505,173 @@ - - - - - - - - 0 - 0 - - - - - Arial - 10 - true - - - - Add Vulkan Driver Paths - - - true - - - - 7 - - - 5 - - - 5 - - - 5 - - - 5 - - - - 0 + + + + 0 + 0 + - - 0 + + + Arial + 10 + true + - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Enter a Vulkan Driver manifest path to make it visible to Vulkan application - - - - - - - - 0 - 0 - - - - - 24 - 24 - - - - - 24 - 24 - - - - Append a user-defined driver path - - - - - - - - - - - - - Arial - 10 - false - - - - QFrame::NoFrame + + Load Additional Vulkan Drivers - - Qt::ScrollBarAlwaysOn + + true + + + 7 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Enter search text to filter drivers in the list... (Ctrl+F) + + + Enter search text to filter drivers in the list... (Ctrl+F) + + + + + + + + 24 + 24 + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Add Vulkan Driver manifests path... (Ctrl+O) + + + Add Vulkan Driver manifests path... (Ctrl+O) + + + + + + + + 0 + 0 + + + + + 24 + 24 + + + + + 24 + 24 + + + + Append a user-defined driver path + + + + + + + + + + + + + Arial + 10 + false + + + + QFrame::NoFrame + + + Qt::ScrollBarAlwaysOn + + + true + + + + @@ -1563,8 +1720,11 @@ true + + Optional use to launch executables and store launch option + - + Optional Vulkan executables launcher @@ -1738,7 +1898,7 @@ - Options: + List of Executable Launch Options: @@ -1872,12 +2032,9 @@ 0 - + 7 - - 0 - @@ -1913,6 +2070,9 @@ false + + Enter executable arguments passed at launch... + @@ -1941,6 +2101,9 @@ false + + Enter the Vulkan executable working directory... + @@ -2042,6 +2205,9 @@ false + + Enter environment variables set at executable launch... + @@ -2070,6 +2236,9 @@ false + + Enter log file path where standard outputs is captured... + @@ -2139,7 +2308,7 @@ - 0 + 7 0 @@ -2233,6 +2402,23 @@ + + + + QComboBox::AdjustToContents + + + + Display output log on exit + + + + + Stream output log while running + + + + @@ -2270,31 +2456,6 @@ 0 - - - - - 0 - 0 - - - - - 24 - 24 - - - - - 24 - 24 - - - - - - - @@ -2309,6 +2470,12 @@ 24 + + Enter search text in the current log... (Ctrl+F) + + + Enter search text in the current log... (Ctrl+F) + @@ -2331,6 +2498,9 @@ 24 + + Clear the Search Text + @@ -2356,6 +2526,12 @@ 24 + + Find next (F3) + + + + @@ -2381,6 +2557,12 @@ 24 + + Find previous (Shift+F3) + + + + @@ -2406,6 +2588,12 @@ 24 + + Match case (Alt+C) + + + + @@ -2434,6 +2622,12 @@ 24 + + Match while world (Alt+W) + + + + @@ -2462,6 +2656,12 @@ 24 + + Use regular expressions (Alt+R) + + + + @@ -2473,7 +2673,7 @@ - + 0 @@ -2487,6 +2687,9 @@ false + + true + QFrame::NoFrame @@ -2499,12 +2702,6 @@ QAbstractScrollArea::AdjustToContents - - true - - - 10.000000000000000 - @@ -2538,61 +2735,64 @@ 5 - - - - Arial - 10 - true - - - - false - - - Diagnostic Logs + + + 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - + + + + true + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + Arial + 10 + true + + + + Toggle to produce Vulkan Loader Log to all running Vulkan executables (Ctrl+Space) + + + + + + Configure System Vulkan Loader Log + + + true + + + false + + + + 5 + + + 5 + + + 5 + - 0 + 5 - - - - 24 - 24 - - - - - 24 - 24 - - + Arial @@ -2600,38 +2800,16 @@ false - - Open Vulkan Caps Viewer + + Log Errors preventing the correct execution of the Vulkan Loader - - - - - :/resourcefiles/vulkancapsviewer.png:/resourcefiles/vulkancapsviewer.png + Errors - - - - 0 - 0 - - - - - 24 - 24 - - - - - 24 - 24 - - + Arial @@ -2639,28 +2817,16 @@ false - - Export all diagnostic logs + + Log Warnings which may result in unexpected behavior of the Vulkan Loader - + Warnings - - - - 0 - 24 - - - - - 16777215 - 24 - - + Arial @@ -2668,65 +2834,16 @@ false - - QComboBox::AdjustToContents + + Log Information relative to the expected Vulkan Loader execution + + + Information - - - Vulkan Development Status - - - - - VulkanInfo Summary - - - - - VulkanInfo Full Text - - - - - Vulkan Profile - - - - - Vulkan Loader Log - - - - - Vulkan Loader Configuration - - - - - Vulkan Layers Settings - - - - - Vulkan Loader Settings - - - - - - 0 - 24 - - - - - 16777215 - 24 - - + Arial @@ -2734,25 +2851,16 @@ false - - QComboBox::AdjustToContents + + Log Verbose Information relative to the expected Vulkan Loader execution + + + Debug - - - - 24 - 24 - - - - - 24 - 24 - - + Arial @@ -2761,24 +2869,12 @@ - + Additional Areas: - - - - 24 - 24 - - - - - 24 - 24 - - + Arial @@ -2786,28 +2882,16 @@ false - - Export the selected diagnostic log + + Enable a log area relative to the Vulkan Layers handling by the Vulkan Loader - + Layers - - - - 0 - 24 - - - - - 16777215 - 24 - - + Arial @@ -2815,44 +2899,86 @@ false + + Enable a log area relative to the Vulkan Drivers handling by the Vulkan Loader + + + Drivers + - - - - 0 - 0 - + + + Qt::Horizontal - + - 24 - 24 + 40 + 20 - - - 24 - 24 - - - - Clear the search text - - - - - + + + + + + + + + 0 + 0 + + + + + Arial + 10 + true + + + + Vulkan SDK directories + + + + 0 + + + 5 + + + 5 + + + 5 + + + 5 + - + - + 0 0 + + + Arial + 10 + false + + + + Open: + + + + + 24 @@ -2865,8 +2991,15 @@ 24 + + + Arial + 10 + false + + - Find Next (F3) + Open Vulkan SDK installation directory @@ -2874,13 +3007,7 @@ - - - - 0 - 0 - - + 24 @@ -2893,8 +3020,15 @@ 24 + + + Arial + 10 + false + + - Find Previous (Shift+F3) + Open Vulkan SDK home directory @@ -2902,13 +3036,7 @@ - - - - 0 - 0 - - + 24 @@ -2921,25 +3049,70 @@ 24 + + + Arial + 10 + false + + - Match case (Alt+C) + Open Vulkan SDK system directory - - true - + + + + + + + + + + Arial + 10 + true + + + + false + + + Vulkan System Diagnostic Logs + + + + 7 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + 0 + + + 0 + + + 0 + - - - - 0 - 0 - - + 24 @@ -2952,19 +3125,27 @@ 24 + + + Arial + 10 + false + + - Match whole word (Alt+W) + Open Vulkan Caps Viewer - - true + + + :/resourcefiles/vulkancapsviewer.png:/resourcefiles/vulkancapsviewer.png - + 0 @@ -2983,121 +3164,101 @@ 24 + + + Arial + 10 + false + + - Use Regular Expressions (Alt+R) + Export all diagnostic logs - - true + + + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + QComboBox::AdjustToContents + + + Vulkan Development Status + + + + + VulkanInfo Summary + + + + + VulkanInfo Full Text + + + + + Vulkan Profile + + + + + Vulkan Loader Log + + + + + Vulkan Loader Configuration + + + + + Vulkan Layers Settings + + + + + Vulkan Loader Settings + + - - - - - - - Consolas - 10 - false - - - - QFrame::NoFrame - - - 0 - - - Qt::ScrollBarAlwaysOn - - - QAbstractScrollArea::AdjustToContents - - - true - - - 10.000000000000000 - - - - - - - - - - 0 - - - - - true - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - Arial - 10 - true - - - - Enable Vulkan Loader Log to all Vulkan applications - - - true - - - false - - - - 11 - - - 0 - - - 0 - - - 0 - - - - - Arial - 10 - false - - - - Log Errors preventing the correct execution of the Vulkan Loader + + + + 0 + 24 + - - Errors + + + 16777215 + 24 + - - - - Arial @@ -3105,16 +3266,25 @@ false - - Log Warnings which may result in unexpected behavior of the Vulkan Loader - - - Warnings + + QComboBox::AdjustToContents - + + + + 24 + 24 + + + + + 24 + 24 + + Arial @@ -3122,16 +3292,25 @@ false - - Log Information relative to the expected Vulkan Loader execution - - Information + - + + + + 24 + 24 + + + + + 24 + 24 + + Arial @@ -3139,16 +3318,28 @@ false - - Log Verbose Information relative to the expected Vulkan Loader execution + + Export the selected diagnostic log - Debug + - + + + + 0 + 24 + + + + + 16777215 + 24 + + Arial @@ -3156,117 +3347,103 @@ false - - Additional Areas: + + Enter search text in the current log... (Ctrl+F) - - - - Arial - 10 - false - + + + + 0 + 0 + - - Enable a log area relative to the Vulkan Layers handling by the Vulkan Loader + + + 24 + 24 + + + + + 24 + 24 + + + + Clear the search text - Layers + - - - - Arial - 10 - false - + + + + 0 + 0 + - - Enable a log area relative to the Vulkan Drivers handling by the Vulkan Loader + + + 24 + 24 + + + + + 24 + 24 + + + + Find Next (F3) - Drivers + - - - Qt::Horizontal + + + + 0 + 0 + - + - 40 - 20 + 24 + 24 - - - - - - - - - - 0 - 0 - - - - - Arial - 10 - true - - - - Vulkan SDK directories - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - + + + 24 + 24 + - - - Arial - 10 - false - + + Find Previous (Shift+F3) - Open: + - + + + + 0 + 0 + + 24 @@ -3279,23 +3456,25 @@ 24 - - - Arial - 10 - false - - - Open Vulkan SDK installation directory + Match case (Alt+C) + + true + - + + + + 0 + 0 + + 24 @@ -3308,23 +3487,25 @@ 24 - - - Arial - 10 - false - - - Open Vulkan SDK home directory + Match whole word (Alt+W) + + true + - + + + + 0 + 0 + + 24 @@ -3337,25 +3518,47 @@ 24 - - - Arial - 10 - false - - - Open Vulkan SDK system directory + Use Regular Expressions (Alt+R) + + true + - - - + + + + + + Consolas + 10 + false + + + + true + + + QFrame::NoFrame + + + 0 + + + Qt::ScrollBarAlwaysOn + + + QAbstractScrollArea::AdjustToContents + + + + + @@ -3398,16 +3601,16 @@ 11 - 0 + 5 - 0 + 5 - 0 + 5 - 0 + 5 @@ -3471,7 +3674,7 @@ Tab 7 - + 11 @@ -3488,16 +3691,32 @@ 5 - + + + + 0 + 0 + + + + + Arial + 10 + true + + false - + Vulkan Configurator Settings + + + false - + - 11 + 7 5 @@ -3512,833 +3731,928 @@ 5 - - - - 0 - 0 - + + + + 16777215 + 24 + Arial 10 - true + false - - false + + Keep Vulkan Configurator running in system tray when closing the main window - - Vulkan Configurator Settings: + + + + + + 0 - - false + + 0 - - - 0 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Keep Vulkan Configurator running in system tray when closing the main window - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - ${VULKAN_HOME} is the default environment variable for Vulkan SDK tools outputs implementing it. - - - ${VULKAN_HOME}: - - - - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - - - - - - 24 - 24 - - - - - 24 - 24 - - - - - Arial - 10 - false - - + + 0 + + + 0 + + + 0 + + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + ${VULKAN_HOME} is the default environment variable for Vulkan SDK tools outputs implementing it. + + + ${VULKAN_HOME}: + + + + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + + + + + + 24 + 24 + + + + + 24 + 24 + + + + + Arial + 10 + false + + + + + + + + + + + + + 0 + + + 0 + + + + + + Arial + 10 + false + + + + Allows overriding Vulkan Layers only for selected Vulkan executables + + + Show "Vulkan Executables Scope" in Vulkan Layers Configuration tab + + + + + + + 0 + + + 0 + + + 0 + + + + + + 24 + 0 + + + + + + + + + + + + Arial + 10 + false + + + + All Enabled Vulkan Executables behavior: + + + + + + + + Arial + 10 + false + + + + QComboBox::AdjustToContents + + - - - - - - - - - - 0 - - - - - - Arial - 10 - false - + Write vk_layer_settings.txt file in the global path (visible to all Vulkan executables) + + - All Enabled Vulkan Executables behavior: + Write vk_layer_settings.txt file in the application launcher working directory - - - - - - - Arial - 10 - false - - - - QComboBox::AdjustToContents - - - - Write vk_layer_settings.txt file in the global path (visible to all Vulkan executables) - - - - - Write vk_layer_settings.txt file in the application launcher working directory - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + - - - - Arial - 10 - true - + + + 0 - - Vulkan Configurator UI: + + + + + Arial + 10 + false + + + + The maximum number of text blocks the UI will display, too high will significantly reduce UI performance + + + Application launcher log maximum text block size: + + + + + + + + 128 + 0 + + + + + Arial + 10 + false + + + + The maximum number of text blocks the UI will display, too high will significantly reduce UI performance + + + 512 + + + 32768 + + + 512 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Arial + 10 + true + + + + Vulkan Configurator Appearence + + + + 0 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + 0 - - - 0 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - + + 0 + + + 0 + + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Theme Mode: + + + + + + + + 0 + 0 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + QComboBox::AdjustToContents + + + + Use Desktop Theme - - Show debug layer settings, for layer development + + + + Force Light Theme + + - Show Debug Layer Settings + Force Dark Theme - - - - + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 24 + 24 + + + + + Arial + 10 + false + + + + + + + + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Use custom Dark mode alternate rows color + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 24 + 24 + + + + + Arial + 10 + false + + + + + + + + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Use custom Light mode alternate rows color + + + + + + + + 24 + 0 + + + + + + + + + + + + + + + + Arial + 10 + true + + + + This could be useful to check a layer manifest was edited correctly + + + Vulkan Layers Developer Settings + + + + 7 + + + 5 + + + 5 + + + 5 + + + 5 + - + Arial 10 - true + false - - Vulkan Configurator Appearence + + Check to validate the layer manifests wheen adding a user path. This may take some time... + + + Validate added layer manifests against Vulkan layer manifest schema (slow) - - - 0 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - 0 - - - 0 - - - 0 - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Theme Mode: - - - - - - - - 0 - 0 - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - QComboBox::AdjustToContents - - - - Use Desktop Theme - - - - - Force Light Theme - - - - - Force Dark Theme - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 24 - 24 - - - - - Arial - 10 - false - - - - - - - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Use custom Dark mode alternate rows color - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 24 - 24 - - - - - Arial - 10 - false - - - - - - - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Use custom Light mode alternate rows color - - - - - - - - - - - - - - - - - 0 - 0 - + + + + 16777215 + 24 + Arial 10 - true + false - - false + + Show debug layer settings, for layer development - - Vulkan SDK Releases: + + Show debug layer settings - - false + + + + + + + + + + 0 + 0 + + + + + Arial + 10 + true + + + + false + + + Vulkan SDK Releases + + + false + + + false + + + + 7 + + + 5 + + + 5 + + + 5 + + + 5 + + + + + 0 - - false + + 0 - - - 0 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - ${VULKAN_DOWNLOAD}: - - - - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - 0 - - - - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - - - - - - 24 - 24 - - - - - 24 - 24 - - - - - Arial - 10 - false - - - - - - - - - - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Open Vulkan SDK download web page... - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Notify new Vulkan SDK release at Vulkan Configurator launch - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 0 - - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - - Arial - 10 - false - - - - Download last Vulkan SDK - - - - - - - - - - - 24 - 24 - - - - - 24 - 24 - - - - - Arial - 10 - false - - - - Open Vulkan SDK download folder - - - - - - - - - - - - + + 7 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + ${VULKAN_DOWNLOAD}: + + + + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + 0 + + + + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + + + + + + 24 + 24 + + + + + 24 + 24 + + + + + Arial + 10 + false + + + + + + + + + + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Open Vulkan SDK download web page... + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Notify new Vulkan SDK release at Vulkan Configurator launch + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 0 + + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + + Arial + 10 + false + + + + Download last Vulkan SDK + + + + + + + + + + + 24 + 24 + + + + + 24 + 24 + + + + + Arial + 10 + false + + + + Open Vulkan SDK download folder + + + + + + + + + @@ -4434,297 +4748,279 @@ 5 - + + + + 800 + 270 + + - false + true - - - 0 + + false + + + false + + + + + 650 + 0 + 141 + 61 + - - 5 + + - - 5 + + :/resourcefiles/lunarg_logo.png - - 5 + + Qt::NoTextInteraction - - 5 + + + + + 640 + 190 + 91 + 81 + - - - - - 800 - 270 - - - - true - - - - - - false - - - false - - - - - 640 - 20 - 141 - 61 - - - - - - - :/resourcefiles/lunarg_logo.png - - - Qt::NoTextInteraction - - - - - - 640 - 190 - 91 - 81 - - - - - - - :/resourcefiles/qt_logo.png - - - - - - 760 - 70 - 201 - 41 - - - - - Arial - 10 - false - - - - Vulkan Configurator licensed under Apache 2.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - - - - 680 - 100 - 281 - 41 - - - - - Arial - 10 - false - - - - Qt::LeftToRight - - - Copyright (c) 2020-2026 LunarG, Inc. - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - - - - 880 - 200 - 81 - 24 - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - About Qt - - - - - - 730 - 230 - 231 - 41 - - - - - Arial - 10 - false - - - - Qt licensed under LGPL 3.0 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - - - - 10 - 10 - 600 - 245 - - - - - 0 - 0 - - - - - 600 - 245 - - - - - - - :/resourcefiles/vulkan_configurator.png - - - true - - - Qt::NoTextInteraction - - - - - - 840 - 30 - 121 - 24 - - - - - 0 - 24 - - - - - 16777215 - 24 - - - - About LunarG - - - - - - 420 - 20 - 141 - 16 - - - - - Arial - 14 - true - - - - Qt::LeftToRight - - - - - - - - - - - false - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOn - - - QAbstractScrollArea::AdjustToContents - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse - - - true - - - - + + + + + :/resourcefiles/qt_logo.png + + + + + + 730 + 70 + 231 + 41 + + + + + Arial + 10 + false + + + + Licensed under Apache 2.0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + Qt::NoTextInteraction + + + + + + 660 + 100 + 301 + 41 + + + + + Arial + 10 + false + + + + Qt::LeftToRight + + + Copyright (c) 2020-2026 LunarG, Inc. + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + Qt::NoTextInteraction + + + + + + 880 + 200 + 81 + 24 + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + About Qt + + + + + + 730 + 230 + 231 + 41 + + + + + Arial + 10 + false + + + + Qt licensed under LGPL 3.0 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + Qt::NoTextInteraction + + + + + + 10 + 10 + 600 + 245 + + + + + 0 + 0 + + + + + 600 + 245 + + + + + + + :/resourcefiles/vulkan_configurator.png + + + true + + + Qt::NoTextInteraction + + + + + + 840 + 30 + 121 + 24 + + + + + 0 + 24 + + + + + 16777215 + 24 + + + + About LunarG + + + + + + 420 + 20 + 141 + 16 + + + + + Arial + 14 + true + + + + Qt::LeftToRight + + + + + + + + + + + false + + + QFrame::NoFrame + + + Qt::ScrollBarAlwaysOn + + + QAbstractScrollArea::AdjustToContents + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + true + diff --git a/vkconfig_gui/resourcefiles/dark/device-off.png b/vkconfig_gui/resourcefiles/dark/device-off.png new file mode 100644 index 0000000000..7cb91708fd Binary files /dev/null and b/vkconfig_gui/resourcefiles/dark/device-off.png differ diff --git a/vkconfig_gui/resourcefiles/dark/device-on.png b/vkconfig_gui/resourcefiles/dark/device-on.png new file mode 100644 index 0000000000..bedd3abfce Binary files /dev/null and b/vkconfig_gui/resourcefiles/dark/device-on.png differ diff --git a/vkconfig_gui/resourcefiles/dark/layers-off.png b/vkconfig_gui/resourcefiles/dark/layers-off.png new file mode 100644 index 0000000000..c1281b181a Binary files /dev/null and b/vkconfig_gui/resourcefiles/dark/layers-off.png differ diff --git a/vkconfig_gui/resourcefiles/dark/layers-on.png b/vkconfig_gui/resourcefiles/dark/layers-on.png new file mode 100644 index 0000000000..035d497b3a Binary files /dev/null and b/vkconfig_gui/resourcefiles/dark/layers-on.png differ diff --git a/vkconfig_gui/resourcefiles/device-off.png b/vkconfig_gui/resourcefiles/device-off.png new file mode 100644 index 0000000000..f0585e9088 Binary files /dev/null and b/vkconfig_gui/resourcefiles/device-off.png differ diff --git a/vkconfig_gui/resourcefiles/device-on.png b/vkconfig_gui/resourcefiles/device-on.png new file mode 100644 index 0000000000..df1623c0c8 Binary files /dev/null and b/vkconfig_gui/resourcefiles/device-on.png differ diff --git a/vkconfig_gui/resourcefiles/layers-off.png b/vkconfig_gui/resourcefiles/layers-off.png new file mode 100644 index 0000000000..83f49dd231 Binary files /dev/null and b/vkconfig_gui/resourcefiles/layers-off.png differ diff --git a/vkconfig_gui/resourcefiles/layers-on.png b/vkconfig_gui/resourcefiles/layers-on.png new file mode 100644 index 0000000000..76bd553cab Binary files /dev/null and b/vkconfig_gui/resourcefiles/layers-on.png differ diff --git a/vkconfig_gui/resourcefiles/light/device-off.png b/vkconfig_gui/resourcefiles/light/device-off.png new file mode 100644 index 0000000000..8e9d0dfa17 Binary files /dev/null and b/vkconfig_gui/resourcefiles/light/device-off.png differ diff --git a/vkconfig_gui/resourcefiles/light/device-on.png b/vkconfig_gui/resourcefiles/light/device-on.png new file mode 100644 index 0000000000..5be22d8bba Binary files /dev/null and b/vkconfig_gui/resourcefiles/light/device-on.png differ diff --git a/vkconfig_gui/resourcefiles/light/layers-off.png b/vkconfig_gui/resourcefiles/light/layers-off.png new file mode 100644 index 0000000000..cba9c8fa75 Binary files /dev/null and b/vkconfig_gui/resourcefiles/light/layers-off.png differ diff --git a/vkconfig_gui/resourcefiles/light/layers-on.png b/vkconfig_gui/resourcefiles/light/layers-on.png new file mode 100644 index 0000000000..031515666a Binary files /dev/null and b/vkconfig_gui/resourcefiles/light/layers-on.png differ diff --git a/vkconfig_gui/resourcefiles/vkconfig-off.png b/vkconfig_gui/resourcefiles/vkconfig-off.png index ba43b48fda..531dc2c5b4 100644 Binary files a/vkconfig_gui/resourcefiles/vkconfig-off.png and b/vkconfig_gui/resourcefiles/vkconfig-off.png differ diff --git a/vkconfig_gui/resourcefiles/vkconfig-on.png b/vkconfig_gui/resourcefiles/vkconfig-on.png index 4460643f77..15212d2897 100644 Binary files a/vkconfig_gui/resourcefiles/vkconfig-on.png and b/vkconfig_gui/resourcefiles/vkconfig-on.png differ diff --git a/vkconfig_gui/resourcefiles/vulkan.ico b/vkconfig_gui/resourcefiles/vulkan.ico index 802593c65c..4574bd0873 100644 Binary files a/vkconfig_gui/resourcefiles/vulkan.ico and b/vkconfig_gui/resourcefiles/vulkan.ico differ diff --git a/vkconfig_gui/resources.qrc b/vkconfig_gui/resources.qrc index 3ecfa0c893..f845f9d104 100644 --- a/vkconfig_gui/resources.qrc +++ b/vkconfig_gui/resources.qrc @@ -45,6 +45,11 @@ resourcefiles/dark/settings_advanced.png resourcefiles/dark/settings_basic.png + resourcefiles/dark/layers-off.png + resourcefiles/dark/layers-on.png + resourcefiles/dark/device-off.png + resourcefiles/dark/device-on.png + resourcefiles/dark/system-invalid.png resourcefiles/dark/system-off.png resourcefiles/dark/system-on.png @@ -87,6 +92,11 @@ resourcefiles/light/settings_advanced.png resourcefiles/light/settings_basic.png + resourcefiles/light/layers-off.png + resourcefiles/light/layers-on.png + resourcefiles/light/device-off.png + resourcefiles/light/device-on.png + resourcefiles/light/system-invalid.png resourcefiles/light/system-off.png resourcefiles/light/system-on.png @@ -94,12 +104,13 @@ ../vkconfig_core/configurations/API dump.json + ../vkconfig_core/configurations/API dump with Validation.json ../vkconfig_core/configurations/Crash Diagnostic.json ../vkconfig_core/configurations/Disable All Vulkan Layers.json + ../vkconfig_core/configurations/Discard Ordering and Enabling Layers.json ../vkconfig_core/configurations/Frame Capture.json ../vkconfig_core/configurations/Portability.json ../vkconfig_core/configurations/Validation.json - ../vkconfig_core/configurations/Validation with API Dump Log.json diff --git a/vkconfig_gui/settings_tree.cpp b/vkconfig_gui/settings_tree.cpp index 83b1b846b9..8ad43dc821 100644 --- a/vkconfig_gui/settings_tree.cpp +++ b/vkconfig_gui/settings_tree.cpp @@ -90,8 +90,10 @@ void SettingsTreeManager::CreateGUI() { this->ui->configurations_group_box_settings->setChecked(parameter->override_settings); this->ui->configurations_group_box_settings->blockSignals(false); this->ui->configurations_presets->setVisible(!layer->presets.empty()); - this->ui->configurations_presets->setEnabled(!configurator.GetActiveConfiguration()->override_settings); - this->ui->configurations_settings->setEnabled(!configurator.GetActiveConfiguration()->override_settings); + this->ui->configurations_presets->setEnabled(!configurator.GetActiveConfiguration()->override_settings && + parameter->override_settings); + this->ui->configurations_settings->setEnabled(!configurator.GetActiveConfiguration()->override_settings && + parameter->override_settings); this->ui->configurations_settings_reset->setVisible(!layer->presets.empty()); const std::vector &layer_versions = configurator.layers.GatherManifests(parameter->key); @@ -515,7 +517,7 @@ void SettingsTreeManager::OnPresetChanged(int combox_preset_index) { configurator.Override(OVERRIDE_AREA_LAYERS_SETTINGS_BIT); - this->ui->configurations_settings_reset->setEnabled(preset_index != Layer::DEFAULT_PRESET); + this->ui->configurations_settings_reset->setEnabled(parameter->override_settings && preset_index != Layer::DEFAULT_PRESET); this->Refresh(REFRESH_ENABLE_AND_STATE); } @@ -541,7 +543,7 @@ void SettingsTreeManager::RefreshPresetLabel() { const Layer *layer = configurator.layers.FindFromManifest(parameter->manifest); const int preset_index = layer->FindPresetIndex(parameter->settings) + 1; - this->ui->configurations_settings_reset->setEnabled(preset_index != Layer::DEFAULT_PRESET); + this->ui->configurations_settings_reset->setEnabled(parameter->override_settings && preset_index != Layer::DEFAULT_PRESET); this->ui->configurations_presets->setCurrentIndex(preset_index); } diff --git a/vkconfig_gui/source/video-card.pdn b/vkconfig_gui/source/video-card.pdn new file mode 100644 index 0000000000..30afcaf39d Binary files /dev/null and b/vkconfig_gui/source/video-card.pdn differ diff --git a/vkconfig_gui/source/vkconfig-icons.pdn b/vkconfig_gui/source/vkconfig-icons.pdn new file mode 100644 index 0000000000..9bd0aba026 Binary files /dev/null and b/vkconfig_gui/source/vkconfig-icons.pdn differ diff --git a/vkconfig_gui/source/vulkan.jpg b/vkconfig_gui/source/vulkan.jpg new file mode 100644 index 0000000000..30bc2e54a4 Binary files /dev/null and b/vkconfig_gui/source/vulkan.jpg differ diff --git a/vkconfig_gui/source/vulkan_logo.png b/vkconfig_gui/source/vulkan_logo.png new file mode 100644 index 0000000000..7aee15f2bc Binary files /dev/null and b/vkconfig_gui/source/vulkan_logo.png differ diff --git a/vkconfig_gui/style.cpp b/vkconfig_gui/style.cpp index e8975073e0..b279025779 100644 --- a/vkconfig_gui/style.cpp +++ b/vkconfig_gui/style.cpp @@ -57,6 +57,10 @@ QIcon Get(ThemeMode mode, Icon icon) { "reset.png", // ICON_RESET, "settings_advanced.png", // ICON_ADVANCED, "settings_basic.png", // ICON_BASIC, + "device-off.png", // ICON_DEVICE_OFF, + "device-on.png", // ICON_DEVICE_ON, + "layers-off.png", // ICON_LAYERS_OFF, + "layers-on.png", // ICON_LAYERS_ON, "system-invalid.png", // ICON_SYSTEM_INVALID, "system-off.png", // ICON_SYSTEM_OFF, "system-on.png", // ICON_SYSTEM_ON, diff --git a/vkconfig_gui/style.h b/vkconfig_gui/style.h index 01e4bffec1..1734c4fe6b 100644 --- a/vkconfig_gui/style.h +++ b/vkconfig_gui/style.h @@ -53,6 +53,10 @@ enum Icon { ICON_RESET, ICON_ADVANCED, ICON_BASIC, + ICON_DEVICE_OFF, + ICON_DEVICE_ON, + ICON_LAYERS_OFF, + ICON_LAYERS_ON, ICON_SYSTEM_INVALID, ICON_SYSTEM_OFF, ICON_SYSTEM_ON, diff --git a/vkconfig_gui/tab.cpp b/vkconfig_gui/tab.cpp index bfcb4d4cbf..faea6b3114 100644 --- a/vkconfig_gui/tab.cpp +++ b/vkconfig_gui/tab.cpp @@ -25,6 +25,22 @@ #include "../vkconfig_core/ui.h" #include +#include + +ThemeMode GetActualThemeMode(ThemeMode mode) { + if (mode == THEME_MODE_AUTO) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) + if (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark) { + return THEME_MODE_FORCE_DARK; + } else +#endif // QT_VERSION + { + return THEME_MODE_FORCE_LIGHT; + } + } else { + return mode; + } +} Tab::Tab(TabType type, MainWindow& window, std::shared_ptr ui) : type(type), ui(ui), window(window) {} diff --git a/vkconfig_gui/tab.h b/vkconfig_gui/tab.h index 7b8d8d0869..62140e3083 100644 --- a/vkconfig_gui/tab.h +++ b/vkconfig_gui/tab.h @@ -21,6 +21,7 @@ #pragma once #include "../vkconfig_core/type_tab.h" +#include "../vkconfig_core/type_theme_mode.h" #include "ui_mainwindow.h" @@ -37,6 +38,8 @@ enum UpdateUIMode { UPDATE_REFRESH_UI, }; +ThemeMode GetActualThemeMode(ThemeMode mode); + class Tab : public QObject { Q_OBJECT diff --git a/vkconfig_gui/tab_applications.cpp b/vkconfig_gui/tab_applications.cpp index dcab608014..0df0ef08ef 100644 --- a/vkconfig_gui/tab_applications.cpp +++ b/vkconfig_gui/tab_applications.cpp @@ -42,7 +42,10 @@ static void PathInvalid(const Path &path, const char *message) { } TabApplications::TabApplications(MainWindow &window, std::shared_ptr ui) - : Tab(TAB_APPLICATIONS, window, ui), _launch_application(new QProcess(this)) { + : Tab(TAB_APPLICATIONS, window, ui), + _launch_application(new QProcess(this)), + timer_search(new QTimer(this)), + timer_stream(new QTimer(this)) { this->connect(this->ui->launch_executable_list, SIGNAL(currentIndexChanged(int)), this, SLOT(on_launch_executable_list_activated(int))); this->connect(this->ui->launch_executable_list->lineEdit(), SIGNAL(textEdited(QString)), this, @@ -53,8 +56,8 @@ TabApplications::TabApplications(MainWindow &window, std::shared_ptrconnect(this->ui->launch_options_list, SIGNAL(currentIndexChanged(int)), this, SLOT(on_launch_options_list_activated(int))); - this->connect(this->ui->launch_options_list->lineEdit(), SIGNAL(textEdited(QString)), this, - SLOT(on_launch_options_list_textEdited(QString))); + this->connect(this->ui->launch_options_list->lineEdit(), &QLineEdit::editingFinished, this, + &TabApplications::on_launch_options_list_finished); this->connect(this->ui->launch_options_append, SIGNAL(clicked()), this, SLOT(on_launch_options_append_pressed())); this->connect(this->ui->launch_options_remove, SIGNAL(clicked()), this, SLOT(on_launch_options_remove_pressed())); @@ -72,9 +75,10 @@ TabApplications::TabApplications(MainWindow &window, std::shared_ptrconnect(this->ui->launch_clear_at_launch, SIGNAL(toggled(bool)), this, SLOT(on_launch_clear_at_launch_toggled(bool))); this->connect(this->ui->launch_clear_log, SIGNAL(clicked()), this, SLOT(on_launch_clear_log_pressed())); + this->connect(this->ui->launch_stdout_display, SIGNAL(currentIndexChanged(int)), this, + SLOT(on_launch_stdout_display_changed(int))); this->connect(this->ui->launch_button, SIGNAL(clicked()), this, SLOT(on_launch_button_pressed())); - this->connect(this->ui->launch_export_file, SIGNAL(clicked()), this, SLOT(on_export_file())); this->connect(this->ui->launch_search_edit, SIGNAL(textEdited(QString)), this, SLOT(on_search_textEdited(QString))); this->connect(this->ui->launch_search_edit, SIGNAL(returnPressed()), this, SLOT(on_search_next_pressed())); this->connect(this->ui->launch_search_clear, SIGNAL(clicked()), this, SLOT(on_search_clear_pressed())); @@ -85,6 +89,8 @@ TabApplications::TabApplications(MainWindow &window, std::shared_ptrconnect(this->ui->launch_search_case, SIGNAL(toggled(bool)), this, SLOT(on_search_case_toggled(bool))); this->connect(this->ui->launch_search_whole, SIGNAL(toggled(bool)), this, SLOT(on_search_whole_toggled(bool))); this->connect(this->ui->launch_search_regex, SIGNAL(toggled(bool)), this, SLOT(on_search_regex_toggled(bool))); + this->connect(this->timer_search, &QTimer::timeout, this, &TabApplications::on_timer_search); + this->connect(this->timer_stream, &QTimer::timeout, this, &TabApplications::on_timer_stream); QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->launch_log_text); this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); @@ -92,25 +98,33 @@ TabApplications::TabApplications(MainWindow &window, std::shared_ptrconnect(shortcut_next, SIGNAL(activated()), this, SLOT(on_search_next_pressed())); QShortcut *shortcut_prev = new QShortcut(QKeySequence(Qt::SHIFT | Qt::Key_F3), this->ui->launch_log_text); this->connect(shortcut_prev, SIGNAL(activated()), this, SLOT(on_search_prev_pressed())); - - QShortcut *shortcut_case = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_C), this->ui->launch_log_text); - this->connect(shortcut_case, SIGNAL(activated()), this, SLOT(on_search_case_activated())); - QShortcut *shortcut_whole = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_W), this->ui->launch_log_text); - this->connect(shortcut_whole, SIGNAL(activated()), this, SLOT(on_search_whole_activated())); - QShortcut *shortcut_regex = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_R), this->ui->launch_log_text); - this->connect(shortcut_regex, SIGNAL(activated()), this, SLOT(on_search_regex_activated())); + /* + QShortcut *shortcut_case = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_C), this->ui->launch_search_case); + this->connect(shortcut_case, SIGNAL(activated()), this, SLOT(on_search_case_activated())); + QShortcut *shortcut_whole = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_W), this->ui->launch_search_whole); + this->connect(shortcut_whole, SIGNAL(activated()), this, SLOT(on_search_whole_activated())); + QShortcut *shortcut_regex = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_R), this->ui->launch_search_regex); + this->connect(shortcut_regex, SIGNAL(activated()), this, SLOT(on_search_regex_activated())); + */ + this->highlighter = new Highlighter(this->ui->launch_log_text->document()); this->on_search_clear_pressed(); - this->ui->launch_log_text->installEventFilter(&window); - this->ui->launch_log_text->document()->setMaximumBlockCount(65536); + this->ui->launch_search_case->setVisible(false); + this->ui->launch_search_regex->setVisible(false); + this->ui->launch_search_whole->setVisible(false); + + this->ui->launch_search_next->setEnabled(false); + this->ui->launch_search_prev->setEnabled(false); + + // this->ui->launch_log_text->installEventFilter(&window); this->ui->launch_log_text->setContextMenuPolicy(Qt::CustomContextMenu); // Resetting this from the default prevents the log window (a QTextEdit) from overflowing. // Whenever the control surpasses this block count, old blocks are discarded. // Note: We could make this a user configurable setting down the road should this be // insufficinet. - // this->ui->launch_log_text->document()->setMaximumBlockCount(65536); + // this->ui->launch_log_text->document()->setMaximumBlockCount(1024); this->ui->launch_log_text->moveCursor(QTextCursor::End); this->ui->launch_options_args_edit->setToolTip("Eg: '--argA --argB=valueB \"--argC=value C\" --argD=\"value D\"'"); @@ -152,7 +166,7 @@ void TabApplications::UpdateUI(UpdateUIMode mode) { ui->launch_executable_list->blockSignals(true); ui->launch_executable_list->clear(); for (std::size_t i = 0, n = executables.size(); i < n; ++i) { - ui->launch_executable_list->addItem(executables[i].path.RelativePath().c_str()); + ui->launch_executable_list->addItem(executables[i].path.AbsolutePath().c_str()); } ui->launch_executable_list->setCurrentIndex(configurator.executables.GetActiveExecutableIndex()); ui->launch_executable_list->blockSignals(false); @@ -161,13 +175,20 @@ void TabApplications::UpdateUI(UpdateUIMode mode) { ui->launch_clear_at_launch->setChecked(configurator.executables.launcher_clear_on_launch); this->on_launch_executable_list_activated(configurator.executables.GetActiveExecutableIndex()); + + this->ResetTextCursor(); + + QPalette palette = this->ui->configurations_list->palette(); + QColor highlight = palette.color(QPalette::Highlight); + this->highlighter->setColor( + ::GetActualThemeMode(configurator.current_theme_mode) == THEME_MODE_FORCE_LIGHT ? highlight.lighter() : highlight.darker()); } void TabApplications::CleanUI() { this->ResetLaunchApplication(); } bool TabApplications::EventFilter(QObject *target, QEvent *event) { (void)target; - + /* if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(event); switch (keyEvent->key()) { @@ -178,7 +199,7 @@ bool TabApplications::EventFilter(QObject *target, QEvent *event) { } return false; } - + */ return false; } @@ -320,22 +341,23 @@ void TabApplications::on_launch_options_list_activated(int index) { const ExecutableOptions *options = executable->GetActiveOptions(); - ui->launch_options_dir_edit->setText(options->working_folder.RelativePath().c_str()); + ui->launch_options_dir_edit->setText(options->working_folder.AbsolutePath().c_str()); ui->launch_options_dir_edit->setToolTip(options->working_folder.AbsolutePath().c_str()); ui->launch_options_args_edit->setText(Merge(options->args, " ").c_str()); ui->launch_options_envs_edit->setText(Merge(options->envs, " ").c_str()); - ui->launch_options_log_edit->setText(options->log_file.RelativePath().c_str()); + ui->launch_options_log_edit->setText(options->log_file.AbsolutePath().c_str()); ui->launch_options_log_edit->setToolTip(options->log_file.AbsolutePath().c_str()); } -void TabApplications::on_launch_options_list_textEdited(const QString &text) { +void TabApplications::on_launch_options_list_finished() { + std::string new_text = this->ui->launch_options_list->lineEdit()->text().toStdString(); + Configurator &configurator = Configurator::Get(); Executable *executable = configurator.executables.GetActiveExecutable(); - executable->RenameActiveOptions(text.toStdString()); + executable->RenameActiveOptions(new_text); this->RebuildOptions(); this->ui->launch_options_list->setCurrentIndex(executable->GetActiveOptionsIndex()); - // this->ui->launch_options_list->setItemText(executable->GetActiveOptionsIndex(), text); } void TabApplications::on_launch_options_append_pressed() { @@ -418,7 +440,7 @@ void TabApplications::on_launch_options_args_textEdited(const QString &text) { Executable *executable = configurator.executables.GetActiveExecutable(); ExecutableOptions *options = executable->GetActiveOptions(); - options->args = SplitSpace(text.toStdString()); + options->args = SplitArgs(text.toStdString()); } void TabApplications::on_launch_options_envs_textEdited(const QString &text) { @@ -473,13 +495,17 @@ void TabApplications::on_launch_clear_at_launch_toggled(bool checked) { } void TabApplications::on_launch_clear_log_pressed() { - this->ui->launch_export_file->setEnabled(false); this->ui->launch_search_edit->setEnabled(false); this->ui->launch_clear_log->setEnabled(false); this->ui->launch_log_text->clear(); this->ui->launch_log_text->update(); } +void TabApplications::on_launch_stdout_display_changed(int index) { + Configurator &configurator = Configurator::Get(); + configurator.stdout_display = static_cast(index); +} + void TabApplications::on_launch_button_pressed() { // Are we already monitoring a running app? If so, terminate it if (this->_launch_application != nullptr) { @@ -489,10 +515,19 @@ void TabApplications::on_launch_button_pressed() { } } + Configurator &configurator = Configurator::Get(); + + if (configurator.stdout_display == STDOUT_DISPLAY_ON_EXIT) { + this->ui->launch_log_text->document()->setMaximumBlockCount(32768); + } else { + this->ui->launch_log_text->document()->setMaximumBlockCount(configurator.app_log_max_blocks); + } + + this->highlighter->setDocument(nullptr); + // We are logging, let's add that we've launched a new application std::string launch_log = "Launching Vulkan Application:\n"; - Configurator &configurator = Configurator::Get(); const Executable *active_executable = configurator.executables.GetActiveExecutable(); assert(!active_executable->path.Empty()); @@ -658,10 +693,19 @@ void TabApplications::processClosed(int exit_code, QProcess::ExitStatus status) assert(this->_launch_application); + this->on_timer_stream(); // flush log buffer + this->Log("Process terminated", true); if (this->_log_file.isOpen()) { this->_log_file.close(); + + Configurator &configurator = Configurator::Get(); + if (configurator.stdout_display == STDOUT_DISPLAY_ON_EXIT) { + this->_log_file.open(QIODevice::ReadOnly | QIODevice::Text); + this->ui->launch_log_text->setPlainText(this->_log_file.readAll()); + this->_log_file.close(); + } } this->ResetLaunchApplication(); @@ -674,22 +718,37 @@ void TabApplications::processClosed(int exit_code, QProcess::ExitStatus status) /// If a log file is open, we also write the output to the log. void TabApplications::standardOutputAvailable() { if (this->_launch_application) { - this->Log(this->_launch_application->readAllStandardOutput(), false); + this->stream_text += this->_launch_application->readAllStandardOutput(); + if (!this->timer_stream->isActive()) { + this->timer_stream->start(200); + } } } void TabApplications::errorOutputAvailable() { if (this->_launch_application) { - this->Log(this->_launch_application->readAllStandardError(), false); + this->stream_text += this->_launch_application->readAllStandardError(); + if (!this->timer_stream->isActive()) { + this->timer_stream->start(200); + } } } +void TabApplications::on_timer_stream() { + this->timer_stream->stop(); + this->Log(this->stream_text, false); + this->stream_text.clear(); +} + void TabApplications::Log(const QString &log, bool flush) { - this->ui->launch_export_file->setEnabled(true); this->ui->launch_search_edit->setEnabled(true); this->ui->launch_clear_log->setEnabled(true); - this->ui->launch_log_text->append(log); - this->ui->launch_log_text->moveCursor(QTextCursor::End); + + Configurator &configurator = Configurator::Get(); + if (configurator.stdout_display == STDOUT_DISPLAY_STREAM || flush) { + this->ui->launch_log_text->insertPlainText(log); + this->ui->launch_log_text->moveCursor(QTextCursor::End); + } if (this->_log_file.isOpen()) { this->_log_file.write(log.toStdString().c_str(), log.size()); @@ -699,66 +758,89 @@ void TabApplications::Log(const QString &log, bool flush) { } } -void TabApplications::on_export_file() { - Configurator &configurator = Configurator::Get(); - - Path export_path = configurator.last_path_launch_log; +void TabApplications::on_focus_search() { this->ui->launch_search_edit->setFocus(); } - export_path = QFileDialog::getSaveFileName(this->ui->launch_export_file, "Save file...", export_path.AbsolutePath().c_str(), - "Log (*.txt)") - .toStdString(); +void TabApplications::on_timer_search() { + this->timer_search->stop(); - if (!export_path.Empty()) { - configurator.last_path_launch_log = export_path.AbsoluteDir(); + this->ResetTextCursor(); - QFile json_file(export_path.AbsolutePath().c_str()); - const bool result = json_file.open(QIODevice::WriteOnly | QIODevice::Text); - if (result) { - json_file.write(this->ui->launch_log_text->toPlainText().toStdString().c_str()); - json_file.close(); + if (!this->search_text.empty()) { + this->highlighter->setSearch(this->search_text.c_str()); - QDesktopServices::openUrl(QUrl::fromLocalFile(export_path.AbsolutePath().c_str())); - } else { - QMessageBox message; - message.setIcon(QMessageBox::Critical); - message.setWindowTitle("Failed to save the diagnostic log!"); - message.setText(format("Couldn't write to '%s'.", export_path.AbsolutePath().c_str()).c_str()); - message.setInformativeText("Select a file path with 'write' rights."); - } + this->ui->launch_log_text->moveCursor(QTextCursor::StartOfWord); + this->SearchFind(false); + this->text_is_reset = false; } } -void TabApplications::on_focus_search() { - this->ui->launch_search_edit->setFocus(); - this->ui->launch_log_text->moveCursor(QTextCursor::Start); -} - void TabApplications::on_search_textEdited(const QString &text) { - if (!this->ui->launch_search_clear->isEnabled()) { - this->ui->launch_log_text->moveCursor(QTextCursor::Start); - } + this->timer_search->start(200); + + this->search_text = text.toStdString(); this->ui->launch_search_next->setEnabled(!this->ui->launch_search_edit->text().isEmpty()); this->ui->launch_search_prev->setEnabled(!this->ui->launch_search_edit->text().isEmpty()); - - this->search_text = text.toStdString(); this->ui->launch_search_clear->setEnabled(!text.isEmpty()); } +void TabApplications::ResetTextCursor() { + if (this->ui->launch_log_text->document()->isEmpty()) { + return; + } + + if (this->text_is_reset) { + return; + } + + QTextCursor cursor = this->ui->launch_log_text->textCursor(); + int saved_anchor = cursor.anchor(); + int saved_Position = cursor.position(); + + cursor.setPosition(0, QTextCursor::MoveAnchor); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + + QTextCharFormat format; + cursor.setCharFormat(format); + + cursor.setPosition(saved_Position, QTextCursor::MoveAnchor); + cursor.setPosition(saved_anchor, QTextCursor::KeepAnchor); + + this->text_is_reset = true; +} + void TabApplications::on_search_clear_pressed() { + this->highlighter->setDocument(nullptr); + this->highlighter->setSearch(""); + this->search_text.clear(); - this->ui->launch_export_file->setEnabled(false); this->ui->launch_search_edit->clear(); this->ui->launch_search_next->setEnabled(false); this->ui->launch_search_prev->setEnabled(false); this->ui->launch_search_clear->setEnabled(false); + + this->ResetTextCursor(); } -void TabApplications::on_search_next_pressed() { this->SearchFind(false); } +void TabApplications::on_search_next_pressed() { + QTextCursor cursor = this->ui->launch_log_text->textCursor(); + this->ui->launch_log_text->moveCursor(QTextCursor::EndOfWord); + this->ui->launch_log_text->setTextCursor(cursor); + this->SearchFind(false); +} -void TabApplications::on_search_prev_pressed() { this->SearchFind(true); } +void TabApplications::on_search_prev_pressed() { + QTextCursor cursor = this->ui->launch_log_text->textCursor(); + this->ui->launch_log_text->moveCursor(QTextCursor::StartOfWord); + this->ui->launch_log_text->setTextCursor(cursor); + this->SearchFind(true); +} void TabApplications::SearchFind(bool prev) { + if (this->highlighter->document() == nullptr) { + this->highlighter->setDocument(this->ui->launch_log_text->document()); + } + QTextDocument::FindFlags flags = prev ? QTextDocument::FindBackward : QTextDocument::FindFlags(0); if (this->search_case) { @@ -768,12 +850,36 @@ void TabApplications::SearchFind(bool prev) { flags |= QTextDocument::FindWholeWords; } - this->ui->launch_log_text->setFocus(); - + bool found = false; if (this->search_regex) { - this->ui->launch_log_text->find(QRegularExpression(this->ui->launch_search_edit->text()), flags); + found = this->ui->launch_log_text->find(QRegularExpression(this->ui->launch_search_edit->text()), flags); + } else { + found = this->ui->launch_log_text->find(this->ui->launch_search_edit->text(), flags); + } + + QTextCursor cursor = this->ui->launch_log_text->textCursor(); + + if (found) { + QTextCharFormat format; + format.setFontWeight(QFont::Bold); + // format.setForeground(Qt::red); + // format.setFontStyleHint(); + // format.setBackground(Qt::yellow); + cursor.mergeCharFormat(format); + + this->ui->launch_log_text->ensureCursorVisible(); } else { - this->ui->launch_log_text->find(this->ui->launch_search_edit->text(), flags); + if (!prev && !cursor.atStart()) { + this->ui->launch_log_text->moveCursor(QTextCursor::Start); + this->SearchFind(prev); + return; + } + + if (prev && !cursor.atEnd()) { + this->ui->launch_log_text->moveCursor(QTextCursor::End); + this->SearchFind(prev); + return; + } } } @@ -818,6 +924,12 @@ void TabApplications::on_context_menu(const QPoint &pos) { if (action == action_clear) { this->on_launch_clear_log_pressed(); } else if (action == action_search) { + QTextCursor cursor = this->ui->launch_log_text->textCursor(); + if (cursor.hasSelection()) { + QString text = cursor.selectedText(); + this->ui->launch_log_text->setPlainText(text); + this->on_search_textEdited(text); + } this->on_focus_search(); } diff --git a/vkconfig_gui/tab_applications.h b/vkconfig_gui/tab_applications.h index d2e53fb784..d385bc1a66 100644 --- a/vkconfig_gui/tab_applications.h +++ b/vkconfig_gui/tab_applications.h @@ -21,11 +21,13 @@ #pragma once #include "tab.h" +#include "highlighter.h" #include #include #include +#include class TabApplications : public Tab { Q_OBJECT @@ -48,7 +50,7 @@ class TabApplications : public Tab { void on_launch_executable_remove_pressed(); void on_launch_options_list_activated(int index); - void on_launch_options_list_textEdited(const QString& text); + void on_launch_options_list_finished(); void on_launch_options_append_pressed(); void on_launch_options_remove_pressed(); @@ -61,7 +63,6 @@ class TabApplications : public Tab { void on_launch_options_log_open_pressed(); void on_context_menu(const QPoint& pos); - void on_export_file(); void on_focus_search(); void on_search_textEdited(const QString& text); @@ -77,8 +78,12 @@ class TabApplications : public Tab { void on_launch_clear_at_launch_toggled(bool checked); void on_launch_clear_log_pressed(); + void on_launch_stdout_display_changed(int index); void on_launch_button_pressed(); + void on_timer_search(); + void on_timer_stream(); + void standardOutputAvailable(); // stdout output is available void errorOutputAvailable(); // Layeroutput is available void processClosed(int exitCode, QProcess::ExitStatus status); // app died @@ -97,4 +102,13 @@ class TabApplications : public Tab { bool search_case = false; bool search_whole = false; bool search_regex = false; + + bool text_is_reset = true; + QTimer* timer_search = nullptr; + QString stream_text; + QTimer* timer_stream = nullptr; + + Highlighter* highlighter = nullptr; + + void ResetTextCursor(); }; diff --git a/vkconfig_gui/tab_configurations.cpp b/vkconfig_gui/tab_configurations.cpp index 63b177e4f8..55cae2e63e 100644 --- a/vkconfig_gui/tab_configurations.cpp +++ b/vkconfig_gui/tab_configurations.cpp @@ -19,9 +19,9 @@ */ #include "widget_tab_configurations_layer.h" +#include "widget_resize_combobox.h" #include "tab_configurations.h" #include "mainwindow.h" -#include "widget_resize_button.h" #include "style.h" #include "item_tree.h" @@ -35,6 +35,7 @@ #include #include #include +#include static std::string BuildPlatformsLog(int platforms) { std::string log; @@ -81,6 +82,9 @@ TabConfigurations::TabConfigurations(MainWindow &window, std::shared_ptrui->configurations_layers_list->installEventFilter(&window); this->ui->configurations_settings->installEventFilter(&window); + this->connect(this->ui->configurations_group_box_override, SIGNAL(toggled(bool)), this, + SLOT(on_configurations_override_toggled(bool))); + this->connect(this->ui->configurations_executable_scope, SIGNAL(currentIndexChanged(int)), this, SLOT(on_configurations_executable_scope_currentIndexChanged(int))); this->connect(this->ui->configurations_executable_list, SIGNAL(currentIndexChanged(int)), this, @@ -117,6 +121,11 @@ TabConfigurations::TabConfigurations(MainWindow &window, std::shared_ptrui->configurations_group_box_scope->blockSignals(true); + this->ui->configurations_group_box_scope->setVisible(configurator.configuration_show_scope || + configurator.GetExecutableScope() != EXECUTABLE_ANY); + this->ui->configurations_group_box_scope->blockSignals(true); + this->ui->configurations_executable_scope->blockSignals(true); this->ui->configurations_executable_scope->clear(); for (int i = 0, n = EXECUTABLE_SCOPE_COUNT; i < n; ++i) { @@ -129,13 +138,25 @@ TabConfigurations::TabConfigurations(MainWindow &window, std::shared_ptrui->configurations_executable_scope->setCurrentIndex(current_scope); this->ui->configurations_executable_scope->blockSignals(false); - this->advanced_mode = new ResizeButton(this->ui->configurations_group_box_layers, 0); - this->advanced_mode->setMinimumSize(24, 24); - this->advanced_mode->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - this->advanced_mode->adjustSize(); - this->ui->configurations_group_box_layers->installEventFilter(this->advanced_mode); - - this->connect(this->advanced_mode, SIGNAL(pressed()), this, SLOT(on_configurations_advanced_toggle_pressed())); + this->layer_display_mode = new ResizeComboBox(this->ui->configurations_group_box_layers, 0); + for (int i = 0, n = LAYERS_DISPLAY_COUNT; i < n; ++i) { + LayersDisplayMode mode = static_cast(i); + this->layer_display_mode->addItem(::GetLabel(mode)); + } + this->layer_display_mode->setCurrentIndex(configurator.layers_display_mode); + QFont font = this->layer_display_mode->font(); + font.setBold(false); + this->layer_display_mode->setFont(font); + this->layer_display_mode->setMinimumSize(196, 24); + this->layer_display_mode->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); + this->layer_display_mode->adjustSize(); + this->ui->configurations_group_box_layers->installEventFilter(this->layer_display_mode); + this->connect(this->layer_display_mode, SIGNAL(currentIndexChanged(int)), this, + SLOT(on_configurations_layers_display_currentIndexChanged(int))); + + QShortcut *shortcut_override = + new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Space), this->ui->configurations_group_box_override); + this->connect(shortcut_override, SIGNAL(activated()), this, SLOT(on_configurations_override_toggled())); this->UpdateUI(UPDATE_REBUILD_UI); } @@ -182,19 +203,22 @@ void TabConfigurations::UpdateUI_Configurations(UpdateUIMode mode) { ListItem *item = new ListItem(configuration.key.c_str()); item->setFlags(item->flags() | Qt::ItemIsEditable); item->setText(configuration.key.c_str()); + if (configurator.GetActiveConfiguration() == &configuration) { - item->setIcon(::Get(configurator.current_theme_mode, ::ICON_SYSTEM_ON)); + item->setIcon(::Get(configurator.current_theme_mode, has_missing_layer ? ::ICON_SYSTEM_INVALID : ::ICON_SYSTEM_ON)); item->setToolTip(configuration_tooltip.c_str()); current_row = static_cast(i); - } else if (has_missing_layer) { - item->setIcon(::Get(configurator.current_theme_mode, ::ICON_SYSTEM_INVALID)); - item->setToolTip( - format("The '%s' configuration has missing layers. These layers are ignored.", configuration.key.c_str()).c_str()); } else { - item->setIcon(::Get(configurator.current_theme_mode, ::ICON_SYSTEM_OFF)); + item->setIcon(::Get(configurator.current_theme_mode, has_missing_layer ? ::ICON_SYSTEM_INVALID : ::ICON_SYSTEM_OFF)); item->setToolTip( format("Select the '%s' configuration to use it with Vulkan executables", configuration.key.c_str()).c_str()); } + + if (has_missing_layer) { + item->setToolTip( + format("The '%s' configuration has missing layers. These layers are ignored.", configuration.key.c_str()).c_str()); + } + ui->configurations_list->addItem(item); } @@ -236,26 +260,55 @@ void TabConfigurations::UpdateUI_Layers(UpdateUIMode mode) { Configurator &configurator = Configurator::Get(); this->ui->configurations_group_box_layers->setEnabled(configurator.HasEnabledUI(ENABLE_UI_LAYERS)); - this->ui->execute_closer_application_label->setVisible(configurator.advanced); - this->ui->execute_closer_driver_label->setVisible(configurator.advanced); - this->ui->configurations_layers_list->setDragEnabled(configurator.advanced); + this->ui->execute_closer_application_label->setVisible(configurator.layers_display_mode != LAYERS_DISPLAY_ENABLED_ONLY); + this->ui->execute_closer_driver_label->setVisible(configurator.layers_display_mode != LAYERS_DISPLAY_ENABLED_ONLY); + this->ui->configurations_layers_list->setDragEnabled(configurator.layers_display_mode != LAYERS_DISPLAY_ENABLED_ONLY); Configuration *configuration = configurator.GetActiveConfiguration(); if (configuration != nullptr) { bool selected_layer = configuration->selected_layer_name.empty(); + bool first_implicit_layer = true; + for (std::size_t i = 0, n = configuration->parameters.size(); i < n; ++i) { Parameter ¶meter = configuration->parameters[i]; - if (!configurator.advanced) { - if (parameter.control != LAYER_CONTROL_ON && parameter.control != LAYER_CONTROL_OFF) { - continue; + switch (configurator.layers_display_mode) { + default: + break; + case LAYERS_DISPLAY_ENABLED_ONLY: { + if (configurator.layers_display_mode == LAYERS_DISPLAY_ENABLED_ONLY) { + if (parameter.control != LAYER_CONTROL_ON && parameter.control != LAYER_CONTROL_OFF) { + continue; + } + } + break; + } + case LAYERS_DISPLAY_EXPLICIT_ONLY: { + if (parameter.IsAutoImplicitLayer()) { + if (first_implicit_layer) { + first_implicit_layer = false; + + QListWidgetItem *item = new ListItem(implicit_layers); + item->setFlags(item->flags() | Qt::ItemIsSelectable); + item->setSizeHint(QSize(0, ITEM_HEIGHT)); + if (configurator.layers_display_mode != LAYERS_DISPLAY_ENABLED_ONLY) { + item->setIcon(::Get(configurator.current_theme_mode, ICON_DRAG)); + } + this->ui->configurations_layers_list->addItem(item); + + QLabel *layer_widget = new QLabel("Vulkan Implicit Layers Located by Vulkan Configurator"); + this->ui->configurations_layers_list->setItemWidget(item, layer_widget); + } + continue; + } + break; } } QListWidgetItem *item = new ListItem(parameter.key.c_str()); item->setFlags(item->flags() | Qt::ItemIsSelectable); item->setSizeHint(QSize(0, ITEM_HEIGHT)); - if (configurator.advanced) { + if (configurator.layers_display_mode != LAYERS_DISPLAY_ENABLED_ONLY) { item->setIcon(::Get(configurator.current_theme_mode, ICON_DRAG)); } this->ui->configurations_layers_list->addItem(item); @@ -296,21 +349,24 @@ void TabConfigurations::UpdateUI_Settings(UpdateUIMode mode) { if (configurator.GetActiveConfiguration()->override_settings) { this->ui->configurations_group_box_settings->setToolTip("Disabled: Use External Layerd Settings file is enabled"); } else { - const std::string state = parameter->override_settings ? "Uncheck to disable" : "Check to enable"; - const std::string tooltip = format("%s '%s' layer settings", state.c_str(), parameter->key.c_str()); - + const std::string tooltip = format("Check to apply '%s' layer settings", parameter->key.c_str()); this->ui->configurations_group_box_settings->setToolTip(tooltip.c_str()); } } } void TabConfigurations::UpdateUI(UpdateUIMode ui_update_mode) { + const Configurator &configurator = Configurator::Get(); + + this->ui->configurations_group_box_override->blockSignals(true); + this->ui->configurations_group_box_override->setChecked(configurator.layers_override_enabled); + this->ui->configurations_group_box_override->blockSignals(false); + this->UpdateUI_Configurations(ui_update_mode); this->UpdateUI_Applications(ui_update_mode); this->UpdateUI_Layers(ui_update_mode); this->UpdateUI_Settings(ui_update_mode); - const Configurator &configurator = Configurator::Get(); const ExecutableScope scope = configurator.GetExecutableScope(); const bool enabled_executable = ::EnabledExecutables(scope); @@ -325,27 +381,23 @@ void TabConfigurations::UpdateUI(UpdateUIMode ui_update_mode) { if (scope == EXECUTABLE_PER) { this->ui->configurations_group_box_list->setToolTip( - format("%s to select a loader configuration for '%s' executable", state.c_str(), path.c_str()).c_str()); + format("%s to select a layers configuration for '%s' executable", state.c_str(), path.c_str()).c_str()); } else { this->ui->configurations_group_box_list->setToolTip( - format("%s to enable the loader configuration for '%s' executable", state.c_str(), path.c_str()).c_str()); + format("%s to enable the layers configuration for '%s' executable", state.c_str(), path.c_str()).c_str()); } } } else if (scope == EXECUTABLE_ANY) { - this->ui->configurations_group_box_list->setToolTip("Select the active loader configuration for any executable"); + this->ui->configurations_group_box_list->setToolTip("Select the active layers configuration for any executable"); } else { this->ui->configurations_group_box_list->setToolTip( - "Change the 'Vulkan Loader Configuration scope' to apply a configuration."); + "Change the 'Vulkan Layers Configuration scope' to apply a configuration."); } - assert(this->advanced_mode != nullptr); - if (configurator.advanced) { - this->advanced_mode->setIcon(::Get(configurator.current_theme_mode, ::ICON_SHOW)); - this->advanced_mode->setToolTip("View only Enabled Vulkan layers"); - } else { - this->advanced_mode->setIcon(::Get(configurator.current_theme_mode, ::ICON_ADVANCED)); - this->advanced_mode->setToolTip("Configure all Available Vulkan Layers"); - } + this->ui->configurations_group_box_scope->blockSignals(true); + this->ui->configurations_group_box_scope->setVisible(configurator.configuration_show_scope); + this->ui->configurations_group_box_scope->setChecked(configurator.layers_override_enabled); + this->ui->configurations_group_box_scope->blockSignals(true); this->ui->configurations_executable_scope->setToolTip(::GetTooltip(scope)); this->ui->configurations_executable_list->setEnabled(enabled_executable); @@ -360,6 +412,8 @@ void TabConfigurations::UpdateUI(UpdateUIMode ui_update_mode) { this->ui->configurations_group_box_list->setChecked(executable->enabled); } this->ui->configurations_group_box_list->blockSignals(false); + + this->window.UpdateUI_Status(); } void TabConfigurations::CleanUI() { this->_settings_tree_manager.CleanupGUI(); } @@ -381,7 +435,11 @@ bool TabConfigurations::EventFilter(QObject *target, QEvent *event) { // Layers were reordered, we need to update the configuration std::vector layer_names; - for (int i = 0, n = ui->configurations_layers_list->count(); i < n; ++i) { + for (int i = 0, n = this->ui->configurations_layers_list->count(); i < n; ++i) { + QListWidgetItem *item = this->ui->configurations_layers_list->item(i); + layer_names.push_back(static_cast(item)->key.c_str()); + + /* QWidget *widget = ui->configurations_layers_list->itemWidget(ui->configurations_layers_list->item(i)); if (widget != nullptr) { ConfigurationLayerWidget *layer_widget = dynamic_cast(widget); @@ -389,21 +447,30 @@ bool TabConfigurations::EventFilter(QObject *target, QEvent *event) { layer_names.push_back(layer_widget->layer_name); } } +*/ } Configuration *configuration = configurator.GetActiveConfiguration(); if (configuration != nullptr) { + QListWidgetItem *item = this->ui->configurations_layers_list->currentItem(); + if (item != nullptr) { + Parameter *parameter = configuration->Find(static_cast(item)->key); + if (parameter != nullptr) { + parameter->was_explicitly_rank = true; + } + } + configuration->Reorder(layer_names); configurator.Override(OVERRIDE_AREA_LOADER_SETTINGS_BIT); this->UpdateUI_Settings(UPDATE_REBUILD_UI); } - return true; + return false; } - if (configurator.GetExecutableScope() == EXECUTABLE_NONE || !ui->configurations_list->isEnabled()) { - return true; + if (!configurator.layers_override_enabled || !ui->configurations_list->isEnabled()) { + return false; } else if (target == this->ui->configurations_list) { QContextMenuEvent *right_click = dynamic_cast(event); if (right_click) { @@ -476,7 +543,17 @@ bool TabConfigurations::EventFilter(QObject *target, QEvent *event) { menu.addSeparator(); - QAction *action_reset_one = new QAction("Reset the Default Configuration", nullptr); + std::string label = name; + if (!label.empty()) { + label = format(" '%s'", label.c_str()); + } + + QAction *action_reset_order = new QAction(format("Reset the%s Default Layers order", label.c_str()).c_str(), nullptr); + action_reset_order->setEnabled(item != nullptr); + action_reset_order->setToolTip("Reset the configuration, discarding all changes of this configuration."); + menu.addAction(action_reset_order); + + QAction *action_reset_one = new QAction(format("Reset the%s Default Configuration", label.c_str()).c_str(), nullptr); action_reset_one->setEnabled(configurator.configurations.IsDefaultConfiguration(name)); action_reset_one->setToolTip("Reset the configuration, discarding all changes of this configuration."); menu.addAction(action_reset_one); @@ -541,6 +618,8 @@ bool TabConfigurations::EventFilter(QObject *target, QEvent *event) { this->OnContextMenuDuplicateClicked(item); } else if (action == action_delete) { this->OnContextMenuDeleteClicked(item); + } else if (action == action_reset_order) { + this->OnContextMenuResetLayersOrderClicked(item); } else if (action == action_reset_one) { this->OnContextMenuResetOneClicked(item); } else if (action == action_reset_all) { @@ -965,6 +1044,39 @@ void TabConfigurations::OnContextMenuDeleteClicked(ListItem *item) { this->UpdateUI(UPDATE_REBUILD_UI); } +void TabConfigurations::OnContextMenuResetLayersOrderClicked(ListItem *item) { + assert(item); + assert(!item->key.empty()); + + Configurator &configurator = Configurator::Get(); + Configuration *configuration = configurator.configurations.FindConfiguration(item->key); + assert(configuration != nullptr); + + if (!(configurator.Get(HIDE_MESSAGE_LAYERS_ORDER_RESET))) { + QMessageBox alert; + alert.setWindowTitle(format("Resetting *%s* Layers order...", configuration->key.c_str()).c_str()); + alert.setText(format("Are you sure you want to reset the *%s* layers order?", configuration->key.c_str()).c_str()); + alert.setInformativeText("The Vulkan Layers order will be reset to the default order."); + alert.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + alert.setDefaultButton(QMessageBox::Yes); + alert.setCheckBox(new QCheckBox("Do not show again.")); + alert.setIcon(QMessageBox::Warning); + int retval = alert.exec(); + + if (alert.checkBox()->isChecked()) { + configurator.Set(HIDE_MESSAGE_LAYERS_ORDER_RESET); + } + + if (retval == QMessageBox::No) { + return; + } + } + + configuration->ResetLayersOrder(configurator.layers); + + this->UpdateUI(UPDATE_REBUILD_UI); +} + void TabConfigurations::OnContextMenuResetOneClicked(ListItem *item) { assert(item); assert(!item->key.empty()); @@ -974,15 +1086,15 @@ void TabConfigurations::OnContextMenuResetOneClicked(ListItem *item) { assert(configuration != nullptr); QMessageBox alert; - alert.setWindowTitle(format("Resetting *%s* loader configuration...", configuration->key.c_str()).c_str()); - alert.setText(format("Are you sure you want to reset the *%s* loader configuration?", configuration->key.c_str()).c_str()); + alert.setWindowTitle(format("Resetting *%s* layers configuration...", configuration->key.c_str()).c_str()); + alert.setText(format("Are you sure you want to reset the *%s* layers configuration?", configuration->key.c_str()).c_str()); if (configuration->IsDefault()) alert.setInformativeText( - format("The loader configuration, including layers settings, will be restored to default built-in *%s* configuration.", + format("The layers configuration, including layers settings, will be restored to default built-in *%s* configuration.", configuration->key.c_str()) .c_str()); else if (configurator.configurations.HasFile(*configuration)) - alert.setInformativeText(format("The loader configuration, including layers settings, will be reloaded using the *%s* " + alert.setInformativeText(format("The layers configuration, including layers settings, will be reloaded using the *%s* " "saved file from previous %s run.", configuration->key.c_str(), VKCONFIG_NAME) .c_str()); @@ -1006,10 +1118,10 @@ void TabConfigurations::OnContextMenuResetAllClicked(ListItem *item) { Configurator &configurator = Configurator::Get(); QMessageBox alert; - alert.setWindowTitle("Resetting all default loader configurations..."); + alert.setWindowTitle("Resetting all default layers configurations..."); alert.setText("Are you sure you want to reset the default loader configurations?"); alert.setInformativeText( - "The loader configurations, including layers settings, will be restored to default built-in configurations."); + "The layers configurations, including layers settings, will be restored to default built-in configurations."); alert.setStandardButtons(QMessageBox::Yes | QMessageBox::No); alert.setDefaultButton(QMessageBox::Yes); alert.setIcon(QMessageBox::Warning); @@ -1030,7 +1142,7 @@ void TabConfigurations::OnContextMenuExportConfigsClicked(ListItem *item) { const Path path_export = configurator.configurations.last_path_export_config.RelativePath() + "/" + item->key + ".json"; const std::string &selected_path = - QFileDialog::getSaveFileName(&this->window, "Export Loader Configuration File", path_export.AbsolutePath().c_str(), + QFileDialog::getSaveFileName(&this->window, "Export Layers Configuration File", path_export.AbsolutePath().c_str(), "JSON configuration(*.json)") .toStdString(); @@ -1043,8 +1155,8 @@ void TabConfigurations::OnContextMenuExportConfigsClicked(ListItem *item) { if (!result) { QMessageBox msg; msg.setIcon(QMessageBox::Critical); - msg.setWindowTitle("Exporting of a Loader Configuration file failed..."); - msg.setText(format("Couldn't be create '%s' Loader configuration file.", selected_path.c_str()).c_str()); + msg.setWindowTitle("Exporting of a Layers Configuration file failed..."); + msg.setText(format("Couldn't be create '%s' Layers configuration file.", selected_path.c_str()).c_str()); msg.exec(); } else { QDesktopServices::openUrl(QUrl::fromLocalFile(selected_path.c_str())); @@ -1089,9 +1201,14 @@ void TabConfigurations::GenerateClicked(GenerateSettingsMode mode) { } } -void TabConfigurations::on_configurations_advanced_toggle_pressed() { +void TabConfigurations::on_configurations_override_toggled() { + this->ui->configurations_group_box_override->setChecked(!this->ui->configurations_group_box_override->isChecked()); +} + +void TabConfigurations::on_configurations_override_toggled(bool checked) { Configurator &configurator = Configurator::Get(); - configurator.advanced = !configurator.advanced; + configurator.layers_override_enabled = checked; + configurator.Override(OVERRIDE_AREA_ALL); this->UpdateUI(UPDATE_REBUILD_UI); } @@ -1113,7 +1230,7 @@ void TabConfigurations::on_configurations_executable_scope_currentIndexChanged(i message.setText(::GetTooltip(scope)); message.setInformativeText( "As the vk_layer_settings.txt file is written in the executable working directory, all the executables " - "with the same working directory will share the same loader configuration.\n\nDo you want to continue?"); + "with the same working directory will share the same layers configuration.\n\nDo you want to continue?"); message.setIcon(QMessageBox::Information); message.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); message.setDefaultButton(QMessageBox::Ok); @@ -1136,7 +1253,6 @@ void TabConfigurations::on_configurations_executable_scope_currentIndexChanged(i } this->UpdateUI(UPDATE_REFRESH_UI); - this->window.UpdateUI_Status(); } void TabConfigurations::on_configurations_executable_list_currentIndexChanged(int index) { @@ -1246,10 +1362,10 @@ void TabConfigurations::UpdatePerExecutableConfigurations() { if (configurator.executables.UpdateConfigurations(updated_executable_paths)) { if (!configurator.Get(HIDE_MESSAGE_NOTIFICATION_PER_CONFIG_UPDATE)) { QMessageBox message; - message.setWindowTitle("Vulkan Executable Loader Configuration Updated"); + message.setWindowTitle("Vulkan Executable Layers Configuration Updated"); message.setText( - format("Per Executable Loader Configuration Scope requires that all executables with the same working " - "directory use the same loader configuration. The following executables were switch to '%s' configuration:", + format("Per Executable Layers Configuration Scope requires that all executables with the same working " + "directory use the same layers configuration. The following executables were switch to '%s' configuration:", configuration->key.c_str()) .c_str()); std::string informative; @@ -1305,7 +1421,7 @@ void TabConfigurations::on_configurations_list_currentRowChanged(int currentRow) alert.setText(text.c_str()); alert.setIcon(QMessageBox::Warning); alert.setCheckBox(new QCheckBox("Do not show again.")); - alert.setInformativeText(format("Use the '%s' tab to add the missing layers.", GetLabel(TAB_LAYERS)).c_str()); + alert.setInformativeText(format("Use the '%s' tab to add the missing layers.", GetLabel(TAB_LAYERS_PATHS)).c_str()); alert.exec(); if (alert.checkBox()->isChecked()) { @@ -1388,23 +1504,30 @@ void TabConfigurations::on_configurations_layers_list_currentRowChanged(int curr return; // No row selected } - QWidget *widget = this->ui->configurations_layers_list->itemWidget(this->ui->configurations_layers_list->item(currentRow)); - if (widget == nullptr) { + ListItem *item = static_cast(this->ui->configurations_layers_list->item(currentRow)); + if (item == nullptr) { return; } - const std::string &layer_string = static_cast(widget)->layer_name; + const std::string &layer_key = item->key; Configurator &configurator = Configurator::Get(); Configuration *configuration = configurator.GetActiveConfiguration(); assert(configuration != nullptr); - if (configuration->selected_layer_name != layer_string) { - configuration->selected_layer_name = layer_string; + if (configuration->selected_layer_name != layer_key) { + configuration->selected_layer_name = layer_key; this->UpdateUI_Settings(UPDATE_REBUILD_UI); } } +void TabConfigurations::on_configurations_layers_display_currentIndexChanged(int index) { + Configurator &configurator = Configurator::Get(); + configurator.layers_display_mode = static_cast(index); + + this->UpdateUI(UPDATE_REBUILD_UI); +} + void TabConfigurations::on_configurations_layerVersionChanged() { this->UpdateUI_Layers(UPDATE_REBUILD_UI); } diff --git a/vkconfig_gui/tab_configurations.h b/vkconfig_gui/tab_configurations.h index 296aa6c615..7bb04b4cd0 100644 --- a/vkconfig_gui/tab_configurations.h +++ b/vkconfig_gui/tab_configurations.h @@ -26,7 +26,7 @@ #include "../vkconfig_core/type_generate_settings.h" -#include +#include #include class TabConfigurations : public Tab { @@ -48,8 +48,8 @@ class TabConfigurations : public Tab { void UpdateUI_Settings(UpdateUIMode ui_update_mode); public Q_SLOTS: - void on_configurations_advanced_toggle_pressed(); - + void on_configurations_override_toggled(); + void on_configurations_override_toggled(bool checked); void on_configurations_executable_scope_currentIndexChanged(int index); void on_configurations_executable_list_currentIndexChanged(int index); void on_configurations_executable_append_pressed(); @@ -66,18 +66,20 @@ class TabConfigurations : public Tab { void on_configuration_settings_file_disable_pressed(); void on_configurations_layers_list_currentRowChanged(int currentRow); + void on_configurations_layers_display_currentIndexChanged(int index); void on_configurations_layerVersionChanged(); private: SettingsTreeManager _settings_tree_manager; - QPushButton *advanced_mode = nullptr; + QComboBox *layer_display_mode = nullptr; void OnContextMenuNewClicked(ListItem *item); void OnContextMenuImportClicked(ListItem *item); void OnContextMenuRenameClicked(ListItem *item); void OnContextMenuDuplicateClicked(ListItem *item); void OnContextMenuDeleteClicked(ListItem *item); + void OnContextMenuResetLayersOrderClicked(ListItem *item); void OnContextMenuResetOneClicked(ListItem *item); void OnContextMenuResetAllClicked(ListItem *item); void OnContextMenuExportConfigsClicked(ListItem *item); diff --git a/vkconfig_gui/tab_diagnostics.cpp b/vkconfig_gui/tab_diagnostics.cpp index 9be6d65cd6..2a2ca27db6 100644 --- a/vkconfig_gui/tab_diagnostics.cpp +++ b/vkconfig_gui/tab_diagnostics.cpp @@ -28,8 +28,10 @@ #include #include #include +#include -TabDiagnostics::TabDiagnostics(MainWindow &window, std::shared_ptr ui) : Tab(TAB_DIAGNOSTIC, window, ui) { +TabDiagnostics::TabDiagnostics(MainWindow &window, std::shared_ptr ui) + : Tab(TAB_DIAGNOSTIC, window, ui), timer_search(new QTimer(this)) { this->connect(this->ui->diagnostic_mode, SIGNAL(currentIndexChanged(int)), this, SLOT(on_mode_changed(int))); this->connect(this->ui->diagnostic_mode_options, SIGNAL(currentIndexChanged(int)), this, SLOT(on_mode_options_changed(int))); this->connect(this->ui->diagnostic_export_folder, SIGNAL(clicked()), this, SLOT(on_export_folder())); @@ -60,25 +62,38 @@ TabDiagnostics::TabDiagnostics(MainWindow &window, std::shared_ptrconnect(this->ui->diagnostic_dir_system, SIGNAL(clicked()), this, SLOT(on_diagnostic_dir_system_pressed())); this->connect(this->ui->diagnostic_dir_info, SIGNAL(clicked()), this, SLOT(on_diagnostic_dir_info_pressed())); + this->connect(this->timer_search, &QTimer::timeout, this, &TabDiagnostics::on_timer_search); + + QShortcut *shortcut_override = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Space), this->ui->diagnostic_group_box_loader_log); + this->connect(shortcut_override, SIGNAL(activated()), this, SLOT(on_diagnostic_loader_messages_toggled())); + QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->diagnostic_status_text); this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); QShortcut *shortcut_next = new QShortcut(QKeySequence(Qt::Key_F3), this->ui->diagnostic_status_text); this->connect(shortcut_next, SIGNAL(activated()), this, SLOT(on_search_next_pressed())); QShortcut *shortcut_prev = new QShortcut(QKeySequence(Qt::SHIFT | Qt::Key_F3), this->ui->diagnostic_status_text); this->connect(shortcut_prev, SIGNAL(activated()), this, SLOT(on_search_prev_pressed())); - - QShortcut *shortcut_case = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_C), this->ui->diagnostic_status_text); - this->connect(shortcut_case, SIGNAL(activated()), this, SLOT(on_search_case_activated())); - QShortcut *shortcut_whole = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_W), this->ui->diagnostic_status_text); - this->connect(shortcut_whole, SIGNAL(activated()), this, SLOT(on_search_whole_activated())); - QShortcut *shortcut_regex = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_R), this->ui->diagnostic_status_text); - this->connect(shortcut_regex, SIGNAL(activated()), this, SLOT(on_search_regex_activated())); + /* + QShortcut *shortcut_case = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_C), this->ui->diagnostic_search_case); + this->connect(shortcut_case, SIGNAL(activated()), this, SLOT(on_search_case_activated())); + QShortcut *shortcut_whole = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_W), this->ui->diagnostic_search_whole); + this->connect(shortcut_whole, SIGNAL(activated()), this, SLOT(on_search_whole_activated())); + QShortcut *shortcut_regex = new QShortcut(QKeySequence(Qt::ALT | Qt::Key_R), this->ui->diagnostic_search_regex); + this->connect(shortcut_regex, SIGNAL(activated()), this, SLOT(on_search_regex_activated())); + */ + this->highlighter = new Highlighter(this->ui->diagnostic_status_text->document()); + + this->on_search_clear_pressed(); + + this->ui->diagnostic_search_case->setVisible(false); + this->ui->diagnostic_search_regex->setVisible(false); + this->ui->diagnostic_search_whole->setVisible(false); this->ui->diagnostic_search_next->setEnabled(false); this->ui->diagnostic_search_prev->setEnabled(false); - this->ui->diagnostic_status_text->installEventFilter(&window); - this->ui->diagnostic_status_text->document()->setMaximumBlockCount(65536); + // this->ui->diagnostic_status_text->installEventFilter(&window); + this->ui->diagnostic_status_text->document()->setMaximumBlockCount(8192); this->ui->diagnostic_status_text->setContextMenuPolicy(Qt::CustomContextMenu); this->UpdateStatus(); @@ -131,8 +146,6 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ std::string filename; if (selected_mode == DIAGNOSTIC_VULKAN_LOADER_LOG) { - configurator.force_full_loader_log = true; - this->status.clear(); args += "--summary"; @@ -168,7 +181,8 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ this->log_path = working_directory.AbsolutePath() + "/" + filename; } - configurator.SetExecutableScope(selected_mode == DIAGNOSTIC_VULKAN_PROFILE ? EXECUTABLE_NONE : EXECUTABLE_ANY); + // configurator.SetExecutableScope(selected_mode == DIAGNOSTIC_VULKAN_PROFILE ? EXECUTABLE_NONE : EXECUTABLE_ANY); + configurator.layers_override_enabled = selected_mode != DIAGNOSTIC_VULKAN_PROFILE; configurator.Override(OVERRIDE_AREA_ALL); this->process->setArguments(args); @@ -179,16 +193,12 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ while (this->process->waitForFinished(1000)) { } - if (selected_mode == DIAGNOSTIC_VULKAN_LOADER_LOG) { - configurator.force_full_loader_log = false; - } - configurator.SetExecutableScope(saved_scope); configurator.Override(OVERRIDE_AREA_ALL); log_status = this->status; } break; - case DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION: { + case DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION: { const Configuration *configuration = nullptr; Configurator &configurator = Configurator::Get(); @@ -211,7 +221,7 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ log_status = file.readAll().toStdString(); file.close(); } else { - log_status = "No active loader configuration selected."; + log_status = "No active layers configuration selected."; } } break; case DIAGNOSTIC_VULKAN_LAYERS_SETTINGS: { @@ -226,7 +236,7 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ if (result) { log_status = file.readAll().toStdString(); } else { - log_status = "No active loader configuration applied."; + log_status = "No active layers configuration applied."; } file.close(); } break; @@ -238,7 +248,7 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ if (result) { log_status = file.readAll().toStdString(); } else { - log_status = "No active loader configuration applied."; + log_status = "No active layers configuration applied."; } file.close(); } break; @@ -250,10 +260,13 @@ std::string TabDiagnostics::BuildStatus(DiagnosticMode selected_mode, std::size_ void TabDiagnostics::UpdateStatus() { this->status = this->BuildStatus(this->mode, this->ui->diagnostic_mode_options->currentIndex()); - this->ui->diagnostic_status_text->setText(this->status.c_str()); + this->ui->diagnostic_status_text->setPlainText(this->status.c_str()); this->ui->diagnostic_search_clear->setEnabled(!this->ui->diagnostic_search_edit->text().isEmpty()); this->ui->diagnostic_search_edit->setFocus(); + this->ui->diagnostic_export_file->setEnabled(true); + + this->ResetTextCursor(); } void TabDiagnostics::UpdateUI(UpdateUIMode mode) { @@ -291,28 +304,46 @@ void TabDiagnostics::UpdateUI(UpdateUIMode mode) { this->ui->diagnostic_group_box_loader_log->blockSignals(true); this->ui->diagnostic_group_box_loader_log->setChecked(configurator.loader_log_enabled); this->ui->diagnostic_group_box_loader_log->blockSignals(false); - // this->UpdateStatus(); + + this->window.UpdateUI_Status(); + + this->ResetTextCursor(); + + // QColor background_color = palette.color(::GetActualThemeMode(configurator.current_theme_mode) == THEME_MODE_FORCE_LIGHT ? + // QPalette::Light : QPalette::Dark); + QPalette palette = this->ui->configurations_list->palette(); + QColor highlight = palette.color(QPalette::AlternateBase); + this->highlighter->setColor(highlight); + // this->highlighter->setColor( + // ::GetActualThemeMode(configurator.current_theme_mode) == THEME_MODE_FORCE_LIGHT ? highlight.lighter() : + // highlight.darker()); } void TabDiagnostics::CleanUI() {} bool TabDiagnostics::EventFilter(QObject *target, QEvent *event) { (void)target; - + /* if (event->type() == QEvent::KeyPress) { QKeyEvent *keyEvent = static_cast(event); switch (keyEvent->key()) { case Qt::Key_Enter: case Qt::Key_Return: - this->SearchFind(false); + if (this->ui->diagnostic_status_text->hasFocus()) { + this->SearchFind(false); + } return false; } return false; } - + */ return false; } +void TabDiagnostics::on_diagnostic_loader_messages_toggled() { + this->ui->diagnostic_group_box_loader_log->setChecked(!this->ui->diagnostic_group_box_loader_log->isChecked()); +} + void TabDiagnostics::on_diagnostic_loader_messages_toggled(bool checked) { Configurator &configurator = Configurator::Get(); configurator.loader_log_enabled = checked; @@ -381,11 +412,15 @@ void TabDiagnostics::on_diagnostic_dir_info_pressed() { } void TabDiagnostics::on_refresh_log() { + static bool only_once = true; + Configurator &configurator = Configurator::Get(); - if (!(configurator.Get(HIDE_MESSAGE_WARN_NO_LOADER_LOG_ENABLED))) { + if (only_once && !(configurator.Get(HIDE_MESSAGE_WARN_NO_LOADER_LOG_ENABLED))) { if (this->mode == DIAGNOSTIC_VULKAN_LOADER_LOG && (!configurator.loader_log_enabled || configurator.loader_log_messages_flags == 0)) { + only_once = false; // don't show again during this run + QMessageBox alert; alert.setWindowTitle("Vulkan Loader Log is disabled"); alert.setText("Do you want enable Vulkan Loader log?"); @@ -411,7 +446,7 @@ void TabDiagnostics::on_refresh_log() { } const bool per_executable = - (this->mode == DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION || this->mode == DIAGNOSTIC_VULKAN_LAYERS_SETTINGS) && + (this->mode == DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION || this->mode == DIAGNOSTIC_VULKAN_LAYERS_SETTINGS) && configurator.GetExecutableScope() == EXECUTABLE_PER; const bool profile_mode = this->mode == DIAGNOSTIC_VULKAN_PROFILE; @@ -478,7 +513,7 @@ void TabDiagnostics::on_export_folder() { case DIAGNOSTIC_VULKAN_PROFILE: options_count = configurator.vulkan_system_info.physicalDevices.size(); break; - case DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION: + case DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION: case DIAGNOSTIC_VULKAN_LAYERS_SETTINGS: if (configurator.GetExecutableScope() == EXECUTABLE_PER) { options_count = configurator.executables.GetExecutables().size(); @@ -507,7 +542,7 @@ void TabDiagnostics::on_export_folder() { export_dir.RelativePath() + format("/%s.json", configurator.vulkan_system_info.physicalDevices[options_index].deviceName.c_str()); } break; - case DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION: + case DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION: case DIAGNOSTIC_VULKAN_LAYERS_SETTINGS: { if (configurator.GetExecutableScope() == EXECUTABLE_PER) { const std::vector &executables = configurator.executables.GetExecutables(); @@ -516,7 +551,7 @@ void TabDiagnostics::on_export_folder() { configuration = configurator.GetActiveConfiguration(); } - if (current_mode == DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION) { + if (current_mode == DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION) { export_path = export_dir.RelativePath() + format("/%s.json", configuration->key.c_str()); } else { export_path = export_dir.RelativePath() + format("/%s.txt", configuration->key.c_str()); @@ -558,7 +593,7 @@ void TabDiagnostics::on_export_file() { export_path = export_path.RelativePath() + format("/%s.json", configurator.vulkan_system_info.physicalDevices[index].deviceName.c_str()); } break; - case DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION: + case DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION: case DIAGNOSTIC_VULKAN_LAYERS_SETTINGS: { if (configurator.GetExecutableScope() == EXECUTABLE_PER) { int index = this->ui->diagnostic_mode_options->currentIndex(); @@ -568,7 +603,7 @@ void TabDiagnostics::on_export_file() { configuration = configurator.GetActiveConfiguration(); } - if (this->mode == DIAGNOSTIC_VULKAN_LOADER_CONFIGURATION) { + if (this->mode == DIAGNOSTIC_VULKAN_LAYERS_CONFIGURATION) { export_path = export_path.RelativePath() + format("/%s.json", configuration->key.c_str()); } else { export_path = export_path.RelativePath() + format("/%s.txt", configuration->key.c_str()); @@ -600,27 +635,89 @@ void TabDiagnostics::on_export_file() { } } -void TabDiagnostics::on_focus_search() { this->ui->diagnostic_search_edit->setFocus(); } +void TabDiagnostics::on_focus_search() { + this->ui->diagnostic_search_edit->setFocus(); + // this->ui->diagnostic_status_text->moveCursor(QTextCursor::Start); +} + +void TabDiagnostics::on_timer_search() { + this->timer_search->stop(); + + this->ResetTextCursor(); + + if (!this->diagnostic_search_text.empty()) { + this->highlighter->setSearch(this->diagnostic_search_text.c_str()); + + this->ui->diagnostic_status_text->moveCursor(QTextCursor::StartOfWord); + this->SearchFind(false); + this->text_is_reset = false; + } +} void TabDiagnostics::on_search_textEdited(const QString &text) { - this->ui->diagnostic_search_next->setEnabled(!this->ui->diagnostic_search_edit->text().isEmpty()); - this->ui->diagnostic_search_prev->setEnabled(!this->ui->diagnostic_search_edit->text().isEmpty()); + this->timer_search->start(200); this->diagnostic_search_text = text.toStdString(); + + this->ui->diagnostic_search_next->setEnabled(!this->ui->diagnostic_search_edit->text().isEmpty()); + this->ui->diagnostic_search_prev->setEnabled(!this->ui->diagnostic_search_edit->text().isEmpty()); this->ui->diagnostic_search_clear->setEnabled(!text.isEmpty()); } +void TabDiagnostics::ResetTextCursor() { + if (this->ui->diagnostic_status_text->document()->isEmpty()) { + return; + } + + if (this->text_is_reset) { + return; + } + + QTextCursor cursor = this->ui->diagnostic_status_text->textCursor(); + int saved_anchor = cursor.anchor(); + int saved_Position = cursor.position(); + + cursor.setPosition(0, QTextCursor::MoveAnchor); + cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); + + QTextCharFormat format; + cursor.setCharFormat(format); + + cursor.setPosition(saved_Position, QTextCursor::MoveAnchor); + cursor.setPosition(saved_anchor, QTextCursor::KeepAnchor); + + this->text_is_reset = true; +} + void TabDiagnostics::on_search_clear_pressed() { + this->highlighter->setSearch(""); + this->diagnostic_search_text.clear(); this->ui->diagnostic_search_edit->clear(); + this->ui->diagnostic_search_next->setEnabled(false); + this->ui->diagnostic_search_prev->setEnabled(false); this->ui->diagnostic_search_clear->setEnabled(false); + + this->ResetTextCursor(); } -void TabDiagnostics::on_search_next_pressed() { this->SearchFind(false); } +void TabDiagnostics::on_search_next_pressed() { + QTextCursor cursor = this->ui->diagnostic_status_text->textCursor(); + this->ui->diagnostic_status_text->moveCursor(QTextCursor::EndOfWord); + this->ui->diagnostic_status_text->setTextCursor(cursor); + this->SearchFind(false); +} -void TabDiagnostics::on_search_prev_pressed() { this->SearchFind(true); } +void TabDiagnostics::on_search_prev_pressed() { + QTextCursor cursor = this->ui->diagnostic_status_text->textCursor(); + this->ui->diagnostic_status_text->moveCursor(QTextCursor::StartOfWord); + this->ui->diagnostic_status_text->setTextCursor(cursor); + this->SearchFind(true); +} void TabDiagnostics::SearchFind(bool prev) { + this->ResetTextCursor(); + QTextDocument::FindFlags flags = prev ? QTextDocument::FindBackward : QTextDocument::FindFlags(0); if (this->search_case) { @@ -630,12 +727,33 @@ void TabDiagnostics::SearchFind(bool prev) { flags |= QTextDocument::FindWholeWords; } - this->ui->diagnostic_status_text->setFocus(); - + bool found = false; if (this->search_regex) { - this->ui->diagnostic_status_text->find(QRegularExpression(this->ui->diagnostic_search_edit->text()), flags); + found = this->ui->diagnostic_status_text->find(QRegularExpression(this->ui->diagnostic_search_edit->text()), flags); } else { - this->ui->diagnostic_status_text->find(this->ui->diagnostic_search_edit->text(), flags); + found = this->ui->diagnostic_status_text->find(this->ui->diagnostic_search_edit->text(), flags); + } + + QTextCursor cursor = this->ui->diagnostic_status_text->textCursor(); + + if (found) { + QTextCharFormat format; + format.setFontWeight(QFont::Bold); + cursor.mergeCharFormat(format); + + this->ui->diagnostic_status_text->ensureCursorVisible(); + } else { + if (!prev && !cursor.atStart()) { + this->ui->diagnostic_status_text->moveCursor(QTextCursor::Start); + this->SearchFind(prev); + return; + } + + if (prev && !cursor.atEnd()) { + this->ui->diagnostic_status_text->moveCursor(QTextCursor::End); + this->SearchFind(prev); + return; + } } } @@ -643,21 +761,21 @@ void TabDiagnostics::on_search_case_activated() { this->ui->diagnostic_search_ca void TabDiagnostics::on_search_case_toggled(bool checked) { this->search_case = checked; - this->ui->diagnostic_status_text->setFocus(); + this->highlighter->setCase(checked); } void TabDiagnostics::on_search_whole_activated() { this->ui->diagnostic_search_whole->setChecked(!this->search_whole); } void TabDiagnostics::on_search_whole_toggled(bool checked) { this->search_whole = checked; - this->ui->diagnostic_status_text->setFocus(); + this->highlighter->setWhole(checked); } void TabDiagnostics::on_search_regex_activated() { this->ui->diagnostic_search_regex->setChecked(!this->search_regex); } void TabDiagnostics::on_search_regex_toggled(bool checked) { this->search_regex = checked; - this->ui->diagnostic_status_text->setFocus(); + this->highlighter->setRegex(checked); } void TabDiagnostics::on_context_menu(const QPoint &pos) { @@ -671,7 +789,7 @@ void TabDiagnostics::on_context_menu(const QPoint &pos) { menu->addSeparator(); QAction *action_search = new QAction("Search...", nullptr); - action_search->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_F)); + // action_search->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_F)); action_search->setEnabled(true); menu->addAction(action_search); @@ -686,6 +804,12 @@ void TabDiagnostics::on_context_menu(const QPoint &pos) { this->ui->diagnostic_status_text->clear(); } } else if (action == action_search) { + QTextCursor cursor = this->ui->diagnostic_status_text->textCursor(); + if (cursor.hasSelection()) { + QString text = cursor.selectedText(); + this->ui->diagnostic_search_edit->setText(text); + this->on_search_textEdited(text); + } this->on_focus_search(); } @@ -707,7 +831,7 @@ void TabDiagnostics::processClosed(int exit_code, QProcess::ExitStatus status) { } } - this->ui->diagnostic_status_text->setText(this->status.c_str()); + this->ui->diagnostic_status_text->setPlainText(this->status.c_str()); if (this->process->processId() > 0) { this->process->kill(); diff --git a/vkconfig_gui/tab_diagnostics.h b/vkconfig_gui/tab_diagnostics.h index 811a03a2b4..d019c0ff1a 100644 --- a/vkconfig_gui/tab_diagnostics.h +++ b/vkconfig_gui/tab_diagnostics.h @@ -21,6 +21,7 @@ #pragma once #include "tab.h" +#include "highlighter.h" #include "../vkconfig_core/type_diagnostic_mode.h" #include "../vkconfig_core/path.h" @@ -39,6 +40,8 @@ class TabDiagnostics : public Tab { virtual void CleanUI() override; virtual bool EventFilter(QObject* target, QEvent* event) override; + void ResetTextCursor(); + public Q_SLOTS: void on_context_menu(const QPoint& pos); void on_mode_changed(int index); @@ -59,6 +62,7 @@ class TabDiagnostics : public Tab { void on_search_whole_activated(); void on_search_regex_activated(); + void on_diagnostic_loader_messages_toggled(); void on_diagnostic_loader_messages_toggled(bool checked); void on_diagnostic_loader_errors_toggled(bool checked); void on_diagnostic_loader_warns_toggled(bool checked); @@ -71,6 +75,8 @@ class TabDiagnostics : public Tab { void on_diagnostic_dir_system_pressed(); void on_diagnostic_dir_info_pressed(); + void on_timer_search(); + void standardOutputAvailable(); // stdout output is available void errorOutputAvailable(); // Layeroutput is available void processClosed(int exitCode, QProcess::ExitStatus status); // app died @@ -84,6 +90,11 @@ class TabDiagnostics : public Tab { bool search_whole = false; bool search_regex = false; + bool text_is_reset = true; + QTimer* timer_search = nullptr; + + Highlighter* highlighter = nullptr; + void OnCheckedLoaderMessageTypes(bool checked); std::string BuildStatus(DiagnosticMode selected_mode, std::size_t mode_index); diff --git a/vkconfig_gui/tab_drivers.cpp b/vkconfig_gui/tab_drivers.cpp index 0a39cc5789..4b3093b3b2 100644 --- a/vkconfig_gui/tab_drivers.cpp +++ b/vkconfig_gui/tab_drivers.cpp @@ -25,12 +25,12 @@ #include "style.h" #include "../vkconfig_core/configurator.h" +#include "../vkconfig_core/json.h" #include +#include TabDrivers::TabDrivers(MainWindow &window, std::shared_ptr ui) : Tab(TAB_DRIVERS, window, ui) { - this->ui->drivers_device_list->installEventFilter(&window); - Configurator &configurator = Configurator::Get(); if (configurator.vulkan_system_info.loaderVersion < Version(1, 4, 322) && false) { @@ -43,8 +43,24 @@ TabDrivers::TabDrivers(MainWindow &window, std::shared_ptr ui) : this->connect(this->ui->driver_forced_name, SIGNAL(currentIndexChanged(int)), this, SLOT(on_driver_name_changed(int))); this->connect(this->ui->driver_group_box_paths, SIGNAL(toggled(bool)), this, SLOT(on_driver_paths_toggled(bool))); - this->connect(this->ui->driver_browse_button, SIGNAL(clicked()), this, SLOT(on_driver_browse_pressed())); - this->connect(this->ui->driver_path_lineedit, SIGNAL(returnPressed()), this, SLOT(on_driver_append_pressed())); + this->connect(this->ui->driver_browse, SIGNAL(clicked()), this, SLOT(on_driver_browse_pressed())); + this->connect(this->ui->driver_path, SIGNAL(returnPressed()), this, SLOT(on_driver_append_pressed())); + + this->connect(this->ui->driver_search, SIGNAL(textEdited(QString)), this, SLOT(on_search_textEdited(QString))); + this->connect(this->ui->driver_search, SIGNAL(returnPressed()), this, SLOT(on_search_next_pressed())); + this->connect(this->ui->driver_search_clear, SIGNAL(clicked()), this, SLOT(on_search_clear_pressed())); + + QShortcut *shortcut_override = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Space), this->ui->driver_group_box_override); + this->connect(shortcut_override, SIGNAL(activated()), this, SLOT(on_driver_override_toggled())); + + QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->driver_paths_list); + this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); + QShortcut *shortcut_browse = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_O), this->ui->driver_paths_list); + this->connect(shortcut_browse, SIGNAL(activated()), this, SLOT(on_driver_browse_pressed())); + + // this->ui->driver_group_box_override->installEventFilter(&window); + this->ui->drivers_device_list->installEventFilter(&window); + this->ui->driver_paths_list->installEventFilter(&window); this->UpdateUI(UPDATE_REBUILD_UI); } @@ -54,6 +70,9 @@ TabDrivers::~TabDrivers() {} void TabDrivers::UpdateUI(UpdateUIMode ui_update_mode) { Configurator &configurator = Configurator::Get(); + this->ui->driver_search_clear->setEnabled(!this->ui->driver_search->text().isEmpty()); + this->ui->driver_search->setFocus(); + switch (ui_update_mode) { case UPDATE_REFRESH_UI: case UPDATE_REBUILD_UI: { @@ -65,7 +84,6 @@ void TabDrivers::UpdateUI(UpdateUIMode ui_update_mode) { this->ui->driver_mode->blockSignals(false); switch (configurator.driver_override_mode) { - default: case DRIVER_MODE_SINGLE: { this->ui->driver_forced_name->blockSignals(true); this->ui->driver_forced_name->clear(); @@ -118,17 +136,37 @@ void TabDrivers::UpdateUI(UpdateUIMode ui_update_mode) { this->ui->drivers_device_list->setVisible(true); this->ui->drivers_label_last->setVisible(true); } break; + case DRIVER_MODE_NONE: { + this->ui->driver_name_label->setVisible(false); + this->ui->driver_forced_name->setVisible(false); + this->ui->drivers_label_first->setVisible(false); + this->ui->drivers_device_list->setVisible(false); + this->ui->drivers_label_last->setVisible(false); + } break; + default: { + assert(0); + break; + } } this->ui->driver_group_box_paths->blockSignals(true); - this->ui->driver_group_box_paths->setChecked(configurator.driver_paths_enabled); + this->ui->driver_group_box_paths->setChecked(configurator.driver_paths_enabled && configurator.driver_override_enabled); this->ui->driver_group_box_paths->blockSignals(false); this->ui->driver_paths_list->clear(); - this->ui->driver_path_lineedit->setText(configurator.last_driver_path.RelativePath().c_str()); this->ui->driver_paths_list->blockSignals(true); for (auto it = configurator.driver_paths.begin(); it != configurator.driver_paths.end(); ++it) { + if (!this->driver_filter.empty()) { + const std::string text = it->first.AbsolutePath(); + + std::string lower_text = ::ToLowerCase(text); + std::string driver_filter_search = ::ToLowerCase(this->driver_filter); + if (lower_text.find(driver_filter_search.c_str()) == std::string::npos) { + continue; + } + } + QListWidgetItem *item_state = new QListWidgetItem; item_state->setFlags(item_state->flags() | Qt::ItemIsSelectable); item_state->setSizeHint(QSize(0, ITEM_HEIGHT)); @@ -143,6 +181,8 @@ void TabDrivers::UpdateUI(UpdateUIMode ui_update_mode) { this->ui->driver_paths_list->blockSignals(false); } break; } + + this->window.UpdateUI_Status(); } void TabDrivers::CleanUI() {} @@ -178,13 +218,41 @@ bool TabDrivers::EventFilter(QObject *target, QEvent *event) { return false; } +void TabDrivers::on_focus_search() { this->ui->driver_search->setFocus(); } + +void TabDrivers::on_search_textEdited(const QString &text) { + this->driver_filter = text.toStdString(); + + this->ui->driver_search_clear->setEnabled(!text.isEmpty()); + + this->UpdateUI(UPDATE_REBUILD_UI); +} + +void TabDrivers::on_search_clear_pressed() { + this->driver_filter.clear(); + + this->ui->driver_search->clear(); + this->ui->driver_search_clear->setEnabled(false); + + this->UpdateUI(UPDATE_REBUILD_UI); +} + +void TabDrivers::on_search_next_pressed() {} + +void TabDrivers::on_driver_override_toggled() { + this->ui->driver_group_box_override->setChecked(!this->ui->driver_group_box_override->isChecked()); +} + void TabDrivers::on_driver_override_toggled(bool checked) { Configurator &configurator = Configurator::Get(); + int index = std::max(this->ui->driver_forced_name->currentIndex(), 0); + configurator.driver_override_enabled = checked; - configurator.driver_override_info = - ::GetDeviceInfo(configurator.vulkan_system_info.physicalDevices[this->ui->driver_forced_name->currentIndex()]); + configurator.driver_override_info = ::GetDeviceInfo(configurator.vulkan_system_info.physicalDevices[index]); configurator.Override(OVERRIDE_AREA_LOADER_SETTINGS_BIT); + + this->UpdateUI(UPDATE_REBUILD_UI); } void TabDrivers::on_driver_mode_changed(int index) { @@ -230,7 +298,7 @@ void TabDrivers::on_paths_toggled() { void TabDrivers::on_driver_append_pressed() { Configurator &configurator = Configurator::Get(); - const Path &selected_path = this->ui->driver_path_lineedit->text().toStdString(); + const Path &selected_path = this->ui->driver_path->text().toStdString(); if (selected_path.Empty()) { return; @@ -238,8 +306,23 @@ void TabDrivers::on_driver_append_pressed() { if (!selected_path.Exists()) { QMessageBox alert; - alert.setWindowTitle("Vulkan Driver Manifest file not found"); - alert.setText("The path"); + alert.setWindowTitle("Vulkan Driver Manifest directory not found"); + alert.setText("The directory:"); + alert.setInformativeText(selected_path.AbsolutePath().c_str()); + alert.setStandardButtons(QMessageBox::Ok); + alert.setDefaultButton(QMessageBox::Ok); + alert.setIcon(QMessageBox::Warning); + alert.exec(); + return; + } + + configurator.last_driver_dir = selected_path; + + const std::vector drivers_paths = ::CollectDriversPaths(selected_path); + if (drivers_paths.empty()) { + QMessageBox alert; + alert.setWindowTitle("No Vulkan Driver Manifest found in the directory"); + alert.setText("The directory:"); alert.setInformativeText(selected_path.AbsolutePath().c_str()); alert.setStandardButtons(QMessageBox::Ok); alert.setDefaultButton(QMessageBox::Ok); @@ -248,8 +331,9 @@ void TabDrivers::on_driver_append_pressed() { return; } - configurator.driver_paths.insert(std::pair(selected_path, true)); - configurator.last_driver_path = selected_path; + for (std::size_t i = 0, n = drivers_paths.size(); i < n; ++i) { + configurator.driver_paths.insert(std::pair(drivers_paths[i], true)); + } configurator.UpdateVulkanSystemInfo(); @@ -259,15 +343,41 @@ void TabDrivers::on_driver_append_pressed() { void TabDrivers::on_driver_browse_pressed() { Configurator &configurator = Configurator::Get(); - const Path &selected_path = QFileDialog::getOpenFileName(this->ui->driver_browse_button, "Adding a Driver Manifests File...", - configurator.last_driver_path.AbsolutePath().c_str(), "*.json") + const Path &selected_path = QFileDialog::getExistingDirectory(this->ui->driver_browse, "Adding Driver Manifests Directory...", + configurator.last_driver_dir.AbsolutePath().c_str()) .toStdString(); if (selected_path.Empty()) { return; } + /* + QJsonDocument document = ParseJsonFile(selected_path.AbsolutePath().c_str()); + if (document.isNull() || document.isEmpty()) { + QMessageBox alert; + alert.setWindowTitle("Could not open the JSON file"); + alert.setText("The path"); + alert.setInformativeText(selected_path.AbsolutePath().c_str()); + alert.setStandardButtons(QMessageBox::Ok); + alert.setDefaultButton(QMessageBox::Ok); + alert.setIcon(QMessageBox::Warning); + alert.exec(); + return; + } - this->ui->driver_path_lineedit->setText(selected_path.AbsolutePath().c_str()); + const QJsonObject& json_root_object = document.object(); + if (json_root_object.value("ICD") == QJsonValue::Undefined) { + QMessageBox alert; + alert.setWindowTitle("Could not open the JSON file"); + alert.setText("The path"); + alert.setInformativeText(selected_path.AbsolutePath().c_str()); + alert.setStandardButtons(QMessageBox::Ok); + alert.setDefaultButton(QMessageBox::Ok); + alert.setIcon(QMessageBox::Warning); + alert.exec(); + return; + } + */ + this->ui->driver_path->setText(selected_path.AbsolutePath().c_str()); this->on_driver_append_pressed(); } diff --git a/vkconfig_gui/tab_drivers.h b/vkconfig_gui/tab_drivers.h index 5b3d0078c3..f2372e6a11 100644 --- a/vkconfig_gui/tab_drivers.h +++ b/vkconfig_gui/tab_drivers.h @@ -38,12 +38,19 @@ class TabDrivers : public Tab { void on_driver_mode_changed(int index); void on_driver_name_changed(int index); + void on_driver_override_toggled(); void on_driver_paths_toggled(bool checked); void on_paths_changed(); void on_paths_toggled(); void on_driver_append_pressed(); void on_driver_browse_pressed(); + void on_focus_search(); + void on_search_textEdited(const QString &text); + void on_search_clear_pressed(); + void on_search_next_pressed(); + private: std::string new_path; + std::string driver_filter; }; diff --git a/vkconfig_gui/tab_layers.cpp b/vkconfig_gui/tab_layers.cpp index 50e0f0f749..31d672ea8e 100644 --- a/vkconfig_gui/tab_layers.cpp +++ b/vkconfig_gui/tab_layers.cpp @@ -28,23 +28,37 @@ #include #include +#include +#include #include #include -TabLayers::TabLayers(MainWindow &window, std::shared_ptr ui) : Tab(TAB_LAYERS, window, ui) { +TabLayers::TabLayers(MainWindow &window, std::shared_ptr ui) : Tab(TAB_LAYERS_PATHS, window, ui) { Configurator &configurator = Configurator::Get(); this->ui->layers_progress->setValue(0); this->ui->layers_progress->setVisible(false); this->ui->layers_path_lineedit->setVisible(true); - this->ui->layers_path_lineedit->setText(configurator.layers.last_layers_path.RelativePath().c_str()); - this->ui->layers_validate_checkBox->setChecked(configurator.layers.validate_manifests); + this->ui->layers_search_clear->setEnabled(false); + this->ui->layers_path_lineedit->setText(configurator.layers.last_layers_dir.AbsolutePath().c_str()); this->connect(this->ui->layers_browse_button, SIGNAL(clicked()), this, SLOT(on_layers_browse_pressed())); this->connect(this->ui->layers_reload_button, SIGNAL(clicked()), this, SLOT(on_layers_reload_pressed())); + // this->connect(this->ui->layers_path_lineedit, SIGNAL(editingFinished()), this, SLOT(on_layers_append_pressed())); this->connect(this->ui->layers_path_lineedit, SIGNAL(returnPressed()), this, SLOT(on_layers_append_pressed())); - this->connect(this->ui->layers_validate_checkBox, SIGNAL(toggled(bool)), this, SLOT(on_layers_validate_checkBox_toggled(bool))); + + this->connect(this->ui->layers_search, SIGNAL(textEdited(QString)), this, SLOT(on_search_textEdited(QString))); + this->connect(this->ui->layers_search_clear, SIGNAL(clicked()), this, SLOT(on_search_clear_pressed())); + + QShortcut *shortcut_search = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_F), this->ui->layers_list); + this->connect(shortcut_search, SIGNAL(activated()), this, SLOT(on_focus_search())); + QShortcut *shortcut_browse = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_O), this->ui->layers_list); + this->connect(shortcut_browse, SIGNAL(activated()), this, SLOT(on_layers_browse_pressed())); + QShortcut *shortcut_reload = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_R), this->ui->layers_list); + this->connect(shortcut_reload, SIGNAL(activated()), this, SLOT(on_layers_reload_pressed())); + + this->ui->layers_list->installEventFilter(&window); } TabLayers::~TabLayers() {} @@ -54,79 +68,59 @@ void TabLayers::UpdateUI_LayersPaths(UpdateUIMode ui_update_mode) { Configurator &configurator = Configurator::Get(); - this->ui->layers_paths_tree->blockSignals(true); + this->ui->layers_list->blockSignals(true); switch (ui_update_mode) { case UPDATE_REBUILD_UI: { - this->ui->layers_paths_tree->clear(); - for (std::size_t group_index = configurator.layers.paths.size(); group_index > 0; --group_index) { - const LayersPaths group_path = static_cast(group_index - 1); - - std::vector &paths_group = configurator.layers.paths[group_path]; - for (std::size_t i = 0, n = paths_group.size(); i < n; ++i) { - QTreeWidgetItem *item_state = new QTreeWidgetItem; - item_state->setFlags(item_state->flags() | Qt::ItemIsSelectable); - item_state->setSizeHint(0, QSize(0, ITEM_HEIGHT)); - LayersPathWidget *layer_path_widget = - new LayersPathWidget(paths_group[i], group_path, group_path == LAYERS_PATHS_GUI); - this->connect(layer_path_widget, SIGNAL(itemChanged()), this, SLOT(on_paths_changed())); - this->connect(layer_path_widget, SIGNAL(itemToggled()), this, SLOT(on_paths_toggled())); - - ui->layers_paths_tree->addTopLevelItem(item_state); - ui->layers_paths_tree->setItemWidget(item_state, 0, layer_path_widget); - - const std::string &layer_path = paths_group[i].path.AbsolutePath(); - const std::vector &manifest_paths = CollectFilePaths(layer_path); - - for (std::size_t manifest_index = 0, manifest_count = manifest_paths.size(); manifest_index < manifest_count; - ++manifest_index) { - const Layer *layer = configurator.layers.FindFromManifest(manifest_paths[manifest_index], true); - if (layer == nullptr) { - continue; // When the directory has JSON files that are not layer manifest - } - - std::string label = layer->key; - - if (layer->is_32bits) { - label += " (32 bits)"; - } - - label += " - " + layer->api_version.str(); - - if (layer->status != STATUS_STABLE) { - label += format(" (%s)", GetToken(layer->status)); - } - - QTreeWidgetItem *item = new QTreeWidgetItem; - item->setText(0, label.c_str()); - item->setToolTip(0, layer->manifest_path.AbsolutePath().c_str()); - item->setDisabled(!paths_group[i].enabled); - item_state->addChild(item); - } + this->ui->layers_list->clear(); + + const std::set &layer_display_list = configurator.layers.BuildLayerDisplayList(); + + for (auto it = layer_display_list.begin(), end = layer_display_list.end(); it != end; ++it) { + const Layer *layer = configurator.layers.Find(it->id, false); + if (layer == nullptr) { + continue; } - } - this->ui->layers_paths_tree->expandAll(); - } break; - case UPDATE_REFRESH_UI: { - for (int i = 0; i < this->ui->layers_paths_tree->topLevelItemCount(); ++i) { - QTreeWidgetItem *item = this->ui->layers_paths_tree->topLevelItem(i); - LayersPathWidget *widget = static_cast(ui->layers_paths_tree->itemWidget(item, 0)); - - for (int i = 0; i < item->childCount(); ++i) { - QTreeWidgetItem *child_item = item->child(i); - child_item->setDisabled(!widget->isChecked()); + if (!this->layer_filter.empty()) { + const std::string status = layer->status == STATUS_STABLE ? "" : format(" (%s)", ::GetToken(layer->status)); + const std::string text = format("%s - %s%s - %s layer", layer->key.c_str(), layer->api_version.str().c_str(), + status.c_str(), ::GetToken(layer->type)); + + std::string lower_text = ::ToLowerCase(text); + std::string layer_filter_search = ::ToLowerCase(this->layer_filter); + if (lower_text.find(layer_filter_search.c_str()) == std::string::npos) { + continue; + } } + + QListWidgetItem *item = new QListWidgetItem; + item->setFlags(item->flags() | Qt::ItemIsSelectable); + item->setSizeHint(QSize(0, ITEM_HEIGHT)); + + LayerWidget *layer_widget = new LayerWidget(*layer); + this->connect(layer_widget, SIGNAL(itemChanged()), this, SLOT(on_paths_changed())); + this->connect(layer_widget, SIGNAL(itemToggled()), this, SLOT(on_paths_toggled())); + + this->ui->layers_list->addItem(item); + this->ui->layers_list->setItemWidget(item, layer_widget); } } break; + default: { + } break; } - this->ui->layers_paths_tree->blockSignals(false); + this->ui->layers_list->blockSignals(false); } void TabLayers::UpdateUI(UpdateUIMode ui_update_mode) { + const Configurator &configurator = Configurator::Get(); + + this->ui->layers_search_clear->setEnabled(!this->ui->layers_search->text().isEmpty()); + this->ui->layers_search->setFocus(); this->ui->layers_progress->resetFormat(); this->ui->layers_progress->setValue(0); + this->UpdateUI_LayersPaths(ui_update_mode); } @@ -157,11 +151,6 @@ void TabLayers::on_paths_toggled() { this->UpdateUI_LayersPaths(UPDATE_REFRESH_UI); } -void TabLayers::on_layers_validate_checkBox_toggled(bool checked) { - Configurator &configurator = Configurator::Get(); - configurator.layers.validate_manifests = checked; -} - void TabLayers::on_layers_append_pressed() { this->LoadLayersManifest(this->ui->layers_path_lineedit->text()); } void TabLayers::on_layers_browse_pressed() { @@ -169,14 +158,36 @@ void TabLayers::on_layers_browse_pressed() { const QString selected_path = QFileDialog::getExistingDirectory(this->ui->layers_browse_button, "Select Layer Manifests Folder...", - configurator.layers.last_layers_path.AbsolutePath().c_str()); + configurator.layers.last_layers_dir.AbsolutePath().c_str()); this->LoadLayersManifest(selected_path); } +void TabLayers::on_focus_search() { this->ui->layers_search->setFocus(); } + +void TabLayers::on_search_textEdited(const QString &text) { + this->layer_filter = text.toStdString(); + + this->ui->layers_search_clear->setEnabled(!text.isEmpty()); + + this->UpdateUI_LayersPaths(UPDATE_REBUILD_UI); +} + +void TabLayers::on_search_clear_pressed() { + this->layer_filter.clear(); + + this->ui->layers_search->clear(); + this->ui->layers_search_clear->setEnabled(false); + + this->UpdateUI_LayersPaths(UPDATE_REBUILD_UI); +} + void TabLayers::on_layers_reload_pressed() { + this->ui->layers_search->setVisible(false); + this->ui->layers_search_clear->setVisible(false); this->ui->layers_path_lineedit->setVisible(false); this->ui->layers_browse_button->setVisible(false); + this->ui->layers_reload_button->setVisible(false); this->ui->layers_progress->setVisible(true); Path new_path = this->ui->layers_path_lineedit->text().toStdString(); @@ -185,13 +196,7 @@ void TabLayers::on_layers_reload_pressed() { std::vector layers_count(LAYER_LOAD_COUNT, 0); - LayersPathInfo info; - info.path = new_path; - configurator.layers.AppendPath(info); - configurator.layers.UpdatePathEnabled(info, LAYERS_PATHS_GUI); - - const std::vector layers_paths = - new_path.Empty() ? configurator.layers.CollectManifestPaths() : ::CollectFilePaths(new_path); + const std::vector &layers_paths = ::CollectLayersPaths(new_path); this->ui->layers_progress->setMaximum(static_cast(layers_paths.size())); this->ui->layers_progress->setValue(0); @@ -204,7 +209,7 @@ void TabLayers::on_layers_reload_pressed() { this->ui->layers_progress->setValue(static_cast(i + 1)); this->ui->layers_progress->update(); - LayerLoadStatus status = configurator.layers.LoadLayer(layers_paths[i], LAYER_TYPE_EXPLICIT, configurator.mode); + LayerLoadStatus status = configurator.layers.LoadLayers(layers_paths[i], LAYER_TYPE_EXPLICIT, configurator.mode); ++layers_count[status]; std::this_thread::sleep_until(std::chrono::system_clock::now() + std::chrono::milliseconds(10)); @@ -213,7 +218,16 @@ void TabLayers::on_layers_reload_pressed() { configurator.UpdateConfigurations(); configurator.Override(OVERRIDE_AREA_ALL); - std::string last_layers_path = configurator.layers.last_layers_path.AbsolutePath(); + // std::string last_layers_path = configurator.layers.last_layers_dir.AbsolutePath(); + + this->ui->layers_search->setVisible(true); + this->ui->layers_search_clear->setVisible(true); + this->ui->layers_path_lineedit->setVisible(true); + this->ui->layers_browse_button->setVisible(true); + this->ui->layers_reload_button->setVisible(true); + this->ui->layers_progress->setVisible(false); + + this->UpdateUI_LayersPaths(UPDATE_REBUILD_UI); if (!configurator.Get(HIDE_MESSAGE_NOTIFICATION_LAYERS_LOADED)) { std::string text = "Loading and reloading all located layers manifests:\n"; @@ -234,18 +248,18 @@ void TabLayers::on_layers_reload_pressed() { configurator.Set(HIDE_MESSAGE_NOTIFICATION_LAYERS_LOADED); } } - - this->ui->layers_path_lineedit->setVisible(true); - this->ui->layers_browse_button->setVisible(true); - this->ui->layers_progress->setVisible(false); } void TabLayers::LoadLayersManifest(const QString &selected_path) { Configurator &configurator = Configurator::Get(); if (!selected_path.isEmpty()) { - configurator.layers.last_layers_path = selected_path.toStdString(); - this->ui->layers_path_lineedit->setText(configurator.layers.last_layers_path.AbsolutePath().c_str()); + configurator.layers.last_layers_dir = selected_path.toStdString(); + if (!configurator.layers.last_layers_dir.Empty()) { + this->ui->layers_path_lineedit->setText(configurator.layers.last_layers_dir.AbsolutePath().c_str()); + } + + configurator.layers.gui_added_layers_paths.insert(configurator.layers.last_layers_dir); this->on_layers_reload_pressed(); diff --git a/vkconfig_gui/tab_layers.h b/vkconfig_gui/tab_layers.h index 7513a62b6f..aa55c1b3b8 100644 --- a/vkconfig_gui/tab_layers.h +++ b/vkconfig_gui/tab_layers.h @@ -38,11 +38,16 @@ class TabLayers : public Tab { public Q_SLOTS: void on_paths_changed(); void on_paths_toggled(); - void on_layers_validate_checkBox_toggled(bool checked); void on_layers_append_pressed(); void on_layers_browse_pressed(); void on_layers_reload_pressed(); + void on_focus_search(); + void on_search_textEdited(const QString &text); + void on_search_clear_pressed(); + private: void LoadLayersManifest(const QString &selected_path); + + std::string layer_filter; }; diff --git a/vkconfig_gui/tab_preferences.cpp b/vkconfig_gui/tab_preferences.cpp index ce0d534140..e93316fcfb 100644 --- a/vkconfig_gui/tab_preferences.cpp +++ b/vkconfig_gui/tab_preferences.cpp @@ -40,12 +40,15 @@ TabPreferences::TabPreferences(MainWindow &window, std::shared_ptrconnect(this->ui->preferences_keep_running, SIGNAL(toggled(bool)), this, SLOT(on_keep_running_toggled(bool))); this->connect(this->ui->preferences_vk_home_text, SIGNAL(returnPressed()), this, SLOT(on_vk_home_text_pressed())); this->connect(this->ui->preferences_vk_home_browse, SIGNAL(clicked()), this, SLOT(on_vk_home_browse_pressed())); + this->connect(this->ui->preferences_show_executable_scope, SIGNAL(toggled(bool)), this, + SLOT(on_show_executables_scope_toggled(bool))); this->connect(this->ui->preferences_all_enabled_executables, SIGNAL(currentIndexChanged(int)), this, SLOT(on_all_enabled_executables_changed(int))); this->connect(this->ui->preferences_vk_download_browse, SIGNAL(clicked()), this, SLOT(on_vk_download_browse_pressed())); this->connect(this->ui->preferences_vk_download_open, SIGNAL(clicked()), this, SLOT(on_vk_download_open_pressed())); this->connect(this->ui->preferences_reset, SIGNAL(clicked()), this, SLOT(on_reset_hard_pressed())); this->connect(this->ui->preferences_show_debug_settings, SIGNAL(toggled(bool)), this, SLOT(on_layer_debug_mode_toggled(bool))); + this->connect(this->ui->preferences_validate_layer, SIGNAL(toggled(bool)), this, SLOT(on_layer_validate_toggled(bool))); this->connect(this->ui->preferences_open_page, SIGNAL(clicked()), this, SLOT(on_open_page_pressed())); this->connect(this->ui->preferences_notify_releases, SIGNAL(toggled(bool)), this, SLOT(on_notify_releases_toggled(bool))); this->connect(this->ui->preferences_download, SIGNAL(clicked()), this, SLOT(on_download_pressed())); @@ -58,6 +61,8 @@ TabPreferences::TabPreferences(MainWindow &window, std::shared_ptrconnect(this->ui->preferences_theme_dark_alternate_open, SIGNAL(clicked()), this, SLOT(on_theme_dark_alternate_pressed())); + this->connect(this->ui->preferences_app_log_max_blocks, SIGNAL(valueChanged(int)), this, + SLOT(on_app_text_max_blocks_changed(int))); #if QT_VERSION < QT_VERSION_CHECK(6, 8, 0) this->ui->preferences_theme_mode->setToolTip( @@ -66,7 +71,7 @@ TabPreferences::TabPreferences(MainWindow &window, std::shared_ptrui->preferences_keep_running->setEnabled(QSystemTrayIcon::isSystemTrayAvailable()); if (!QSystemTrayIcon::isSystemTrayAvailable()) { - this->ui->preferences_keep_running->setToolTip("I couldn't detect any system tray on this system."); + this->ui->preferences_keep_running->setToolTip("No system tray on this system."); } this->ui->preferences_theme_mode->setEnabled(QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)); @@ -79,12 +84,16 @@ TabPreferences::TabPreferences(MainWindow &window, std::shared_ptrui->preferences_theme_dark_alternate_enabled->blockSignals(true); this->ui->preferences_theme_dark_alternate_enabled->setChecked(configurator.theme_dark_alternate_enabled); this->ui->preferences_theme_dark_alternate_enabled->blockSignals(false); - this->on_theme_mode_changed(configurator.current_theme_mode); + + this->ui->launch_log_text->document()->setMaximumBlockCount(configurator.app_log_max_blocks); + this->ui->preferences_app_log_max_blocks->blockSignals(true); + this->ui->preferences_app_log_max_blocks->setValue(configurator.app_log_max_blocks); + this->ui->preferences_app_log_max_blocks->blockSignals(false); this->ui->preferences_progress->setVisible(false); this->ui->preferences_notify_releases->setChecked(configurator.GetUseNotifyReleases()); - this->ui->preferences_download->setText("Searching Latest Vulkan SDK..."); + this->ui->preferences_validate_layer->setChecked(configurator.layers.validate_manifests); #if WORKAROUND_WINARM_RELEASE_NOTIFICATION_BUG // Windows ARM crash, it looks like a Qt bug in 6.8.2... @@ -100,6 +109,8 @@ TabPreferences::TabPreferences(MainWindow &window, std::shared_ptrUpdatePreferences(configurator.current_theme_mode); } TabPreferences::~TabPreferences() {} @@ -119,6 +130,7 @@ void TabPreferences::UpdateUI(UpdateUIMode mode) { this->ui->preferences_vk_home_text->blockSignals(false); this->ui->preferences_all_enabled_executables->blockSignals(true); + this->ui->preferences_all_enabled_executables->setEnabled(configurator.configuration_show_scope); this->ui->preferences_all_enabled_executables->setCurrentIndex( static_cast(configurator.GetAllEnabledExecutableBehavior())); this->ui->preferences_all_enabled_executables->blockSignals(false); @@ -135,38 +147,24 @@ void TabPreferences::UpdateUI(UpdateUIMode mode) { void TabPreferences::CleanUI() {} -bool TabPreferences::EventFilter(QObject *target, QEvent *event) { - (void)target; - (void)event; - - return false; -} - -void TabPreferences::on_all_enabled_executables_changed(int index) { +void TabPreferences::UpdatePreferences(ThemeMode new_theme_mode) { Configurator &configurator = Configurator::Get(); - const ExecutableAllEnabledBehavior behavior = static_cast(index); - configurator.SetAllEnabledExecutableBehavior(behavior); -} - -void TabPreferences::on_theme_mode_changed(int index) { - Configurator &configurator = Configurator::Get(); - - const ThemeMode new_theme_mode = static_cast(index); - - // Configurations + // Configurations this->ui->configurations_executable_append->setIcon(::Get(new_theme_mode, ::ICON_FILE_SEARCH)); this->ui->configurations_executable_remove->setIcon(::Get(new_theme_mode, ::ICON_FILE_REMOVE)); this->ui->configurations_settings_reset->setIcon(::Get(new_theme_mode, ::ICON_RELOAD)); - // Drivers - this->ui->driver_browse_button->setIcon(::Get(new_theme_mode, ::ICON_FILE_SEARCH)); + // Drivers + this->ui->driver_browse->setIcon(::Get(new_theme_mode, ::ICON_FOLDER_SEARCH)); + this->ui->driver_search_clear->setIcon(::Get(new_theme_mode, ::ICON_EXIT)); - // Layers + // Layers this->ui->layers_browse_button->setIcon(::Get(new_theme_mode, ::ICON_FOLDER_SEARCH)); this->ui->layers_reload_button->setIcon(::Get(new_theme_mode, ::ICON_FOLDER_RELOAD)); + this->ui->layers_search_clear->setIcon(::Get(new_theme_mode, ::ICON_EXIT)); - // Applications + // Applications this->ui->launch_executable_search->setIcon(::Get(new_theme_mode, ::ICON_FILE_SEARCH)); this->ui->launch_executable_append->setIcon(::Get(new_theme_mode, ::ICON_FILE_APPEND)); this->ui->launch_executable_remove->setIcon(::Get(new_theme_mode, ::ICON_FILE_REMOVE)); @@ -176,7 +174,6 @@ void TabPreferences::on_theme_mode_changed(int index) { this->ui->launch_options_log_button->setIcon(::Get(new_theme_mode, ::ICON_FILE_SEARCH)); this->ui->launch_options_log_open->setIcon(::Get(new_theme_mode, ::ICON_FILE_EXPORT)); - this->ui->launch_export_file->setIcon(::Get(new_theme_mode, ::ICON_FILE_EXPORT)); this->ui->launch_search_clear->setIcon(::Get(new_theme_mode, ::ICON_EXIT)); this->ui->launch_search_next->setIcon(::Get(new_theme_mode, ::ICON_NEXT)); this->ui->launch_search_prev->setIcon(::Get(new_theme_mode, ::ICON_PREV)); @@ -184,7 +181,7 @@ void TabPreferences::on_theme_mode_changed(int index) { this->ui->launch_search_whole->setIcon(::Get(new_theme_mode, ::ICON_SEARCH_WHOLE)); this->ui->launch_search_regex->setIcon(::Get(new_theme_mode, ::ICON_SEARCH_REGEX)); - // Diagnostics + // Diagnostics this->ui->diagnostic_export_folder->setIcon(::Get(new_theme_mode, ::ICON_FOLDER_EXPORT)); this->ui->diagnostic_export_file->setIcon(::Get(new_theme_mode, ::ICON_FILE_EXPORT)); this->ui->diagnostic_refresh->setIcon(::Get(new_theme_mode, ::ICON_RELOAD)); @@ -199,6 +196,12 @@ void TabPreferences::on_theme_mode_changed(int index) { this->ui->diagnostic_dir_system->setIcon(::Get(new_theme_mode, ::ICON_ADVANCED)); this->ui->diagnostic_dir_info->setVisible(VKC_PLATFORM == PLATFORM_LINUX || VKC_ENV == VKC_ENV_WIN32); + /* + QPalette palette = this->ui->configurations_list->palette(); + QColor background_color = palette.color(QPalette::Highlight); + palette.setColor(QPalette::Shadow, background_color); + this->ui->diagnostic_status_text->setPalette(palette); + */ // Preferences this->ui->preferences_reset->setIcon(::Get(new_theme_mode, ::ICON_RESET)); this->ui->preferences_vk_home_browse->setIcon(::Get(new_theme_mode, ::ICON_FOLDER_SEARCH)); @@ -210,19 +213,7 @@ void TabPreferences::on_theme_mode_changed(int index) { QPalette palette = dummy_widget->palette(); - ThemeMode selected_theme_mode = new_theme_mode; - if (new_theme_mode == THEME_MODE_AUTO) { -#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) - if (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark) { - selected_theme_mode = THEME_MODE_FORCE_DARK; - } else -#endif // QT_VERSION - { - selected_theme_mode = THEME_MODE_FORCE_LIGHT; - } - } - - switch (selected_theme_mode) { + switch (::GetActualThemeMode(new_theme_mode)) { default: case THEME_MODE_AUTO: assert(0); @@ -249,69 +240,95 @@ void TabPreferences::on_theme_mode_changed(int index) { this->ui->configurations_list->setPalette(palette); this->ui->configurations_settings->setPalette(palette); this->ui->configurations_layers_list->setPalette(palette); - this->ui->layers_paths_tree->setPalette(palette); + this->ui->layers_list->setPalette(palette); + this->ui->driver_paths_list->setPalette(palette); delete dummy_widget; } { - if (VKC_PLATFORM == PLATFORM_LINUX && this->initialized) { - if (!(configurator.Get(HIDE_MESSAGE_WARN_DARK_THEME_LINUX))) { - QMessageBox alert; - alert.setWindowTitle("Dark Mode on Linux system"); - alert.setText( - "The support of Dark Mode depends on the Linux desktop support so this option may have limited effects..."); - alert.setInformativeText("Only Vulkan Configurator icons may change color when dark mode is not supported."); - alert.setStandardButtons(QMessageBox::Ok); - alert.setDefaultButton(QMessageBox::Ok); - alert.setIcon(QMessageBox::Warning); - alert.setCheckBox(new QCheckBox("Do not show again.")); - alert.exec(); - if (alert.checkBox()->isChecked()) { - configurator.Set(HIDE_MESSAGE_WARN_DARK_THEME_LINUX); - } - } - } - if (configurator.current_theme_mode == new_theme_mode && this->initialized) { return; // Prevent Qt 6.8 crash } configurator.current_theme_mode = new_theme_mode; + } -#if (QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)) - switch (new_theme_mode) { - default: - case THEME_MODE_AUTO: - this->window.app.styleHints()->unsetColorScheme(); - break; - case THEME_MODE_FORCE_LIGHT: { - this->window.app.styleHints()->setColorScheme(Qt::ColorScheme::Light); - break; - } - case THEME_MODE_FORCE_DARK: { - this->window.app.styleHints()->setColorScheme(Qt::ColorScheme::Dark); - break; + this->initialized = true; +} + +bool TabPreferences::EventFilter(QObject *target, QEvent *event) { + (void)target; + (void)event; + + return false; +} + +void TabPreferences::on_show_executables_scope_toggled(bool checked) { + Configurator &configurator = Configurator::Get(); + configurator.configuration_show_scope = checked; + + this->UpdateUI(UPDATE_REFRESH_UI); +} + +void TabPreferences::on_all_enabled_executables_changed(int index) { + Configurator &configurator = Configurator::Get(); + + configurator.Surrender(OVERRIDE_AREA_ALL); + + const ExecutableAllEnabledBehavior behavior = static_cast(index); + configurator.SetAllEnabledExecutableBehavior(behavior); + + configurator.Override(OVERRIDE_AREA_ALL); +} + +void TabPreferences::on_app_text_max_blocks_changed(int index) { + Configurator &configurator = Configurator::Get(); + configurator.app_log_max_blocks = index; +} + +void TabPreferences::on_theme_mode_changed(int index) { + static bool only_once = true; + + if (VKC_PLATFORM == PLATFORM_LINUX) { + Configurator &configurator = Configurator::Get(); + + if (only_once && !(configurator.Get(HIDE_MESSAGE_WARN_DARK_THEME_LINUX))) { + QMessageBox alert; + alert.setWindowTitle("Dark Mode on Linux system"); + alert.setText( + "The support of Dark Mode depends on the Linux desktop support so this option may have limited effects..."); + alert.setInformativeText("Only Vulkan Configurator icons may change color when dark mode is not supported."); + alert.setStandardButtons(QMessageBox::Ok); + alert.setDefaultButton(QMessageBox::Ok); + alert.setIcon(QMessageBox::Warning); + alert.setCheckBox(new QCheckBox("Do not show again.")); + alert.exec(); + if (alert.checkBox()->isChecked()) { + configurator.Set(HIDE_MESSAGE_WARN_DARK_THEME_LINUX); } + + only_once = false; } -#endif } - this->initialized = true; + const ThemeMode new_theme_mode = static_cast(index); + + this->UpdatePreferences(new_theme_mode); } void TabPreferences::on_theme_light_alternate_enabled(bool checked) { Configurator &configurator = Configurator::Get(); configurator.theme_light_alternate_enabled = checked; - this->on_theme_mode_changed(configurator.current_theme_mode); + this->UpdatePreferences(configurator.current_theme_mode); } void TabPreferences::on_theme_dark_alternate_enabled(bool checked) { Configurator &configurator = Configurator::Get(); configurator.theme_dark_alternate_enabled = checked; - this->on_theme_mode_changed(configurator.current_theme_mode); + this->UpdatePreferences(configurator.current_theme_mode); } void TabPreferences::on_theme_light_alternate_pressed() { @@ -327,7 +344,7 @@ void TabPreferences::on_theme_light_alternate_pressed() { configurator.theme_light_alternate_color = color; } - this->on_theme_mode_changed(configurator.current_theme_mode); + this->UpdatePreferences(configurator.current_theme_mode); } void TabPreferences::on_theme_dark_alternate_pressed() { @@ -342,7 +359,7 @@ void TabPreferences::on_theme_dark_alternate_pressed() { configurator.theme_dark_alternate_color = color; } - this->on_theme_mode_changed(configurator.current_theme_mode); + this->UpdatePreferences(configurator.current_theme_mode); } void TabPreferences::on_keep_running_toggled(bool checked) { @@ -421,6 +438,11 @@ void TabPreferences::on_notify_releases_toggled(bool checked) { configurator.SetUseNotifyReleases(checked); } +void TabPreferences::on_layer_validate_toggled(bool checked) { + Configurator &configurator = Configurator::Get(); + configurator.layers.validate_manifests = checked; +} + void TabPreferences::on_layer_debug_mode_toggled(bool checked) { Configurator &configurator = Configurator::Get(); configurator.SetUseLayerDebugMode(checked); diff --git a/vkconfig_gui/tab_preferences.h b/vkconfig_gui/tab_preferences.h index fa83e0c8dd..ccf8c65bb8 100644 --- a/vkconfig_gui/tab_preferences.h +++ b/vkconfig_gui/tab_preferences.h @@ -40,10 +40,12 @@ class TabPreferences : public Tab { void on_keep_running_toggled(bool checked); void on_vk_home_text_pressed(); void on_vk_home_browse_pressed(); + void on_show_executables_scope_toggled(bool checked); void on_all_enabled_executables_changed(int index); void on_vk_download_browse_pressed(); void on_vk_download_open_pressed(); void on_reset_hard_pressed(); + void on_layer_validate_toggled(bool checked); void on_layer_debug_mode_toggled(bool checked); void on_open_page_pressed(); void on_download_pressed(); @@ -56,8 +58,11 @@ class TabPreferences : public Tab { void on_theme_dark_alternate_enabled(bool checked); void on_theme_light_alternate_pressed(); void on_theme_dark_alternate_pressed(); + void on_app_text_max_blocks_changed(int index); private: + void UpdatePreferences(ThemeMode new_theme_mode); + QNetworkAccessManager network_manager; QByteArray downloaded_data; bool initialized = false; diff --git a/vkconfig_gui/vkconfig.pro b/vkconfig_gui/vkconfig.pro index a7cd821db5..8dfc52ded6 100644 --- a/vkconfig_gui/vkconfig.pro +++ b/vkconfig_gui/vkconfig.pro @@ -74,6 +74,7 @@ SOURCES += \ ../vkconfig_core/type_layer_builtin.cpp \ ../vkconfig_core/type_layer_control.cpp \ ../vkconfig_core/type_layer_type.cpp \ + ../vkconfig_core/type_layers_display_mode.cpp \ ../vkconfig_core/type_layers_paths.cpp \ ../vkconfig_core/type_log.cpp \ ../vkconfig_core/type_platform.cpp \ @@ -81,6 +82,7 @@ SOURCES += \ ../vkconfig_core/type_status.cpp \ ../vkconfig_core/type_tab.cpp \ ../vkconfig_core/type_override_area.cpp \ + ../vkconfig_core/type_stdout_display.cpp \ ../vkconfig_core/type_theme_mode.cpp \ ../vkconfig_core/type_action.cpp \ ../vkconfig_core/type_action_operator.cpp \ @@ -91,6 +93,7 @@ SOURCES += \ ../vkconfig_core/version.cpp \ ../vkconfig_core/vulkan_util.cpp \ widget_resize_button.cpp \ + widget_resize_combobox.cpp \ widget_layer_version.cpp \ widget_tab_configurations_layer.cpp \ widget_tab_layers_path.cpp \ @@ -107,6 +110,7 @@ SOURCES += \ widget_setting_string.cpp \ widget_setting_list_element.cpp \ widget_setting_list.cpp \ + highlighter.cpp \ item_tree.cpp \ item_list.cpp \ item_list_device.cpp \ @@ -173,6 +177,7 @@ HEADERS += \ ../vkconfig_core/type_layer_builtin.h \ ../vkconfig_core/type_layer_control.h \ ../vkconfig_core/type_layer_type.h \ + ../vkconfig_core/type_layers_display_mode.h \ ../vkconfig_core/type_layers_paths.h \ ../vkconfig_core/type_log.h \ ../vkconfig_core/type_platform.h \ @@ -180,6 +185,7 @@ HEADERS += \ ../vkconfig_core/type_status.h \ ../vkconfig_core/type_tab.h \ ../vkconfig_core/type_override_area.h \ + ../vkconfig_core/type_stdout_display.h \ ../vkconfig_core/type_theme_mode.h \ ../vkconfig_core/type_action.h \ ../vkconfig_core/type_action_operator.h \ @@ -190,6 +196,7 @@ HEADERS += \ ../vkconfig_core/version.h \ ../vkconfig_core/vulkan_util.h \ widget_resize_button.h \ + widget_resize_combobox.h \ widget_layer_version.h \ widget_tab_configurations_layer.h \ widget_tab_layers_path.h \ @@ -206,6 +213,7 @@ HEADERS += \ widget_setting_string.h \ widget_setting_list_element.h \ widget_setting_list.h \ + highlighter.h \ item_tree.h \ item_list.h \ item_list_device.h \ diff --git a/vkconfig_gui/widget_resize_combobox.cpp b/vkconfig_gui/widget_resize_combobox.cpp new file mode 100644 index 0000000000..1bb3788d2d --- /dev/null +++ b/vkconfig_gui/widget_resize_combobox.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Christophe Riccio + */ + +#include "widget_resize_combobox.h" + +ResizeComboBox::ResizeComboBox(QWidget *parent, int shift) : QComboBox(parent), parent(parent), shift(shift) {} + +bool ResizeComboBox::eventFilter(QObject *o, QEvent *e) { + (void)o; + + if (e->type() == QEvent::Resize) { + QSize size = this->minimumSize(); + + const QRect enabled_button_rect = + QRect(this->parent->width() - size.width() * (shift + 1) - 5, 0, size.width(), size.height()); + this->setGeometry(enabled_button_rect); + } + return false; +} diff --git a/vkconfig_gui/widget_resize_combobox.h b/vkconfig_gui/widget_resize_combobox.h new file mode 100644 index 0000000000..945264b21d --- /dev/null +++ b/vkconfig_gui/widget_resize_combobox.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: + * - Christophe Riccio + */ + +#pragma once + +#include +#include + +class ResizeComboBox : public QComboBox { + Q_OBJECT + + public: + ResizeComboBox(QWidget *parent, int shift); + + bool eventFilter(QObject *o, QEvent *e) override; + + private: + QWidget *parent = nullptr; + int shift = 0; +}; diff --git a/vkconfig_gui/widget_setting.cpp b/vkconfig_gui/widget_setting.cpp index cd9e7ec7d9..9ec0ad5d14 100644 --- a/vkconfig_gui/widget_setting.cpp +++ b/vkconfig_gui/widget_setting.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_bool.cpp b/vkconfig_gui/widget_setting_bool.cpp index 91451a0c3b..83d2b63771 100644 --- a/vkconfig_gui/widget_setting_bool.cpp +++ b/vkconfig_gui/widget_setting_bool.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_bool.h b/vkconfig_gui/widget_setting_bool.h index e36f7bb012..b764499d73 100644 --- a/vkconfig_gui/widget_setting_bool.h +++ b/vkconfig_gui/widget_setting_bool.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_flags.cpp b/vkconfig_gui/widget_setting_flags.cpp index 497e9f0074..573fbe798e 100644 --- a/vkconfig_gui/widget_setting_flags.cpp +++ b/vkconfig_gui/widget_setting_flags.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_flags.h b/vkconfig_gui/widget_setting_flags.h index 0697f8e728..fff6402833 100644 --- a/vkconfig_gui/widget_setting_flags.h +++ b/vkconfig_gui/widget_setting_flags.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_float.h b/vkconfig_gui/widget_setting_float.h index 0587c393b4..5ab4a46196 100644 --- a/vkconfig_gui/widget_setting_float.h +++ b/vkconfig_gui/widget_setting_float.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -59,8 +59,8 @@ class WidgetSettingFloat : public WidgetSettingBase { std::string value_buffer; QLineEdit* field; - QTimer* timer_error; - QTimer* timer_valid; + QTimer* timer_error = nullptr; + QTimer* timer_valid = nullptr; QSize resize; QPalette default_palette; }; diff --git a/vkconfig_gui/widget_setting_frames.h b/vkconfig_gui/widget_setting_frames.h index d4e5f3564f..7c060b79a7 100644 --- a/vkconfig_gui/widget_setting_frames.h +++ b/vkconfig_gui/widget_setting_frames.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_group.cpp b/vkconfig_gui/widget_setting_group.cpp index 9309425693..dbcaa77d51 100644 --- a/vkconfig_gui/widget_setting_group.cpp +++ b/vkconfig_gui/widget_setting_group.cpp @@ -25,7 +25,7 @@ WidgetSettingGroup::WidgetSettingGroup(QTreeWidget* tree, QTreeWidgetItem* item, const SettingMetaGroup& meta, SettingDataSet& data_set) : WidgetSettingBase(tree, item), meta(meta), data_set(data_set) { - this->item->setText(0, meta.label.c_str()); + this->item->setText(0, GetLabel(meta).c_str()); this->item->setToolTip(0, meta.description.c_str()); this->item->setFont(0, tree->font()); diff --git a/vkconfig_gui/widget_setting_int.h b/vkconfig_gui/widget_setting_int.h index aac5214b43..98c08c13e1 100644 --- a/vkconfig_gui/widget_setting_int.h +++ b/vkconfig_gui/widget_setting_int.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_list.cpp b/vkconfig_gui/widget_setting_list.cpp index 68c30216e3..98afb89715 100644 --- a/vkconfig_gui/widget_setting_list.cpp +++ b/vkconfig_gui/widget_setting_list.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_list.h b/vkconfig_gui/widget_setting_list.h index 5144ae2b18..51a443cc9b 100644 --- a/vkconfig_gui/widget_setting_list.h +++ b/vkconfig_gui/widget_setting_list.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_list_element.cpp b/vkconfig_gui/widget_setting_list_element.cpp index 4c24c9f0d0..3ecd379d8b 100644 --- a/vkconfig_gui/widget_setting_list_element.cpp +++ b/vkconfig_gui/widget_setting_list_element.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_list_element.h b/vkconfig_gui/widget_setting_list_element.h index c9ad9c8dea..37c7a58273 100644 --- a/vkconfig_gui/widget_setting_list_element.h +++ b/vkconfig_gui/widget_setting_list_element.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_string.cpp b/vkconfig_gui/widget_setting_string.cpp index 83bef4b588..9021beb707 100644 --- a/vkconfig_gui/widget_setting_string.cpp +++ b/vkconfig_gui/widget_setting_string.cpp @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_setting_string.h b/vkconfig_gui/widget_setting_string.h index 1cb39bd492..dd9031173f 100644 --- a/vkconfig_gui/widget_setting_string.h +++ b/vkconfig_gui/widget_setting_string.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2020-2021 Valve Corporation - * Copyright (c) 2020-2021 LunarG, Inc. + * Copyright (c) 2020-2026 Valve Corporation + * Copyright (c) 2020-2026 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vkconfig_gui/widget_tab_configurations_layer.cpp b/vkconfig_gui/widget_tab_configurations_layer.cpp index d38876cd95..5ddf0e4b3e 100644 --- a/vkconfig_gui/widget_tab_configurations_layer.cpp +++ b/vkconfig_gui/widget_tab_configurations_layer.cpp @@ -29,6 +29,56 @@ #include +static const char *GetDescription(LayerControl control, LayerBuiltin builtin) { + if (builtin == LAYER_BUILTIN_UNORDERED) { + static const char *TABLE[] = { + "Vulkan Layers located by Vulkan Applications using 'VK_ADD_LAYER_PATH' at launch", // LAYER_CONTROL_AUTO + "Prevent Vulkan applications from loading additional Vulkan Layers not visible by Vulkan Configurator", // LAYER_CONTROL_DISCARD + }; + static_assert(std::size(TABLE) == LAYER_CONTROL_UNORDERED_COUNT); + + return TABLE[control]; + } else { + static const char + * + TABLE[] = + { + "Explicit layers are disabled by default and implicit layers are enabled by default.", // LAYER_CONTROL_AUTO + "Discard the layer, the Vulkan Loader isn't made awate of this layer but the Vulkan application can locate " + "it.", // LAYER_CONTROL_DISCARD + "Enable the layer, ensuring its execution.", // LAYER_CONTROL_ON + "Disable the layer, preventing its execution.", // LAYER_CONTROL_OFF + }; + static_assert(std::size(TABLE) == LAYER_CONTROL_COUNT); + + return TABLE[control]; + } +} + +static std::string GetActualControlTooltip(const Layer *layer) { + if (layer->type == LAYER_TYPE_IMPLICIT) { + if (!layer->disable_env.empty()) { + if (qEnvironmentVariableIsSet(layer->disable_env.c_str())) { + return format("'%s' is set", layer->disable_env.c_str()); + } + } + + if (!layer->enable_env.empty()) { + const std::string &value = qgetenv(layer->enable_env.c_str()).toStdString(); + if (value == layer->enable_value) { + return format("'%s' is set to '%s'.", layer->enable_env.c_str(), value.c_str()); + } else { + return format("Set '%s' to '%s' to enable '%s' by default.", layer->enable_env.c_str(), layer->enable_value.c_str(), + layer->key.c_str()); + } + } + + return format("Set '%s' to disable '%s' by default.", layer->disable_env.c_str(), layer->key.c_str()); + } else { + return ::GetDescription(LAYER_CONTROL_AUTO, LAYER_BUILTIN_NONE); + } +} + ConfigurationLayerWidget::ConfigurationLayerWidget(TabConfigurations *tab, const Parameter ¶meter) : layer_name(parameter.key), tab(tab) { const Configurator &configurator = Configurator::Get(); @@ -48,22 +98,18 @@ ConfigurationLayerWidget::ConfigurationLayerWidget(TabConfigurations *tab, const for (int i = first; i <= last; ++i) { const LayerControl layer_control = static_cast(i); std::string label = ::GetLabel(layer_control); - /* - if (i == LAYER_CONTROL_AUTO && layer != nullptr) { - label += layer->GetActualControl() == LAYER_CONTROL_ON ? " (E)" : " (D)"; - } - */ + this->layer_state->addItem(label.c_str()); - this->layer_state->setItemData(i, ::GetDescription(layer_control), Qt::ToolTipRole); + this->layer_state->setItemData(i, ::GetDescription(layer_control, parameter.builtin), Qt::ToolTipRole); } this->layer_state->setCurrentIndex(parameter.control); - if (parameter.control == LAYER_CONTROL_AUTO && layer != nullptr) { + if (parameter.builtin == LAYER_BUILTIN_NONE && parameter.control == LAYER_CONTROL_AUTO && layer != nullptr) { std::string message = ::GetToken(layer->type) + std::string(" layer: ") + ::GetLabel(layer->GetActualControl()); - message += format(". %s", layer->GetActualControlTooltip().c_str()); + message += format(". %s", ::GetActualControlTooltip(layer).c_str()); this->layer_state->setToolTip(message.c_str()); } else { - this->layer_state->setToolTip(::GetDescription(parameter.control)); + this->layer_state->setToolTip(::GetDescription(parameter.control, parameter.builtin)); } this->connect(this->layer_state, SIGNAL(currentIndexChanged(int)), this, SLOT(on_layer_state_currentIndexChanged(int))); @@ -97,7 +143,7 @@ ConfigurationLayerWidget::ConfigurationLayerWidget(TabConfigurations *tab, const this->setText(decorated_name.c_str()); if (parameter.builtin != LAYER_BUILTIN_NONE) { - this->setToolTip(::GetDescription(parameter.builtin)); + this->setToolTip(::GetDescription(parameter.control, parameter.builtin)); } else if (!parameter.manifest.Empty()) { this->setToolTip(parameter.manifest.AbsolutePath().c_str()); } @@ -192,7 +238,7 @@ void ConfigurationLayerWidget::on_layer_state_currentIndexChanged(int index) { } parameter->control = control; - this->layer_state->setToolTip(GetDescription(control)); + this->layer_state->setToolTip(GetDescription(control, parameter->builtin)); configurator.Override(OVERRIDE_AREA_ALL); } diff --git a/vkconfig_gui/widget_tab_driver_path.cpp b/vkconfig_gui/widget_tab_driver_path.cpp index 650bba6866..7d5e4b97b9 100644 --- a/vkconfig_gui/widget_tab_driver_path.cpp +++ b/vkconfig_gui/widget_tab_driver_path.cpp @@ -32,10 +32,10 @@ DriverPathWidget::DriverPathWidget(const Path& path, bool enabled) : path(path), const Configurator& configurator = Configurator::Get(); this->buttom_remove = new QPushButton(this); - this->buttom_remove->setIcon(::Get(configurator.current_theme_mode, ::ICON_FOLDER_REMOVE)); + this->buttom_remove->setIcon(::Get(configurator.current_theme_mode, ::ICON_FILE_REMOVE)); this->buttom_remove->setFixedSize(24, 24); - this->setText(format("%s", this->path.RelativePath().c_str()).c_str()); + this->setText(format("%s", this->path.AbsolutePath().c_str()).c_str()); this->setToolTip(format("%s", this->path.AbsolutePath().c_str()).c_str()); this->connect(this, SIGNAL(toggled(bool)), this, SLOT(on_toggled(bool))); diff --git a/vkconfig_gui/widget_tab_layers_path.cpp b/vkconfig_gui/widget_tab_layers_path.cpp index 8b3503e4da..4da507750b 100644 --- a/vkconfig_gui/widget_tab_layers_path.cpp +++ b/vkconfig_gui/widget_tab_layers_path.cpp @@ -26,29 +26,33 @@ #include #include -LayersPathWidget::LayersPathWidget(const LayersPathInfo& path_info, LayersPaths layers_path, bool removabled) - : layers_path(layers_path), path_info(path_info) { - this->setChecked(this->path_info.enabled); - +LayerWidget::LayerWidget(const Layer& layer) : layer_id(layer.GetId()) { const Configurator& configurator = Configurator::Get(); + const std::string status = layer.status == STATUS_STABLE ? "" : format(" (%s)", ::GetToken(layer.status)); + const std::string text = format("%s - %s%s - %s layer", layer.key.c_str(), layer.api_version.str().c_str(), status.c_str(), + ::ToLowerCase(::GetToken(layer.type)).c_str()); + + this->setText(text.c_str()); + this->setToolTip(format("%s", layer.manifest_path.AbsolutePath().c_str()).c_str()); + this->setChecked(layer.descriptor.enabled); + this->buttom_remove = new QPushButton(this); this->buttom_remove->setIcon(::Get(configurator.current_theme_mode, ::ICON_FOLDER_REMOVE)); - this->buttom_remove->setToolTip("Only layer paths manually added with Vulkan Configurator can be removed."); + this->buttom_remove->setToolTip("Remove the Vulkan layer from Vulkan Configurator"); this->buttom_remove->setFixedSize(24, 24); - this->buttom_remove->setEnabled(layers_path == LAYERS_PATHS_GUI); - if (!removabled) { - this->buttom_remove->hide(); + if (layer.descriptor.recent) { + QPalette palette = this->palette(); + palette.setColor(QPalette::Active, QPalette::WindowText, QColor(255, 0, 0)); + this->setPalette(palette); } - this->setText(format("[%s] %s", GetLabel(layers_path), path_info.path.AbsolutePath().c_str()).c_str()); - this->connect(this, SIGNAL(toggled(bool)), this, SLOT(on_toggled(bool))); this->connect(this->buttom_remove, SIGNAL(clicked(bool)), this, SLOT(on_buttom_remove_clicked(bool))); } -void LayersPathWidget::resizeEvent(QResizeEvent* event) { +void LayerWidget::resizeEvent(QResizeEvent* event) { QSize size = event->size(); const QFontMetrics fm = this->buttom_remove->fontMetrics(); @@ -58,20 +62,23 @@ void LayersPathWidget::resizeEvent(QResizeEvent* event) { this->buttom_remove->setGeometry(remove_button_rect); } -void LayersPathWidget::on_buttom_remove_clicked(bool checked) { +void LayerWidget::on_buttom_remove_clicked(bool checked) { (void)checked; Configurator& configurator = Configurator::Get(); if (!(configurator.Get(HIDE_MESSAGE_QUESTION_REMOVING_LAYERS_PATH))) { QMessageBox alert; - alert.setWindowTitle("Removing a layers path..."); + alert.setWindowTitle( + format("Removing %s %s layer...", this->layer_id.key.c_str(), this->layer_id.api_version.str().c_str()).c_str()); alert.setIcon(QMessageBox::Question); alert.setDefaultButton(QMessageBox::No); alert.setStandardButtons(QMessageBox::Yes | QMessageBox::No); alert.setCheckBox(new QCheckBox("Do not show again.")); - alert.setText(format("Are you sure you want to remove the following path from %s?", VKCONFIG_NAME).c_str()); - alert.setInformativeText(this->path_info.path.AbsolutePath().c_str()); + alert.setText(format("Are you sure you want to remove %s %s from %s?", this->layer_id.key.c_str(), + this->layer_id.api_version.str().c_str(), VKCONFIG_NAME) + .c_str()); + alert.setInformativeText(format("The layer is located: %s", this->layer_id.manifest_path.AbsolutePath().c_str()).c_str()); int ret_val = alert.exec(); if (alert.checkBox()->isChecked()) { configurator.Set(HIDE_MESSAGE_QUESTION_REMOVING_LAYERS_PATH); @@ -81,21 +88,14 @@ void LayersPathWidget::on_buttom_remove_clicked(bool checked) { } } - configurator.layers.RemovePath(this->path_info); - - this->path_info.path.Clear(); + configurator.layers.RemoveLayer(this->layer_id); emit itemChanged(); } -void LayersPathWidget::on_toggled(bool checked) { - // Check the path is not removed - if (!this->path_info.path.Empty()) { - this->path_info.enabled = checked; - - Configurator& configurator = Configurator::Get(); - configurator.layers.UpdatePathEnabled(this->path_info, this->layers_path); +void LayerWidget::on_toggled(bool checked) { + Configurator& configurator = Configurator::Get(); + configurator.layers.EnableLayer(this->layer_id, checked); - emit itemToggled(); - } + emit itemToggled(); } diff --git a/vkconfig_gui/widget_tab_layers_path.h b/vkconfig_gui/widget_tab_layers_path.h index 83f20332b2..9d9eb99b07 100644 --- a/vkconfig_gui/widget_tab_layers_path.h +++ b/vkconfig_gui/widget_tab_layers_path.h @@ -27,11 +27,11 @@ #include #include -class LayersPathWidget : public QCheckBox { +class LayerWidget : public QCheckBox { Q_OBJECT public: - LayersPathWidget(const LayersPathInfo &path_info, LayersPaths layers_path, bool removabled); + LayerWidget(const Layer &layer); protected: void resizeEvent(QResizeEvent *event) override; @@ -45,7 +45,6 @@ class LayersPathWidget : public QCheckBox { void itemToggled(); public: - LayersPaths layers_path; - LayersPathInfo path_info; + LayerId layer_id; QPushButton *buttom_remove = nullptr; };