vulkan: Allow drivers to add private gralloc usage flags

Change-Id: Iea33990b3a85a761e27d54bb323d866267c88901
(cherry picked from commit c040fbedde52d632a7ceeef3a9266d35b22ce53f)
diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
index 4b4d22d..e1678ea 100644
--- a/vulkan/nulldrv/null_driver.cpp
+++ b/vulkan/nulldrv/null_driver.cpp
@@ -235,6 +235,9 @@
     PFN_vkVoidFunction proc = LookupDeviceProcAddr(name);
     if (proc)
         return proc;
+    if (strcmp(name, "vkGetSwapchainGrallocUsageANDROID") == 0)
+        return reinterpret_cast<PFN_vkVoidFunction>(
+            GetSwapchainGrallocUsageANDROID);
     if (strcmp(name, "vkImportNativeFenceANDROID") == 0)
         return reinterpret_cast<PFN_vkVoidFunction>(ImportNativeFenceANDROID);
     if (strcmp(name, "vkQueueSignalNativeFenceANDROID") == 0)
@@ -661,6 +664,15 @@
     return VK_SUCCESS;
 }
 
+VkResult GetSwapchainGrallocUsageANDROID(VkDevice,
+                                         VkFormat,
+                                         VkImageUsageFlags,
+                                         int* grallocUsage) {
+    // The null driver never reads or writes the gralloc buffer
+    *grallocUsage = 0;
+    return VK_SUCCESS;
+}
+
 VkResult ImportNativeFenceANDROID(VkDevice, VkSemaphore, int fence) {
     close(fence);
     return VK_SUCCESS;