clray

diff src/ocl.h @ 41:057b8575a1c1

- changed the membuffer into an imagebuffer for the non-GL/CL-interop case - fixed the segfault
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 27 Aug 2010 20:39:55 +0100
parents 1bcbb53b3505
children 8047637961a2
line diff
     1.1 --- a/src/ocl.h	Fri Aug 27 19:00:14 2010 +0100
     1.2 +++ b/src/ocl.h	Fri Aug 27 20:39:55 2010 +0100
     1.3 @@ -22,9 +22,17 @@
     1.4  	MAP_RDWR	= CL_MAP_READ | CL_MAP_WRITE
     1.5  };
     1.6  
     1.7 +enum {
     1.8 +	MEM_BUFFER,
     1.9 +	IMAGE_BUFFER
    1.10 +};
    1.11 +
    1.12  struct CLMemBuffer {
    1.13 +	int type;
    1.14  	cl_mem mem;
    1.15 +
    1.16  	size_t size;
    1.17 +	size_t xsz, ysz;
    1.18  	void *ptr;
    1.19  	unsigned int tex;
    1.20  };
    1.21 @@ -34,7 +42,10 @@
    1.22  void destroy_opencl();
    1.23  
    1.24  CLMemBuffer *create_mem_buffer(int rdwr, size_t sz, const void *buf);
    1.25 -CLMemBuffer *create_mem_buffer(int rdwr, unsigned int tex);
    1.26 +
    1.27 +CLMemBuffer *create_image_buffer(int rdwr, int xsz, int ysz, const void *pixels = 0);
    1.28 +CLMemBuffer *create_image_buffer(int rdwr, unsigned int tex);
    1.29 +
    1.30  void destroy_mem_buffer(CLMemBuffer *mbuf);
    1.31  
    1.32  void *map_mem_buffer(CLMemBuffer *mbuf, int rdwr, cl_event *ev = 0);
    1.33 @@ -87,6 +98,7 @@
    1.34  	bool set_argi(int arg, int val);
    1.35  	bool set_argf(int arg, float val);
    1.36  	bool set_arg_buffer(int arg, int rdwr, size_t sz, const void *buf = 0);
    1.37 +	bool set_arg_image(int arg, int rdwr, int xsz, int ysz, const void *pix = 0);
    1.38  	bool set_arg_texture(int arg, int rdwr, unsigned int tex);
    1.39  	CLMemBuffer *get_arg_buffer(int arg);
    1.40  	int get_num_args() const;