Blender V4.5
gpu_uniform_buffer_private.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2020 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
13struct GPUUniformBuf;
14
15namespace blender::gpu {
16
17#ifndef NDEBUG
18# define DEBUG_NAME_LEN 64
19#else
20# define DEBUG_NAME_LEN 8
21#endif
22
28 protected:
32 void *data_ = nullptr;
35
36 public:
37 UniformBuf(size_t size, const char *name);
38 virtual ~UniformBuf();
39
40 virtual void update(const void *data) = 0;
41 virtual void clear_to_zero() = 0;
42 virtual void bind(int slot) = 0;
43 virtual void bind_as_ssbo(int slot) = 0;
44 virtual void unbind() = 0;
45
49 void attach_data(void *data)
50 {
51 data_ = data;
52 }
53};
54
55/* Syntactic sugar. */
56static inline GPUUniformBuf *wrap(UniformBuf *vert)
57{
58 return reinterpret_cast<GPUUniformBuf *>(vert);
59}
60static inline UniformBuf *unwrap(GPUUniformBuf *vert)
61{
62 return reinterpret_cast<UniformBuf *>(vert);
63}
64static inline const UniformBuf *unwrap(const GPUUniformBuf *vert)
65{
66 return reinterpret_cast<const UniformBuf *>(vert);
67}
68
69#undef DEBUG_NAME_LEN
70
71} // namespace blender::gpu
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
virtual void unbind()=0
virtual void update(const void *data)=0
UniformBuf(size_t size, const char *name)
virtual void bind(int slot)=0
virtual void bind_as_ssbo(int slot)=0
virtual void clear_to_zero()=0
#define DEBUG_NAME_LEN
static Context * unwrap(GPUContext *ctx)
static GPUContext * wrap(Context *ctx)