UraniumCompute 0.1.0
A GPU accelerated parallel task scheduler
UN::IDeviceMemory Class Referenceabstract

This class holds a handle to backend-specific memory. More...

#include <IDeviceMemory.h>

Inheritance diagram for UN::IDeviceMemory:
UN::IDeviceObject UN::IObject UN::Object< IDeviceMemory > UN::DeviceObjectBase< IDeviceMemory > UN::DeviceMemoryBase UN::VulkanDeviceMemory

Public Types

using DescriptorType = DeviceMemoryDesc
 

Public Member Functions

virtual const DescriptorTypeGetDesc () const =0
 
virtual ResultCode Init (const DescriptorType &desc)=0
 Allocate memory with specified descriptor. More...
 
virtual ResultCode Map (UInt64 byteOffset, UInt64 byteSize, void **ppData)=0
 Map the device memory to access it from the host. More...
 
virtual void Unmap ()=0
 Unmap the mapped memory. More...
 
virtual bool IsCompatible (IDeviceObject *pObject, UInt64 sizeLimit)=0
 Check if the memory is compatible with an object. More...
 
virtual bool IsCompatible (IDeviceObject *pObject)=0
 Check if the memory is compatible with an object. More...
 
- Public Member Functions inherited from UN::IDeviceObject
virtual std::string_view GetDebugName () const =0
 Get debug name of the object.
 
virtual void Reset ()=0
 Reset the object to uninitialized state. More...
 
virtual IComputeDeviceGetDevice () const =0
 Get the compute device this object was created on. More...
 
- Public Member Functions inherited from UN::IObject
virtual UInt32 AddRef ()=0
 Add a strong reference to object's reference counter. More...
 
virtual UInt32 Release ()=0
 Remove a strong reference from object's reference counter. More...
 
virtual void AttachRefCounter (ReferenceCounter *counter)=0
 Attach a ReferenceCounter to this object. More...
 
virtual ReferenceCounterGetRefCounter ()=0
 Get reference counter that belongs to this object. More...
 

Static Public Attributes

static constexpr UInt64 WholeSize = std::numeric_limits<UInt64>::max()
 Special constant that represents the whole memory size.
 

Detailed Description

This class holds a handle to backend-specific memory.

Member Function Documentation

◆ Init()

virtual ResultCode UN::IDeviceMemory::Init ( const DescriptorType desc)
pure virtual

Allocate memory with specified descriptor.

Parameters
desc- Device memory descriptor.
Returns
ResultCode::Success or an error code.

Implemented in UN::DeviceMemoryBase.

◆ IsCompatible() [1/2]

virtual bool UN::IDeviceMemory::IsCompatible ( IDeviceObject pObject)
pure virtual

Check if the memory is compatible with an object.

The implementation is backend-specific, it not only checks if the size of device memory is greater or equal to the size of memory required by the object, but also check backend's memory type, e.g. Vulkan's memory type bits to be compatible.

Parameters
pObject- The object to check the memory for.
Returns
True if the memory is compatible.

Implemented in UN::VulkanDeviceMemory.

◆ IsCompatible() [2/2]

virtual bool UN::IDeviceMemory::IsCompatible ( IDeviceObject pObject,
UInt64  sizeLimit 
)
pure virtual

Check if the memory is compatible with an object.

The implementation is backend-specific, it not only checks if the size of device memory is greater or equal to the size of memory required by the object, but also checks backend's memory type, e.g. Vulkan's memory type bits to be compatible.

Parameters
pObject- The object to check the memory for.
sizeLimit- Maximum size of memory in bytes allowed for the object to occupy.
Returns
True if the memory is compatible.

Implemented in UN::VulkanDeviceMemory.

◆ Map()

virtual ResultCode UN::IDeviceMemory::Map ( UInt64  byteOffset,
UInt64  byteSize,
void **  ppData 
)
pure virtual

Map the device memory to access it from the host.

Parameters
byteOffset- Byte offset of the memory to map.
byteSize- Size of the part of the memory to map.
ppData- A pointer to the memory where the pointer to the mapped memory will be written.
Note
This function is only valid to use if the memory was allocated with MemoryKindFlags::HostAccessible flag.
Returns
ResultCode::Success or an error node.

Implemented in UN::VulkanDeviceMemory.

◆ Unmap()

virtual void UN::IDeviceMemory::Unmap ( )
pure virtual

Unmap the mapped memory.

Note
This function does nothing if the memory was not mapped by calling Map().

Implemented in UN::VulkanDeviceMemory.


The documentation for this class was generated from the following file: