mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +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");
|
CV_Error(CV_StsUnsupportedFormat, "unknown depth");
|
||||||
}
|
}
|
||||||
#ifdef CL_VERSION_1_2
|
#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
|
else
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
args.push_back( make_pair( sizeof(cl_mem) , (void *)&dst.data ));
|
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.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 *)&step_in_pixel ));
|
||||||
args.push_back( make_pair( sizeof(cl_int) , (void *)&offset_in_pixel));
|
args.push_back( make_pair( sizeof(cl_int) , (void *)&offset_in_pixel));
|
||||||
openCLExecuteKernel(dst.clCxt , &operator_setTo, kernelName, globalThreads,
|
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)
|
static void set_to_withmask_run(const oclMat &dst, const Scalar &scalar, const oclMat &mask, string kernelName)
|
||||||
|
@ -45,10 +45,6 @@
|
|||||||
|
|
||||||
#include "precomp.hpp"
|
#include "precomp.hpp"
|
||||||
|
|
||||||
#ifndef CL_VERSION_1_2
|
|
||||||
#define CL_VERSION_1_2 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
namespace cv
|
namespace cv
|
||||||
@ -162,9 +158,11 @@ namespace cv
|
|||||||
CV_Error(-1, "Image forma is not supported");
|
CV_Error(-1, "Image forma is not supported");
|
||||||
break;
|
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(Context::getContext()->supportsFeature(Context::CL_VER_1_2))
|
||||||
{
|
{
|
||||||
#if CL_VERSION_1_2
|
|
||||||
cl_image_desc desc;
|
cl_image_desc desc;
|
||||||
desc.image_type = CL_MEM_OBJECT_IMAGE2D;
|
desc.image_type = CL_MEM_OBJECT_IMAGE2D;
|
||||||
desc.image_width = mat.cols;
|
desc.image_width = mat.cols;
|
||||||
@ -176,12 +174,10 @@ namespace cv
|
|||||||
desc.buffer = NULL;
|
desc.buffer = NULL;
|
||||||
desc.num_mip_levels = 0;
|
desc.num_mip_levels = 0;
|
||||||
desc.num_samples = 0;
|
desc.num_samples = 0;
|
||||||
texture = clCreateImage((cl_context)mat.clCxt->oclContext(), CL_MEM_READ_WRITE, &format, &desc, NULL, &err);
|
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
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
texture = clCreateImage2D(
|
texture = clCreateImage2D(
|
||||||
(cl_context)mat.clCxt->oclContext(),
|
(cl_context)mat.clCxt->oclContext(),
|
||||||
|
Loading…
Reference in New Issue
Block a user