#include <utility>
#include "dawn/native/vulkan/DeviceVk.h"
#include "dawn/native/vulkan/external_memory/MemoryService.h"
#if DAWN_PLATFORM_IS(LINUX_DESKTOP) || DAWN_PLATFORM_IS(CHROMEOS)
#include "dawn/native/vulkan/external_memory/MemoryServiceImplementationDmaBuf.h"
#include "dawn/native/vulkan/external_memory/MemoryServiceImplementationOpaqueFD.h"
#endif
#if DAWN_PLATFORM_IS(ANDROID)
#include "dawn/native/vulkan/external_memory/MemoryServiceImplementationAHardwareBuffer.h"
#endif
#if DAWN_PLATFORM_IS(FUCHSIA)
#include "dawn/native/vulkan/external_memory/MemoryServiceImplementationZirconHandle.h"
#endif
namespace dawn::native::vulkan::external_memory {
bool Service::CheckSupport(const VulkanDeviceInfo& deviceInfo) { … }
Service::Service(Device* device) { … }
Service::~Service() = default;
bool Service::SupportsImportMemory(ExternalImageType externalImageType,
VkFormat format,
VkImageType type,
VkImageTiling tiling,
VkImageUsageFlags usage,
VkImageCreateFlags flags) { … }
bool Service::SupportsCreateImage(const ExternalImageDescriptor* descriptor,
VkFormat format,
VkImageUsageFlags usage,
bool* supportsDisjoint) { … }
ResultOrError<MemoryImportParams> Service::GetMemoryImportParams(
const ExternalImageDescriptor* descriptor,
VkImage image) { … }
uint32_t Service::GetQueueFamilyIndex(ExternalImageType externalImageType) { … }
ResultOrError<VkDeviceMemory> Service::ImportMemory(ExternalImageType externalImageType,
ExternalMemoryHandle handle,
const MemoryImportParams& importParams,
VkImage image) { … }
ResultOrError<VkImage> Service::CreateImage(const ExternalImageDescriptor* descriptor,
const VkImageCreateInfo& baseCreateInfo) { … }
ServiceImplementation* Service::GetServiceImplementation(ExternalImageType externalImageType) { … }
}