UraniumCompute 0.1.0
A GPU accelerated parallel task scheduler
IBuffer.h
1#pragma once
2#include <UnCompute/Backend/IDeviceObject.h>
3
4namespace UN
5{
7 struct BufferDesc
8 {
9 const char* Name = nullptr;
10 UInt64 Size = 0;
11
12 inline BufferDesc() = default;
13
14 inline BufferDesc(const char* name, UInt64 size)
15 : Name(name)
16 , Size(size)
17 {
18 }
19 };
20
21 class IDeviceMemory;
22 class DeviceMemorySlice;
23
25 class IBuffer : public IDeviceObject
26 {
27 public:
29
30 [[nodiscard]] virtual const DescriptorType& GetDesc() const = 0;
31
37 virtual ResultCode Init(const BufferDesc& desc) = 0;
38
47 virtual ResultCode BindMemory(const DeviceMemorySlice& deviceMemory) = 0;
48
57 virtual ResultCode BindMemory(IDeviceMemory* pDeviceMemory) = 0;
58 };
59} // namespace UN
A slice of device memory.
Definition: IDeviceMemory.h:89
An interface for backend-specific buffers that store the data on the device.
Definition: IBuffer.h:26
virtual ResultCode BindMemory(IDeviceMemory *pDeviceMemory)=0
Bind device memory to the buffer.
virtual ResultCode BindMemory(const DeviceMemorySlice &deviceMemory)=0
Bind device memory to the buffer.
virtual ResultCode Init(const BufferDesc &desc)=0
Creates and initializes a backend-specific buffer object.
This class holds a handle to backend-specific memory.
Definition: IDeviceMemory.h:31
Base interface for all compute backend objects.
Definition: IDeviceObject.h:30
Buffer descriptor.
Definition: IBuffer.h:8
const char * Name
Buffer debug name.
Definition: IBuffer.h:9
UInt64 Size
Buffer size in bytes.
Definition: IBuffer.h:10