index 7d070e1c3da51b5919adb1f08f49c29c436dcbc8..601ea32807d43646d94e49d0bb2e35032dd1d1b2 100644 (file)
using namespace cl;
using namespace std;
-static const int NumElements = 1920 * 1200; /* Maximum resolution */
-
-static cl_uchar src [NumElements];
-static cl_uchar dst [NumElements];
-
static int oclconv_imgproc(char *kernelName, unsigned char *data_in, unsigned char *data_out, int width, int height, int sstride, int dstride)
{
cl_int err = CL_SUCCESS;
- int bufsize = sizeof(src);
+ int bufsize = sstride * height * sizeof(unsigned char);
#ifdef VERBOSE
ofstream logfile;
logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app);
logfile << "Entered oclconv_test, width=" << width << " height=" << height << " dstride=" << dstride << " sstride=" << sstride << '\n';
logfile.close();
-#endif
- unsigned char *ptr_src = src;
- unsigned char *ptr_data_in = data_in;
- for (int y=0; y < height; y++)
- {
- memcpy (ptr_src, ptr_data_in, width);
- ptr_src += sstride;
- ptr_data_in += sstride;
- }
-#ifdef VERBOSE
- logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app);
- logfile << "Transfer done, starting openCL specific commands" << '\n';
- logfile.close();
#endif
try
{
@@ -89,29 +71,12 @@ static int oclconv_imgproc(char *kernelName, unsigned char *data_in, unsigned ch
CommandQueue Q(context, devices[0], CL_QUEUE_PROFILING_ENABLE);
- Q.enqueueWriteBuffer(bufA, CL_FALSE, 0, bufsize, src, NULL, &ev1);
- //Q.enqueueNDRangeKernel(kernel, NullRange, NDRange(NumVecElements),
- // NDRange(WorkGroupSize), NULL, &ev3);
+ Q.enqueueWriteBuffer(bufA, CL_FALSE, 0, bufsize, data_in, NULL, &ev1);
Q.enqueueTask (kernel, NULL, &ev3);
- Q.enqueueReadBuffer (bufDst, CL_TRUE, 0, bufsize, dst, NULL, &ev4);
+ Q.enqueueReadBuffer (bufDst, CL_TRUE, 0, bufsize, data_out, NULL, &ev4);
}
catch (Error err)
- { cerr << "ERROR: " << err.what() << "(" << err.err() << ")" << endl; }
-#ifdef VERBOSE
- logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app);
- logfile << "OpenCL done, start transfer to output array!" << '\n';
- logfile.close();
-#endif
-
- unsigned char *ptr_dst = dst;
- unsigned char *ptr_data_out = data_out;
- for (int y=0; y < height; y++)
- {
- memcpy (ptr_data_out, ptr_dst, width);
- ptr_dst += dstride;
- ptr_data_out += dstride;
- }
-
+ { cerr << "ERROR: " << err.what() << "(" << err.err() << ")" << endl; return -1; }
#ifdef VERBOSE
logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app);
logfile << "Success!" << endl;
return 0;
}
+
#ifdef __cplusplus
extern "C" {
#endif