struct screen {
        
        unsigned char red;
        unsigned char green;  
        unsigned char blue;
        unsigned char alpha;
};

__kernel void AlphaKernel(__global struct screen *cl_input1, __global struct screen *cl_input2, __global struct screen *cl_output)
{
	//unsigned int g_size = get_num_groups(0);
	//unsigned int g_id = get_group_id(0);
	//unsigned int l_size = get_local_size(0);
	//unsigned int l_id = get_local_id(0);
	size_t x = (get_group_id(0) * get_local_size(0)) + get_local_id(0);
	//size_t y = 0; 

	unsigned char total2, total1;
	//unsigned char alpha1, alpha2;
	//unsigned char p1, p2, p3;
        //float p4, p5, p6;
	
	//blue top
        //total1 = cl_input1[x].red + cl_input1[x].green + cl_input1[x].blue + 1;			
	//red bottom
	//total2 = cl_input2[x].red + cl_input2[x].green + cl_input2[x].blue + 1;

	//fraction of pixel to be bottom (red)
	//alpha1 =  (255 - cl_input1[x].alpha)/255;
	//fraction to be top (blue)
	//alpha2 = cl_input1[x].alpha/255;

	//pixel components for bottom          //mix black       
        //p1 = cl_input2[x].red   / total2 * cl_input2[x].alpha * alpha1;
        //p2 = cl_input2[x].green / total2 * cl_input2[x].alpha * alpha1;
        //p3 = cl_input2[x].blue  / total2 * cl_input2[x].alpha * alpha1;

	//add top
	//p1 += cl_input1[x].red   / total1 * cl_input1[x].alpha * alpha2;
	//p2 += cl_input1[x].green / total1 * cl_input1[x].alpha * alpha2;
	//p3 += cl_input1[x].blue  / total1 * cl_input1[x].alpha * alpha2;

	//p1 = (cl_input2[x].red   * cl_input2[x].alpha* alpha1) + (cl_input1[x].red   * cl_input1[x].alpha* alpha2);
	//p2 = (cl_input2[x].green * cl_input2[x].alpha* alpha1) + (cl_input1[x].green * cl_input1[x].alpha* alpha2);
	//p3 = (cl_input2[x].blue  * cl_input2[x].alpha* alpha1) + (cl_input1[x].blue  * cl_input1[x].alpha* alpha2);

	//bottom comp   //top component   
        cl_output[x].red   =  cl_input2[x].red *cl_input2[x].alpha /255;
        cl_output[x].green =  cl_input2[x].green *cl_input2[x].alpha /255;
        cl_output[x].blue  =  cl_input2[x].blue *cl_input2[x].alpha /255;

}
