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 {
46 enum class MemUsage : uint8_t {
59 const char* debugName;
67 debugName(createInfo.debugName),
68 bufferUsage(createInfo.bufferUsage),
69 memoryUsage(createInfo.memoryUsage),
70 bufferSize(createInfo.bufferSize) {};
73 virtual void* Map() = 0;
74 virtual void Unmap() = 0;
75 virtual void UploadData(
const void* data,
size_t size,
size_t offset = 0) = 0;
77 void UploadData(
const void* data) {
78 UploadData(data, bufferSize, 0);
81 BufferUsage GetBufferUsage()
const {
82 return bufferUsage.GetValueEnum();
85 MemUsage GetMemoryUsage()
const {
89 size_t GetSize()
const {
94 const char* debugName;
95 Grindstone::Containers::BitsetFlags<BufferUsage> bufferUsage;
98 void* mappedMemoryPtr =
nullptr;
Definition Bitset.hpp:331
Definition EnumTraits.hpp:10