载入中...
搜索中...
未找到
VulkanGpuBuffer.h
浏览该文件的文档.
1#pragma once
2
3#include "gpgpu/GpuBuffer.h"
4#include "vkbuilder.hpp"
5
6#include <string>
7
8namespace eve::gpgpu {
9
11class VulkanGpuBuffer final : public GpuBuffer {
12public:
13 ~VulkanGpuBuffer() override;
14
16 int getSize() const override { return int(size_); }
17 std::string getUsage() const override { return usage_; }
18
20 void writeData(data::ByteData *data, int dstOffset = 0) override;
21 data::ByteData *readData(int srcOffset = 0, int size = -1) override;
22 void writeFloat32(int floatIndex, float value) override;
23 float readFloat32(int floatIndex) override;
24 void fillFloat32(float value) override;
25 void writeFloat32s(const float *data, int count, int startIndex = 0) override;
26 void readFloat32s(float *out, int count, int startIndex = 0) const override;
27 void uploadBytes(const void *src, uint64_t nbytes, uint64_t dstOffset = 0) override;
28 void downloadBytes(void *dst, uint64_t nbytes, uint64_t srcOffset = 0) const override;
29
30 vkb::Device *device_ = nullptr;
31 vk::Buffer buffer_{};
32 vk::DeviceMemory memory_{};
33 vk::DeviceSize size_ = 0;
34 std::string usage_ = "storage";
35 bool hostVisible_ = false;
36};
37
38} // namespace eve::gpgpu
std::string value
In-memory byte buffer implementing eve::Data (ref-counted).
Definition ByteData.h:11
Backend-agnostic GPU buffer for compute (storage) or CPU staging transfers. Squirrel-owned; derived c...
Definition GpuBuffer.h:16
Vulkan 计算缓冲区实现(storage/vertex buffer + device memory)。
data::ByteData * readData(int srcOffset=0, int size=-1) override
void writeData(data::ByteData *data, int dstOffset=0) override
读写数据(ByteData / 浮点 / 原始字节)。
void writeFloat32s(const float *data, int count, int startIndex=0) override
Bulk float upload/download (one transfer). startIndex is in floats.
void uploadBytes(const void *src, uint64_t nbytes, uint64_t dstOffset=0) override
float readFloat32(int floatIndex) override
void fillFloat32(float value) override
void writeFloat32(int floatIndex, float value) override
std::string getUsage() const override
void downloadBytes(void *dst, uint64_t nbytes, uint64_t srcOffset=0) const override
int getSize() const override
缓冲区字节数 / 用途。
void readFloat32s(float *out, int count, int startIndex=0) const override