vulkan_image_fuchsia.cc 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "gpu/vulkan/vulkan_image.h"
  5. #include "base/logging.h"
  6. #include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h"
  7. #include "gpu/vulkan/vulkan_device_queue.h"
  8. #include "gpu/vulkan/vulkan_function_pointers.h"
  9. namespace gpu {
  10. bool VulkanImage::InitializeFromGpuMemoryBufferHandle(
  11. VulkanDeviceQueue* device_queue,
  12. gfx::GpuMemoryBufferHandle gmb_handle,
  13. const gfx::Size& size,
  14. VkFormat format,
  15. VkImageUsageFlags usage,
  16. VkImageCreateFlags flags,
  17. VkImageTiling image_tiling,
  18. uint32_t queue_family_index) {
  19. NOTIMPLEMENTED();
  20. return false;
  21. }
  22. zx::vmo VulkanImage::GetMemoryZirconHandle() {
  23. DCHECK(handle_types_ & VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA);
  24. VkMemoryGetZirconHandleInfoFUCHSIA get_handle_info = {
  25. .sType = VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
  26. .memory = device_memory_,
  27. .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA,
  28. };
  29. VkDevice device = device_queue_->GetVulkanDevice();
  30. zx::vmo vmo;
  31. VkResult result = vkGetMemoryZirconHandleFUCHSIA(device, &get_handle_info,
  32. vmo.reset_and_get_address());
  33. if (result != VK_SUCCESS) {
  34. DLOG(ERROR) << "vkGetMemoryFuchsiaHandleKHR failed: " << result;
  35. vmo.reset();
  36. }
  37. return vmo;
  38. }
  39. } // namespace gpu