Blender  V3.3
Namespaces | Enumerations | Functions | Variables
COM_WorkScheduler.cc File Reference
#include "COM_WorkScheduler.h"
#include "COM_CPUDevice.h"
#include "COM_CompositorContext.h"
#include "COM_ExecutionGroup.h"
#include "COM_OpenCLDevice.h"
#include "COM_OpenCLKernels.cl.h"
#include "COM_WriteBufferOperation.h"
#include "clew.h"
#include "MEM_guardedalloc.h"
#include "BLI_task.h"
#include "BLI_threads.h"
#include "BLI_vector.hh"
#include "BKE_global.h"

Go to the source code of this file.

Namespaces

 blender
 
 blender::compositor
 

Enumerations

enum class  blender::compositor::ThreadingModel { blender::compositor::SingleThreaded , blender::compositor::Queue , blender::compositor::Task }
 

Functions

constexpr ThreadingModel blender::compositor::COM_threading_model ()
 
constexpr bool blender::compositor::COM_is_opencl_enabled ()
 
static blender::compositor::ThreadLocal (CPUDevice *) g_thread_device
 
OpenCL Scheduling
static void CL_CALLBACK blender::compositor::cl_context_error (const char *errinfo, const void *, size_t, void *)
 
static voidblender::compositor::thread_execute_gpu (void *data)
 
static void blender::compositor::opencl_start (const CompositorContext &context)
 
static bool blender::compositor::opencl_schedule (WorkPackage *package)
 
static void blender::compositor::opencl_finish ()
 
static void blender::compositor::opencl_stop ()
 
static bool blender::compositor::opencl_has_gpu_devices ()
 
static void blender::compositor::opencl_initialize (const bool use_opencl)
 
static void blender::compositor::opencl_deinitialize ()
 
Single threaded Scheduling
static void blender::compositor::threading_model_single_thread_execute (WorkPackage *package)
 
Queue Scheduling
static voidblender::compositor::threading_model_queue_execute (void *data)
 
static void blender::compositor::threading_model_queue_schedule (WorkPackage *package)
 
static void blender::compositor::threading_model_queue_start ()
 
static void blender::compositor::threading_model_queue_finish ()
 
static void blender::compositor::threading_model_queue_stop ()
 
static void blender::compositor::threading_model_queue_initialize (const int num_cpu_threads)
 
static void blender::compositor::threading_model_queue_deinitialize ()
 
Task Scheduling
static void blender::compositor::threading_model_task_execute (TaskPool *__restrict UNUSED(pool), void *task_data)
 
static void blender::compositor::threading_model_task_schedule (WorkPackage *package)
 
static void blender::compositor::threading_model_task_start ()
 
static void blender::compositor::threading_model_task_finish ()
 
static void blender::compositor::threading_model_task_stop ()
 

Variables

struct {
   struct {
      Vector< CPUDevice >   blender::compositor::devices
 list of all CPUDevices. for every hardware thread an instance of CPUDevice is created More...
 
      ListBase   blender::compositor::threads
 list of all thread for every CPUDevice in cpudevices a thread exists. More...
 
      bool   blender::compositor::initialized = false
 
      ThreadQueue *   blender::compositor::queue
 all scheduled work for the cpu More...
 
   }   blender::compositor::queue
 
   struct {
      TaskPool *   blender::compositor::pool
 
   }   blender::compositor::task
 
   struct {
      ThreadQueue *   blender::compositor::queue
 
      cl_context   blender::compositor::context
 
      cl_program   blender::compositor::program
 
      Vector< OpenCLDevice >   blender::compositor::devices
 list of all OpenCLDevices. for every OpenCL GPU device an instance of OpenCLDevice is created. More...
 
      ListBase   blender::compositor::threads
 list of all thread for every GPUDevice in cpudevices a thread exists. More...
 
      bool   blender::compositor::active = false
 all scheduled work for the GPU. More...
 
      bool   blender::compositor::initialized = false
 
   }   blender::compositor::opencl
 
   int   blender::compositor::num_cpu_threads
 
blender::compositor::g_work_scheduler