forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vulkan_in_process_context_provider.cc
54 lines (41 loc) · 1.47 KB
/
vulkan_in_process_context_provider.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright (c) 2016 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 "cc/output/vulkan_in_process_context_provider.h"
#include <vector>
#include "gpu/vulkan/vulkan_device_queue.h"
#if defined(VK_USE_PLATFORM_XLIB_KHR)
#include "ui/gfx/x/x11_types.h"
#endif // defined(VK_USE_PLATFORM_XLIB_KHR)
namespace cc {
scoped_refptr<VulkanInProcessContextProvider>
VulkanInProcessContextProvider::Create() {
scoped_refptr<VulkanInProcessContextProvider> context_provider(
new VulkanInProcessContextProvider);
if (!context_provider->Initialize())
return nullptr;
return context_provider;
}
bool VulkanInProcessContextProvider::Initialize() {
std::unique_ptr<gpu::VulkanDeviceQueue> device_queue(
new gpu::VulkanDeviceQueue);
if (device_queue->Initialize(
gpu::VulkanDeviceQueue::GRAPHICS_QUEUE_FLAG |
gpu::VulkanDeviceQueue::PRESENTATION_SUPPORT_QUEUE_FLAG)) {
device_queue_ = std::move(device_queue);
return true;
}
return false;
}
void VulkanInProcessContextProvider::Destroy() {
if (device_queue_) {
device_queue_->Destroy();
device_queue_.reset();
}
}
gpu::VulkanDeviceQueue* VulkanInProcessContextProvider::GetDeviceQueue() {
return device_queue_.get();
}
VulkanInProcessContextProvider::VulkanInProcessContextProvider() {}
VulkanInProcessContextProvider::~VulkanInProcessContextProvider() {}
} // namespace cc