Add a wrapper for vkCreateImageView
We need to update arguments for vkCreateImageView
before sending them to the host.
Bug: 131176903
Test: make
Change-Id: Ia83af721caabedad3a194d3776882ac75690bb02
Signed-off-by: Roman Kiryanov <[email protected]>
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 623859a..4e86c20 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -3122,6 +3122,32 @@
return VK_SUCCESS;
}
+ VkResult on_vkCreateImageView(
+ void* context, VkResult input_result,
+ VkDevice device,
+ const VkImageViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImageView* pView) {
+
+ VkEncoder* enc = (VkEncoder*)context;
+ (void)input_result;
+
+ VkImageViewCreateInfo localCreateInfo = vk_make_orphan_copy(*pCreateInfo);
+
+#ifdef VK_USE_PLATFORM_ANDROID_KHR
+ const VkExternalFormatANDROID* extFormatAndroidPtr =
+ vk_find_struct<VkExternalFormatANDROID>(pCreateInfo);
+ if (extFormatAndroidPtr) {
+ if (extFormatAndroidPtr->externalFormat) {
+ localCreateInfo.format =
+ vk_format_from_android(extFormatAndroidPtr->externalFormat);
+ }
+ }
+#endif
+
+ return enc->vkCreateImageView(device, &localCreateInfo, pAllocator, pView);
+ }
+
uint32_t getApiVersionFromInstance(VkInstance instance) const {
AutoLock lock(mLock);
uint32_t api = kMinApiVersion;
@@ -3763,6 +3789,16 @@
context, input_result, commandBuffer, flags);
}
+VkResult ResourceTracker::on_vkCreateImageView(
+ void* context, VkResult input_result,
+ VkDevice device,
+ const VkImageViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImageView* pView) {
+ return mImpl->on_vkCreateImageView(
+ context, input_result, device, pCreateInfo, pAllocator, pView);
+}
+
void ResourceTracker::deviceMemoryTransform_tohost(
VkDeviceMemory* memory, uint32_t memoryCount,
VkDeviceSize* offset, uint32_t offsetCount,