Blender V4.3
gl_immediate.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2016 by Mike Erwin. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
11#pragma once
12
13#include "MEM_guardedalloc.h"
14
16
17namespace blender::gpu {
18
19/* size of internal buffer */
20#define DEFAULT_INTERNAL_BUFFER_SIZE (4 * 1024 * 1024)
21
22class GLImmediate : public Immediate {
23 private:
24 /* Use two buffers for strict and non-strict vertex count to
25 * avoid some huge driver slowdown (see #70922).
26 * Use accessor functions to get / modify. */
27 struct {
29 GLuint vbo_id = 0;
31 size_t buffer_offset = 0;
33 size_t buffer_size = 0;
34 } buffer, buffer_strict;
36 size_t bytes_mapped_ = 0;
38 GLuint vao_id_ = 0;
39
40 public:
43
44 uchar *begin() override;
45 void end() override;
46
47 private:
48 GLuint &vbo_id()
49 {
50 return strict_vertex_len ? buffer_strict.vbo_id : buffer.vbo_id;
51 };
52
53 size_t &buffer_offset()
54 {
55 return strict_vertex_len ? buffer_strict.buffer_offset : buffer.buffer_offset;
56 };
57
58 size_t &buffer_size()
59 {
60 return strict_vertex_len ? buffer_strict.buffer_size : buffer.buffer_size;
61 };
62};
63
64} // namespace blender::gpu
unsigned char uchar
Read Guarded memory(de)allocation.
uchar * begin() override