From 699150de2d4f3e7c1eaed6318f6d9923c3671910 Mon Sep 17 00:00:00 2001 From: MitchellHansen Date: Sun, 10 Jan 2016 04:10:38 -0800 Subject: [PATCH] Can't for the life of me get this to work. It's real darn good at crashing my computer though. Probably all those waits... --- Conway_OpenCL/Conway.hpp | 8 ++++---- Conway_OpenCL/conway_compute.cl | 32 ++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/Conway_OpenCL/Conway.hpp b/Conway_OpenCL/Conway.hpp index 7301f89..5c78d4b 100644 --- a/Conway_OpenCL/Conway.hpp +++ b/Conway_OpenCL/Conway.hpp @@ -301,7 +301,7 @@ int main(int argc, char* argv[]) int err = 0; - cl_mem frontBuffer = clCreateFromGLTexture(context , CL_MEM_READ_WRITE, GL_TEXTURE_2D, 0, texture, &err); + cl_mem frontBuffer = clCreateFromGLTexture(context , CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, texture, &err); cl_mem workerCountBuffer = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(int), &WORKER_SIZE, &err); cl_mem gridWidthBuffer = clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(int), &GRID_WIDTH, &err); @@ -335,13 +335,13 @@ int main(int argc, char* argv[]) size_t global_work_size[1] = { 10 }; status = clEnqueueAcquireGLObjects(commandQueue, 1, &frontBuffer, 0, 0, 0); - + glFinish(); status = clEnqueueNDRangeKernel(commandQueue, compute_kernel, 1, NULL, global_work_size, NULL, 0, NULL, NULL); - + glFinish(); //status = clEnqueueReadBuffer(commandQueue, frontBuffer, CL_TRUE, 0, GRID_WIDTH * GRID_HEIGHT * 4 * sizeof(unsigned char), (void*)pixel_array, 0, NULL, NULL); status = clEnqueueReleaseGLObjects(commandQueue, 1, &frontBuffer, 0, NULL, NULL); - + glFinish(); // ======================================= Rendering Shtuff ================================================= diff --git a/Conway_OpenCL/conway_compute.cl b/Conway_OpenCL/conway_compute.cl index fa8deeb..a436b4c 100644 --- a/Conway_OpenCL/conway_compute.cl +++ b/Conway_OpenCL/conway_compute.cl @@ -1,21 +1,25 @@ -__kernel void conway_compute(__global unsigned char* front_grid, __global int* num_workers, __global int* grid_width, __global int* grid_height) +__kernel void conway_compute(__write_only image2d_t front_grid, __global int* num_workers, __global int* grid_width, __global int *grid_height) { + +//int width = *grid_width; +//int height = grid_height; + +int2 pixelcoord = (int2) (get_global_id(0), get_global_id(1)); +//if (pixelcoord.x < width && pixelcoord.y < height) +//{ + //float4 pixel = read_imagef(image1, sampler, (int2)(pixelcoord.x, pixelcoord.y)); + float4 black = (float4)(0,0,0,0); + + + // write_imagef(front_grid, pixelcoord, black); + + int num = *grid_width * *grid_height * 4; for (int i = 0; i < num ; i += 4){ - front_grid[i] = 0; - front_grid[i + 1] = 0; - front_grid[i + 2] = 0; - front_grid[i + 3] = 0; - + write_imagef(front_grid, pixelcoord, black); +// } - - front_grid[90000] = 0; - front_grid[90001] = 0; - front_grid[90002] = 0; - front_grid[90003] = 0; - front_grid[90004] = 0; - front_grid[90005] = 0; - front_grid[90006] = 0; +//} } \ No newline at end of file