1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #pragma version(1) 18 #pragma rs java_package_name(com.android.rs.cppkernelvariables) 19 20 char char_global = 12; 21 uchar uchar_global = 234; 22 short short_global = -321; 23 ushort ushort_global = 432; 24 int int_global = 1234; 25 uint uint_global = 2345; 26 float float_global = 4.5f; 27 long long_global = -77777; 28 ulong ulong_global = 8888; 29 double double_global = -456.5f; 30 31 char2 char2_global = {11, -22}; 32 uchar2 uchar2_global = {33, 44}; 33 short2 short2_global = {-555, 666}; 34 ushort2 ushort2_global = {777, 888}; 35 int2 int2_global = {999, -1111}; 36 uint2 uint2_global = {2222, 3333}; 37 float2 float2_global = {4.5f, -5.0f}; 38 long2 long2_global = {-4444, 5555}; 39 ulong2 ulong2_global = {6666, 7777}; 40 double2 double2_global = {88.5f, -99.0f}; 41 42 char3 char3_global = {11, -22, -33}; 43 uchar3 uchar3_global = {33, 44, 55}; 44 short3 short3_global = {-555, 666, 777}; 45 ushort3 ushort3_global = {777, 888, 999}; 46 int3 int3_global = {999, -1111, 2222}; 47 uint3 uint3_global = {2222, 3333, 4444}; 48 float3 float3_global = {4.5f, -5.0f, -6.5f}; 49 long3 long3_global = {-4444, 5555, 6666}; 50 ulong3 ulong3_global = {6666, 7777, 8888}; 51 double3 double3_global = {88.5f, -99.0f, 111.5f}; 52 53 char4 char4_global = {55, 11, -22, -33}; 54 uchar4 uchar4_global = {222, 33, 44, 55}; 55 short4 short4_global = {-444, -555, 666, 777}; 56 ushort4 ushort4_global = {666, 777, 888, 999}; 57 int4 int4_global = {888, 999, -1111, 2222}; 58 uint4 uint4_global = {1111, 2222, 3333, 4444}; 59 float4 float4_global = {3.0f, 4.5f, -5.0f, -6.5f}; 60 long4 long4_global = {-3333, -4444, 5555, 6666}; 61 ulong4 ulong4_global = {5555, 6666, 7777, 8888}; 62 double4 double4_global = {-77.0f, 88.5f, -99.0f, 111.5f}; 63 64 rs_matrix2x2 matrix2x2_global; 65 rs_matrix3x3 matrix3x3_global; 66 rs_matrix4x4 matrix4x4_global; 67 68 rs_quaternion quaternion_global; 69 70 rs_allocation allocation_1D_global; 71 rs_allocation allocation_1D_global2; 72 rs_allocation allocation_2D_global; 73 rs_allocation allocation_2D_global2; 74 rs_allocation allocation_3D_global; 75 rs_allocation allocation_YUV_2D_global; 76 77 rs_allocation_cubemap_face cubemap_face_global; 78 rs_sampler sampler_global; 79 80 uchar4 __attribute__((kernel)) kernel(uchar4 in) 81 { 82 char char_local = 'a'; 83 uchar uchar_local = 'b'; 84 short short_local = -321; 85 ushort ushort_local = 432; 86 int int_local = 1234; 87 uint uint_local = 2345; 88 float float_local = 4.5f; 89 long long_local = -77777; 90 ulong ulong_local = 8888; 91 double double_local = -456.5f; 92 93 char2 char2_local = {-11, -22}; 94 uchar2 uchar2_local = {33, 44}; 95 short2 short2_local = {-555, 666}; 96 ushort2 ushort2_local = {777, 888}; 97 int2 int2_local = {999, -1111}; 98 uint2 uint2_local = {2222, 3333}; 99 float2 float2_local = {4.5f, -5.0f}; 100 long2 long2_local = {-4444, 5555}; 101 ulong2 ulong2_local = {6666, 7777}; 102 double2 double2_local = {88.5f, -99.0f}; 103 104 char3 char3_local = {11, -22, -33}; 105 uchar3 uchar3_local = {33, 44, 55}; 106 short3 short3_local = {-555, 666, 777}; 107 ushort3 ushort3_local = {777, 888, 999}; 108 int3 int3_local = {999, -1111, 2222}; 109 uint3 uint3_local = {2222, 3333, 4444}; 110 float3 float3_local = {4.5f, -5.0f, -6.5f}; 111 long3 long3_local = {-4444, 5555, 6666}; 112 ulong3 ulong3_local = {6666, 7777, 8888}; 113 double3 double3_local = {88.5f, -99.0f, 111.5f}; 114 115 char4 char4_local = {55, 11, -22, -33}; 116 uchar4 uchar4_local = {22, 33, 44, 55}; 117 short4 short4_local = {-444, -555, 666, 777}; 118 ushort4 ushort4_local = {666, 777, 888, 999}; 119 int4 int4_local = {888, 999, -1111, 2222}; 120 uint4 uint4_local = {1111, 2222, 3333, 4444}; 121 float4 float4_local = {3.0f, 4.5f, -5.0f, -6.5f}; 122 long4 long4_local = {-3333, -4444, 5555, 6666}; 123 ulong4 ulong4_local = {5555, 6666, 7777, 8888}; 124 double4 double4_local = {-77.0f, 88.5f, -99.0f, 111.5f}; 125 126 rs_matrix2x2 matrix2x2_local = {{1., 2.5, 127 3., 4.5}}; 128 rs_matrix3x3 matrix3x3_local = {{5., 6.5, 7., 129 8.5, 9., 1.5, 130 2., 3.5, 4.}}; 131 rs_matrix4x4 matrix4x4_local = {{5.5, 6., 7.5, 8., 132 9., 1.5, 2., 3.5, 133 4.5, 5.5, 6.5, 7., 134 8., 9.5, 1.5, 2.5}}; 135 136 matrix2x2_global = matrix2x2_local; 137 matrix3x3_global = matrix3x3_local; 138 matrix4x4_global = matrix4x4_local; 139 140 rsQuaternionSet(&quaternion_global, 3.0, 4.5, 5.5, 6.0); 141 142 rs_quaternion quaternion_local; 143 rsQuaternionSet(&quaternion_local, 7.5, 8.0, 9.0, 0.5); 144 145 char char_combined = char_local + (char)uchar_local + char2_local.x + 146 (char)uchar2_local.x + char3_local.x - (char)uchar3_local.x + 147 char4_local.x + (char)uchar4_local.x; 148 149 short short_combined = short_local + (short)ushort_local + short2_local.x + 150 (short)ushort2_local.x + short3_local.x + (short)ushort3_local.x + 151 short4_local.x + (short)ushort4_local.x; 152 153 int int_combined = int_local + (int)uint_local + int2_local.x + 154 (int)uint2_local.x + int3_local.x + (int)uint3_local.x + int4_local.x + 155 (int)uint4_local.x; 156 157 float float_combined = float_local + float2_local.x + float3_local.x + 158 float4_local.x; 159 160 long long_combined = long_local + (long)ulong_local + long2_local.x + 161 (long)ulong2_local.x + long3_local.x + (long)ulong3_local.x + 162 long4_local.x + (long)ulong4_local.x; 163 164 double double_combined = double_local + double2_local.x + double3_local.x + 165 double4_local.x; 166 167 char_global = char_combined; 168 short_global = short_combined; 169 int_global = int_combined; 170 float_global = float_combined; 171 long_global = long_combined; 172 double_global = double_combined; 173 174 uchar4 result = {1,2,3,4}; 175 return result; 176 } 177 178 float use_constants_global; 179 180 void setup(void) 181 { 182 use_constants_global = 183 M_1_PI + 184 M_2_PI + 185 M_2_PIl + 186 M_2_SQRTPI + 187 M_E + 188 M_LN10 + 189 M_LN2 + 190 M_LOG10E + 191 M_LOG2E + 192 M_PI + 193 M_PI_2 + 194 M_PI_4 + 195 M_SQRT1_2 + 196 M_SQRT2; 197 } 198