Using Android's RenderScript, I am trying to restrict the range of the allocation that is operated upon during a rsForEach call. According to the documentation you can achieve this by passing in a rs_script_call structure but whenever I try this the application crashes.
How is the rs_script_call structure correctly setup and passed into the rsForEach call? I have attached an adapted version of the HelloCompute Renderscript example that demonstrates the problem. The minimum Android sdk version is set to 15 and therefore using the rsForEach call that takes 6 arguments. Here is part of the log of the application running on a Nexus S with Android 4.0.4: 04-12 00:27:25.632: V/RenderScript(18747): rsContextCreate dev=0x18798c0 04-12 00:27:25.636: V/RenderScript(18747): 0x183b6a0 Launching thread(s), CPUs 1 04-12 00:27:25.656: V/ScriptC(18747): Create script for resource = mono 04-12 00:27:25.656: I/bcc(18747): LIBBCC build time: 2012/03/25 20:11:25 04-12 00:27:25.656: I/bcc(18747): LIBBCC build revision: 31e50d678d2a8aa28c6f38cccebfa3da2f78df4a (git) 04-12 00:27:25.675: D/StopWatch(18747): StopWatch calcFileSHA1 time (us): 17709 04-12 00:27:25.679: D/StopWatch(18747): StopWatch calcFileSHA1 time (us): 2350 04-12 00:27:25.679: D/bcc(18747): Read object file size 1020 04-12 00:27:25.679: E/RenderScript(18747): ScriptC sym lookup failed for _Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call 04-12 00:27:25.679: E/bcc(18747): Unable to resolve symbol: _Z9rsForEach9rs_script13rs_allocationS0_PKvjPK14rs_script_call 04-12 00:27:25.679: D/StopWatch(18747): StopWatch bcc: PrepareExecutable time (us): 1284 04-12 00:27:25.679: E/bcc(18747): Symbol not found: .rs.dtor 04-12 00:27:25.683: A/libc(18747): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1) I also posted this question over on StackOverflow ( http://stackoverflow.com/q/10115616/1327767). -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en
mono.rs
Description: Binary data
/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.rs.hellocompute; import android.app.Activity; import android.os.Bundle; import android.graphics.BitmapFactory; import android.graphics.Bitmap; import android.renderscript.RenderScript; import android.renderscript.Allocation; import android.widget.ImageView; public class HelloCompute extends Activity { private Bitmap mBitmapIn; private Bitmap mBitmapOut; private RenderScript mRS; private Allocation mInAllocation; private Allocation mOutAllocation; private ScriptC_mono mScript; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mBitmapIn = loadBitmap(R.drawable.data); mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(), mBitmapIn.getConfig()); ImageView in = (ImageView) findViewById(R.id.displayin); in.setImageBitmap(mBitmapIn); ImageView out = (ImageView) findViewById(R.id.displayout); out.setImageBitmap(mBitmapOut); createScript(); } private void createScript() { mRS = RenderScript.create(this); mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType()); mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono); //mScript.forEach_root(mInAllocation, mOutAllocation); mScript.invoke_runRestricted(mScript, mInAllocation, mOutAllocation); mOutAllocation.copyTo(mBitmapOut); } private Bitmap loadBitmap(int resource) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; return BitmapFactory.decodeResource(getResources(), resource, options); } }