Blender V5.0
device_memory Class Reference

#include <memory.h>

Inherited by device_only_memory< float >, device_vector< float >, device_vector< float2 >, device_vector< packed_float3 >, device_vector< float4 >, device_vector< uchar4 >, device_vector< TextureInfo >, device_vector< int4 >, device_vector< int >, device_vector< uint >, device_vector< packed_uint3 >, device_vector< KernelCurve >, device_vector< KernelCurveSegment >, device_vector< KernelObject >, device_vector< Transform >, device_vector< DecomposedTransform >, device_vector< AttributeMap >, device_vector< KernelLightDistribution >, device_vector< KernelLight >, device_vector< KernelLightTreeNode >, device_vector< KernelLightTreeEmitter >, device_vector< KernelParticle >, device_vector< KernelShader >, device_vector< KernelOctreeNode >, device_vector< KernelOctreeRoot >, device_vector< IntegratorQueueCounter >, device_vector< KernelWorkTile >, device_vector< half4 >, device_only_memory< T >, device_texture, and device_vector< T >.

Public Member Functions

size_t memory_size ()
size_t memory_elements_size (const int elements)
virtual ~device_memory ()
void swap_device (Device *new_device, const size_t new_device_size, device_ptr new_device_ptr)
void restore_device ()
bool is_resident (Device *sub_device) const
bool is_shared (Device *sub_device) const
 device_memory (const device_memory &)=delete
 device_memory (device_memory &&other) noexcept=delete
device_memoryoperator= (const device_memory &)=delete
device_memoryoperator= (device_memory &&)=delete

Public Attributes

DataType data_type
int data_elements
size_t data_size
size_t device_size
size_t data_width
size_t data_height
MemoryType type
const char * name
string name_storage
Devicedevice
device_ptr device_pointer
void * host_pointer
void * shared_pointer
int shared_counter
bool move_to_host = false

Protected Member Functions

 device_memory (Device *device, const char *name, MemoryType type)
void * host_alloc (const size_t size)
void device_alloc ()
void device_copy_to ()
void device_move_to_host ()
void device_copy_from (const size_t y, const size_t w, size_t h, const size_t elem)
void device_zero ()
void host_and_device_free ()
bool device_is_cpu ()

Protected Attributes

device_ptr original_device_ptr
size_t original_device_size
Deviceoriginal_device
bool need_realloc_
bool modified

Friends

class Device
class GPUDevice
class CUDADevice
class OptiXDevice
class HIPDevice
class HIPRTDevice
class MetalDevice
class OneapiDevice

Detailed Description

Definition at line 220 of file cycles/device/memory.h.

Constructor & Destructor Documentation

◆ ~device_memory()

device_memory::~device_memory ( )
virtual

Definition at line 35 of file memory.cpp.

References assert, shared_counter, and shared_pointer.

◆ device_memory() [1/3]

◆ device_memory() [2/3]

device_memory::device_memory ( device_memory && other)
deletenoexcept

References device_memory().

◆ device_memory() [3/3]

Member Function Documentation

◆ device_alloc()

void device_memory::device_alloc ( )
protected

Definition at line 74 of file memory.cpp.

References assert, device, device_pointer, MEM_GLOBAL, MEM_TEXTURE, and type.

Referenced by device_only_memory< T >::alloc_to_device().

◆ device_copy_from()

void device_memory::device_copy_from ( const size_t y,
const size_t w,
size_t h,
const size_t elem )
protected

◆ device_copy_to()

void device_memory::device_copy_to ( )
protected

Definition at line 80 of file memory.cpp.

References device, and host_pointer.

Referenced by device_texture::copy_to_device(), and device_vector< T >::copy_to_device().

◆ device_is_cpu()

bool device_memory::device_is_cpu ( )
protected

Definition at line 107 of file memory.cpp.

References device, and DEVICE_CPU.

◆ device_move_to_host()

void device_memory::device_move_to_host ( )
protected

Definition at line 87 of file memory.cpp.

References device, and host_pointer.

Referenced by GPUDevice::move_textures_to_host().

◆ device_zero()

void device_memory::device_zero ( )
protected

Definition at line 100 of file memory.cpp.

References data_size, and device.

Referenced by device_only_memory< T >::zero_to_device(), and device_vector< T >::zero_to_device().

◆ host_alloc()

void * device_memory::host_alloc ( const size_t size)
protected

◆ host_and_device_free()

◆ is_resident()

bool device_memory::is_resident ( Device * sub_device) const

Definition at line 132 of file memory.cpp.

References Device, device, and device_pointer.

Referenced by GPUDevice::generic_free(), and GPUDevice::move_textures_to_host().

◆ is_shared()

bool device_memory::is_shared ( Device * sub_device) const

◆ memory_elements_size()

size_t device_memory::memory_elements_size ( const int elements)
inline

Definition at line 226 of file cycles/device/memory.h.

References data_elements, data_type, and datatype_size().

Referenced by CPUDevice::mem_alloc_sub_ptr().

◆ memory_size()

◆ operator=() [1/2]

device_memory & device_memory::operator= ( const device_memory & )
delete

References device_memory().

◆ operator=() [2/2]

device_memory & device_memory::operator= ( device_memory && )
delete

References device_memory().

◆ restore_device()

void device_memory::restore_device ( )

◆ swap_device()

void device_memory::swap_device ( Device * new_device,
const size_t new_device_size,
device_ptr new_device_ptr )

◆ CUDADevice

friend class CUDADevice
friend

Definition at line 272 of file cycles/device/memory.h.

References CUDADevice.

Referenced by CUDADevice.

◆ Device

◆ GPUDevice

friend class GPUDevice
friend

Definition at line 271 of file cycles/device/memory.h.

References GPUDevice.

Referenced by GPUDevice.

◆ HIPDevice

friend class HIPDevice
friend

Definition at line 274 of file cycles/device/memory.h.

References HIPDevice.

Referenced by HIPDevice.

◆ HIPRTDevice

friend class HIPRTDevice
friend

Definition at line 275 of file cycles/device/memory.h.

References HIPRTDevice.

Referenced by HIPRTDevice.

◆ MetalDevice

friend class MetalDevice
friend

Definition at line 276 of file cycles/device/memory.h.

References MetalDevice.

Referenced by MetalDevice.

◆ OneapiDevice

friend class OneapiDevice
friend

Definition at line 277 of file cycles/device/memory.h.

References Device, device, name, OneapiDevice, size(), type, w(), and y.

Referenced by OneapiDevice.

◆ OptiXDevice

friend class OptiXDevice
friend

Definition at line 273 of file cycles/device/memory.h.

References OptiXDevice.

Referenced by OptiXDevice.

Member Data Documentation

◆ data_elements

◆ data_height

◆ data_size

◆ data_type

◆ data_width

◆ device

◆ device_pointer

◆ device_size

◆ host_pointer

◆ modified

◆ move_to_host

bool device_memory::move_to_host = false

◆ name

◆ name_storage

string device_memory::name_storage

Definition at line 240 of file cycles/device/memory.h.

Referenced by device_memory().

◆ need_realloc_

◆ original_device

Device* device_memory::original_device
protected

Definition at line 301 of file cycles/device/memory.h.

Referenced by device_memory(), restore_device(), and swap_device().

◆ original_device_ptr

device_ptr device_memory::original_device_ptr
protected

Definition at line 299 of file cycles/device/memory.h.

Referenced by device_memory(), restore_device(), and swap_device().

◆ original_device_size

size_t device_memory::original_device_size
protected

Definition at line 300 of file cycles/device/memory.h.

Referenced by device_memory(), restore_device(), and swap_device().

◆ shared_counter

int device_memory::shared_counter

◆ shared_pointer

◆ type


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