Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/device/device_network.cpp
| Show First 20 Lines • Show All 160 Lines • ▼ Show 20 Lines | void const_copy_to(const char *name, void *host, size_t size) | ||||
| snd.add(size); | snd.add(size); | ||||
| snd.write(); | snd.write(); | ||||
| snd.write_buffer(host, size); | snd.write_buffer(host, size); | ||||
| } | } | ||||
| void tex_alloc(const char *name, | void tex_alloc(const char *name, | ||||
| device_memory& mem, | device_memory& mem, | ||||
| InterpolationType interpolation, | InterpolationType interpolation, | ||||
| ExtensionType extension) | ExtensionType extension, | ||||
| int flat_slot) | |||||
| { | { | ||||
| VLOG(1) << "Texture allocate: " << name << ", " << mem.memory_size() << " bytes."; | VLOG(1) << "Texture allocate: " << name << ", " << mem.memory_size() << " bytes."; | ||||
| thread_scoped_lock lock(rpc_lock); | thread_scoped_lock lock(rpc_lock); | ||||
| mem.device_pointer = ++mem_counter; | mem.device_pointer = ++mem_counter; | ||||
| RPCSend snd(socket, &error_func, "tex_alloc"); | RPCSend snd(socket, &error_func, "tex_alloc"); | ||||
| string name_string(name); | string name_string(name); | ||||
| snd.add(name_string); | snd.add(name_string); | ||||
| snd.add(mem); | snd.add(mem); | ||||
| snd.add(interpolation); | snd.add(interpolation); | ||||
| snd.add(extension); | snd.add(extension); | ||||
| snd.add(flat_slot); | |||||
| snd.write(); | snd.write(); | ||||
| snd.write_buffer((void*)mem.data_pointer, mem.memory_size()); | snd.write_buffer((void*)mem.data_pointer, mem.memory_size()); | ||||
| } | } | ||||
| void tex_free(device_memory& mem) | void tex_free(device_memory& mem, int flat_slot) | ||||
| { | { | ||||
| if(mem.device_pointer) { | if(mem.device_pointer) { | ||||
| thread_scoped_lock lock(rpc_lock); | thread_scoped_lock lock(rpc_lock); | ||||
| RPCSend snd(socket, &error_func, "tex_free"); | RPCSend snd(socket, &error_func, "tex_free"); | ||||
| snd.add(mem); | snd.add(mem); | ||||
| snd.add(flat_slot); | |||||
| snd.write(); | snd.write(); | ||||
| mem.device_pointer = 0; | mem.device_pointer = 0; | ||||
| } | } | ||||
| } | } | ||||
| bool load_kernels(const DeviceRequestedFeatures& requested_features) | bool load_kernels(const DeviceRequestedFeatures& requested_features) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 371 Lines • ▼ Show 20 Lines | else if(rcv.name == "tex_alloc") { | ||||
| InterpolationType interpolation; | InterpolationType interpolation; | ||||
| ExtensionType extension_type; | ExtensionType extension_type; | ||||
| device_ptr client_pointer; | device_ptr client_pointer; | ||||
| rcv.read(name); | rcv.read(name); | ||||
| rcv.read(mem); | rcv.read(mem); | ||||
| rcv.read(interpolation); | rcv.read(interpolation); | ||||
| rcv.read(extension_type); | rcv.read(extension_type); | ||||
| rcv.read(flat_slot); | |||||
| lock.unlock(); | lock.unlock(); | ||||
| client_pointer = mem.device_pointer; | client_pointer = mem.device_pointer; | ||||
| size_t data_size = mem.memory_size(); | size_t data_size = mem.memory_size(); | ||||
| DataVector &data_v = data_vector_insert(client_pointer, data_size); | DataVector &data_v = data_vector_insert(client_pointer, data_size); | ||||
| if(data_size) | if(data_size) | ||||
| mem.data_pointer = (device_ptr)&(data_v[0]); | mem.data_pointer = (device_ptr)&(data_v[0]); | ||||
| else | else | ||||
| mem.data_pointer = 0; | mem.data_pointer = 0; | ||||
| rcv.read_buffer((uint8_t*)mem.data_pointer, data_size); | rcv.read_buffer((uint8_t*)mem.data_pointer, data_size); | ||||
| device->tex_alloc(name.c_str(), mem, interpolation, extension_type); | device->tex_alloc(name.c_str(), mem, interpolation, extension_type, flat_slot); | ||||
| pointer_mapping_insert(client_pointer, mem.device_pointer); | pointer_mapping_insert(client_pointer, mem.device_pointer); | ||||
| } | } | ||||
| else if(rcv.name == "tex_free") { | else if(rcv.name == "tex_free") { | ||||
| network_device_memory mem; | network_device_memory mem; | ||||
| device_ptr client_pointer; | device_ptr client_pointer; | ||||
| rcv.read(mem); | rcv.read(mem); | ||||
| ▲ Show 20 Lines • Show All 248 Lines • Show Last 20 Lines | |||||