vulkan: allow drivers to see image acquire/release

Change-Id: I8143aeebd1f65142486cc55662c685d081ba41eb
(cherry picked from commit 58b4df743ecad9f1a0fc7cb7c0f5340dd8365308)
diff --git a/vulkan/libvulkan/get_proc_addr.cpp b/vulkan/libvulkan/get_proc_addr.cpp
index c840e5b..6fca95f 100644
--- a/vulkan/libvulkan/get_proc_addr.cpp
+++ b/vulkan/libvulkan/get_proc_addr.cpp
@@ -1176,14 +1176,26 @@
         ALOGW("missing device proc: %s", "vkGetSwapchainGrallocUsageANDROID");
         // success = false;
     }
-    vtbl.ImportNativeFenceANDROID = reinterpret_cast<PFN_vkImportNativeFenceANDROID>(get_proc_addr(device, "vkImportNativeFenceANDROID"));
-    if (UNLIKELY(!vtbl.ImportNativeFenceANDROID)) {
-        ALOGE("missing device proc: %s", "vkImportNativeFenceANDROID");
-        success = false;
+    vtbl.AcquireImageANDROID = reinterpret_cast<PFN_vkAcquireImageANDROID>(get_proc_addr(device, "vkAcquireImageANDROID"));
+    if (UNLIKELY(!vtbl.AcquireImageANDROID)) {
+        // TODO(jessehall): temporarily make this optional, until drivers have been updated
+        // ALOGE("missing device proc: %s", "vkImportNativeFenceANDROID");
+        ALOGW("missing device proc: %s", "vkAcquireImageANDROID");
+        // success = false;
     }
+    vtbl.QueueSignalReleaseImageANDROID = reinterpret_cast<PFN_vkQueueSignalReleaseImageANDROID>(get_proc_addr(device, "vkQueueSignalReleaseImageANDROID"));
+    if (UNLIKELY(!vtbl.QueueSignalReleaseImageANDROID)) {
+        // TODO(jessehall): temporarily make this optional, until drivers have been updated
+        // ALOGE("missing device proc: %s", "vkQueueSignalReleaseImageANDROID");
+        ALOGW("missing device proc: %s", "vkQueueSignalReleaseImageANDROID");
+        // success = false;
+    }
+    // TODO(jessehall): these are deprecated; remove when drivers have been updated
+    vtbl.ImportNativeFenceANDROID = reinterpret_cast<PFN_vkImportNativeFenceANDROID>(get_proc_addr(device, "vkImportNativeFenceANDROID"));
     vtbl.QueueSignalNativeFenceANDROID = reinterpret_cast<PFN_vkQueueSignalNativeFenceANDROID>(get_proc_addr(device, "vkQueueSignalNativeFenceANDROID"));
-    if (UNLIKELY(!vtbl.QueueSignalNativeFenceANDROID)) {
-        ALOGE("missing device proc: %s", "vkQueueSignalNativeFenceANDROID");
+    if (!((!vtbl.AcquireImageANDROID && !vtbl.QueueSignalReleaseImageANDROID && vtbl.ImportNativeFenceANDROID && vtbl.QueueSignalNativeFenceANDROID) ||
+    (vtbl.AcquireImageANDROID && vtbl.QueueSignalReleaseImageANDROID && !vtbl.ImportNativeFenceANDROID && !vtbl.QueueSignalNativeFenceANDROID))) {
+        ALOGE("driver doesn't support exactly one of old- or new-style VK_EXT_ANDROID_native_buffer commands");
         success = false;
     }
     // clang-format on