载入中...
搜索中...
未找到
GpuBuffer.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4#include <string>
5
6namespace eve::data {
7class ByteData;
8}
9
10namespace eve::gpgpu {
11
16class GpuBuffer {
17public:
18 GpuBuffer() = default;
19 virtual ~GpuBuffer() = default;
20
21 GpuBuffer(const GpuBuffer &) = delete;
22 GpuBuffer &operator=(const GpuBuffer &) = delete;
23
24 virtual int getSize() const = 0;
25 virtual std::string getUsage() const = 0;
26
27 virtual void writeData(data::ByteData *data, int dstOffset = 0) = 0;
28 virtual data::ByteData *readData(int srcOffset = 0, int size = -1) = 0;
29
30 virtual void writeFloat32(int floatIndex, float value) = 0;
31 virtual float readFloat32(int floatIndex) = 0;
32 virtual void fillFloat32(float value) = 0;
33
35 virtual void writeFloat32s(const float *data, int count, int startIndex = 0) = 0;
36 virtual void readFloat32s(float *out, int count, int startIndex = 0) const = 0;
37
38 virtual void uploadBytes(const void *src, uint64_t nbytes, uint64_t dstOffset = 0) = 0;
39 virtual void downloadBytes(void *dst, uint64_t nbytes, uint64_t srcOffset = 0) const = 0;
40};
41
42} // 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
GpuBuffer & operator=(const GpuBuffer &)=delete
virtual void writeData(data::ByteData *data, int dstOffset=0)=0
virtual void uploadBytes(const void *src, uint64_t nbytes, uint64_t dstOffset=0)=0
virtual ~GpuBuffer()=default
virtual void writeFloat32s(const float *data, int count, int startIndex=0)=0
Bulk float upload/download (one transfer). startIndex is in floats.
virtual int getSize() const =0
virtual void readFloat32s(float *out, int count, int startIndex=0) const =0
virtual std::string getUsage() const =0
virtual void downloadBytes(void *dst, uint64_t nbytes, uint64_t srcOffset=0) const =0
virtual void fillFloat32(float value)=0
virtual float readFloat32(int floatIndex)=0
virtual void writeFloat32(int floatIndex, float value)=0
virtual data::ByteData * readData(int srcOffset=0, int size=-1)=0
GpuBuffer(const GpuBuffer &)=delete