Blender V5.0
gpu_storage_buffer_private.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2022 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "BLI_sys_types.h"
12
13namespace blender::gpu {
14
15class StorageBuf;
16class VertBuf;
17
18#ifndef NDEBUG
19# define DEBUG_NAME_LEN 64
20#else
21# define DEBUG_NAME_LEN 8
22#endif
23
29 protected:
31 size_t size_in_bytes_ = -1;
34 void *data_ = nullptr;
37
38 public:
39 StorageBuf(size_t size, const char *name);
40 virtual ~StorageBuf();
41 void usage_size_set(size_t size);
42 size_t usage_size_get() const
43 {
45 }
46 virtual void update(const void *data) = 0;
47 virtual void bind(int slot) = 0;
48 virtual void unbind() = 0;
49 virtual void clear(uint32_t clear_value) = 0;
50 virtual void copy_sub(VertBuf *src, uint dst_offset, uint src_offset, uint copy_size) = 0;
51 virtual void read(void *data) = 0;
52 virtual void async_flush_to_host() = 0;
53 virtual void sync_as_indirect_buffer() = 0;
54};
55
56#undef DEBUG_NAME_LEN
57
58} // namespace blender::gpu
unsigned int uint
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
StorageBuf(size_t size, const char *name)
virtual void unbind()=0
virtual void bind(int slot)=0
virtual void read(void *data)=0
virtual void async_flush_to_host()=0
virtual void clear(uint32_t clear_value)=0
virtual void update(const void *data)=0
virtual void copy_sub(VertBuf *src, uint dst_offset, uint src_offset, uint copy_size)=0
virtual void sync_as_indirect_buffer()=0
void usage_size_set(size_t size)
#define DEBUG_NAME_LEN
const char * name