diff options
author | 2019-09-23 16:05:35 -0700 | |
---|---|---|
committer | 2019-09-23 22:45:34 -0700 | |
commit | 899d1758a2bb79128c3fcf0b5736986619b02658 (patch) | |
tree | 05687beb4d4492311458d23ca7630e673b9660c5 | |
parent | 4bc489bb9906f378d47763c4fb049e5fa33ac12c (diff) |
libvulkan: intercept vkQueueSubmit to insert a tracepoint
Bug: 141501384
Test: build, flash and boot. Run deqp
Change-Id: I840270f213455250f72b2e7dc996124692bbc473
-rw-r--r-- | vulkan/libvulkan/driver.cpp | 11 | ||||
-rw-r--r-- | vulkan/libvulkan/driver.h | 1 | ||||
-rw-r--r-- | vulkan/libvulkan/driver_gen.cpp | 8 | ||||
-rw-r--r-- | vulkan/libvulkan/driver_gen.h | 1 | ||||
-rw-r--r-- | vulkan/scripts/driver_generator.py | 4 |
5 files changed, 25 insertions, 0 deletions
diff --git a/vulkan/libvulkan/driver.cpp b/vulkan/libvulkan/driver.cpp index 9a670f6c4d..b413ac9375 100644 --- a/vulkan/libvulkan/driver.cpp +++ b/vulkan/libvulkan/driver.cpp @@ -1313,5 +1313,16 @@ AllocateCommandBuffers(VkDevice device, return result; } +VKAPI_ATTR VkResult QueueSubmit(VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo* pSubmits, + VkFence fence) { + ATRACE_CALL(); + + const auto& data = GetData(queue); + + return data.driver.QueueSubmit(queue, submitCount, pSubmits, fence); +} + } // namespace driver } // namespace vulkan diff --git a/vulkan/libvulkan/driver.h b/vulkan/libvulkan/driver.h index 57c956d9a4..f058c47d54 100644 --- a/vulkan/libvulkan/driver.h +++ b/vulkan/libvulkan/driver.h @@ -131,6 +131,7 @@ VKAPI_ATTR VkResult EnumeratePhysicalDeviceGroups(VkInstance instance, uint32_t* VKAPI_ATTR void GetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue); VKAPI_ATTR void GetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue); VKAPI_ATTR VkResult AllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers); +VKAPI_ATTR VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); // clang-format on template <typename DispatchableType> diff --git a/vulkan/libvulkan/driver_gen.cpp b/vulkan/libvulkan/driver_gen.cpp index 4ea5a6106d..d829e41c83 100644 --- a/vulkan/libvulkan/driver_gen.cpp +++ b/vulkan/libvulkan/driver_gen.cpp @@ -444,6 +444,13 @@ const ProcHook g_proc_hooks[] = { nullptr, }, { + "vkQueueSubmit", + ProcHook::DEVICE, + ProcHook::EXTENSION_CORE, + reinterpret_cast<PFN_vkVoidFunction>(QueueSubmit), + nullptr, + }, + { "vkSetHdrMetadataEXT", ProcHook::DEVICE, ProcHook::EXT_hdr_metadata, @@ -537,6 +544,7 @@ bool InitDriverTable(VkDevice dev, INIT_PROC(true, dev, GetDeviceProcAddr); INIT_PROC(true, dev, DestroyDevice); INIT_PROC(true, dev, GetDeviceQueue); + INIT_PROC(true, dev, QueueSubmit); INIT_PROC(true, dev, CreateImage); INIT_PROC(true, dev, DestroyImage); INIT_PROC(true, dev, AllocateCommandBuffers); diff --git a/vulkan/libvulkan/driver_gen.h b/vulkan/libvulkan/driver_gen.h index f4182c7893..fb2f257755 100644 --- a/vulkan/libvulkan/driver_gen.h +++ b/vulkan/libvulkan/driver_gen.h @@ -84,6 +84,7 @@ struct DeviceDriverTable { PFN_vkGetDeviceProcAddr GetDeviceProcAddr; PFN_vkDestroyDevice DestroyDevice; PFN_vkGetDeviceQueue GetDeviceQueue; + PFN_vkQueueSubmit QueueSubmit; PFN_vkCreateImage CreateImage; PFN_vkDestroyImage DestroyImage; PFN_vkAllocateCommandBuffers AllocateCommandBuffers; diff --git a/vulkan/scripts/driver_generator.py b/vulkan/scripts/driver_generator.py index 04d9f239e7..ef36f8cd0c 100644 --- a/vulkan/scripts/driver_generator.py +++ b/vulkan/scripts/driver_generator.py @@ -91,6 +91,8 @@ def isDriverTableEntry(functionName): 'vkGetInstanceProcAddr' : True, 'vkGetDeviceProcAddr' : True, + 'vkQueueSubmit' : True, + # VK_KHR_swapchain->VK_ANDROID_native_buffer translation 'vkCreateImage' : True, 'vkDestroyImage' : True, @@ -191,6 +193,8 @@ def isIntercepted(functionName): 'vkGetInstanceProcAddr' : True, 'vkGetDeviceProcAddr' : True, + 'vkQueueSubmit' : True, + # VK_KHR_swapchain v69 requirement 'vkBindImageMemory2' : True, 'vkBindImageMemory2KHR' : True |