Loading vulkan/libvulkan/driver.cpp +46 −9 Original line number Diff line number Diff line Loading @@ -19,9 +19,9 @@ #include <string.h> #include <sys/prctl.h> #include <dlfcn.h> #include <algorithm> #include <array> #include <dlfcn.h> #include <new> #include <log/log.h> Loading Loading @@ -1047,20 +1047,57 @@ VkResult EnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { VkResult result = VK_SUCCESS; const auto& data = GetData(instance); VkResult result = data.driver.EnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); if (!data.driver.EnumeratePhysicalDeviceGroups) { uint32_t device_count = 0; result = EnumeratePhysicalDevices(instance, &device_count, nullptr); if (result < 0) return result; if (!pPhysicalDeviceGroupProperties) { *pPhysicalDeviceGroupCount = device_count; return result; } device_count = std::min(device_count, *pPhysicalDeviceGroupCount); if (!device_count) { *pPhysicalDeviceGroupCount = 0; return result; } android::Vector<VkPhysicalDevice> devices; devices.resize(device_count); result = EnumeratePhysicalDevices(instance, &device_count, devices.editArray()); if (result < 0) return result; devices.resize(device_count); *pPhysicalDeviceGroupCount = device_count; for (uint32_t i = 0; i < device_count; ++i) { pPhysicalDeviceGroupProperties[i].physicalDeviceCount = 1; pPhysicalDeviceGroupProperties[i].physicalDevices[0] = devices[i]; pPhysicalDeviceGroupProperties[i].subsetAllocation = 0; } } else { result = data.driver.EnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && *pPhysicalDeviceGroupCount && pPhysicalDeviceGroupProperties) { for (uint32_t i = 0; i < *pPhysicalDeviceGroupCount; i++) { for (uint32_t j = 0; j < pPhysicalDeviceGroupProperties->physicalDeviceCount; j++) { SetData(pPhysicalDeviceGroupProperties->physicalDevices[j], j < pPhysicalDeviceGroupProperties[i].physicalDeviceCount; j++) { SetData( pPhysicalDeviceGroupProperties[i].physicalDevices[j], data); } } } } return result; } Loading vulkan/libvulkan/libvulkan.map.txt +32 −0 Original line number Diff line number Diff line LIBVULKAN { global: vkAcquireNextImage2KHR; # introduced=28 vkAcquireNextImageKHR; vkAllocateCommandBuffers; vkAllocateDescriptorSets; vkAllocateMemory; vkBeginCommandBuffer; vkBindBufferMemory; vkBindBufferMemory2; # introduced=28 vkBindImageMemory; vkBindImageMemory2; # introduced=28 vkCmdBeginQuery; vkCmdBeginRenderPass; vkCmdBindDescriptorSets; Loading @@ -23,6 +26,7 @@ LIBVULKAN { vkCmdCopyImageToBuffer; vkCmdCopyQueryPoolResults; vkCmdDispatch; vkCmdDispatchBase; # introduced=28 vkCmdDispatchIndirect; vkCmdDraw; vkCmdDrawIndexed; Loading @@ -41,6 +45,7 @@ LIBVULKAN { vkCmdSetBlendConstants; vkCmdSetDepthBias; vkCmdSetDepthBounds; vkCmdSetDeviceMask; # introduced=28 vkCmdSetEvent; vkCmdSetLineWidth; vkCmdSetScissor; Loading @@ -58,6 +63,7 @@ LIBVULKAN { vkCreateComputePipelines; vkCreateDescriptorPool; vkCreateDescriptorSetLayout; vkCreateDescriptorUpdateTemplate; # introduced=28 vkCreateDevice; vkCreateEvent; vkCreateFence; Loading @@ -71,6 +77,7 @@ LIBVULKAN { vkCreateQueryPool; vkCreateRenderPass; vkCreateSampler; vkCreateSamplerYcbcrConversion; # introduced=28 vkCreateSemaphore; vkCreateShaderModule; vkCreateSwapchainKHR; Loading @@ -79,6 +86,7 @@ LIBVULKAN { vkDestroyCommandPool; vkDestroyDescriptorPool; vkDestroyDescriptorSetLayout; vkDestroyDescriptorUpdateTemplate; # introduced=28 vkDestroyDevice; vkDestroyEvent; vkDestroyFence; Loading @@ -92,6 +100,7 @@ LIBVULKAN { vkDestroyQueryPool; vkDestroyRenderPass; vkDestroySampler; vkDestroySamplerYcbcrConversion; # introduced=28 vkDestroySemaphore; vkDestroyShaderModule; vkDestroySurfaceKHR; Loading @@ -102,28 +111,49 @@ LIBVULKAN { vkEnumerateDeviceLayerProperties; vkEnumerateInstanceExtensionProperties; vkEnumerateInstanceLayerProperties; vkEnumerateInstanceVersion; # introduced=28 vkEnumeratePhysicalDeviceGroups; # introduced=28 vkEnumeratePhysicalDevices; vkFlushMappedMemoryRanges; vkFreeCommandBuffers; vkFreeDescriptorSets; vkFreeMemory; vkGetBufferMemoryRequirements; vkGetBufferMemoryRequirements2; # introduced=28 vkGetDescriptorSetLayoutSupport; # introduced=28 vkGetDeviceGroupPeerMemoryFeatures; # introduced=28 vkGetDeviceGroupPresentCapabilitiesKHR; # introduced=28 vkGetDeviceGroupSurfacePresentModesKHR; # introduced=28 vkGetDeviceMemoryCommitment; vkGetDeviceProcAddr; vkGetDeviceQueue; vkGetDeviceQueue2; # introduced=28 vkGetEventStatus; vkGetFenceStatus; vkGetImageMemoryRequirements; vkGetImageMemoryRequirements2; # introduced=28 vkGetImageSparseMemoryRequirements; vkGetImageSparseMemoryRequirements2; # introduced=28 vkGetImageSubresourceLayout; vkGetInstanceProcAddr; vkGetPhysicalDeviceExternalBufferProperties; # introduced=28 vkGetPhysicalDeviceExternalFenceProperties; # introduced=28 vkGetPhysicalDeviceExternalSemaphoreProperties; # introduced=28 vkGetPhysicalDeviceFeatures; vkGetPhysicalDeviceFeatures2; # introduced=28 vkGetPhysicalDeviceFormatProperties; vkGetPhysicalDeviceFormatProperties2; # introduced=28 vkGetPhysicalDeviceImageFormatProperties; vkGetPhysicalDeviceImageFormatProperties2; # introduced=28 vkGetPhysicalDeviceMemoryProperties; vkGetPhysicalDeviceMemoryProperties2; # introduced=28 vkGetPhysicalDevicePresentRectanglesKHR; # introduced=28 vkGetPhysicalDeviceProperties; vkGetPhysicalDeviceProperties2; # introduced=28 vkGetPhysicalDeviceQueueFamilyProperties; vkGetPhysicalDeviceQueueFamilyProperties2; # introduced=28 vkGetPhysicalDeviceSparseImageFormatProperties; vkGetPhysicalDeviceSparseImageFormatProperties2; # introduced=28 vkGetPhysicalDeviceSurfaceCapabilitiesKHR; vkGetPhysicalDeviceSurfaceFormatsKHR; vkGetPhysicalDeviceSurfacePresentModesKHR; Loading @@ -145,8 +175,10 @@ LIBVULKAN { vkResetEvent; vkResetFences; vkSetEvent; vkTrimCommandPool; # introduced=28 vkUnmapMemory; vkUpdateDescriptorSets; vkUpdateDescriptorSetWithTemplate; # introduced=28 vkWaitForFences; local: *; Loading Loading
vulkan/libvulkan/driver.cpp +46 −9 Original line number Diff line number Diff line Loading @@ -19,9 +19,9 @@ #include <string.h> #include <sys/prctl.h> #include <dlfcn.h> #include <algorithm> #include <array> #include <dlfcn.h> #include <new> #include <log/log.h> Loading Loading @@ -1047,20 +1047,57 @@ VkResult EnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { VkResult result = VK_SUCCESS; const auto& data = GetData(instance); VkResult result = data.driver.EnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); if (!data.driver.EnumeratePhysicalDeviceGroups) { uint32_t device_count = 0; result = EnumeratePhysicalDevices(instance, &device_count, nullptr); if (result < 0) return result; if (!pPhysicalDeviceGroupProperties) { *pPhysicalDeviceGroupCount = device_count; return result; } device_count = std::min(device_count, *pPhysicalDeviceGroupCount); if (!device_count) { *pPhysicalDeviceGroupCount = 0; return result; } android::Vector<VkPhysicalDevice> devices; devices.resize(device_count); result = EnumeratePhysicalDevices(instance, &device_count, devices.editArray()); if (result < 0) return result; devices.resize(device_count); *pPhysicalDeviceGroupCount = device_count; for (uint32_t i = 0; i < device_count; ++i) { pPhysicalDeviceGroupProperties[i].physicalDeviceCount = 1; pPhysicalDeviceGroupProperties[i].physicalDevices[0] = devices[i]; pPhysicalDeviceGroupProperties[i].subsetAllocation = 0; } } else { result = data.driver.EnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && *pPhysicalDeviceGroupCount && pPhysicalDeviceGroupProperties) { for (uint32_t i = 0; i < *pPhysicalDeviceGroupCount; i++) { for (uint32_t j = 0; j < pPhysicalDeviceGroupProperties->physicalDeviceCount; j++) { SetData(pPhysicalDeviceGroupProperties->physicalDevices[j], j < pPhysicalDeviceGroupProperties[i].physicalDeviceCount; j++) { SetData( pPhysicalDeviceGroupProperties[i].physicalDevices[j], data); } } } } return result; } Loading
vulkan/libvulkan/libvulkan.map.txt +32 −0 Original line number Diff line number Diff line LIBVULKAN { global: vkAcquireNextImage2KHR; # introduced=28 vkAcquireNextImageKHR; vkAllocateCommandBuffers; vkAllocateDescriptorSets; vkAllocateMemory; vkBeginCommandBuffer; vkBindBufferMemory; vkBindBufferMemory2; # introduced=28 vkBindImageMemory; vkBindImageMemory2; # introduced=28 vkCmdBeginQuery; vkCmdBeginRenderPass; vkCmdBindDescriptorSets; Loading @@ -23,6 +26,7 @@ LIBVULKAN { vkCmdCopyImageToBuffer; vkCmdCopyQueryPoolResults; vkCmdDispatch; vkCmdDispatchBase; # introduced=28 vkCmdDispatchIndirect; vkCmdDraw; vkCmdDrawIndexed; Loading @@ -41,6 +45,7 @@ LIBVULKAN { vkCmdSetBlendConstants; vkCmdSetDepthBias; vkCmdSetDepthBounds; vkCmdSetDeviceMask; # introduced=28 vkCmdSetEvent; vkCmdSetLineWidth; vkCmdSetScissor; Loading @@ -58,6 +63,7 @@ LIBVULKAN { vkCreateComputePipelines; vkCreateDescriptorPool; vkCreateDescriptorSetLayout; vkCreateDescriptorUpdateTemplate; # introduced=28 vkCreateDevice; vkCreateEvent; vkCreateFence; Loading @@ -71,6 +77,7 @@ LIBVULKAN { vkCreateQueryPool; vkCreateRenderPass; vkCreateSampler; vkCreateSamplerYcbcrConversion; # introduced=28 vkCreateSemaphore; vkCreateShaderModule; vkCreateSwapchainKHR; Loading @@ -79,6 +86,7 @@ LIBVULKAN { vkDestroyCommandPool; vkDestroyDescriptorPool; vkDestroyDescriptorSetLayout; vkDestroyDescriptorUpdateTemplate; # introduced=28 vkDestroyDevice; vkDestroyEvent; vkDestroyFence; Loading @@ -92,6 +100,7 @@ LIBVULKAN { vkDestroyQueryPool; vkDestroyRenderPass; vkDestroySampler; vkDestroySamplerYcbcrConversion; # introduced=28 vkDestroySemaphore; vkDestroyShaderModule; vkDestroySurfaceKHR; Loading @@ -102,28 +111,49 @@ LIBVULKAN { vkEnumerateDeviceLayerProperties; vkEnumerateInstanceExtensionProperties; vkEnumerateInstanceLayerProperties; vkEnumerateInstanceVersion; # introduced=28 vkEnumeratePhysicalDeviceGroups; # introduced=28 vkEnumeratePhysicalDevices; vkFlushMappedMemoryRanges; vkFreeCommandBuffers; vkFreeDescriptorSets; vkFreeMemory; vkGetBufferMemoryRequirements; vkGetBufferMemoryRequirements2; # introduced=28 vkGetDescriptorSetLayoutSupport; # introduced=28 vkGetDeviceGroupPeerMemoryFeatures; # introduced=28 vkGetDeviceGroupPresentCapabilitiesKHR; # introduced=28 vkGetDeviceGroupSurfacePresentModesKHR; # introduced=28 vkGetDeviceMemoryCommitment; vkGetDeviceProcAddr; vkGetDeviceQueue; vkGetDeviceQueue2; # introduced=28 vkGetEventStatus; vkGetFenceStatus; vkGetImageMemoryRequirements; vkGetImageMemoryRequirements2; # introduced=28 vkGetImageSparseMemoryRequirements; vkGetImageSparseMemoryRequirements2; # introduced=28 vkGetImageSubresourceLayout; vkGetInstanceProcAddr; vkGetPhysicalDeviceExternalBufferProperties; # introduced=28 vkGetPhysicalDeviceExternalFenceProperties; # introduced=28 vkGetPhysicalDeviceExternalSemaphoreProperties; # introduced=28 vkGetPhysicalDeviceFeatures; vkGetPhysicalDeviceFeatures2; # introduced=28 vkGetPhysicalDeviceFormatProperties; vkGetPhysicalDeviceFormatProperties2; # introduced=28 vkGetPhysicalDeviceImageFormatProperties; vkGetPhysicalDeviceImageFormatProperties2; # introduced=28 vkGetPhysicalDeviceMemoryProperties; vkGetPhysicalDeviceMemoryProperties2; # introduced=28 vkGetPhysicalDevicePresentRectanglesKHR; # introduced=28 vkGetPhysicalDeviceProperties; vkGetPhysicalDeviceProperties2; # introduced=28 vkGetPhysicalDeviceQueueFamilyProperties; vkGetPhysicalDeviceQueueFamilyProperties2; # introduced=28 vkGetPhysicalDeviceSparseImageFormatProperties; vkGetPhysicalDeviceSparseImageFormatProperties2; # introduced=28 vkGetPhysicalDeviceSurfaceCapabilitiesKHR; vkGetPhysicalDeviceSurfaceFormatsKHR; vkGetPhysicalDeviceSurfacePresentModesKHR; Loading @@ -145,8 +175,10 @@ LIBVULKAN { vkResetEvent; vkResetFences; vkSetEvent; vkTrimCommandPool; # introduced=28 vkUnmapMemory; vkUpdateDescriptorSets; vkUpdateDescriptorSetWithTemplate; # introduced=28 vkWaitForFences; local: *; Loading