Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
52867 views
1
/* Weightp filter a downscaled image into a temporary output buffer.
2
* This kernel is launched once for each scale.
3
*
4
* Launch dimensions: width x height (in pixels)
5
*/
6
kernel void weightp_scaled_images( read_only image2d_t in_plane,
7
write_only image2d_t out_plane,
8
uint offset,
9
uint scale,
10
uint denom )
11
{
12
int gx = get_global_id( 0 );
13
int gy = get_global_id( 1 );
14
uint4 input_val;
15
uint4 output_val;
16
17
input_val = read_imageui( in_plane, sampler, (int2)(gx, gy));
18
output_val = (uint4)(offset) + ( ( ((uint4)(scale)) * input_val ) >> ((uint4)(denom)) );
19
write_imageui( out_plane, (int2)(gx, gy), output_val );
20
}
21
22
/* Weightp filter for the half-pel interpolated image
23
*
24
* Launch dimensions: width x height (in pixels)
25
*/
26
kernel void weightp_hpel( read_only image2d_t in_plane,
27
write_only image2d_t out_plane,
28
uint offset,
29
uint scale,
30
uint denom )
31
{
32
int gx = get_global_id( 0 );
33
int gy = get_global_id( 1 );
34
uint input_val;
35
uint output_val;
36
37
input_val = read_imageui( in_plane, sampler, (int2)(gx, gy)).s0;
38
//Unpack
39
uint4 temp;
40
temp.s0 = input_val & 0x00ff; temp.s1 = (input_val >> 8) & 0x00ff;
41
temp.s2 = (input_val >> 16) & 0x00ff; temp.s3 = (input_val >> 24) & 0x00ff;
42
43
temp = (uint4)(offset) + ( ( ((uint4)(scale)) * temp ) >> ((uint4)(denom)) );
44
45
//Pack
46
output_val = temp.s0 | (temp.s1 << 8) | (temp.s2 << 16) | (temp.s3 << 24);
47
write_imageui( out_plane, (int2)(gx, gy), output_val );
48
}
49
50