forked from liblava/liblava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplatform.hpp
More file actions
78 lines (63 loc) · 1.83 KB
/
platform.hpp
File metadata and controls
78 lines (63 loc) · 1.83 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* @file liblava/base/platform.hpp
* @brief Stage platform
* @authors Lava Block OÜ and contributors
* @copyright Copyright (c) 2018-present, MIT License
*/
#pragma once
#include "liblava/base/device.hpp"
namespace lava {
/**
* @brief Stage platform
*/
struct platform {
/// Pointer to platform
using ptr = platform*;
/**
* @brief Create a managed device from a physical device
* @param physical_device Index of physical device
* @return device::s_ptr Vulkan device
*/
device::s_ptr create(index physical_device = 0);
/**
* @brief Create a managed device with create parameters
* @param param Create parameters
* @return device::s_ptr Vulkan device
*/
device::s_ptr create(device::create_param::ref param);
/**
* @brief Create a managed device
* @param physical_device Physical device
* @return device::s_ptr Pointer to device
*/
device::ptr create_device(index physical_device = 0);
/**
* @brief Get all devices
* @return device::s_list const& List of devices
*/
device::s_list const& get_devices() const {
return m_devices;
}
/**
* @brief Wait for idle on all managed devices
*/
void wait_idle();
/**
* @brief Remove device from platform
* @param device_id Id of device
* @return Remove was successful or failed
*/
bool remove(id::ref device_id);
/**
* @brief Clear all managed devices
*/
void clear();
/// Create parameter function
using create_param_func = std::function<void(device::create_param&)>;
/// Called on create to adjust the create parameters
create_param_func on_create_param;
private:
/// List of managed devices
device::s_list m_devices;
};
} // namespace lava