60#define DEVICE_MASK(type) (DeviceTypeMask)(1 << type)
123 assert(
id != info.
id ||
130 return !(*
this == info);
174 fprintf(stderr,
"%s\n",
error.c_str());
242 return sub_device ==
this;
274 LOG(ERROR) <<
"Request guiding field from a device which does not support it.";
320 static bool need_types_update, need_devices_update;
328 static uint devices_initialized_mask;
335 :
Device(info_, stats_, profiler_, headless_),
380 typedef map<device_memory *, Mem>
MemMap;
388 size_t preferred_working_headroom = 0);
404 virtual bool alloc_host(
void *&shared_pointer,
size_t size) = 0;
void BLI_kdtree_nd_ free(KDTree *tree)
void refit(btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
KernelOptimizationLevel kernel_optimization_level
vector< DeviceInfo > multi_devices
DenoiserTypeMask denoisers
bool operator==(const DeviceInfo &info) const
bool operator!=(const DeviceInfo &info) const
bool use_metalrt_by_default
bool use_hardware_raytracing
virtual void optimize_for_scene(Scene *)
virtual const string & error_message()
virtual bool is_resident(device_ptr, Device *sub_device)
virtual void release_bvh(BVH *)
static void free_memory()
static DeviceInfo dummy_device(const string &error_msg="")
Device(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_, bool headless_)
virtual bool is_ready(string &) const
static vector< DeviceInfo > available_devices(uint device_type_mask=DEVICE_MASK_ALL)
static const CPUKernels & get_cpu_kernels()
virtual void const_copy_to(const char *name, void *host, size_t size)=0
virtual bool load_osl_kernels()
virtual void mem_zero(device_memory &mem)=0
virtual void get_cpu_kernel_thread_globals(vector< CPUKernelThreadGlobals > &)
virtual void * get_native_buffer(device_ptr)
virtual int device_number(Device *)
virtual ~Device() noexcept(false)
virtual void mem_copy_from(device_memory &mem, size_t y, size_t w, size_t h, size_t elem)=0
virtual void mem_free_sub_ptr(device_ptr)
virtual unique_ptr< DeviceQueue > gpu_queue_create()
virtual void build_bvh(BVH *bvh, Progress &progress, bool refit)
virtual bool load_kernels(uint)
static DeviceType type_from_string(const char *name)
virtual void * get_cpu_osl_memory()
virtual bool check_peer_access(Device *)
virtual void mem_free(device_memory &mem)=0
virtual void foreach_device(const function< void(Device *)> &callback)
virtual BVHLayoutMask get_bvh_layout_mask(uint kernel_features) const =0
virtual void set_error(const string &error)
virtual void mem_copy_to(device_memory &mem)=0
virtual device_ptr mem_alloc_sub_ptr(device_memory &, size_t, size_t)
static string device_capabilities(uint device_type_mask=DEVICE_MASK_ALL)
friend class DeviceServer
static vector< DeviceType > available_types()
static string string_from_type(DeviceType type)
virtual void mem_alloc(device_memory &mem)=0
static DeviceInfo get_multi_device(const vector< DeviceInfo > &subdevices, int threads, bool background)
virtual bool should_use_graphics_interop()
static Device * create(const DeviceInfo &info, Stats &stats, Profiler &profiler, bool headless)
virtual void * get_guiding_device() const
DEGForeachIDComponentCallback callback
#define CCL_NAMESPACE_END
@ KERNEL_OPTIMIZATION_LEVEL_OFF
@ KERNEL_OPTIMIZATION_LEVEL_FULL
@ KERNEL_OPTIMIZATION_LEVEL_INTERSECT
@ KERNEL_OPTIMIZATION_NUM_LEVELS
static void error(const char *str)
unsigned long long texMemObject
virtual GPUDevice::Mem * generic_alloc(device_memory &mem, size_t pitch_padding=0)
GPUDevice(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_, bool headless_)
size_t device_texture_headroom
virtual void get_device_memory_info(size_t &total, size_t &free)=0
size_t device_working_headroom
virtual void init_host_memory(size_t preferred_texture_headroom=0, size_t preferred_working_headroom=0)
virtual bool alloc_host(void *&shared_pointer, size_t size)=0
map< device_memory *, Mem > MemMap
virtual void transform_host_pointer(void *&device_pointer, void *&shared_pointer)=0
virtual void copy_host_to_device(void *device_pointer, void *host_pointer, size_t size)=0
virtual void generic_copy_to(device_memory &mem)
unsigned long long arrayMemObject
virtual void free_host(void *shared_pointer)=0
virtual ~GPUDevice() noexcept(false)
virtual bool load_texture_info()
virtual void free_device(void *device_pointer)=0
thread_mutex device_mem_map_mutex
virtual bool alloc_device(void *&device_pointer, size_t size)=0
virtual void generic_free(device_memory &mem)
bool move_texture_to_host
device_vector< TextureInfo > texture_info
virtual void move_textures_to_host(size_t size, bool for_texture)
CCL_NAMESPACE_BEGIN typedef std::mutex thread_mutex