[vulkan] Set the features on first connection
bug: 111137294
bug: 121377497
This CL introduces a mechanism for Vulkan ResourceTracker to become
aware of what host-side features are available. On the first connection,
we father the feature strings and set feature fields, and this should be
communicated to Vulkan as well.
Change-Id: I90e4e31477d201271a47163491dc239ea5c26678
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 5ac4d7b..916a817 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -15,6 +15,7 @@
#include "ResourceTracker.h"
+#include "../OpenglSystemCommon/EmulatorFeatureInfo.h"
#include "Resources.h"
#include "VkEncoder.h"
@@ -237,6 +238,12 @@
return offset + size <= info.mappedSize;
}
+ void setupFeatures(const EmulatorFeatureInfo* features) {
+ if (!features || mFeatureInfo) return;
+ mFeatureInfo.reset(new EmulatorFeatureInfo);
+ *mFeatureInfo = *features;
+ }
+
VkResult on_vkEnumerateInstanceVersion(
void*,
VkResult,
@@ -392,7 +399,7 @@
private:
mutable Lock mLock;
-
+ std::unique_ptr<EmulatorFeatureInfo> mFeatureInfo;
};
ResourceTracker::ResourceTracker() : mImpl(new ResourceTracker::Impl()) { }
ResourceTracker::~ResourceTracker() { }
@@ -457,6 +464,10 @@
return mImpl->isValidMemoryRange(range);
}
+void ResourceTracker::setupFeatures(const EmulatorFeatureInfo* features) {
+ mImpl->setupFeatures(features);
+}
+
VkResult ResourceTracker::on_vkEnumerateInstanceVersion(
void* context,
VkResult input_result,