[vulkan] put null optinal string marshaling behind a flag (guest)

bug: 111137294

System images without the support need different marshaling

Change-Id: Iff950810d34d347022deee7928848b5cf7bee544
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index bf8a928..d3bd3ff 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -563,6 +563,10 @@
             }
         }
 #endif
+
+        if (mFeatureInfo->hasVulkanNullOptionalStrings) {
+            mStreamFeatureBits |= VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT;
+        }
     }
 
     bool hostSupportsVulkan() const {
@@ -575,6 +579,10 @@
         return mHostVisibleMemoryVirtInfo.virtualizationSupported;
     }
 
+    uint32_t getStreamFeatures() const {
+        return mStreamFeatureBits;
+    }
+
     bool supportsDeferredCommands() const {
         if (!mFeatureInfo) return false;
         return mFeatureInfo->hasDeferredVulkanCommands;
@@ -3172,6 +3180,7 @@
     mutable Lock mLock;
     HostVisibleMemoryVirtualizationInfo mHostVisibleMemoryVirtInfo;
     std::unique_ptr<EmulatorFeatureInfo> mFeatureInfo;
+    uint32_t mStreamFeatureBits = 0;
     std::unique_ptr<GoldfishAddressSpaceBlockProvider> mGoldfishAddressSpaceBlockProvider;
 
     std::vector<VkExtensionProperties> mHostInstanceExtensions;
@@ -3252,6 +3261,10 @@
     return mImpl->usingDirectMapping();
 }
 
+uint32_t ResourceTracker::getStreamFeatures() const {
+    return mImpl->getStreamFeatures();
+}
+
 uint32_t ResourceTracker::getApiVersionFromInstance(VkInstance instance) const {
     return mImpl->getApiVersionFromInstance(instance);
 }