Blender  V3.3
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
Device Class Referenceabstract

#include <device.h>

Inheritance diagram for Device:
CPUDevice DummyDevice MultiDevice

Public Member Functions

virtual ~Device () noexcept(false)
 
virtual const string & error_message ()
 
bool have_error ()
 
virtual void set_error (const string &error)
 
virtual BVHLayoutMask get_bvh_layout_mask () const =0
 
virtual void const_copy_to (const char *name, void *host, size_t size)=0
 
virtual bool load_kernels (uint)
 
virtual unique_ptr< DeviceQueuegpu_queue_create ()
 
virtual void get_cpu_kernel_thread_globals (vector< CPUKernelThreadGlobals > &)
 
virtual voidget_cpu_osl_memory ()
 
virtual void build_bvh (BVH *bvh, Progress &progress, bool refit)
 
virtual void release_optix_bvh (BVH *)
 
virtual int device_number (Device *)
 
virtual void optimize_for_scene (Scene *)
 
virtual bool is_resident (device_ptr, Device *sub_device)
 
virtual bool check_peer_access (Device *)
 
virtual bool should_use_graphics_interop ()
 
virtual bool denoise_buffer (const DeviceDenoiseTask &)
 
virtual DeviceQueueget_denoise_queue ()
 
virtual void foreach_device (const function< void(Device *)> &callback)
 

Static Public Member Functions

static const CPUKernelsget_cpu_kernels ()
 
static Devicecreate (const DeviceInfo &info, Stats &stats, Profiler &profiler)
 
static DeviceType type_from_string (const char *name)
 
static string string_from_type (DeviceType type)
 
static vector< DeviceTypeavailable_types ()
 
static vector< DeviceInfoavailable_devices (uint device_type_mask=DEVICE_MASK_ALL)
 
static DeviceInfo dummy_device (const string &error_msg="")
 
static string device_capabilities (uint device_type_mask=DEVICE_MASK_ALL)
 
static DeviceInfo get_multi_device (const vector< DeviceInfo > &subdevices, int threads, bool background)
 
static void tag_update ()
 
static void free_memory ()
 

Public Attributes

DeviceInfo info
 
Statsstats
 
Profilerprofiler
 

Protected Member Functions

 Device (const DeviceInfo &info_, Stats &stats_, Profiler &profiler_)
 
virtual device_ptr mem_alloc_sub_ptr (device_memory &, size_t, size_t)
 
virtual void mem_free_sub_ptr (device_ptr)
 
virtual void mem_alloc (device_memory &mem)=0
 
virtual void mem_copy_to (device_memory &mem)=0
 
virtual void mem_copy_from (device_memory &mem, size_t y, size_t w, size_t h, size_t elem)=0
 
virtual void mem_zero (device_memory &mem)=0
 
virtual void mem_free (device_memory &mem)=0
 

Protected Attributes

string error_msg
 

Friends

class device_sub_ptr
 
class MultiDevice
 
class DeviceServer
 
class device_memory
 

Detailed Description

Definition at line 105 of file device/device.h.

Constructor & Destructor Documentation

◆ Device()

Device::Device ( const DeviceInfo info_,
Stats stats_,
Profiler profiler_ 
)
inlineprotected

Definition at line 109 of file device/device.h.

◆ ~Device()

Device::~Device ( )
virtualnoexcept

Definition at line 48 of file device/device.cpp.

Member Function Documentation

◆ available_devices()

vector< DeviceInfo > Device::available_devices ( uint  device_type_mask = DEVICE_MASK_ALL)
static

◆ available_types()

vector< DeviceType > Device::available_types ( )
static

◆ build_bvh()

void Device::build_bvh ( BVH bvh,
Progress progress,
bool  refit 
)
virtual

◆ check_peer_access()

virtual bool Device::check_peer_access ( Device )
inlinevirtual

Definition at line 201 of file device/device.h.

Referenced by MultiDevice::MultiDevice().

◆ const_copy_to()

virtual void Device::const_copy_to ( const char *  name,
void host,
size_t  size 
)
pure virtual

◆ create()

Device * Device::create ( const DeviceInfo info,
Stats stats,
Profiler profiler 
)
static

◆ denoise_buffer()

virtual bool Device::denoise_buffer ( const DeviceDenoiseTask )
inlinevirtual

Definition at line 223 of file device/device.h.

References LOG.

Referenced by DeviceDenoiser::denoise_buffer().

◆ device_capabilities()

string Device::device_capabilities ( uint  device_type_mask = DEVICE_MASK_ALL)
static

◆ device_number()

virtual int Device::device_number ( Device )
inlinevirtual

Reimplemented in MultiDevice.

Definition at line 185 of file device/device.h.

◆ dummy_device()

DeviceInfo Device::dummy_device ( const string &  error_msg = "")
static

Definition at line 279 of file device/device.cpp.

References DEVICE_DUMMY, DeviceInfo::error_msg, error_msg, info, and DeviceInfo::type.

Referenced by blender_device_info().

◆ error_message()

virtual const string& Device::error_message ( )
inlinevirtual

◆ foreach_device()

virtual void Device::foreach_device ( const function< void(Device *)> &  callback)
inlinevirtual

