Blender
V5.0
source
blender
gpu
metal
mtl_uniform_buffer.hh
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9
#pragma once
10
11
#include "
MEM_guardedalloc.h
"
12
13
#include "
gpu_uniform_buffer_private.hh
"
14
15
#include "
mtl_context.hh
"
16
17
namespace
blender::gpu
{
18
19
class
MTLStorageBuf
;
20
24
class
MTLUniformBuf
:
public
UniformBuf
{
25
friend
class
MTLStorageBuf
;
/* For bind as SSBO resource access. */
26
27
private
:
28
/* Allocation Handle. */
29
gpu::MTLBuffer
*metal_buffer_ =
nullptr
;
30
31
/* Whether buffer has contents, if false, no GPU buffer will
32
* have yet been allocated. */
33
bool
has_data_ =
false
;
34
35
/* Bind-state tracking. */
36
int
bind_slot_ = -1;
37
MTLContext
*bound_ctx_ =
nullptr
;
38
39
/* SSBO wrapper for bind_as_ssbo support. */
40
MTLStorageBuf
*ssbo_wrapper_ =
nullptr
;
41
42
public
:
43
MTLUniformBuf
(
size_t
size
,
const
char
*
name
);
44
~MTLUniformBuf
()
override
;
45
46
void
update
(
const
void
*
data
)
override
;
47
void
bind
(
int
slot)
override
;
48
void
bind_as_ssbo
(
int
slot)
override
;
49
void
unbind
()
override
;
50
void
clear_to_zero
()
override
;
51
52
id<MTLBuffer>
get_metal_buffer
();
53
size_t
get_size
();
54
const
char
*
get_name
()
55
{
56
return
name_
;
57
}
58
59
MEM_CXX_CLASS_ALLOC_FUNCS
(
"MTLUniformBuf"
);
60
};
61
62
}
// namespace blender::gpu
MEM_guardedalloc.h
Read Guarded memory(de)allocation.
data
BMesh const char void * data
Definition
bmesh_iterators_inline.hh:37
size
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition
btDbvt.cpp:52
blender::gpu::MTLBuffer
Definition
mtl_memory.hh:109
blender::gpu::MTLContext
Definition
mtl_context.hh:696
blender::gpu::MTLStorageBuf
Definition
mtl_storage_buffer.hh:26
blender::gpu::MTLUniformBuf::MEM_CXX_CLASS_ALLOC_FUNCS
MEM_CXX_CLASS_ALLOC_FUNCS("MTLUniformBuf")
blender::gpu::MTLUniformBuf::unbind
void unbind() override
Definition
mtl_uniform_buffer.mm:160
blender::gpu::MTLUniformBuf::MTLUniformBuf
MTLUniformBuf(size_t size, const char *name)
Definition
mtl_uniform_buffer.mm:24
blender::gpu::MTLUniformBuf::bind
void bind(int slot) override
Definition
mtl_uniform_buffer.mm:100
blender::gpu::MTLUniformBuf::clear_to_zero
void clear_to_zero() override
Definition
mtl_uniform_buffer.mm:92
blender::gpu::MTLUniformBuf::bind_as_ssbo
void bind_as_ssbo(int slot) override
Definition
mtl_uniform_buffer.mm:132
blender::gpu::MTLUniformBuf::update
void update(const void *data) override
Definition
mtl_uniform_buffer.mm:54
blender::gpu::MTLUniformBuf::get_metal_buffer
id< MTLBuffer > get_metal_buffer()
Definition
mtl_uniform_buffer.mm:186
blender::gpu::MTLUniformBuf::MTLStorageBuf
friend class MTLStorageBuf
Definition
mtl_uniform_buffer.hh:25
blender::gpu::MTLUniformBuf::get_name
const char * get_name()
Definition
mtl_uniform_buffer.hh:54
blender::gpu::MTLUniformBuf::~MTLUniformBuf
~MTLUniformBuf() override
Definition
mtl_uniform_buffer.mm:26
blender::gpu::MTLUniformBuf::get_size
size_t get_size()
Definition
mtl_uniform_buffer.mm:196
blender::gpu::UniformBuf::name_
char name_[DEBUG_NAME_LEN]
Definition
gpu_uniform_buffer_private.hh:32
blender::gpu::UniformBuf::UniformBuf
UniformBuf(size_t size, const char *name)
Definition
gpu_uniform_buffer.cc:35
gpu_uniform_buffer_private.hh
mtl_context.hh
blender::gpu
Definition
blf_internal_types.hh:32
name
const char * name
Definition
python_compat.hh:32
Generated on
for Blender by
doxygen
1.16.1