mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-11 00:53:41 +00:00
This CL implements the MemoryService for importing memory and creating VkImages from a dma-buf handle. Under the hood, it uses the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier extensions to find a memory type that supports dma-buf import. In addition, the extensions are also used to properly specify the stride and tiling of the dma-buf to vkAllocateMemory and vkCreateImage. BUG=chromium:996470 Change-Id: Ie72d73117a4cbafcb40468aab0952b783351d499 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13785 Commit-Queue: Brian Ho <hob@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
59 lines
2.4 KiB
C++
59 lines
2.4 KiB
C++
// Copyright 2019 The Dawn Authors
|
|
//
|
|
// 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.
|
|
|
|
#include "dawn_native/vulkan/DeviceVk.h"
|
|
#include "dawn_native/vulkan/external_memory/MemoryService.h"
|
|
|
|
namespace dawn_native { namespace vulkan { namespace external_memory {
|
|
|
|
Service::Service(Device* device) : mDevice(device) {
|
|
DAWN_UNUSED(mDevice);
|
|
DAWN_UNUSED(mSupported);
|
|
}
|
|
|
|
Service::~Service() = default;
|
|
|
|
bool Service::SupportsImportMemory(VkFormat format,
|
|
VkImageType type,
|
|
VkImageTiling tiling,
|
|
VkImageUsageFlags usage,
|
|
VkImageCreateFlags flags) {
|
|
return false;
|
|
}
|
|
|
|
bool Service::SupportsCreateImage(const ExternalImageDescriptor* descriptor,
|
|
VkFormat format,
|
|
VkImageUsageFlags usage) {
|
|
return false;
|
|
}
|
|
|
|
ResultOrError<MemoryImportParams> Service::GetMemoryImportParams(
|
|
const ExternalImageDescriptor* descriptor,
|
|
VkImage image) {
|
|
return DAWN_UNIMPLEMENTED_ERROR("Using null memory service to interop inside Vulkan");
|
|
}
|
|
|
|
ResultOrError<VkDeviceMemory> Service::ImportMemory(ExternalMemoryHandle handle,
|
|
const MemoryImportParams& importParams,
|
|
VkImage image) {
|
|
return DAWN_UNIMPLEMENTED_ERROR("Using null memory service to interop inside Vulkan");
|
|
}
|
|
|
|
ResultOrError<VkImage> Service::CreateImage(const ExternalImageDescriptor* descriptor,
|
|
const VkImageCreateInfo& baseCreateInfo) {
|
|
return DAWN_UNIMPLEMENTED_ERROR("Using null memory service to interop inside Vulkan");
|
|
}
|
|
|
|
}}} // namespace dawn_native::vulkan::external_memory
|