34 if (scene->update_stats) {
35 scene->update_stats->tables.times.add_entry({
"device_update", time});
39 VLOG_INFO <<
"Total " << lookup_tables.size() <<
" lookup tables.";
41 if (lookup_tables.size() > 0) {
42 dscene->lookup_table.copy_to_device();
60 return ((size + chunk - 1) / chunk) * chunk;
65 assert(data.size() > 0);
74 list<Table>::iterator table;
77 if (new_table.
offset + new_table.
size <= table->offset) {
82 new_table.
offset = table->offset + table->size;
94 memcpy(dtable + new_table.
offset, &data[0],
sizeof(
float) * data.size());
108 list<Table>::iterator table;
111 if (table->offset == *offset) {
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
static size_t round_up_to_multiple(size_t size, size_t chunk)