diff options
| -rw-r--r-- | vulkan/libvulkan/api.cpp | 21 | ||||
| -rw-r--r-- | vulkan/libvulkan/driver.cpp | 45 | ||||
| -rw-r--r-- | vulkan/libvulkan/layers_extensions.cpp | 7 | ||||
| -rw-r--r-- | vulkan/libvulkan/swapchain.cpp | 55 |
4 files changed, 127 insertions, 1 deletions
diff --git a/vulkan/libvulkan/api.cpp b/vulkan/libvulkan/api.cpp index 673a066182..71048db920 100644 --- a/vulkan/libvulkan/api.cpp +++ b/vulkan/libvulkan/api.cpp @@ -21,6 +21,8 @@ // There are a few of them requiring manual code for things such as layer // discovery or chaining. They call into functions defined in this file. +#define ATRACE_TAG ATRACE_TAG_GRAPHICS + #include <stdlib.h> #include <string.h> @@ -32,6 +34,7 @@ #include <android-base/strings.h> #include <cutils/properties.h> #include <log/log.h> +#include <utils/Trace.h> #include <vulkan/vk_layer_interface.h> #include <graphicsenv/GraphicsEnv.h> @@ -1176,6 +1179,8 @@ bool EnsureInitialized() { VkResult CreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) { + ATRACE_CALL(); + if (!EnsureInitialized()) return VK_ERROR_INITIALIZATION_FAILED; @@ -1184,6 +1189,8 @@ VkResult CreateInstance(const VkInstanceCreateInfo* pCreateInfo, void DestroyInstance(VkInstance instance, const VkAllocationCallbacks* pAllocator) { + ATRACE_CALL(); + if (instance != VK_NULL_HANDLE) LayerChain::DestroyInstance(instance, pAllocator); } @@ -1192,17 +1199,23 @@ VkResult CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) { + ATRACE_CALL(); + return LayerChain::CreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice); } void DestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) { + ATRACE_CALL(); + if (device != VK_NULL_HANDLE) LayerChain::DestroyDevice(device, pAllocator); } VkResult EnumerateInstanceLayerProperties(uint32_t* pPropertyCount, VkLayerProperties* pProperties) { + ATRACE_CALL(); + if (!EnsureInitialized()) return VK_ERROR_INITIALIZATION_FAILED; @@ -1225,6 +1238,8 @@ VkResult EnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { + ATRACE_CALL(); + if (!EnsureInitialized()) return VK_ERROR_INITIALIZATION_FAILED; @@ -1253,6 +1268,8 @@ VkResult EnumerateInstanceExtensionProperties( VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) { + ATRACE_CALL(); + uint32_t count; const LayerChain::ActiveLayer* layers = LayerChain::GetActiveLayers(physicalDevice, count); @@ -1275,6 +1292,8 @@ VkResult EnumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { + ATRACE_CALL(); + if (pLayerName) { // EnumerateDeviceLayerProperties enumerates active layers for // backward compatibility. The extension query here should work for @@ -1302,6 +1321,8 @@ VkResult EnumerateDeviceExtensionProperties( } VkResult EnumerateInstanceVersion(uint32_t* pApiVersion) { + ATRACE_CALL(); + *pApiVersion = VK_API_VERSION_1_1; return VK_SUCCESS; } diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp index a607a5d098..421f7274ff 100644 --- a/vulkan/libvulkan/driver.cpp +++ b/vulkan/libvulkan/driver.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#define ATRACE_TAG ATRACE_TAG_GRAPHICS + #include <malloc.h> #include <stdlib.h> #include <string.h> @@ -31,6 +33,7 @@ #include <configstore/Utils.h> #include <cutils/properties.h> #include <graphicsenv/GraphicsEnv.h> +#include <utils/Trace.h> #include <utils/Vector.h> #include "android-base/properties.h" @@ -150,6 +153,8 @@ Hal Hal::hal_; void* LoadLibrary(const android_dlextinfo& dlextinfo, const char* subname, int subname_len) { + ATRACE_CALL(); + const char kLibFormat[] = "vulkan.%*s.so"; char* name = static_cast<char*>( alloca(sizeof(kLibFormat) + static_cast<size_t>(subname_len))); @@ -164,6 +169,8 @@ const std::array<const char*, 2> HAL_SUBNAME_KEY_PROPERTIES = {{ int LoadDriver(android_namespace_t* library_namespace, const hwvulkan_module_t** module) { + ATRACE_CALL(); + const android_dlextinfo dlextinfo = { .flags = ANDROID_DLEXT_USE_NAMESPACE, .library_namespace = library_namespace, @@ -198,6 +205,8 @@ int LoadDriver(android_namespace_t* library_namespace, } int LoadBuiltinDriver(const hwvulkan_module_t** module) { + ATRACE_CALL(); + auto ns = android_get_exported_namespace("sphal"); if (!ns) return -ENOENT; @@ -205,6 +214,8 @@ int LoadBuiltinDriver(const hwvulkan_module_t** module) { } int LoadUpdatedDriver(const hwvulkan_module_t** module) { + ATRACE_CALL(); + auto ns = android::GraphicsEnv::getInstance().getDriverNamespace(); if (!ns) return -ENOENT; @@ -212,6 +223,8 @@ int LoadUpdatedDriver(const hwvulkan_module_t** module) { } bool Hal::Open() { + ATRACE_CALL(); + ALOG_ASSERT(!hal_.dev_, "OpenHAL called more than once"); // Use a stub device unless we successfully open a real HAL device. @@ -242,9 +255,11 @@ bool Hal::Open() { } hwvulkan_device_t* device; + ATRACE_BEGIN("hwvulkan module open"); result = module->common.methods->open(&module->common, HWVULKAN_DEVICE_0, reinterpret_cast<hw_device_t**>(&device)); + ATRACE_END(); if (result != 0) { // Any device with a Vulkan HAL should be able to open the device. ALOGE("failed to open Vulkan HAL device: %s (%d)", strerror(-result), @@ -260,6 +275,8 @@ bool Hal::Open() { } bool Hal::InitDebugReportIndex() { + ATRACE_CALL(); + uint32_t count; if (dev_->EnumerateInstanceExtensionProperties(nullptr, &count, nullptr) != VK_SUCCESS) { @@ -821,8 +838,10 @@ VkResult EnumerateInstanceExtensionProperties( } } + ATRACE_BEGIN("driver.EnumerateInstanceExtensionProperties"); VkResult result = Hal::Device().EnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties); + ATRACE_END(); if (!pLayerName && (result == VK_SUCCESS || result == VK_INCOMPLETE)) { int idx = Hal::Get().GetDebugReportIndex(); @@ -931,8 +950,10 @@ VkResult EnumerateDeviceExtensionProperties( *pPropertyCount -= count; } + ATRACE_BEGIN("driver.EnumerateDeviceExtensionProperties"); VkResult result = data.driver.EnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties); + ATRACE_END(); if (pProperties) { // map VK_ANDROID_native_buffer to VK_KHR_swapchain @@ -968,12 +989,15 @@ VkResult CreateInstance(const VkInstanceCreateInfo* pCreateInfo, if (result != VK_SUCCESS) return result; + ATRACE_BEGIN("AllocateInstanceData"); InstanceData* data = AllocateInstanceData(data_allocator); + ATRACE_END(); if (!data) return VK_ERROR_OUT_OF_HOST_MEMORY; data->hook_extensions |= wrapper.GetHookExtensions(); + ATRACE_BEGIN("autoDowngradeApiVersion"); #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wold-style-cast" uint32_t api_version = ((pCreateInfo->pApplicationInfo) @@ -989,7 +1013,9 @@ VkResult CreateInstance(const VkInstanceCreateInfo* pCreateInfo, if (!pfn_enumerate_instance_version) { icd_api_version = VK_API_VERSION_1_0; } else { + ATRACE_BEGIN("pfn_enumerate_instance_version"); result = (*pfn_enumerate_instance_version)(&icd_api_version); + ATRACE_END(); } uint32_t icd_api_major_version = VK_VERSION_MAJOR(icd_api_version); uint32_t icd_api_minor_version = VK_VERSION_MINOR(icd_api_version); @@ -1000,12 +1026,15 @@ VkResult CreateInstance(const VkInstanceCreateInfo* pCreateInfo, wrapper.DowngradeApiVersion(); } #pragma clang diagnostic pop + ATRACE_END(); // call into the driver VkInstance instance; + ATRACE_BEGIN("driver.CreateInstance"); result = Hal::Device().CreateInstance( static_cast<const VkInstanceCreateInfo*>(wrapper), pAllocator, &instance); + ATRACE_END(); if (result != VK_SUCCESS) { FreeInstanceData(data, data_allocator); return result; @@ -1066,8 +1095,10 @@ VkResult CreateDevice(VkPhysicalDevice physicalDevice, if (result != VK_SUCCESS) return result; + ATRACE_BEGIN("AllocateDeviceData"); DeviceData* data = AllocateDeviceData(data_allocator, instance_data.debug_report_callbacks); + ATRACE_END(); if (!data) return VK_ERROR_OUT_OF_HOST_MEMORY; @@ -1075,9 +1106,11 @@ VkResult CreateDevice(VkPhysicalDevice physicalDevice, // call into the driver VkDevice dev; + ATRACE_BEGIN("driver.CreateDevice"); result = instance_data.driver.CreateDevice( physicalDevice, static_cast<const VkDeviceCreateInfo*>(wrapper), pAllocator, &dev); + ATRACE_END(); if (result != VK_SUCCESS) { FreeDeviceData(data, data_allocator); return result; @@ -1114,8 +1147,10 @@ VkResult CreateDevice(VkPhysicalDevice physicalDevice, } VkPhysicalDeviceProperties properties; + ATRACE_BEGIN("driver.GetPhysicalDeviceProperties"); instance_data.driver.GetPhysicalDeviceProperties(physicalDevice, &properties); + ATRACE_END(); data->driver_device = dev; data->driver_version = properties.driverVersion; @@ -1141,6 +1176,8 @@ void DestroyDevice(VkDevice device, const VkAllocationCallbacks* pAllocator) { VkResult EnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) { + ATRACE_CALL(); + const auto& data = GetData(instance); VkResult result = data.driver.EnumeratePhysicalDevices( @@ -1157,6 +1194,8 @@ VkResult EnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { + ATRACE_CALL(); + VkResult result = VK_SUCCESS; const auto& data = GetData(instance); @@ -1217,6 +1256,8 @@ void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) { + ATRACE_CALL(); + const auto& data = GetData(device); data.driver.GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue); @@ -1226,6 +1267,8 @@ void GetDeviceQueue(VkDevice device, void GetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) { + ATRACE_CALL(); + const auto& data = GetData(device); data.driver.GetDeviceQueue2(device, pQueueInfo, pQueue); @@ -1236,6 +1279,8 @@ VKAPI_ATTR VkResult AllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) { + ATRACE_CALL(); + const auto& data = GetData(device); VkResult result = data.driver.AllocateCommandBuffers(device, pAllocateInfo, diff --git a/vulkan/libvulkan/layers_extensions.cpp b/vulkan/libvulkan/layers_extensions.cpp index ba4cf00451..af1adcff62 100644 --- a/vulkan/libvulkan/layers_extensions.cpp +++ b/vulkan/libvulkan/layers_extensions.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#define ATRACE_TAG ATRACE_TAG_GRAPHICS + #include "layers_extensions.h" #include <alloca.h> @@ -33,6 +35,7 @@ #include <log/log.h> #include <nativebridge/native_bridge.h> #include <nativeloader/native_loader.h> +#include <utils/Trace.h> #include <ziparchive/zip_archive.h> // TODO(jessehall): The whole way we deal with extensions is pretty hokey, and @@ -428,6 +431,8 @@ void ForEachFileInPath(const std::string& path, Functor functor) { } void DiscoverLayersInPathList(const std::string& pathstr) { + ATRACE_CALL(); + std::vector<std::string> paths = android::base::Split(pathstr, ":"); for (const auto& path : paths) { ForEachFileInPath(path, [&](const std::string& filename) { @@ -477,6 +482,8 @@ void* GetLayerGetProcAddr(const Layer& layer, } // anonymous namespace void DiscoverLayers() { + ATRACE_CALL(); + if (property_get_bool("ro.debuggable", false) && prctl(PR_GET_DUMPABLE, 0, 0, 0, 0)) { DiscoverLayersInPathList(kSystemLayerLibraryDir); diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp index 47334f65e2..32e19f7ba3 100644 --- a/vulkan/libvulkan/swapchain.cpp +++ b/vulkan/libvulkan/swapchain.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#define ATRACE_TAG ATRACE_TAG_GRAPHICS + #include <algorithm> #include <grallocusage/GrallocUsageConversion.h> @@ -21,6 +23,7 @@ #include <ui/BufferQueueDefs.h> #include <sync/sync.h> #include <utils/StrongPointer.h> +#include <utils/Trace.h> #include <utils/Vector.h> #include <system/window.h> #include <android/hardware/graphics/common/1.0/types.h> @@ -486,6 +489,8 @@ VkResult CreateAndroidSurfaceKHR( const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* allocator, VkSurfaceKHR* out_surface) { + ATRACE_CALL(); + if (!allocator) allocator = &GetData(instance).allocator; void* mem = allocator->pfnAllocation(allocator->pUserData, sizeof(Surface), @@ -528,6 +533,8 @@ VKAPI_ATTR void DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface_handle, const VkAllocationCallbacks* allocator) { + ATRACE_CALL(); + Surface* surface = SurfaceFromHandle(surface_handle); if (!surface) return; @@ -548,6 +555,8 @@ VkResult GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice /*pdev*/, uint32_t /*queue_family*/, VkSurfaceKHR surface_handle, VkBool32* supported) { + ATRACE_CALL(); + const Surface* surface = SurfaceFromHandle(surface_handle); if (!surface) { return VK_ERROR_SURFACE_LOST_KHR; @@ -590,6 +599,8 @@ VkResult GetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice /*pdev*/, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* capabilities) { + ATRACE_CALL(); + int err; ANativeWindow* window = SurfaceFromHandle(surface)->window.get(); @@ -663,6 +674,8 @@ VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev, VkSurfaceKHR surface_handle, uint32_t* count, VkSurfaceFormatKHR* formats) { + ATRACE_CALL(); + const InstanceData& instance_data = GetData(pdev); // TODO(jessehall): Fill out the set of supported formats. Longer term, add @@ -737,6 +750,8 @@ VkResult GetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { + ATRACE_CALL(); + VkResult result = GetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, pSurfaceInfo->surface, &pSurfaceCapabilities->surfaceCapabilities); @@ -772,6 +787,8 @@ VkResult GetPhysicalDeviceSurfaceFormats2KHR( const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) { + ATRACE_CALL(); + if (!pSurfaceFormats) { return GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, pSurfaceInfo->surface, @@ -803,6 +820,8 @@ VkResult GetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice pdev, VkSurfaceKHR surface, uint32_t* count, VkPresentModeKHR* modes) { + ATRACE_CALL(); + int err; int query_value; ANativeWindow* window = SurfaceFromHandle(surface)->window.get(); @@ -854,6 +873,8 @@ VKAPI_ATTR VkResult GetDeviceGroupPresentCapabilitiesKHR( VkDevice, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { + ATRACE_CALL(); + ALOGV_IF(pDeviceGroupPresentCapabilities->sType != VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, "vkGetDeviceGroupPresentCapabilitiesKHR: invalid " @@ -876,6 +897,8 @@ VkResult GetDeviceGroupSurfacePresentModesKHR( VkDevice, VkSurfaceKHR, VkDeviceGroupPresentModeFlagsKHR* pModes) { + ATRACE_CALL(); + *pModes = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR; return VK_SUCCESS; } @@ -885,6 +908,8 @@ VkResult GetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects) { + ATRACE_CALL(); + if (!pRects) { *pRectCount = 1; } else { @@ -926,6 +951,8 @@ VkResult CreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR* create_info, const VkAllocationCallbacks* allocator, VkSwapchainKHR* swapchain_handle) { + ATRACE_CALL(); + int err; VkResult result = VK_SUCCESS; @@ -1150,9 +1177,11 @@ VkResult CreateSwapchainKHR(VkDevice device, int32_t legacy_usage = 0; if (dispatch.GetSwapchainGrallocUsage2ANDROID) { uint64_t consumer_usage, producer_usage; + ATRACE_BEGIN("dispatch.GetSwapchainGrallocUsage2ANDROID"); result = dispatch.GetSwapchainGrallocUsage2ANDROID( device, create_info->imageFormat, create_info->imageUsage, swapchain_image_usage, &consumer_usage, &producer_usage); + ATRACE_END(); if (result != VK_SUCCESS) { ALOGE("vkGetSwapchainGrallocUsage2ANDROID failed: %d", result); return VK_ERROR_SURFACE_LOST_KHR; @@ -1160,9 +1189,11 @@ VkResult CreateSwapchainKHR(VkDevice device, legacy_usage = android_convertGralloc1To0Usage(producer_usage, consumer_usage); } else if (dispatch.GetSwapchainGrallocUsageANDROID) { + ATRACE_BEGIN("dispatch.GetSwapchainGrallocUsageANDROID"); result = dispatch.GetSwapchainGrallocUsageANDROID( device, create_info->imageFormat, create_info->imageUsage, &legacy_usage); + ATRACE_END(); if (result != VK_SUCCESS) { ALOGE("vkGetSwapchainGrallocUsageANDROID failed: %d", result); return VK_ERROR_SURFACE_LOST_KHR; @@ -1257,8 +1288,10 @@ VkResult CreateSwapchainKHR(VkDevice device, &image_native_buffer.usage2.producer, &image_native_buffer.usage2.consumer); + ATRACE_BEGIN("dispatch.CreateImage"); result = dispatch.CreateImage(device, &image_create, nullptr, &img.image); + ATRACE_END(); if (result != VK_SUCCESS) { ALOGD("vkCreateImage w/ native buffer failed: %u", result); break; @@ -1282,8 +1315,11 @@ VkResult CreateSwapchainKHR(VkDevice device, } } if (result != VK_SUCCESS) { - if (img.image) + if (img.image) { + ATRACE_BEGIN("dispatch.DestroyImage"); dispatch.DestroyImage(device, img.image, nullptr); + ATRACE_END(); + } } } @@ -1302,6 +1338,8 @@ VKAPI_ATTR void DestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain_handle, const VkAllocationCallbacks* allocator) { + ATRACE_CALL(); + const auto& dispatch = GetData(device).driver; Swapchain* swapchain = SwapchainFromHandle(swapchain_handle); if (!swapchain) @@ -1327,6 +1365,8 @@ VkResult GetSwapchainImagesKHR(VkDevice, VkSwapchainKHR swapchain_handle, uint32_t* count, VkImage* images) { + ATRACE_CALL(); + Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle); ALOGW_IF(swapchain.surface.swapchain_handle != swapchain_handle, "getting images for non-active swapchain 0x%" PRIx64 @@ -1355,6 +1395,8 @@ VkResult AcquireNextImageKHR(VkDevice device, VkSemaphore semaphore, VkFence vk_fence, uint32_t* image_index) { + ATRACE_CALL(); + Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle); ANativeWindow* window = swapchain.surface.window.get(); VkResult result; @@ -1435,6 +1477,8 @@ VKAPI_ATTR VkResult AcquireNextImage2KHR(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex) { + ATRACE_CALL(); + // TODO: this should actually be the other way around and this function // should handle any additional structures that get passed in return AcquireNextImageKHR(device, pAcquireInfo->swapchain, @@ -1464,6 +1508,8 @@ static VkResult WorstPresentResult(VkResult a, VkResult b) { VKAPI_ATTR VkResult QueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* present_info) { + ATRACE_CALL(); + ALOGV_IF(present_info->sType != VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, "vkQueuePresentKHR: invalid VkPresentInfoKHR structure type %d", present_info->sType); @@ -1675,6 +1721,8 @@ VkResult GetRefreshCycleDurationGOOGLE( VkDevice, VkSwapchainKHR swapchain_handle, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { + ATRACE_CALL(); + Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle); VkResult result = VK_SUCCESS; @@ -1690,6 +1738,8 @@ VkResult GetPastPresentationTimingGOOGLE( VkSwapchainKHR swapchain_handle, uint32_t* count, VkPastPresentationTimingGOOGLE* timings) { + ATRACE_CALL(); + Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle); ANativeWindow* window = swapchain.surface.window.get(); VkResult result = VK_SUCCESS; @@ -1714,6 +1764,8 @@ VKAPI_ATTR VkResult GetSwapchainStatusKHR( VkDevice, VkSwapchainKHR swapchain_handle) { + ATRACE_CALL(); + Swapchain& swapchain = *SwapchainFromHandle(swapchain_handle); VkResult result = VK_SUCCESS; @@ -1731,6 +1783,7 @@ VKAPI_ATTR void SetHdrMetadataEXT( uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pHdrMetadataEXTs) { + ATRACE_CALL(); for (uint32_t idx = 0; idx < swapchainCount; idx++) { Swapchain* swapchain = SwapchainFromHandle(pSwapchains[idx]); |