Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/device/device_cpu.cpp
| Show First 20 Lines • Show All 390 Lines • ▼ Show 20 Lines | virtual void mem_alloc(device_memory &mem) override | ||||
| } | } | ||||
| else { | else { | ||||
| if (mem.name) { | if (mem.name) { | ||||
| VLOG(1) << "Buffer allocate: " << mem.name << ", " | VLOG(1) << "Buffer allocate: " << mem.name << ", " | ||||
| << string_human_readable_number(mem.memory_size()) << " bytes. (" | << string_human_readable_number(mem.memory_size()) << " bytes. (" | ||||
| << string_human_readable_size(mem.memory_size()) << ")"; | << string_human_readable_size(mem.memory_size()) << ")"; | ||||
| } | } | ||||
| if (mem.type == MEM_DEVICE_ONLY) { | if (mem.type == MEM_DEVICE_ONLY || !mem.host_pointer) { | ||||
| assert(!mem.host_pointer); | |||||
| size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES; | size_t alignment = MIN_ALIGNMENT_CPU_DATA_TYPES; | ||||
| void *data = util_aligned_malloc(mem.memory_size(), alignment); | void *data = util_aligned_malloc(mem.memory_size(), alignment); | ||||
| mem.device_pointer = (device_ptr)data; | mem.device_pointer = (device_ptr)data; | ||||
| } | } | ||||
| else { | else { | ||||
| mem.device_pointer = (device_ptr)mem.host_pointer; | mem.device_pointer = (device_ptr)mem.host_pointer; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | #endif /* WITH_EMBREE */ | ||||
| { | { | ||||
| if (mem.type == MEM_GLOBAL) { | if (mem.type == MEM_GLOBAL) { | ||||
| global_free(mem); | global_free(mem); | ||||
| } | } | ||||
| else if (mem.type == MEM_TEXTURE) { | else if (mem.type == MEM_TEXTURE) { | ||||
| tex_free((device_texture &)mem); | tex_free((device_texture &)mem); | ||||
| } | } | ||||
| else if (mem.device_pointer) { | else if (mem.device_pointer) { | ||||
| if (mem.type == MEM_DEVICE_ONLY) { | if (mem.type == MEM_DEVICE_ONLY || !mem.host_pointer) { | ||||
| util_aligned_free((void *)mem.device_pointer); | util_aligned_free((void *)mem.device_pointer); | ||||
| } | } | ||||
| mem.device_pointer = 0; | mem.device_pointer = 0; | ||||
| stats.mem_free(mem.device_size); | stats.mem_free(mem.device_size); | ||||
| mem.device_size = 0; | mem.device_size = 0; | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 1,210 Lines • Show Last 20 Lines | |||||