RavEngine
Loading...
Searching...
No Matches
MTLBuffer.hpp
1#pragma once
2#include <RGL/Types.hpp>
3#include <RGL/Buffer.hpp>
4#include "MTLObjCCompatLayer.hpp"
5#include <memory>
6
7namespace RGL{
8 struct DeviceMTL;
9 struct BufferMTL : public IBuffer{
10 OBJC_ID(MTLBuffer) buffer = nullptr;
11 const std::shared_ptr<DeviceMTL> owningDevice;
12 MutableSpan data;
13 uint32_t stride = 0;
14 uint32_t mode;
15 uint32_t globalIndex = 0;
16 BufferMTL(decltype(owningDevice), const BufferConfig&);
17
18 //IBuffer
19 void MapMemory() ;
20 void UnmapMemory() ;
21 void UpdateBufferData(untyped_span newData, decltype(BufferConfig::nElements) offset = 0) ;
22 void SetBufferData(untyped_span data, decltype(BufferConfig::nElements) offset = 0) ;
23 decltype(BufferConfig::nElements) getBufferSize() const final;
24 void* GetMappedDataPtr() final;
25
26 void SignalRangeChanged(const Range&) final;
27 virtual ~BufferMTL();
28
29 uint32_t GetReadonlyBindlessGPUHandle() const final;
30 uint32_t GetReadwriteBindlessGPUHandle() const final;
31 };
32}
Definition Span.hpp:11
Definition Buffer.hpp:21
Definition MTLBuffer.hpp:9
void SetBufferData(untyped_span data, decltype(BufferConfig::nElements) offset=0)
void UnmapMemory()
void UpdateBufferData(untyped_span newData, decltype(BufferConfig::nElements) offset=0)
Definition Buffer.hpp:50
Definition Span.hpp:6
Definition Buffer.hpp:45