Blender
V4.3
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
9
#pragma once
10
11
#include "
MEM_guardedalloc.h
"
12
#include "
gpu_uniform_buffer_private.hh
"
13
14
#include "
mtl_context.hh
"
15
16
namespace
blender::gpu
{
17
18
class
MTLStorageBuf;
19
23
class
MTLUniformBuf
:
public
UniformBuf
{
24
friend
class
MTLStorageBuf
;
/* For bind as SSBO resource access. */
25
26
private
:
27
/* Allocation Handle. */
28
gpu::MTLBuffer
*metal_buffer_ =
nullptr
;
29
30
/* Whether buffer has contents, if false, no GPU buffer will
31
* have yet been allocated. */
32
bool
has_data_ =
false
;
33
34
/* Bind-state tracking. */
35
int
bind_slot_ = -1;
36
MTLContext
*bound_ctx_ =
nullptr
;
37
38
/* SSBO wrapper for bind_as_ssbo support. */
39
MTLStorageBuf
*ssbo_wrapper_ =
nullptr
;
40
41
public
:
42
MTLUniformBuf
(
size_t
size,
const
char
*name);
43
~MTLUniformBuf
();
44
45
void
update
(
const
void
*data)
override
;
46
void
bind
(
int
slot)
override
;
47
void
bind_as_ssbo
(
int
slot)
override
;
48
void
unbind
()
override
;
49
void
clear_to_zero
()
override
;
50
51
id<MTLBuffer>
get_metal_buffer
();
52
size_t
get_size
();
53
const
char
*
get_name
()
54
{
55
return
name_
;
56
}
57
58
MEM_CXX_CLASS_ALLOC_FUNCS
(
"MTLUniformBuf"
);
59
};
60
61
}
// namespace blender::gpu
MEM_guardedalloc.h
Read Guarded memory(de)allocation.
blender::gpu::MTLBuffer
Definition
mtl_memory.hh:110
blender::gpu::MTLContext
Definition
mtl_context.hh:672
blender::gpu::MTLStorageBuf
Definition
mtl_storage_buffer.hh:26
blender::gpu::MTLUniformBuf
Definition
mtl_uniform_buffer.hh:23
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()
Definition
mtl_uniform_buffer.mm:26
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:185
blender::gpu::MTLUniformBuf::get_name
const char * get_name()
Definition
mtl_uniform_buffer.hh:53
blender::gpu::MTLUniformBuf::get_size
size_t get_size()
Definition
mtl_uniform_buffer.mm:195
blender::gpu::UniformBuf
Definition
gpu_uniform_buffer_private.hh:28
blender::gpu::UniformBuf::name_
char name_[DEBUG_NAME_LEN]
Definition
gpu_uniform_buffer_private.hh:35
gpu_uniform_buffer_private.hh
mtl_context.hh
blender::gpu
Definition
blf_internal_types.hh:23
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0