61#define DEVICE_MASK(type) (DeviceTypeMask)(1 << type)
120 return !(*
this == info);
231 return sub_device ==
this;
315 device_memory &mem,
const size_t y,
size_t w,
const size_t h,
size_t elem) = 0;
321 static bool need_types_update, need_devices_update;
329 static uint devices_initialized_mask;
368 using MemMap = map<device_memory *, Mem>;
375 const size_t preferred_working_headroom = 0);
377 const size_t headroom,
378 const bool for_texture);
396 bool is_shared(
const void *shared_pointer,
398 Device *sub_device)
override;
406 const size_t size) = 0;
void BLI_kdtree_nd_ free(KDTree *tree)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void refit(btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
bool has_execution_optimization
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 host_free(const MemoryType type, void *host_pointer, const size_t size)
virtual void optimize_for_scene(Scene *)
virtual void * get_guiding_device() const
virtual const string & error_message()
virtual bool is_resident(device_ptr, Device *sub_device)
virtual void release_bvh(BVH *)
static void free_memory()
virtual bool is_shared(const void *, const device_ptr, Device *)
static DeviceInfo dummy_device(const string &error_msg="")
Device(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_, bool headless_)
static DeviceInfo get_multi_device(const vector< DeviceInfo > &subdevices, const int threads, bool background)
virtual bool is_ready(string &) const
static const CPUKernels & get_cpu_kernels()
virtual bool load_osl_kernels()
friend class device_sub_ptr
virtual void mem_move_to_host(device_memory &mem)=0
virtual void mem_zero(device_memory &mem)=0
virtual void * get_native_buffer(device_ptr)
virtual int device_number(Device *)
friend class device_memory
virtual ~Device() noexcept(false)
virtual void mem_free_sub_ptr(device_ptr)
virtual unique_ptr< DeviceQueue > gpu_queue_create()
virtual void const_copy_to(const char *name, void *host, const size_t size)=0
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 set_error(const string &error)
virtual BVHLayoutMask get_bvh_layout_mask(const uint kernel_features) const =0
virtual bool should_use_graphics_interop(const GraphicsInteropDevice &, const bool=false)
virtual void get_cpu_kernel_thread_globals(vector< ThreadKernelGlobalsCPU > &)
virtual bool check_peer_access(Device *)
virtual void mem_free(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_copy_to(device_memory &mem)=0
virtual device_ptr mem_alloc_sub_ptr(device_memory &, size_t, size_t)
friend class DeviceServer
static string device_capabilities(const uint device_type_mask=DEVICE_MASK_ALL)
virtual bool set_bvh_limits(size_t, size_t)
static vector< DeviceType > available_types()
virtual void foreach_device(const std::function< void(Device *)> &callback)
static string string_from_type(DeviceType type)
virtual void mem_alloc(device_memory &mem)=0
virtual OSLGlobals * get_cpu_osl_memory()
static vector< DeviceInfo > available_devices(const uint device_type_mask=DEVICE_MASK_ALL)
static unique_ptr< Device > create(const DeviceInfo &info, Stats &stats, Profiler &profiler, bool headless)
virtual void * host_alloc(const MemoryType type, const size_t size)
#define CCL_NAMESPACE_END
@ KERNEL_OPTIMIZATION_LEVEL_OFF
@ KERNEL_OPTIMIZATION_LEVEL_FULL
@ KERNEL_OPTIMIZATION_LEVEL_INTERSECT
@ KERNEL_OPTIMIZATION_NUM_LEVELS
#define assert(assertion)
static void error(const char *str)
thread_mutex texture_info_mutex
bool is_shared(const void *shared_pointer, const device_ptr device_pointer, Device *sub_device) override
virtual bool shared_alloc(void *&shared_pointer, const size_t size)=0
virtual void shared_free(void *shared_pointer)=0
GPUDevice(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_, bool headless_)
map< device_memory *, Mem > MemMap
unsigned long long texMemObject
size_t device_texture_headroom
virtual void get_device_memory_info(size_t &total, size_t &free)=0
virtual bool alloc_device(void *&device_pointer, const size_t size)=0
size_t device_working_headroom
friend class device_memory
virtual void * shared_to_device_pointer(const void *shared_pointer)=0
virtual void generic_copy_to(device_memory &mem)
virtual void move_textures_to_host(const size_t size, const size_t headroom, const bool for_texture)
virtual void copy_host_to_device(void *device_pointer, void *host_pointer, const size_t size)=0
virtual bool load_texture_info()
virtual void free_device(void *device_pointer)=0
unsigned long long arrayMemObject
thread_mutex device_mem_map_mutex
virtual void generic_free(device_memory &mem)
virtual void init_host_memory(const size_t preferred_texture_headroom=0, const size_t preferred_working_headroom=0)
virtual GPUDevice::Mem * generic_alloc(device_memory &mem, const size_t pitch_padding=0)
device_vector< TextureInfo > texture_info
~GPUDevice() noexcept(false) override