[vulkan] Add AHB support functions
bug: 122080810
This CL adds support functions for use with AHardwareBuffer
for getting buffer info and
acquiring/importing/creating buffers.
This is inspired by / based on Intel ANV
https://github.com/mesa3d/mesa/blob/master/src/intel/vulkan/anv_android.c
which has a similar layering between implementation-specific Vulkan
and AHardwareBuffer.
No new entry points are exposed yet.
Test: Builds
Change-Id: Ieb5bfcb8b65b87650cd4a2658668efac99f9105c
diff --git a/system/vulkan_enc/AndroidHardwareBuffer.h b/system/vulkan_enc/AndroidHardwareBuffer.h
new file mode 100644
index 0000000..fc6a27e
--- /dev/null
+++ b/system/vulkan_enc/AndroidHardwareBuffer.h
@@ -0,0 +1,52 @@
+/// Copyright (C) 2019 The Android Open Source Project
+// Copyright (C) 2019 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "HostVisibleMemoryVirtualization.h"
+
+#include <vulkan/vulkan.h>
+#include <vndk/hardware_buffer.h>
+
+// Structure similar to
+// https://github.com/mesa3d/mesa/blob/master/src/intel/vulkan/anv_android.c
+
+namespace goldfish_vk {
+
+VkResult getAndroidHardwareBufferPropertiesANDROID(
+ const HostVisibleMemoryVirtualizationInfo* hostMemVirtInfo,
+ VkDevice device,
+ const AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+
+VkResult getMemoryAndroidHardwareBufferANDROID(
+ struct AHardwareBuffer **pBuffer);
+
+VkResult importAndroidHardwareBuffer(
+ const VkImportAndroidHardwareBufferInfoANDROID* info,
+ struct AHardwareBuffer **importOut);
+
+VkResult createAndroidHardwareBuffer(
+ bool hasDedicatedImage,
+ bool hasDedicatedBuffer,
+ const VkExtent3D& imageExtent,
+ uint32_t imageLayers,
+ VkFormat imageFormat,
+ VkImageUsageFlags imageUsage,
+ VkImageCreateFlags imageCreateFlags,
+ VkDeviceSize bufferSize,
+ VkDeviceSize allocationInfoAllocSize,
+ struct AHardwareBuffer **out);
+
+} // namespace goldfish_vk
\ No newline at end of file