| // 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/fuchsia/vulkan_fuchsia_ext.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; |
| } |
| |
| zx::vmo VulkanImage::GetMemoryZirconHandle() { |
| DCHECK(handle_types_ & VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA); |
| VkMemoryGetZirconHandleInfoFUCHSIA get_handle_info = { |
| .sType = VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA, |
| .memory = device_memory_, |
| .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA, |
| }; |
| |
| VkDevice device = device_queue_->GetVulkanDevice(); |
| zx::vmo vmo; |
| VkResult result = vkGetMemoryZirconHandleFUCHSIA(device, &get_handle_info, |
| vmo.reset_and_get_address()); |
| if (result != VK_SUCCESS) { |
| DLOG(ERROR) << "vkGetMemoryFuchsiaHandleKHR failed: " << result; |
| vmo.reset(); |
| } |
| |
| return vmo; |
| } |
| |
| } // namespace gpu |