Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c58237ee authored by Yiwei Zhang's avatar Yiwei Zhang Committed by Android (Google) Code Review
Browse files

Merge "Add VK1.1 entries to NDK libvulkan and fix a bug"

parents 7107106b 4cd9cc97
Loading
Loading
Loading
Loading
+46 −9
Original line number Diff line number Diff line
@@ -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>
@@ -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;
}
+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;
@@ -23,6 +26,7 @@ LIBVULKAN {
    vkCmdCopyImageToBuffer;
    vkCmdCopyQueryPoolResults;
    vkCmdDispatch;
    vkCmdDispatchBase; # introduced=28
    vkCmdDispatchIndirect;
    vkCmdDraw;
    vkCmdDrawIndexed;
@@ -41,6 +45,7 @@ LIBVULKAN {
    vkCmdSetBlendConstants;
    vkCmdSetDepthBias;
    vkCmdSetDepthBounds;
    vkCmdSetDeviceMask; # introduced=28
    vkCmdSetEvent;
    vkCmdSetLineWidth;
    vkCmdSetScissor;
@@ -58,6 +63,7 @@ LIBVULKAN {
    vkCreateComputePipelines;
    vkCreateDescriptorPool;
    vkCreateDescriptorSetLayout;
    vkCreateDescriptorUpdateTemplate; # introduced=28
    vkCreateDevice;
    vkCreateEvent;
    vkCreateFence;
@@ -71,6 +77,7 @@ LIBVULKAN {
    vkCreateQueryPool;
    vkCreateRenderPass;
    vkCreateSampler;
    vkCreateSamplerYcbcrConversion; # introduced=28
    vkCreateSemaphore;
    vkCreateShaderModule;
    vkCreateSwapchainKHR;
@@ -79,6 +86,7 @@ LIBVULKAN {
    vkDestroyCommandPool;
    vkDestroyDescriptorPool;
    vkDestroyDescriptorSetLayout;
    vkDestroyDescriptorUpdateTemplate; # introduced=28
    vkDestroyDevice;
    vkDestroyEvent;
    vkDestroyFence;
@@ -92,6 +100,7 @@ LIBVULKAN {
    vkDestroyQueryPool;
    vkDestroyRenderPass;
    vkDestroySampler;
    vkDestroySamplerYcbcrConversion; # introduced=28
    vkDestroySemaphore;
    vkDestroyShaderModule;
    vkDestroySurfaceKHR;
@@ -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;
@@ -145,8 +175,10 @@ LIBVULKAN {
    vkResetEvent;
    vkResetFences;
    vkSetEvent;
    vkTrimCommandPool; # introduced=28
    vkUnmapMemory;
    vkUpdateDescriptorSets;
    vkUpdateDescriptorSetWithTemplate; # introduced=28
    vkWaitForFences;
  local:
    *;