You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.3 KiB
						
					
					
				| #define UV_SIZE ((TRANSFORMED_WIDTH/2)*(TRANSFORMED_HEIGHT/2))
 | |
| 
 | |
| __kernel void loadys(__global uchar8 const * const Y,
 | |
|                      __global uchar * out,
 | |
|                      int out_offset)
 | |
| {
 | |
|     const int gid = get_global_id(0);
 | |
|     const int ois = gid * 8;
 | |
|     const int oy = ois / TRANSFORMED_WIDTH;
 | |
|     const int ox = ois % TRANSFORMED_WIDTH;
 | |
| 
 | |
|     const uchar8 ys = Y[gid];
 | |
| 
 | |
|     // 02
 | |
|     // 13
 | |
| 
 | |
|     __global uchar* outy0;
 | |
|     __global uchar* outy1;
 | |
|     if ((oy & 1) == 0) {
 | |
|       outy0 = out + out_offset; //y0
 | |
|       outy1 = out + out_offset + UV_SIZE*2; //y2
 | |
|     } else {
 | |
|       outy0 = out + out_offset + UV_SIZE; //y1
 | |
|       outy1 = out + out_offset + UV_SIZE*3; //y3
 | |
|     }
 | |
| 
 | |
|     vstore4(ys.s0246, 0, outy0 + (oy/2) * (TRANSFORMED_WIDTH/2) + ox/2);
 | |
|     vstore4(ys.s1357, 0, outy1 + (oy/2) * (TRANSFORMED_WIDTH/2) + ox/2);
 | |
| }
 | |
| 
 | |
| __kernel void loaduv(__global uchar8 const * const in,
 | |
|                      __global uchar8 * out,
 | |
|                      int out_offset)
 | |
| {
 | |
|   const int gid = get_global_id(0);
 | |
|   const uchar8 inv = in[gid];
 | |
|   out[gid + out_offset / 8] = inv;
 | |
| }
 | |
| 
 | |
| __kernel void copy(__global uchar8 * in,
 | |
|                    __global uchar8 * out,
 | |
|                    int in_offset,
 | |
|                    int out_offset)
 | |
| {
 | |
|   const int gid = get_global_id(0);
 | |
|   out[gid + out_offset / 8] = in[gid + in_offset / 8];
 | |
| }
 | |
| 
 |