mirror of
https://github.com/opencv/opencv.git
synced 2024-11-28 13:10:12 +08:00
ocl: Enable backward binary portability for setTo function.
This commit is contained in:
parent
355bc691fc
commit
1eca49f40b
@ -593,11 +593,16 @@ static void set_to_withoutmask_run(const oclMat &dst, const Scalar &scalar, stri
|
||||
CV_Error(CV_StsUnsupportedFormat, "unknown depth");
|
||||
}
|
||||
#ifdef CL_VERSION_1_2
|
||||
if(dst.offset == 0 && dst.cols == dst.wholecols)
|
||||
//this enables backwards portability to
|
||||
//run on OpenCL 1.1 platform if library binaries are compiled with OpenCL 1.2 support
|
||||
if(Context::getContext()->supportsFeature(Context::CL_VER_1_2) &&
|
||||
dst.offset == 0 && dst.cols == dst.wholecols)
|
||||
{
|
||||
clEnqueueFillBuffer((cl_command_queue)dst.clCxt->oclCommandQueue(), (cl_mem)dst.data, args[0].second, args[0].first, 0, dst.step * dst.rows, 0, NULL, NULL);
|
||||
clEnqueueFillBuffer((cl_command_queue)dst.clCxt->oclCommandQueue(),
|
||||
(cl_mem)dst.data, args[0].second, args[0].first, 0, dst.step * dst.rows, 0, NULL, NULL);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst.data ));
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&dst.cols ));
|
||||
@ -605,17 +610,8 @@ static void set_to_withoutmask_run(const oclMat &dst, const Scalar &scalar, stri
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&step_in_pixel ));
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&offset_in_pixel));
|
||||
openCLExecuteKernel(dst.clCxt , &operator_setTo, kernelName, globalThreads,
|
||||
localThreads, args, -1, -1, compile_option);
|
||||
localThreads, args, -1, -1, compile_option);
|
||||
}
|
||||
#else
|
||||
args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst.data ));
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&dst.cols ));
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&dst.rows ));
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&step_in_pixel ));
|
||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&offset_in_pixel));
|
||||
openCLExecuteKernel(dst.clCxt , &operator_setTo, kernelName, globalThreads,
|
||||
localThreads, args, -1, -1, compile_option);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void set_to_withmask_run(const oclMat &dst, const Scalar &scalar, const oclMat &mask, string kernelName)
|
||||
|
@ -45,10 +45,6 @@
|
||||
|
||||
#include "precomp.hpp"
|
||||
|
||||
#ifndef CL_VERSION_1_2
|
||||
#define CL_VERSION_1_2 0
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace cv
|
||||
@ -162,9 +158,11 @@ namespace cv
|
||||
CV_Error(-1, "Image forma is not supported");
|
||||
break;
|
||||
}
|
||||
#ifdef CL_VERSION_1_2
|
||||
//this enables backwards portability to
|
||||
//run on OpenCL 1.1 platform if library binaries are compiled with OpenCL 1.2 support
|
||||
if(Context::getContext()->supportsFeature(Context::CL_VER_1_2))
|
||||
{
|
||||
#if CL_VERSION_1_2
|
||||
cl_image_desc desc;
|
||||
desc.image_type = CL_MEM_OBJECT_IMAGE2D;
|
||||
desc.image_width = mat.cols;
|
||||
@ -176,12 +174,10 @@ namespace cv
|
||||
desc.buffer = NULL;
|
||||
desc.num_mip_levels = 0;
|
||||
desc.num_samples = 0;
|
||||
texture = clCreateImage((cl_context)mat.clCxt->oclContext(), CL_MEM_READ_WRITE, &format, &desc, NULL, &err);
|
||||
#else
|
||||
CV_Error(CV_StsBadFunc, "Non-deprecated image creation API call is not supported.");
|
||||
#endif
|
||||
texture = clCreateImage((cl_context)mat.clCxt->oclContext(), CL_MEM_READ_WRITE, &format, &desc, NULL, &err);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
texture = clCreateImage2D(
|
||||
(cl_context)mat.clCxt->oclContext(),
|
||||
|
Loading…
Reference in New Issue
Block a user