13 # include <OSL/oslexec.h>
17 # include <embree3/rtcore.h>
20 #include "device/cpu/kernel.h"
54 :
Device(info_, stats_, profiler_), texture_info(this,
"texture_info",
MEM_GLOBAL)
69 embree_device = rtcNewDevice(
"verbose=0");
77 rtcReleaseDevice(embree_device);
89 return bvh_layout_mask;
107 assert(!
"mem_alloc not supported for textures.");
110 assert(!
"mem_alloc not supported for global memory.");
195 if (strcmp(name,
"data") == 0) {
200 data->device_bvh = embree_scene;
265 BVHEmbree *
const bvh_embree =
static_cast<BVHEmbree *
>(bvh);
267 bvh_embree->refit(progress);
270 bvh_embree->build(progress, &
stats, embree_device);
274 embree_scene = bvh_embree->scene;
288 kernel_thread_globals.clear();
void util_aligned_free(void *ptr)
CCL_NAMESPACE_BEGIN void * util_aligned_malloc(size_t size, int alignment)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void refit(btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax)
virtual void mem_copy_from(device_memory &mem, size_t y, size_t w, size_t h, size_t elem) override
virtual bool load_kernels(uint) override
virtual BVHLayoutMask get_bvh_layout_mask() const override
virtual void mem_free(device_memory &mem) override
virtual void const_copy_to(const char *name, void *host, size_t size) override
virtual void mem_alloc(device_memory &mem) override
virtual void * get_cpu_osl_memory() override
void tex_alloc(device_texture &mem)
virtual device_ptr mem_alloc_sub_ptr(device_memory &mem, size_t offset, size_t) override
void tex_free(device_texture &mem)
void global_alloc(device_memory &mem)
device_vector< TextureInfo > texture_info
virtual void mem_zero(device_memory &mem) override
KernelGlobalsCPU kernel_globals
virtual void get_cpu_kernel_thread_globals(vector< CPUKernelThreadGlobals > &kernel_thread_globals) override
void build_bvh(BVH *bvh, Progress &progress, bool refit) override
virtual void mem_copy_to(device_memory &mem) override
CPUDevice(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_)
void global_free(device_memory &mem)
const char * get_uarch_name() const
IntegratorInitFunction integrator_init_from_camera
static const CPUKernels & get_cpu_kernels()
virtual void build_bvh(BVH *bvh, Progress &progress, bool refit)
void mem_free(size_t size)
void mem_alloc(size_t size)
static int max_concurrency()
size_t memory_elements_size(int elements)
device_ptr device_pointer
T * resize(size_t width, size_t height=0, size_t depth=0)
#define CCL_NAMESPACE_END
#define MIN_ALIGNMENT_CPU_DATA_TYPES
void kernel_global_memory_copy(KernelGlobalsCPU *kg, const char *name, void *mem, size_t size)
CCL_NAMESPACE_BEGIN void kernel_const_copy(KernelGlobalsCPU *kg, const char *name, void *host, size_t)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
@ BVH_LAYOUT_MULTI_METAL_EMBREE
@ BVH_LAYOUT_MULTI_OPTIX_EMBREE
unsigned __int64 uint64_t
string string_human_readable_size(size_t size)
string string_human_readable_number(size_t num)