| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "gpu/vulkan/vulkan_image.h" |
| |
| #include "base/logging.h" |
| #include "gpu/vulkan/vulkan_device_queue.h" |
| #include "gpu/vulkan/vulkan_function_pointers.h" |
| |
| namespace gpu { |
| |
| bool VulkanImage::InitializeFromGpuMemoryBufferHandle( |
| VulkanDeviceQueue* device_queue, |
| gfx::GpuMemoryBufferHandle gmb_handle, |
| const gfx::Size& size, |
| VkFormat format, |
| VkImageUsageFlags usage, |
| VkImageCreateFlags flags, |
| VkImageTiling image_tiling, |
| uint32_t queue_family_index) { |
| NOTIMPLEMENTED(); |
| return false; |
| } |
| |
| base::win::ScopedHandle VulkanImage::GetMemoryHandle( |
| VkExternalMemoryHandleTypeFlagBits handle_type) { |
| VkMemoryGetWin32HandleInfoKHR get_handle_info = { |
| .sType = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR, |
| .memory = device_memory_, |
| .handleType = handle_type, |
| }; |
| |
| VkDevice device = device_queue_->GetVulkanDevice(); |
| |
| HANDLE handle = nullptr; |
| vkGetMemoryWin32HandleKHR(device, &get_handle_info, &handle); |
| if (handle == nullptr) { |
| DLOG(ERROR) << "Unable to extract file handle out of external VkImage"; |
| return base::win::ScopedHandle(); |
| } |
| |
| return base::win::ScopedHandle(handle); |
| } |
| |
| } // namespace gpu |