载入中...
搜索中...
未找到
GpuBuffer.h
浏览该文件的文档.
1#pragma once
2
4
5#include <cstdint>
6#include <string>
7
8namespace eve::data {
9class ByteData;
10}
11
12namespace eve::gpgpu {
13
18class GpuBuffer {
19public:
21 GpuBuffer() = default;
23 virtual ~GpuBuffer() = default;
24
25 GpuBuffer(const GpuBuffer &) = delete;
26 GpuBuffer &operator=(const GpuBuffer &) = delete;
27
29 virtual int getSize() const = 0;
31 virtual std::string getUsage() const = 0;
32
34 virtual void writeData(data::ByteData *data, int dstOffset = 0) = 0;
36 virtual data::ByteData *readData(int srcOffset = 0, int size = -1) = 0;
37
39 virtual void writeFloat32(int floatIndex, float value) = 0;
41 virtual float readFloat32(int floatIndex) = 0;
43 virtual void fillFloat32(float value) = 0;
44
46 virtual void writeFloat32s(const float *data, int count, int startIndex = 0) = 0;
48 virtual void readFloat32s(float *out, int count, int startIndex = 0) const = 0;
49
51 virtual void uploadBytes(const void *src, uint64_t nbytes, uint64_t dstOffset = 0) = 0;
53 virtual void downloadBytes(void *dst, uint64_t nbytes, uint64_t srcOffset = 0) const = 0;
54
60 virtual GpuResidentBufferView residentView() const { return {}; }
61};
62
63} // namespace eve::gpgpu
double value
std::uint32_t count
float size
Definition TreeMesh.cpp:156
In-memory byte buffer implementing eve::Data (ref-counted).
Definition ByteData.h:13
Backend-agnostic GPU buffer for compute (storage) or CPU staging transfers. Squirrel-owned; derived c...
Definition GpuBuffer.h:18
GpuBuffer & operator=(const GpuBuffer &)=delete
virtual void writeData(data::ByteData *data, int dstOffset=0)=0
Writes data.
virtual void uploadBytes(const void *src, uint64_t nbytes, uint64_t dstOffset=0)=0
Uploads bytes.
GpuBuffer()=default
Constructs a GpuBuffer.
virtual ~GpuBuffer()=default
Releases GpuBuffer resources.
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
Byte length of the owned buffer.
virtual void readFloat32s(float *out, int count, int startIndex=0) const =0
Reads float 32 s.
virtual std::string getUsage() const =0
Returns the usage.
virtual void downloadBytes(void *dst, uint64_t nbytes, uint64_t srcOffset=0) const =0
Downloads bytes.
virtual GpuResidentBufferView residentView() const
Return a transient non-owning native view for same-device rendering. Unsupported/test buffers return ...
Definition GpuBuffer.h:60
virtual void fillFloat32(float value)=0
Fill float 32.
virtual float readFloat32(int floatIndex)=0
Reads float 32.
virtual void writeFloat32(int floatIndex, float value)=0
Writes float 32.
virtual data::ByteData * readData(int srcOffset=0, int size=-1)=0
Reads data.
GpuBuffer(const GpuBuffer &)=delete
Fluids module — interactive surface fluid simulation.
Definition Fluids.h:34
Transient backend buffer slice shared between sibling GPU modules. @ownership Non-owning; nativeHandl...