Changeset View
Changeset View
Standalone View
Standalone View
source/blender/compositor/operations/COM_GaussianYBlurOperation.cpp
| Context not available. | |||||
| */ | */ | ||||
| #include "COM_GaussianYBlurOperation.h" | #include "COM_GaussianYBlurOperation.h" | ||||
| #include "COM_OpenCLDevice.h" | |||||
| #include "BLI_math.h" | #include "BLI_math.h" | ||||
| #include "MEM_guardedalloc.h" | #include "MEM_guardedalloc.h" | ||||
| Context not available. | |||||
| mul_v4_v4fl(output, color_accum, 1.0f / multiplier_accum); | mul_v4_v4fl(output, color_accum, 1.0f / multiplier_accum); | ||||
| } | } | ||||
| void GaussianYBlurOperation::executeOpenCL(OpenCLDevice *device, | |||||
| MemoryBuffer *outputMemoryBuffer, cl_mem clOutputBuffer, | |||||
| MemoryBuffer **inputMemoryBuffers, list<cl_mem> *clMemToCleanUp, | |||||
| list<cl_kernel> *clKernelsToCleanUp) | |||||
| { | |||||
| cl_kernel gaussianYBlurOperationKernel = device->COM_clCreateKernel("gaussianYBlurOperationKernel", NULL); | |||||
| cl_int filter_size = this->m_filtersize; | |||||
| cl_mem gausstab = clCreateBuffer(device->getContext(), | |||||
| CL_MEM_READ_ONLY | CL_MEM_USE_HOST_PTR, | |||||
| sizeof(float) * (this->m_filtersize * 2 + 1), | |||||
| this->m_gausstab, | |||||
| NULL); | |||||
| device->COM_clAttachMemoryBufferToKernelParameter(gaussianYBlurOperationKernel, 0, 1, clMemToCleanUp, inputMemoryBuffers, this->m_inputProgram); | |||||
| device->COM_clAttachOutputMemoryBufferToKernelParameter(gaussianYBlurOperationKernel, 2, clOutputBuffer); | |||||
| device->COM_clAttachMemoryBufferOffsetToKernelParameter(gaussianYBlurOperationKernel, 3, outputMemoryBuffer); | |||||
| clSetKernelArg(gaussianYBlurOperationKernel, 4, sizeof(cl_int), &filter_size); | |||||
| device->COM_clAttachSizeToKernelParameter(gaussianYBlurOperationKernel, 5, this); | |||||
| clSetKernelArg(gaussianYBlurOperationKernel, 6, sizeof(cl_mem), &gausstab); | |||||
| device->COM_clEnqueueRange(gaussianYBlurOperationKernel, outputMemoryBuffer, 7, this); | |||||
| clReleaseMemObject(gausstab); | |||||
| } | |||||
| void GaussianYBlurOperation::deinitExecution() | void GaussianYBlurOperation::deinitExecution() | ||||
| { | { | ||||
| BlurBaseOperation::deinitExecution(); | BlurBaseOperation::deinitExecution(); | ||||
| Context not available. | |||||