13 RGLBufferPtr privateBuffer;
14 std::string debugName;
15 std::vector<unsigned char> syncTrackingBuffer;
19 void InitializePrivateBuffer(RGLDevicePtr device, uint32_t size);
22 auto GetPrivateBuffer()
const{
48 auto& GetHostBuffer()
const{
62 if (hostBuffer.size() !=
newSize){
64 syncTrackingBuffer.resize(
newSize,
true);
76 void push_back(
const T& value){
77 hostBuffer.push_back(value);
78 syncTrackingBuffer.resize(hostBuffer.size(),
true);
81 void erase(
const auto& it){
83 auto index = it - hostBuffer.begin();
85 for(
auto it = syncTrackingBuffer.begin() + index; it != syncTrackingBuffer.end(); ++it){
91 return hostBuffer.begin();
94 void reserve(uint32_t size){
95 if (hostBuffer.capacity() < size) {
96 hostBuffer.reserve(size);
97 syncTrackingBuffer.reserve(size);
102 return hostBuffer.size();
105 auto capacity()
const {
106 return hostBuffer.capacity();
109 const auto& operator[](uint32_t i)
const{
110 return hostBuffer[i];
113 void SetValueAt(uint32_t i,
const T& value){
114 hostBuffer[i] = value;
115 syncTrackingBuffer[i] =
true;
118 auto& GetValueAtForWriting(uint32_t i){
119 syncTrackingBuffer[i] =
true;
120 return hostBuffer[i];
132 void ResizeIfNeeded(){
133 if (sparseSet.DenseSize() > syncTrackingBuffer.size()){
134 syncTrackingBuffer.resize(sparseSet.DenseSize(),
true);
140 using index_type =
decltype(sparseSet)::index_type;
141 using value_type = T;
149 auto DenseSize()
const{
150 return sparseSet.DenseSize();
153 template<
typename ... A>
155 sparseSet.Emplace(
sparse_index, std::forward<A>(args) ...);
157 syncTrackingBuffer[sparseSet.SparseToDense(
sparse_index)] =
true;
161 syncTrackingBuffer[sparseSet.SparseToDense(
sparseIndex)] =
true;
165 const auto& GetReverseMap()
const{
166 return sparseSet.reverse_map;
169 bool HasForSparseIndex(index_type
sparseIndex)
const{
187 auto& GetSparseIndexForDense(index_t index) {
188 return sparseSet.GetSparseIndexForDense(index);
191 auto& GetForSparseIndexForWriting(index_t
sparse_index){
193 syncTrackingBuffer[sparseSet.SparseToDense(
sparse_index)] =
true;
204 if (privateBuffer ==
nullptr){
205 InitializePrivateBuffer(device, 8 *
sizeof(T));
void EncodeSync(RGLDevicePtr device, RGLCommandBufferPtr commandBuffer, const Function< void(RGLBufferPtr)> &gcBuffersFn, bool &previousCommandResetCB)
Definition BufferedVRAMVector.hpp:203
void EncodeSync(RGLDevicePtr device, RGLCommandBufferPtr commandBuffer, const Function< void(RGLBufferPtr)> &gcBuffersFn, bool &previousCommandResetCB)
Definition BufferedVRAMVector.hpp:57