Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey@blender.org>2021-05-03 16:11:23 +0300
committerSergey Sharybin <sergey@blender.org>2021-05-03 16:11:23 +0300
commit2b78d3d7f3e7bb4ee3e64dad969bd43b5bd8b5bb (patch)
tree9ad8789a6ba3c07c2b036f9498f6546c972848f3 /source/blender/compositor/intern
parent1d7ee50fef71a2baaa2ebcfb8409b5eb33d1bc23 (diff)
parent1b4f0bf32aa5215325ca33f81898a7eeef9da2f8 (diff)
Merge branch 'blender-v2.93-release'
Diffstat (limited to 'source/blender/compositor/intern')
-rw-r--r--source/blender/compositor/intern/COM_Device.h8
-rw-r--r--source/blender/compositor/intern/COM_OpenCLDevice.cc10
-rw-r--r--source/blender/compositor/intern/COM_OpenCLDevice.h3
-rw-r--r--source/blender/compositor/intern/COM_WorkScheduler.cc10
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;