5#include <Common/Containers/Bitset.hpp>
9namespace Grindstone::GraphicsAPI {
10 enum class BufferUsage : uint8_t {
23 static constexpr const char* names[] = {
32 static constexpr size_t size = 7;
35inline Grindstone::GraphicsAPI::BufferUsage operator|(Grindstone::GraphicsAPI::BufferUsage a,
const Grindstone::GraphicsAPI::BufferUsage b) {
36 using Underlying = uint8_t;
37 return static_cast<Grindstone::GraphicsAPI::BufferUsage
>(
static_cast<Underlying
>(a) |
static_cast<Underlying
>(b));
40inline Grindstone::GraphicsAPI::BufferUsage operator&(Grindstone::GraphicsAPI::BufferUsage a,
const Grindstone::GraphicsAPI::BufferUsage b) {
41 using Underlying = uint8_t;
42 return static_cast<Grindstone::GraphicsAPI::BufferUsage
>(
static_cast<Underlying
>(a) &
static_cast<Underlying
>(b));
45namespace Grindstone::GraphicsAPI {
52 const char* debugName;
56 MemoryUsage memoryUsage;
60 debugName(createInfo.debugName),
61 bufferUsage(createInfo.bufferUsage),
62 memoryUsage(createInfo.memoryUsage),
63 bufferSize(createInfo.bufferSize) {};
66 virtual void* Map() = 0;
67 virtual void Unmap() = 0;
68 virtual void UploadData(
const void* data,
size_t size,
size_t offset = 0) = 0;
70 void UploadData(
const void* data) {
71 UploadData(data, bufferSize, 0);
74 BufferUsage GetBufferUsage()
const {
75 return bufferUsage.GetValueEnum();
78 MemoryUsage GetMemoryUsage()
const {
82 size_t GetSize()
const {
87 const char* debugName;
88 Grindstone::Containers::BitsetFlags<BufferUsage> bufferUsage;
89 MemoryUsage memoryUsage;
91 void* mappedMemoryPtr =
nullptr;
Definition Bitset.hpp:331
Definition EnumTraits.hpp:10