Blender V5.0
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
10
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"
22
23namespace blender::gpu {
24
25class VKDevice;
26
27/* Size of internal buffer. */
28constexpr size_t DEFAULT_INTERNAL_BUFFER_SIZE = 4 * 1024 * 1024;
29
30class VKImmediate : public Immediate {
31 private:
32 VKVertexAttributeObject vertex_attributes_;
33
34 VkDeviceSize buffer_offset_ = 0;
35 VkDeviceSize current_subbuffer_len_ = 0;
36
37 std::optional<VKBuffer> active_buffer_;
38
39 public:
40 uchar *begin() override;
41 void end() override;
42
44
45 private:
46 VKBufferWithOffset active_buffer() const;
47 VkDeviceSize buffer_bytes_free();
48
49 VKBuffer &ensure_space(VkDeviceSize bytes_needed, VkDeviceSize offset_alignment);
50};
51
52} // namespace blender::gpu
unsigned char uchar
Read Guarded memory(de)allocation.
uchar * begin() override
friend class VKVertexAttributeObject
constexpr size_t DEFAULT_INTERNAL_BUFFER_SIZE