Blender V4.3
vk_storage_buffer.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2022 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "GPU_texture.hh"
12
13#include "GPU_vertex_buffer.hh"
15
16#include "vk_buffer.hh"
17
18namespace blender::gpu {
19class VertBuf;
20
22 GPUUsageType usage_;
23 VKBuffer buffer_;
24
25 public:
26 VKStorageBuffer(size_t size, GPUUsageType usage, const char *name);
27
28 void update(const void *data) override;
29 void bind(int slot) override;
30 void unbind() override;
31 void clear(uint32_t clear_value) override;
32 void copy_sub(VertBuf *src, uint dst_offset, uint src_offset, uint copy_size) override;
33 void read(void *data) override;
34 void async_flush_to_host() override;
35 void sync_as_indirect_buffer() override{/* No-Op. */};
36
37 VkBuffer vk_handle() const
38 {
39 return buffer_.vk_handle();
40 }
41
43 {
44 return buffer_.size_in_bytes();
45 }
46
47 void ensure_allocated();
48
49 private:
50 void allocate();
51};
52
54{
55 return static_cast<VKStorageBuffer *>(storage_buffer);
56}
57
58} // namespace blender::gpu
#define BLI_INLINE
unsigned int uint
VkBuffer vk_handle() const
Definition vk_buffer.hh:69
int64_t size_in_bytes() const
Definition vk_buffer.hh:64
void update(const void *data) override
void clear(uint32_t clear_value) override
void copy_sub(VertBuf *src, uint dst_offset, uint src_offset, uint copy_size) override
void read(void *data) override
VKStorageBuffer(size_t size, GPUUsageType usage, const char *name)
void bind(int slot) override
static Context * unwrap(GPUContext *ctx)
unsigned int uint32_t
Definition stdint.h:80
__int64 int64_t
Definition stdint.h:89