void path_trace(RenderTile& rtile, int sample) { /* Cast arguments to cl types. */ cl_mem d_data = CL_MEM_PTR(const_mem_map["__data"]->device_pointer); cl_mem d_buffer = CL_MEM_PTR(rtile.buffer); cl_mem d_rng_state = CL_MEM_PTR(rtile.rng_state); cl_int d_x = rtile.x; cl_int d_y = rtile.y; cl_int d_w = rtile.w; cl_int d_h = rtile.h; cl_int d_offset = rtile.offset; cl_int d_stride = rtile.stride; /* Sample arguments. */ cl_int d_sample = sample; cl_kernel ckPathTraceKernel = path_trace_program(ustring("path_trace")); cl_uint start_arg_index = kernel_set_args(ckPathTraceKernel, 0, d_data, d_buffer, d_rng_state); #define KERNEL_TEX(type, ttype, name) \ set_kernel_arg_mem(ckPathTraceKernel, &start_arg_index, #name); #include "kernel_textures.h" #undef KERNEL_TEX start_arg_index += kernel_set_args(ckPathTraceKernel, start_arg_index, d_sample, d_x, d_y, d_w, d_h, d_offset, d_stride); enqueue_kernel(ckPathTraceKernel, d_w, d_h); }
void path_trace(RenderTile& rtile, int sample) { scoped_timer timer(&rtile.buffers->render_time); /* Cast arguments to cl types. */ cl_mem d_data = CL_MEM_PTR(const_mem_map["__data"]->device_pointer); cl_mem d_buffer = CL_MEM_PTR(rtile.buffer); cl_int d_x = rtile.x; cl_int d_y = rtile.y; cl_int d_w = rtile.w; cl_int d_h = rtile.h; cl_int d_offset = rtile.offset; cl_int d_stride = rtile.stride; /* Sample arguments. */ cl_int d_sample = sample; cl_kernel ckPathTraceKernel = path_trace_program(ustring("path_trace")); cl_uint start_arg_index = kernel_set_args(ckPathTraceKernel, 0, d_data, d_buffer); set_kernel_arg_buffers(ckPathTraceKernel, &start_arg_index); start_arg_index += kernel_set_args(ckPathTraceKernel, start_arg_index, d_sample, d_x, d_y, d_w, d_h, d_offset, d_stride); enqueue_kernel(ckPathTraceKernel, d_w, d_h); }