vulkan: 1.2.1 CTS fixes

- Set the default API version to 1.1 (assume 1.1 is supported on the
host), so that CTS tests don't exercise the rare case where we have a
1.0 instance and a 1.1 device
- Don't suppress memory type indices with properties == 0. This works
around a driver bug where some ycbcr copy tests only work with a memory
type index that has properties == 0

Fixes: 152769369

Merged-In: I2dc9df05ea93f8562c1c34a0bddaf28a5a83c414
Change-Id: I98db7e30120d4486eb466243b8d9e47fd8bc461b
diff --git a/system/vulkan_enc/AndroidHardwareBuffer.cpp b/system/vulkan_enc/AndroidHardwareBuffer.cpp
index a40a3a7..fe5a847 100644
--- a/system/vulkan_enc/AndroidHardwareBuffer.cpp
+++ b/system/vulkan_enc/AndroidHardwareBuffer.cpp
@@ -123,7 +123,6 @@
     // (hard to make actual dedicated allocs)
     uint32_t memoryTypeBits = 0;
     for (uint32_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i) {
-        if (isNoFlagsMemoryTypeIndexForGuest(hostMemVirtInfo, i)) continue;
         if (isHostVisibleMemoryTypeIndexForGuest(hostMemVirtInfo, i)) continue;
         memoryTypeBits |= (1 << i);
     }
diff --git a/system/vulkan_enc/HostVisibleMemoryVirtualization.cpp b/system/vulkan_enc/HostVisibleMemoryVirtualization.cpp
index 6169e7c..318940e 100644
--- a/system/vulkan_enc/HostVisibleMemoryVirtualization.cpp
+++ b/system/vulkan_enc/HostVisibleMemoryVirtualization.cpp
@@ -162,7 +162,8 @@
             // Was the original memory type also a device local type? If so,
             // advertise both types in resulting type bits.
             info_out->memoryTypeBitsShouldAdvertiseBoth[i] =
-                type.propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
+                type.propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT ||
+                type.propertyFlags == 0;
 
             ++firstFreeTypeIndex;
 
@@ -204,16 +205,6 @@
     return props.memoryTypes[index].propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
 }
 
-bool isNoFlagsMemoryTypeIndexForGuest(
-    const HostVisibleMemoryVirtualizationInfo* info,
-    uint32_t index) {
-    const auto& props =
-        info->virtualizationSupported ?
-        info->guestMemoryProperties :
-        info->hostMemoryProperties;
-    return props.memoryTypes[index].propertyFlags == 0;
-}
-
 VkResult finishHostMemAllocInit(
     VkEncoder*,
     VkDevice device,
diff --git a/system/vulkan_enc/HostVisibleMemoryVirtualization.h b/system/vulkan_enc/HostVisibleMemoryVirtualization.h
index 305dca2..46e69ec 100644
--- a/system/vulkan_enc/HostVisibleMemoryVirtualization.h
+++ b/system/vulkan_enc/HostVisibleMemoryVirtualization.h
@@ -72,10 +72,6 @@
     const HostVisibleMemoryVirtualizationInfo* info,
     uint32_t index);
 
-bool isNoFlagsMemoryTypeIndexForGuest(
-    const HostVisibleMemoryVirtualizationInfo* info,
-    uint32_t index);
-
 struct HostMemAlloc {
     bool initialized = false;
     VkResult initResult = VK_SUCCESS;
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 7fa35b9..b7c6599 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -634,8 +634,7 @@
         return true;
     }
 
-    static constexpr uint32_t kMaxApiVersion = VK_MAKE_VERSION(1, 1, 0);
-    static constexpr uint32_t kMinApiVersion = VK_MAKE_VERSION(1, 0, 0);
+    static constexpr uint32_t kDefaultApiVersion = VK_MAKE_VERSION(1, 1, 0);
 
     void setInstanceInfo(VkInstance instance,
                          uint32_t enabledExtensionCount,
@@ -2398,8 +2397,6 @@
         uint32_t hostBits) {
         uint32_t res = 0;
         for (uint32_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i) {
-            if (isNoFlagsMemoryTypeIndexForGuest(
-                    &mHostVisibleMemoryVirtInfo, i)) continue;
             if (hostBits & (1 << i)) {
                 res |= (1 << i);
             }
@@ -2411,8 +2408,6 @@
         uint32_t normalBits) {
         uint32_t res = 0;
         for (uint32_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i) {
-            if (isNoFlagsMemoryTypeIndexForGuest(
-                    &mHostVisibleMemoryVirtInfo, i)) continue;
             if (normalBits & (1 << i) &&
                 !isHostVisibleMemoryTypeIndexForGuest(
                     &mHostVisibleMemoryVirtInfo, i)) {
@@ -4381,7 +4376,7 @@
 
     uint32_t getApiVersionFromInstance(VkInstance instance) const {
         AutoLock lock(mLock);
-        uint32_t api = kMinApiVersion;
+        uint32_t api = kDefaultApiVersion;
 
         auto it = info_VkInstance.find(instance);
         if (it == info_VkInstance.end()) return api;
@@ -4394,7 +4389,7 @@
     uint32_t getApiVersionFromDevice(VkDevice device) const {
         AutoLock lock(mLock);
 
-        uint32_t api = kMinApiVersion;
+        uint32_t api = kDefaultApiVersion;
 
         auto it = info_VkDevice.find(device);
         if (it == info_VkDevice.end()) return api;