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.singlesource) 19#pragma rs_fp_full 20 21// global allocation used for void kernel 22rs_allocation global_alloc; 23 24static void check_in() 25{ 26 // debugger check point 27 return; 28} 29 30float __attribute__((kernel)) kernel_1(float a) 31{ 32 // square 33 return a * a; 34} 35 36float __attribute__((kernel)) kernel_2(float a, float b) 37{ 38 // product 39 return a * b; 40} 41 42void __attribute__((kernel)) void_kernel_1(uint32_t x) 43{ 44 // allocation[x] = x 45 rsSetElementAt_float(global_alloc, (float)x, x); 46} 47 48void script_invoke_1(rs_allocation out, rs_allocation in1, rs_allocation in2) 49{ 50 // invoke kernel taking one argument 51 rsForEach(kernel_1, out, in1); 52 53 check_in(); 54 55 // invoke kernel taking two arguments 56 rsForEach(kernel_2, out, in1, in2); 57 58 check_in(); 59} 60 61void script_invoke_2() 62{ 63 // invoke kernel that takes no arguments and no return type 64 rs_script_call_t options = { 65 .strategy=RS_FOR_EACH_STRATEGY_DONT_CARE, 66 .xStart=0, 67 .xEnd=4 68 }; 69 rsForEachWithOptions(void_kernel_1, &options); 70 71 check_in(); 72} 73