Blender V4.5
Device Class Referenceabstract

#include <device.h>

Inherited by CPUDevice, DummyDevice, GPUDevice, and 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 uint kernel_features) const =0
 
virtual void const_copy_to (const char *name, void *host, const size_t size)=0
 
virtual bool load_kernels (uint)
 
virtual bool load_osl_kernels ()
 
virtual void cancel ()
 
virtual bool is_ready (string &) const
 
virtual unique_ptr< DeviceQueuegpu_queue_create ()
 
virtual void get_cpu_kernel_thread_globals (vector< ThreadKernelGlobalsCPU > &)
 
virtual OSLGlobals * get_cpu_osl_memory ()
 
virtual void build_bvh (BVH *bvh, Progress &progress, bool refit)
 
virtual void release_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 is_shared (const void *, const device_ptr, Device *)
 
virtual bool should_use_graphics_interop (const GraphicsInteropDevice &, const bool=false)
 
virtual void * get_native_buffer (device_ptr)
 
virtual void * get_guiding_device () const
 
virtual void foreach_device (const std::function< void(Device *)> &callback)
 

Static Public Member Functions

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

Public Attributes

DeviceInfo info
 
Statsstats
 
Profilerprofiler
 
bool headless = true
 

Protected Member Functions

 Device (const DeviceInfo &info_, Stats &stats_, Profiler &profiler_, bool headless_)
 
virtual device_ptr mem_alloc_sub_ptr (device_memory &, size_t, size_t)
 
virtual void mem_free_sub_ptr (device_ptr)
 
virtual void * host_alloc (const MemoryType type, const size_t size)
 
virtual void host_free (const MemoryType type, void *host_pointer, const size_t size)
 
virtual void mem_alloc (device_memory &mem)=0
 
virtual void mem_copy_to (device_memory &mem)=0
 
virtual void mem_move_to_host (device_memory &mem)=0
 
virtual void mem_copy_from (device_memory &mem, const size_t y, size_t w, const 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 129 of file device/device.h.

Constructor & Destructor Documentation

◆ Device()

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

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

◆ ~Device()

Device::~Device ( )
virtualdefault

Member Function Documentation

◆ available_devices()

◆ available_types()

vector< DeviceType > Device::available_types ( )
static

◆ build_bvh()

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

◆ cancel()

virtual void Device::cancel ( )
inlinevirtual

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

◆ check_peer_access()

virtual bool Device::check_peer_access ( Device * )
inlinevirtual

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

◆ const_copy_to()

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

◆ create()

◆ device_capabilities()

◆ device_number()

virtual int Device::device_number ( Device * )
inlinevirtual

Reimplemented in MultiDevice.

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

◆ dummy_device()

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

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

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

Referenced by blender_device_info().

◆ error_message()

virtual const string & Device::error_message ( )
inlinevirtual

Reimplemented in MultiDevice.

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

References error_msg.

Referenced by have_error(), Denoiser::load_kernels(), and Scene::load_kernels().

◆ foreach_device()

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

Reimplemented in MultiDevice.

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

References callback.

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

◆ free_memory()

void Device::free_memory ( )
static

Definition at line 464 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 uint kernel_features) const
pure virtual

◆ get_cpu_kernel_thread_globals()

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

Reimplemented in CPUDevice.

Definition at line 488 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 481 of file device/device.cpp.

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

◆ get_cpu_osl_memory()

OSLGlobals * Device::get_cpu_osl_memory ( )
virtual

Reimplemented in CPUDevice, and MultiDevice.

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

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

◆ get_guiding_device()

virtual void * Device::get_guiding_device ( ) const
inlinevirtual

Reimplemented in CPUDevice.

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

References LOG.

Referenced by PathTrace::set_guiding_params().

◆ get_multi_device()

◆ get_native_buffer()

virtual void * Device::get_native_buffer ( device_ptr )
inlinevirtual

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

◆ gpu_queue_create()

unique_ptr< DeviceQueue > Device::gpu_queue_create ( )
virtual

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

References LOG.

Referenced by DenoiserGPU::DenoiserGPU(), and ShaderEval::eval_gpu().

◆ have_error()

bool Device::have_error ( )
inline

◆ host_alloc()

void * Device::host_alloc ( const MemoryType type,
const size_t size )
protectedvirtual

Reimplemented in MultiDevice.

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

References MIN_ALIGNMENT_CPU_DATA_TYPES, size(), and util_aligned_malloc().

Referenced by device_memory::host_alloc(), and MultiDevice::host_alloc().

◆ host_free()

void Device::host_free ( const MemoryType type,
void * host_pointer,
const size_t size )
protectedvirtual

◆ is_ready()

virtual bool Device::is_ready ( string & ) const
inlinevirtual

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

◆ is_resident()

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

Reimplemented in MultiDevice.

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

Referenced by device_memory::is_resident().

◆ is_shared()

virtual bool Device::is_shared ( const void * ,
const device_ptr ,
Device *  )
inlinevirtual

Reimplemented in GPUDevice, and MultiDevice.

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

Referenced by device_memory::is_shared(), and MultiDevice::is_shared().

◆ load_kernels()

virtual bool Device::load_kernels ( uint )
inlinevirtual

Reimplemented in CPUDevice, and MultiDevice.

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

Referenced by Denoiser::load_kernels(), and Scene::load_kernels().

◆ load_osl_kernels()

virtual bool Device::load_osl_kernels ( )
inlinevirtual

Reimplemented in MultiDevice.

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

◆ mem_alloc()

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

Implemented in CPUDevice, DummyDevice, and MultiDevice.

Referenced by device_memory::device_alloc().

◆ 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 140 of file device/device.h.

References assert.

Referenced by device_sub_ptr::device_sub_ptr().

◆ mem_copy_from()

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

◆ mem_copy_to()

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

Implemented in CPUDevice, DummyDevice, and MultiDevice.

Referenced by device_memory::device_copy_to().

◆ 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 146 of file device/device.h.

Referenced by device_sub_ptr::~device_sub_ptr().

◆ mem_move_to_host()

virtual void Device::mem_move_to_host ( device_memory & mem)
protectedpure virtual

◆ mem_zero()

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

Implemented in CPUDevice, DummyDevice, and MultiDevice.

Referenced by device_memory::device_zero().

◆ optimize_for_scene()

virtual void Device::optimize_for_scene ( Scene * )
inlinevirtual

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

Referenced by Scene::device_update().

◆ release_bvh()

virtual void Device::release_bvh ( BVH * )
inlinevirtual

Definition at line 220 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 ( const GraphicsInteropDevice & ,
const bool = false )
inlinevirtual

◆ string_from_type()

string Device::string_from_type ( DeviceType type)
static

◆ tag_update()

void Device::tag_update ( )
static

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

References free_memory().

◆ type_from_string()

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

Friends And Related Symbol Documentation

◆ device_memory

friend class device_memory
friend

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

◆ device_sub_ptr

friend class device_sub_ptr
friend

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

◆ DeviceServer

friend class DeviceServer
friend

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

◆ MultiDevice

friend class MultiDevice
friend

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

Member Data Documentation

◆ error_msg

string Device::error_msg
protected

◆ headless

bool Device::headless = true

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

Referenced by create(), MultiDevice::MultiDevice(), and PathTrace::PathTrace().

◆ info

◆ profiler

◆ stats


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