Reimplemented in MultiDevice.

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

References callback.

Referenced by ShaderEval::eval(), find_best_device(), MultiDevice::foreach_device(), and PathTrace::PathTrace().

◆ free_memory()

void Device::free_memory ( )
static

Definition at line 416 of file device/device.cpp.

References vector< value_type, allocator_type >::free_memory().

Referenced by exit_func(), and tag_update().

◆ get_bvh_layout_mask()

virtual BVHLayoutMask Device::get_bvh_layout_mask ( ) const
pure virtual

◆ get_cpu_kernel_thread_globals()

void Device::get_cpu_kernel_thread_globals ( vector< CPUKernelThreadGlobals > &  )
virtual

Reimplemented in CPUDevice.

Definition at line 440 of file device/device.cpp.

References LOG.

Referenced by ShaderEval::eval_cpu(), and PathTraceWorkCPU::init_execution().

◆ get_cpu_kernels()

const CPUKernels & Device::get_cpu_kernels ( )
static

Definition at line 433 of file device/device.cpp.

Referenced by CPUDevice::CPUDevice(), and ShaderEval::eval_cpu().

◆ get_cpu_osl_memory()

void * Device::get_cpu_osl_memory ( )
virtual

Reimplemented in MultiDevice, and CPUDevice.

Definition at line 446 of file device/device.cpp.

Referenced by GeometryManager::device_free(), and GeometryManager::update_osl_attributes().

◆ get_denoise_queue()

virtual DeviceQueue* Device::get_denoise_queue ( )
inlinevirtual

Definition at line 229 of file device/device.h.

References LOG.

Referenced by DeviceDenoiser::denoise_buffer().

◆ get_multi_device()

DeviceInfo Device::get_multi_device ( const vector< DeviceInfo > &  subdevices,
int  threads,
bool  background 
)
static

◆ gpu_queue_create()

unique_ptr< DeviceQueue > Device::gpu_queue_create ( )
virtual

Definition at line 427 of file device/device.cpp.

References LOG.

Referenced by ShaderEval::eval_gpu().

◆ have_error()

bool Device::have_error ( )
inline

◆ is_resident()

virtual bool Device::is_resident ( device_ptr  ,
Device sub_device 
)
inlinevirtual

Reimplemented in MultiDevice.

Definition at line 195 of file device/device.h.

Referenced by device_memory::is_resident().

◆ load_kernels()

virtual bool Device::load_kernels ( uint  )
inlinevirtual

◆ mem_alloc()

virtual void Device::mem_alloc ( device_memory mem)
protectedpure virtual

◆ mem_alloc_sub_ptr()

virtual device_ptr Device::mem_alloc_sub_ptr ( device_memory ,
size_t  ,
size_t   
)
inlineprotectedvirtual

Reimplemented in CPUDevice.

Definition at line 116 of file device/device.h.

Referenced by device_sub_ptr::device_sub_ptr().

◆ mem_copy_from()

virtual void Device::mem_copy_from ( device_memory mem,
size_t  y,
size_t  w,
size_t  h,
size_t  elem 
)
protectedpure virtual

◆ mem_copy_to()

virtual void Device::mem_copy_to ( device_memory mem)
protectedpure virtual

◆ mem_free()

virtual void Device::mem_free ( device_memory mem)
protectedpure virtual

◆ mem_free_sub_ptr()

virtual void Device::mem_free_sub_ptr ( device_ptr  )
inlineprotectedvirtual

Definition at line 122 of file device/device.h.

Referenced by device_sub_ptr::~device_sub_ptr().

◆ mem_zero()

virtual void Device::mem_zero ( device_memory mem)
protectedpure virtual

◆ optimize_for_scene()

virtual void Device::optimize_for_scene ( Scene )
inlinevirtual

Definition at line 191 of file device/device.h.

Referenced by Scene::device_update().

◆ release_optix_bvh()

virtual void Device::release_optix_bvh ( BVH )
inlinevirtual

Definition at line 182 of file device/device.h.

◆ set_error()

virtual void Device::set_error ( const string &  error)
inlinevirtual

◆ should_use_graphics_interop()

virtual bool Device::should_use_graphics_interop ( )
inlinevirtual

◆ string_from_type()

string Device::string_from_type ( DeviceType  type)
static

◆ tag_update()

void Device::tag_update ( )
static

Definition at line 411 of file device/device.cpp.

References free_memory().

◆ type_from_string()

DeviceType Device::type_from_string ( const char *  name)
static

Friends And Related Function Documentation

◆ device_memory

friend class device_memory
friend

Definition at line 267 of file device/device.h.

◆ device_sub_ptr

friend class device_sub_ptr
friend

Definition at line 106 of file device/device.h.

◆ DeviceServer

friend class DeviceServer
friend

Definition at line 266 of file device/device.h.

◆ MultiDevice

friend class MultiDevice
friend

Definition at line 265 of file device/device.h.

Member Data Documentation

◆ error_msg

string Device::error_msg
protected

◆ info

DeviceInfo Device::info

◆ profiler

Profiler& Device::profiler

◆ stats

Stats& Device::stats

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