Blender V4.3
vk_immediate.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
11#pragma once
12
13#include "MEM_guardedalloc.h"
14
17
18#include "vk_buffer.hh"
19#include "vk_data_conversion.hh"
20#include "vk_mem_alloc.h"
23
24namespace blender::gpu {
25
26class VKDevice;
27
28/* Size of internal buffer. */
29constexpr size_t DEFAULT_INTERNAL_BUFFER_SIZE = 4 * 1024 * 1024;
30
31class VKImmediate : public Immediate {
32 private:
33 VKVertexAttributeObject vertex_attributes_;
34
35 VkDeviceSize buffer_offset_ = 0;
36 VkDeviceSize current_subbuffer_len_ = 0;
37 VertexFormatConverter vertex_format_converter;
38
39 Vector<std::unique_ptr<VKBuffer>> active_buffers_;
40 Vector<std::unique_ptr<VKBuffer>> recycling_buffers_;
41
42 public:
44 virtual ~VKImmediate();
45 void deinit(VKDevice &device);
46
47 void reset();
48
49 uchar *begin() override;
50 void end() override;
51
53
54 private:
55 VKBufferWithOffset active_buffer() const;
56 VkDeviceSize buffer_bytes_free();
57
58 VKBuffer &ensure_space(size_t bytes_needed);
59};
60
61} // namespace blender::gpu
unsigned char uchar
Read Guarded memory(de)allocation.
uchar * begin() override
void deinit(VKDevice &device)
constexpr size_t DEFAULT_INTERNAL_BUFFER_SIZE