diff options
author | Sergey Sharybin <sergey@blender.org> | 2021-05-03 16:11:23 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2021-05-03 16:11:23 +0300 |
commit | 2b78d3d7f3e7bb4ee3e64dad969bd43b5bd8b5bb (patch) | |
tree | 9ad8789a6ba3c07c2b036f9498f6546c972848f3 /source | |
parent | 1d7ee50fef71a2baaa2ebcfb8409b5eb33d1bc23 (diff) | |
parent | 1b4f0bf32aa5215325ca33f81898a7eeef9da2f8 (diff) |
Merge branch 'blender-v2.93-release'
Diffstat (limited to 'source')
4 files changed, 26 insertions, 5 deletions
diff --git a/source/blender/compositor/intern/COM_Device.h b/source/blender/compositor/intern/COM_Device.h index 2a43c1be2b4..c848672a405 100644 --- a/source/blender/compositor/intern/COM_Device.h +++ b/source/blender/compositor/intern/COM_Device.h @@ -30,6 +30,14 @@ namespace blender::compositor { class Device { public: + Device() = default; + + Device(const Device &other) = delete; + Device(Device &&other) noexcept = default; + + Device &operator=(const Device &other) = delete; + Device &operator=(Device &&other) = delete; + /** * \brief Declaration of the virtual destructor * \note resolve warning gcc 4.7 diff --git a/source/blender/compositor/intern/COM_OpenCLDevice.cc b/source/blender/compositor/intern/COM_OpenCLDevice.cc index b96dbe91434..0f6ed0dbd2b 100644 --- a/source/blender/compositor/intern/COM_OpenCLDevice.cc +++ b/source/blender/compositor/intern/COM_OpenCLDevice.cc @@ -50,6 +50,16 @@ OpenCLDevice::OpenCLDevice(cl_context context, this->m_queue = clCreateCommandQueue(this->m_context, this->m_device, 0, &error); } +OpenCLDevice::OpenCLDevice(OpenCLDevice &&other) noexcept + : m_context(other.m_context), + m_device(other.m_device), + m_program(other.m_program), + m_queue(other.m_queue), + m_vendorID(other.m_vendorID) +{ + other.m_queue = nullptr; +} + OpenCLDevice::~OpenCLDevice() { if (this->m_queue) { diff --git a/source/blender/compositor/intern/COM_OpenCLDevice.h b/source/blender/compositor/intern/COM_OpenCLDevice.h index 355451cef68..826b0457a49 100644 --- a/source/blender/compositor/intern/COM_OpenCLDevice.h +++ b/source/blender/compositor/intern/COM_OpenCLDevice.h @@ -67,6 +67,9 @@ class OpenCLDevice : public Device { * \param vendorID: */ OpenCLDevice(cl_context context, cl_device_id device, cl_program program, cl_int vendorId); + + OpenCLDevice(OpenCLDevice &&other) noexcept; + ~OpenCLDevice(); /** diff --git a/source/blender/compositor/intern/COM_WorkScheduler.cc b/source/blender/compositor/intern/COM_WorkScheduler.cc index ee3a6dedd44..d578ac24a4a 100644 --- a/source/blender/compositor/intern/COM_WorkScheduler.cc +++ b/source/blender/compositor/intern/COM_WorkScheduler.cc @@ -263,10 +263,10 @@ static void opencl_initialize(const bool use_opencl) if (error2 != CL_SUCCESS) { printf("CLERROR[%d]: %s\n", error2, clewErrorString(error2)); } - g_work_scheduler.opencl.devices.append(OpenCLDevice(g_work_scheduler.opencl.context, - device, - g_work_scheduler.opencl.program, - vendorID)); + g_work_scheduler.opencl.devices.append_as(g_work_scheduler.opencl.context, + device, + g_work_scheduler.opencl.program, + vendorID); } } MEM_freeN(cldevices); @@ -368,7 +368,7 @@ static void threading_model_queue_initialize(const int num_cpu_threads) /* Initialize CPU threads. */ if (!g_work_scheduler.queue.initialized) { for (int index = 0; index < num_cpu_threads; index++) { - g_work_scheduler.queue.devices.append(CPUDevice(index)); + g_work_scheduler.queue.devices.append_as(index); } BLI_thread_local_create(g_thread_device); g_work_scheduler.queue.initialized = true; |