33 scene->update_stats->tables.times.add_entry({
"device_update", time});
37 VLOG_INFO <<
"Total " << lookup_tables.size() <<
" lookup tables.";
39 if (lookup_tables.size() > 0)
40 dscene->lookup_table.copy_to_device();
57 return ((
size + chunk - 1) / chunk) * chunk;
62 assert(
data.size() > 0);
71 list<Table>::iterator table;
74 if (new_table.
offset + new_table.
size <= table->offset) {
79 new_table.
offset = table->offset + table->size;
90 memcpy(dtable + new_table.
offset, &
data[0],
sizeof(
float) *
data.size());
104 list<Table>::iterator table;
107 if (table->offset == *
offset) {
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
device_vector< float > lookup_table
void device_free(Device *device, DeviceScene *dscene)
size_t add_table(DeviceScene *dscene, vector< float > &data)
void remove_table(size_t *offset)
list< Table > lookup_tables
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
T * resize(size_t width, size_t height=0, size_t depth=0)
#define CCL_NAMESPACE_END
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
SceneUpdateStats * update_stats
static size_t round_up_to_multiple(size_t size, size_t chunk)