15#include <vsg/core/Version.h>
24#if VSG_MAX_DEVICES <= 1
32 T& operator[](uint32_t) {
return value; }
33 const T& operator[](uint32_t)
const {
return value; }
35 uint32_t size()
const {
return 1; }
37 void clear() { value = {}; }
39 auto begin() {
return &value; }
40 auto begin()
const {
return &value; }
42 auto end() {
return &value + 1; }
43 auto end()
const {
return &value + 1; }
46#elif VSG_MAX_DEVICES <= 4
52 std::array<T, VSG_MAX_DEVICES> buffer;
54 T& operator[](uint32_t deviceID) {
return buffer[deviceID]; }
55 const T& operator[](uint32_t deviceID)
const {
return buffer[deviceID]; }
57 uint32_t size()
const {
return VSG_MAX_DEVICES; }
61 for (
auto& value : buffer) value = {};
64 auto begin() {
return buffer.begin(); }
65 auto begin()
const {
return buffer.begin(); }
67 auto end() {
return buffer.end(); }
68 auto end()
const {
return buffer.end(); }
77 std::vector<T> buffer;
79 T& operator[](uint32_t deviceID)
81 if (deviceID >= buffer.size()) buffer.resize(deviceID + 1);
82 return buffer[deviceID];
85 const T& operator[](uint32_t deviceID)
const
87 return buffer[deviceID];
90 uint32_t size()
const {
return static_cast<uint32_t
>(buffer.size()); }
92 void clear() { buffer.clear(); }
94 auto begin() {
return buffer.begin(); }
95 auto begin()
const {
return buffer.begin(); }
97 auto end() {
return buffer.end(); }
98 auto end()
const {
return buffer.end(); }
vk_buffer that manages a single logical device supported.
Definition vk_buffer.h:29