|
Blender V5.0
|
#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< DeviceQueue > | gpu_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 bool | set_bvh_limits (size_t, size_t) |
| 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 CPUKernels & | get_cpu_kernels () |
| static unique_ptr< Device > | create (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< DeviceType > | available_types () |
| static vector< DeviceInfo > | available_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 |
| Stats & | stats |
| Profiler & | profiler |
| 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 |
Definition at line 126 of file device/device.h.
|
inlineprotected |
Definition at line 130 of file device/device.h.
References headless, info, profiler, and stats.
Referenced by check_peer_access(), CPUDevice::CPUDevice(), device_number(), MultiDevice::device_number(), DummyDevice::DummyDevice(), foreach_device(), MultiDevice::foreach_device(), GPUDevice::GPUDevice(), is_resident(), MultiDevice::is_resident(), is_shared(), GPUDevice::is_shared(), MultiDevice::is_shared(), MultiDevice::MultiDevice(), set_error(), and GPUDevice::shared_free().
|
virtualdefault |
References false.
|
static |
Definition at line 227 of file device/device.cpp.
References device_cpu_info(), device_cuda_info(), device_cuda_init(), device_hip_info(), device_hip_init(), DEVICE_MASK_CPU, DEVICE_MASK_CUDA, DEVICE_MASK_HIP, DEVICE_MASK_METAL, DEVICE_MASK_ONEAPI, DEVICE_MASK_OPTIX, device_metal_info(), device_metal_init(), device_oneapi_info(), device_oneapi_init(), device_optix_info(), device_optix_init(), info, lock, and mask().
Referenced by available_devices_func(), blender_device_info(), and options_parse().
|
static |
Definition at line 200 of file device/device.cpp.
References DEVICE_CPU, DEVICE_CUDA, DEVICE_HIP, DEVICE_HIPRT, DEVICE_METAL, DEVICE_ONEAPI, DEVICE_OPTIX, and types.
Referenced by get_device_types_func(), and options_parse().
Reimplemented in CPUDevice, and MultiDevice.
Definition at line 61 of file device/device.cpp.
References assert, BVH2::build(), BVHParams::bvh_layout, BVH_LAYOUT_BVH2, BVH::params, BVH2::refit(), refit(), and stats.
Referenced by CPUDevice::build_bvh(), Geometry::compute_bvh(), and GeometryManager::device_update_bvh().
|
inlinevirtual |
Definition at line 182 of file device/device.h.
|
inlinevirtual |
Definition at line 233 of file device/device.h.
References Device().
|
pure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
Referenced by VolumeManager::device_update(), and shade_background_pixels().
|
static |
Definition at line 74 of file device/device.cpp.
References DEVICE_CPU, device_cpu_create(), DEVICE_CUDA, device_cuda_create(), device_cuda_init(), device_dummy_create(), DEVICE_HIP, device_hip_create(), device_hip_init(), DEVICE_METAL, device_metal_create(), device_metal_init(), device_multi_create(), DEVICE_ONEAPI, device_oneapi_create(), DEVICE_OPTIX, device_optix_create(), device_optix_init(), headless, info, profiler, and stats.
Referenced by DenoiserPipeline::DenoiserPipeline(), MultiDevice::MultiDevice(), Session::Session(), and RenderGraph::SetUp().
|
static |
Definition at line 328 of file device/device.cpp.
References device_capabilities(), device_cpu_capabilities(), device_cuda_capabilities(), device_cuda_init(), device_hip_capabilities(), device_hip_init(), DEVICE_MASK_CPU, DEVICE_MASK_CUDA, DEVICE_MASK_HIP, DEVICE_MASK_METAL, DEVICE_MASK_ONEAPI, device_metal_capabilities(), device_metal_init(), device_oneapi_capabilities(), device_oneapi_init(), lock, and mask().
Referenced by device_capabilities(), and system_info_func().
|
inlinevirtual |
|
static |
Definition at line 320 of file device/device.cpp.
References DEVICE_DUMMY, error_msg, and info.
Referenced by blender_device_info().
|
inlinevirtual |
Reimplemented in MultiDevice.
Definition at line 151 of file device/device.h.
References error_message(), and error_msg.
Referenced by error_message(), and have_error().
|
inlinevirtual |
Reimplemented in MultiDevice.
Definition at line 276 of file device/device.h.
References Device().
Referenced by find_best_device().
|
static |
Definition at line 473 of file device/device.cpp.
Referenced by exit_func(), and tag_update().
|
pure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
Referenced by Geometry::compute_bvh(), GeometryManager::device_update_bvh(), and ObjectManager::device_update_prim_offsets().
|
virtual |
Reimplemented in CPUDevice.
Definition at line 497 of file device/device.cpp.
References LOG_FATAL.
Referenced by ShaderEval::eval_cpu().
|
static |
Definition at line 490 of file device/device.cpp.
Referenced by CPUDevice::CPUDevice(), and ShaderEval::eval_cpu().
|
virtual |
Reimplemented in CPUDevice, and MultiDevice.
Definition at line 503 of file device/device.cpp.
Referenced by GeometryManager::device_free(), and GeometryManager::update_osl_globals().
|
virtual |
|
static |
Definition at line 389 of file device/device.cpp.
References assert, DeviceInfo::cpu_threads, DENOISER_ALL, DEVICE_CPU, DEVICE_MULTI, DEVICE_NONE, info, LOG_INFO, max, and TaskScheduler::max_concurrency().
Referenced by blender_device_info().
|
inlinevirtual |
Definition at line 261 of file device/device.h.
|
virtual |
Definition at line 484 of file device/device.cpp.
References LOG_FATAL.
Referenced by DenoiserGPU::DenoiserGPU(), and ShaderEval::eval_gpu().
|
inline |
Definition at line 155 of file device/device.h.
References error_message().
Referenced by PathTrace::path_trace(), and set_error().
|
protectedvirtual |
Reimplemented in MultiDevice.
Definition at line 514 of file device/device.cpp.
References MIN_ALIGNMENT_DEVICE_MEMORY, size(), and util_aligned_malloc().
Referenced by MultiDevice::host_alloc().
|
protectedvirtual |
Reimplemented in MultiDevice.
Definition at line 519 of file device/device.cpp.
References size(), and util_aligned_free().
Referenced by GPUDevice::generic_alloc(), and MultiDevice::host_free().
|
inlinevirtual |
Definition at line 185 of file device/device.h.
|
inlinevirtual |
|
inlinevirtual |
Reimplemented in GPUDevice, and MultiDevice.
Definition at line 238 of file device/device.h.
References Device().
Referenced by MultiDevice::is_shared().
|
inlinevirtual |
Reimplemented in CPUDevice, and MultiDevice.
Definition at line 171 of file device/device.h.
|
inlinevirtual |
Reimplemented in MultiDevice.
Definition at line 176 of file device/device.h.
|
protectedpure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
References device_memory.
|
inlineprotectedvirtual |
Reimplemented in CPUDevice.
Definition at line 137 of file device/device.h.
References assert, and device_memory.
|
protectedpure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
References device_memory, w(), and y.
|
protectedpure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
References device_memory.
|
protectedpure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
References device_memory.
|
inlineprotectedvirtual |
Definition at line 143 of file device/device.h.
|
protectedpure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
References device_memory.
|
protectedpure virtual |
Implemented in CPUDevice, DummyDevice, and MultiDevice.
References device_memory.
|
inlinevirtual |
Definition at line 225 of file device/device.h.
|
inlinevirtual |
Definition at line 210 of file device/device.h.
|
inlinevirtual |
Definition at line 213 of file device/device.h.
|
virtual |
Definition at line 52 of file device/device.cpp.
References Device(), error(), error_msg, have_error(), LOG_ERROR, and set_error().
Referenced by GPUDevice::generic_alloc(), and set_error().
|
inlinevirtual |
Definition at line 254 of file device/device.h.
Referenced by find_best_device(), and PathTraceWorkGPU::should_use_graphics_interop().
|
static |
Definition at line 170 of file device/device.cpp.
References DEVICE_CPU, DEVICE_CUDA, DEVICE_HIP, DEVICE_HIPRT, DEVICE_METAL, DEVICE_MULTI, DEVICE_ONEAPI, and DEVICE_OPTIX.
Referenced by available_devices_func(), HdCyclesDelegate::GetRenderSetting(), and options_parse().
|
static |
Definition at line 468 of file device/device.cpp.
References free_memory().
|
static |
Definition at line 140 of file device/device.cpp.
References DEVICE_CPU, DEVICE_CUDA, DEVICE_HIP, DEVICE_HIPRT, DEVICE_METAL, DEVICE_MULTI, DEVICE_NONE, DEVICE_ONEAPI, DEVICE_OPTIX, and name.
Referenced by available_devices_func(), and options_parse().
|
friend |
Definition at line 306 of file device/device.h.
References device_memory, and size().
Referenced by device_memory, CPUDevice::global_alloc(), CPUDevice::global_free(), CPUDevice::mem_alloc(), mem_alloc(), DummyDevice::mem_alloc(), MultiDevice::mem_alloc(), CPUDevice::mem_alloc_sub_ptr(), mem_alloc_sub_ptr(), CPUDevice::mem_copy_from(), mem_copy_from(), DummyDevice::mem_copy_from(), MultiDevice::mem_copy_from(), CPUDevice::mem_copy_to(), mem_copy_to(), DummyDevice::mem_copy_to(), MultiDevice::mem_copy_to(), CPUDevice::mem_free(), mem_free(), DummyDevice::mem_free(), MultiDevice::mem_free(), CPUDevice::mem_move_to_host(), mem_move_to_host(), DummyDevice::mem_move_to_host(), MultiDevice::mem_move_to_host(), CPUDevice::mem_zero(), mem_zero(), DummyDevice::mem_zero(), and MultiDevice::mem_zero().
|
friend |
Definition at line 127 of file device/device.h.
References device_sub_ptr.
Referenced by device_sub_ptr.
|
friend |
Definition at line 305 of file device/device.h.
References DeviceServer.
Referenced by DeviceServer.
|
friend |
|
protected |
Definition at line 135 of file device/device.h.
Referenced by dummy_device(), DummyDevice::DummyDevice(), error_message(), MultiDevice::error_message(), and set_error().
| bool Device::headless = true |
Definition at line 165 of file device/device.h.
Referenced by create(), Device(), and MultiDevice::MultiDevice().
| DeviceInfo Device::info |
Definition at line 150 of file device/device.h.
Referenced by available_devices(), CPUDevice::CPUDevice(), Denoiser::create(), create(), PathTraceWork::create(), denoiser_device_report(), Device(), dummy_device(), DummyDevice::DummyDevice(), ShaderEval::eval(), ShaderEval::eval_cpu(), find_best_device(), CPUDevice::get_cpu_kernel_thread_globals(), get_effective_denoise_params(), Integrator::get_guiding_params(), get_multi_device(), is_single_device(), local_tbb_arena_create(), MultiDevice::MultiDevice(), PathTraceWorkCPU::PathTraceWorkCPU(), PathTrace::set_denoiser_params(), use_gpu_oidn_denoiser(), use_optix_denoiser(), and MultiDevice::verify_hardware_raytracing().
| Profiler& Device::profiler |
Definition at line 164 of file device/device.h.
Referenced by create(), Device(), CPUDevice::get_cpu_kernel_thread_globals(), MultiDevice::MultiDevice(), and PathTrace::PathTrace().
| Stats& Device::stats |
Definition at line 163 of file device/device.h.
Referenced by CPUDevice::build_bvh(), build_bvh(), create(), Device(), GPUDevice::generic_alloc(), GPUDevice::generic_free(), CPUDevice::global_alloc(), CPUDevice::global_free(), CPUDevice::mem_alloc(), MultiDevice::mem_alloc(), MultiDevice::mem_copy_to(), CPUDevice::mem_free(), MultiDevice::mem_free(), MultiDevice::mem_move_to_host(), MultiDevice::mem_zero(), MultiDevice::MultiDevice(), PathTrace::PathTrace(), CPUDevice::tex_alloc(), and CPUDevice::tex_free().