blob: 0740abf9aa46754941b488185ea26876e3aa0cf3 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/ozone/platform/headless/vulkan_surface_headless.h"
#include "base/logging.h"
#include "gpu/vulkan/vulkan_function_pointers.h"
#include "ui/gfx/native_widget_types.h"
namespace ui {
// static
std::unique_ptr<VulkanSurfaceHeadless> VulkanSurfaceHeadless::Create(
VkInstance vk_instance,
gfx::AcceleratedWidget widget) {
VkSurfaceKHR vk_surface;
const VkHeadlessSurfaceCreateInfoEXT surface_create_info = {
.sType = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT,
.pNext = nullptr,
.flags = 0,
};
VkResult result = vkCreateHeadlessSurfaceEXT(
vk_instance, &surface_create_info, nullptr, &vk_surface);
if (VK_SUCCESS != result) {
DLOG(ERROR) << "vkCreateHeadlessSurfaceEXT() failed: " << result;
return nullptr;
}
return std::make_unique<VulkanSurfaceHeadless>(vk_instance, vk_surface,
widget);
}
VulkanSurfaceHeadless::VulkanSurfaceHeadless(VkInstance vk_instance,
VkSurfaceKHR vk_surface,
gfx::AcceleratedWidget widget)
: gpu::VulkanSurface(vk_instance, widget, vk_surface) {}
} // namespace ui