Skip to content

Commit cb60fdc

Browse files
committed
Add unit test for RS reference counting.
Change-Id: Id09cc28f02bba6484889ed53e60273119f7004cb
1 parent a55c369 commit cb60fdc

File tree

3 files changed

+64
-0
lines changed

3 files changed

+64
-0
lines changed

tests/RenderScriptTests/tests/src/com/android/rs/test/RSTestCore.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public void init(RenderScriptGL rs, Resources res, int width, int height) {
7070
unitTests.add(new UT_rstime(this, mRes, mCtx));
7171
unitTests.add(new UT_rstypes(this, mRes, mCtx));
7272
unitTests.add(new UT_alloc(this, mRes, mCtx));
73+
unitTests.add(new UT_refcount(this, mRes, mCtx));
7374
unitTests.add(new UT_foreach(this, mRes, mCtx));
7475
unitTests.add(new UT_math(this, mRes, mCtx));
7576
unitTests.add(new UT_fp_mad(this, mRes, mCtx));
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright (C) 2011 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+
package com.android.rs.test;
18+
19+
import android.content.Context;
20+
import android.content.res.Resources;
21+
import android.renderscript.*;
22+
23+
public class UT_refcount extends UnitTest {
24+
private Resources mRes;
25+
26+
protected UT_refcount(RSTestCore rstc, Resources res, Context ctx) {
27+
super(rstc, "Refcount", ctx);
28+
mRes = res;
29+
}
30+
31+
private void initializeGlobals(RenderScript RS, ScriptC_refcount s) {
32+
Type.Builder typeBuilder = new Type.Builder(RS, Element.I32(RS));
33+
int X = 500;
34+
int Y = 700;
35+
typeBuilder.setX(X).setY(Y);
36+
Allocation A = Allocation.createTyped(RS, typeBuilder.create());
37+
s.set_globalA(A);
38+
}
39+
40+
public void run() {
41+
RenderScript pRS = RenderScript.create(mCtx);
42+
pRS.setMessageHandler(mRsMessage);
43+
ScriptC_refcount s = new ScriptC_refcount(pRS, mRes, R.raw.refcount);
44+
initializeGlobals(pRS, s);
45+
s.invoke_refcount_test();
46+
pRS.finish();
47+
waitForMessage();
48+
pRS.destroy();
49+
}
50+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include "shared.rsh"
2+
3+
// Testing reference counting of RS object types
4+
5+
rs_allocation globalA;
6+
static rs_allocation staticGlobalA;
7+
8+
void refcount_test() {
9+
staticGlobalA = globalA;
10+
rsClearObject(&globalA);
11+
rsSendToClientBlocking(RS_MSG_TEST_PASSED);
12+
}
13+

0 commit comments

Comments
 (0)