blob: 7da655d7c3e67e6ac33547c72c5a5257c3cbc9d1 [file] [log] [blame]
dyen2ce3e052016-03-09 21:03:491// Copyright (c) 2016 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
5#include "gpu/vulkan/vulkan_implementation.h"
6
Michael Spang7509e6d2018-05-16 17:08:287#include "base/bind.h"
8#include "gpu/vulkan/vulkan_device_queue.h"
Vikas Sonicd499af2019-01-29 19:00:119#include "gpu/vulkan/vulkan_function_pointers.h"
Sergey Ulanovaf257db2019-01-28 20:13:5210#include "gpu/vulkan/vulkan_instance.h"
dyen5bd6d4f2016-03-31 15:25:4511
dyen2ce3e052016-03-09 21:03:4912namespace gpu {
13
Emircan Uysalerd41c9bf2019-08-08 20:38:3314VulkanImplementation::VulkanImplementation(bool use_swiftshader,
15 bool allow_protected_memory,
16 bool enforce_protected_memory)
17 : use_swiftshader_(use_swiftshader),
18 allow_protected_memory_(allow_protected_memory),
19 enforce_protected_memory_(enforce_protected_memory) {}
dyen2ce3e052016-03-09 21:03:4920
Michael Spang7509e6d2018-05-16 17:08:2821VulkanImplementation::~VulkanImplementation() {}
dyen2ce3e052016-03-09 21:03:4922
Sergey Ulanov520fe0e2019-04-02 06:02:5523std::unique_ptr<VulkanDeviceQueue> CreateVulkanDeviceQueue(
24 VulkanImplementation* vulkan_implementation,
25 uint32_t option) {
26 auto device_queue = std::make_unique<VulkanDeviceQueue>(
Emircan Uysalerd41c9bf2019-08-08 20:38:3327 vulkan_implementation->GetVulkanInstance()->vk_instance(),
28 vulkan_implementation->enforce_protected_memory());
Sergey Ulanov520fe0e2019-04-02 06:02:5529 auto callback = base::BindRepeating(
30 &VulkanImplementation::GetPhysicalDevicePresentationSupport,
31 base::Unretained(vulkan_implementation));
32 std::vector<const char*> required_extensions =
33 vulkan_implementation->GetRequiredDeviceExtensions();
Sergey Ulanove82b1002019-07-22 22:23:3934 if (!device_queue->Initialize(
35 option, vulkan_implementation->GetVulkanInstance()->api_version(),
Emircan Uysalerd41c9bf2019-08-08 20:38:3336 std::move(required_extensions),
37 vulkan_implementation->allow_protected_memory(), callback)) {
Sergey Ulanov520fe0e2019-04-02 06:02:5538 device_queue->Destroy();
39 return nullptr;
40 }
41
42 return device_queue;
43}
44
dyen2ce3e052016-03-09 21:03:4945} // namespace gpu