Blender
V3.3
|
device representing an GPU OpenCL device. an instance of this class represents a single cl_device More...
#include <COM_OpenCLDevice.h>
Public Member Functions | |
OpenCLDevice (cl_context context, cl_device_id device, cl_program program, cl_int vendor_id) | |
constructor with opencl device More... | |
OpenCLDevice (OpenCLDevice &&other) noexcept | |
~OpenCLDevice () | |
void | execute (WorkPackage *work) override |
execute a WorkPackage More... | |
cl_context | get_context () |
cl_command_queue | get_queue () |
cl_mem | COM_cl_attach_memory_buffer_to_kernel_parameter (cl_kernel kernel, int parameter_index, int offset_index, std::list< cl_mem > *cleanup, MemoryBuffer **input_memory_buffers, SocketReader *reader) |
cl_mem | COM_cl_attach_memory_buffer_to_kernel_parameter (cl_kernel kernel, int parameter_index, int offset_index, std::list< cl_mem > *cleanup, MemoryBuffer **input_memory_buffers, ReadBufferOperation *reader) |
void | COM_cl_attach_memory_buffer_offset_to_kernel_parameter (cl_kernel kernel, int offset_index, MemoryBuffer *memory_buffers) |
void | COM_cl_attach_output_memory_buffer_to_kernel_parameter (cl_kernel kernel, int parameter_index, cl_mem cl_output_memory_buffer) |
void | COM_cl_attach_size_to_kernel_parameter (cl_kernel kernel, int offset_index, NodeOperation *operation) |
void | COM_cl_enqueue_range (cl_kernel kernel, MemoryBuffer *output_memory_buffer) |
void | COM_cl_enqueue_range (cl_kernel kernel, MemoryBuffer *output_memory_buffer, int offset_index, NodeOperation *operation) |
cl_kernel | COM_cl_create_kernel (const char *kernelname, std::list< cl_kernel > *cl_kernels_to_clean_up) |
![]() | |
Device ()=default | |
Device (const Device &other)=delete | |
Device (Device &&other) noexcept=default | |
Device & | operator= (const Device &other)=delete |
Device & | operator= (Device &&other)=delete |
virtual | ~Device () |
Declaration of the virtual destructor. More... | |
Static Public Member Functions | |
static const cl_image_format * | determine_image_format (MemoryBuffer *memory_buffer) |
determine an image format More... | |
device representing an GPU OpenCL device. an instance of this class represents a single cl_device
Definition at line 26 of file COM_OpenCLDevice.h.
blender::compositor::OpenCLDevice::OpenCLDevice | ( | cl_context | context, |
cl_device_id | device, | ||
cl_program | program, | ||
cl_int | vendor_id | ||
) |
constructor with opencl device
context | |
device | |
program | |
vendorID |
Definition at line 25 of file COM_OpenCLDevice.cc.
References blender::compositor::context, error(), and blender::compositor::program.
|
noexcept |
Definition at line 40 of file COM_OpenCLDevice.cc.
blender::compositor::OpenCLDevice::~OpenCLDevice | ( | ) |
Definition at line 50 of file COM_OpenCLDevice.cc.
void blender::compositor::OpenCLDevice::COM_cl_attach_memory_buffer_offset_to_kernel_parameter | ( | cl_kernel | kernel, |
int | offset_index, | ||
MemoryBuffer * | memory_buffers | ||
) |
Definition at line 146 of file COM_OpenCLDevice.cc.
References error(), blender::compositor::MemoryBuffer::get_rect(), kernel, offset, rcti::xmin, and rcti::ymin.
Referenced by COM_cl_attach_memory_buffer_to_kernel_parameter(), blender::compositor::BokehBlurOperation::execute_opencl(), blender::compositor::DilateDistanceOperation::execute_opencl(), blender::compositor::ErodeDistanceOperation::execute_opencl(), blender::compositor::DirectionalBlurOperation::execute_opencl(), blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::VariableSizeBokehBlurOperation::execute_opencl().
cl_mem blender::compositor::OpenCLDevice::COM_cl_attach_memory_buffer_to_kernel_parameter | ( | cl_kernel | kernel, |
int | parameter_index, | ||
int | offset_index, | ||
std::list< cl_mem > * | cleanup, | ||
MemoryBuffer ** | input_memory_buffers, | ||
ReadBufferOperation * | reader | ||
) |
Definition at line 107 of file COM_OpenCLDevice.cc.
References COM_cl_attach_memory_buffer_offset_to_kernel_parameter(), determine_image_format(), error(), blender::compositor::ReadBufferOperation::get_input_memory_buffer(), kernel, and result.
cl_mem blender::compositor::OpenCLDevice::COM_cl_attach_memory_buffer_to_kernel_parameter | ( | cl_kernel | kernel, |
int | parameter_index, | ||
int | offset_index, | ||
std::list< cl_mem > * | cleanup, | ||
MemoryBuffer ** | input_memory_buffers, | ||
SocketReader * | reader | ||
) |
Definition at line 72 of file COM_OpenCLDevice.cc.
References kernel.
Referenced by blender::compositor::BokehBlurOperation::execute_opencl(), blender::compositor::DilateDistanceOperation::execute_opencl(), blender::compositor::ErodeDistanceOperation::execute_opencl(), blender::compositor::DirectionalBlurOperation::execute_opencl(), blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::VariableSizeBokehBlurOperation::execute_opencl().
void blender::compositor::OpenCLDevice::COM_cl_attach_output_memory_buffer_to_kernel_parameter | ( | cl_kernel | kernel, |
int | parameter_index, | ||
cl_mem | cl_output_memory_buffer | ||
) |
Definition at line 176 of file COM_OpenCLDevice.cc.
References error(), and kernel.
Referenced by blender::compositor::BokehBlurOperation::execute_opencl(), blender::compositor::DilateDistanceOperation::execute_opencl(), blender::compositor::ErodeDistanceOperation::execute_opencl(), blender::compositor::DirectionalBlurOperation::execute_opencl(), blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::VariableSizeBokehBlurOperation::execute_opencl().
void blender::compositor::OpenCLDevice::COM_cl_attach_size_to_kernel_parameter | ( | cl_kernel | kernel, |
int | offset_index, | ||
NodeOperation * | operation | ||
) |
Definition at line 161 of file COM_OpenCLDevice.cc.
References error(), blender::compositor::NodeOperation::get_height(), blender::compositor::NodeOperation::get_width(), kernel, and offset.
Referenced by blender::compositor::BokehBlurOperation::execute_opencl(), blender::compositor::DilateDistanceOperation::execute_opencl(), blender::compositor::ErodeDistanceOperation::execute_opencl(), blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::VariableSizeBokehBlurOperation::execute_opencl().
cl_kernel blender::compositor::OpenCLDevice::COM_cl_create_kernel | ( | const char * | kernelname, |
std::list< cl_kernel > * | cl_kernels_to_clean_up | ||
) |
Definition at line 254 of file COM_OpenCLDevice.cc.
References error(), and kernel.
Referenced by blender::compositor::BokehBlurOperation::execute_opencl(), blender::compositor::DilateDistanceOperation::execute_opencl(), blender::compositor::ErodeDistanceOperation::execute_opencl(), blender::compositor::DirectionalBlurOperation::execute_opencl(), blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::VariableSizeBokehBlurOperation::execute_opencl().
void blender::compositor::OpenCLDevice::COM_cl_enqueue_range | ( | cl_kernel | kernel, |
MemoryBuffer * | output_memory_buffer | ||
) |
Definition at line 186 of file COM_OpenCLDevice.cc.
References error(), blender::compositor::MemoryBuffer::get_height(), blender::compositor::MemoryBuffer::get_width(), kernel, and size().
Referenced by blender::compositor::BokehBlurOperation::execute_opencl(), blender::compositor::DilateDistanceOperation::execute_opencl(), blender::compositor::ErodeDistanceOperation::execute_opencl(), blender::compositor::DirectionalBlurOperation::execute_opencl(), blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::VariableSizeBokehBlurOperation::execute_opencl().
void blender::compositor::OpenCLDevice::COM_cl_enqueue_range | ( | cl_kernel | kernel, |
MemoryBuffer * | output_memory_buffer, | ||
int | offset_index, | ||
NodeOperation * | operation | ||
) |
Definition at line 200 of file COM_OpenCLDevice.cc.
References error(), blender::compositor::MemoryBuffer::get_height(), blender::compositor::MemoryBuffer::get_width(), height, blender::compositor::NodeOperation::is_braked(), kernel, blender::compositor::NVIDIA, offset, size(), and width.
|
static |
determine an image format
memorybuffer |
Definition at line 88 of file COM_OpenCLDevice.cc.
References BLI_assert_msg, blender::compositor::MemoryBuffer::get_num_channels(), blender::compositor::IMAGE_FORMAT_COLOR, blender::compositor::IMAGE_FORMAT_VALUE, and blender::compositor::IMAGE_FORMAT_VECTOR.
Referenced by COM_cl_attach_memory_buffer_to_kernel_parameter(), and blender::compositor::WriteBufferOperation::execute_opencl_region().
|
overridevirtual |
execute a WorkPackage
work | the WorkPackage to execute |
Implements blender::compositor::Device.
Definition at line 57 of file COM_OpenCLDevice.cc.
References blender::compositor::ExecutionGroup::allocate_output_buffer(), blender::compositor::WorkPackage::chunk_number, blender::compositor::NodeOperation::execute_opencl_region(), blender::compositor::WorkPackage::execution_group, blender::compositor::ExecutionGroup::finalize_chunk_execution(), blender::compositor::ExecutionGroup::get_input_buffers_opencl(), blender::compositor::ExecutionGroup::get_output_operation(), and blender::compositor::WorkPackage::rect.
|
inline |
Definition at line 79 of file COM_OpenCLDevice.h.
Referenced by blender::compositor::GaussianXBlurOperation::execute_opencl(), blender::compositor::GaussianYBlurOperation::execute_opencl(), and blender::compositor::WriteBufferOperation::execute_opencl_region().
|
inline |
Definition at line 84 of file COM_OpenCLDevice.h.
Referenced by blender::compositor::WriteBufferOperation::execute_opencl_region().