Merge "fix AlmostFullTest: prevent reinitializing ref-counter" into jb-mr2-dev
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 6a07ef8..5e86080 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -28,14 +28,14 @@
         <meta-data android:name="android.app.cts.float" android:value="100.1" />
         <meta-data android:name="android.app.cts.reference" android:resource="@xml/metadata" />
     </permission>
-    
+
     <uses-permission android:name="android.permission.GET_TASKS" />
     <uses-permission android:name="android.permission.SET_WALLPAPER" />
     <uses-permission android:name="android.permission.SET_TIME_ZONE" />
     <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
-    <uses-permission android:name="android.permission.WRITE_CONTACTS" />        
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_SOCIAL_STREAM" />
-    <uses-permission android:name="android.permission.READ_CALL_LOG" />    
+    <uses-permission android:name="android.permission.READ_CALL_LOG" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.READ_SOCIAL_STREAM" />
     <uses-permission android:name="android.permission.WRITE_CALENDAR" />
@@ -106,7 +106,7 @@
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.READ_SYNC_STATS" />
-    
+
     <!-- Used for PackageManager test, don't delete this permission-tree -->
     <permission-tree android:name="com.android.cts.stub.permission.TEST_DYNAMIC"
                     android:label="Test Tree"/>
@@ -627,7 +627,7 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="android.widget.cts.ZoomButtonStubActivity" 
+        <activity android:name="android.widget.cts.ZoomButtonStubActivity"
             android:label="ZoomButtonStubActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
@@ -813,7 +813,7 @@
         <provider android:name="android.content.cts.MockRemoteContentProvider"
             android:authorities="remotectstest"
             android:process=":remoteprovider" android:multiprocess="false" />
-        
+
         <activity android:name="android.app.cts.ChildTabActivity" android:label="ChildTabActivity" />
 
         <activity android:name="android.app.cts.LauncherActivityStub"
@@ -928,7 +928,7 @@
         </service>
         <service android:name="android.app.cts.IntentServiceStub"/>
 
-        <activity android:name="android.app.cts.LaunchpadActivity" 
+        <activity android:name="android.app.cts.LaunchpadActivity"
                   android:configChanges="keyboardHidden|orientation|screenSize"
                   android:multiprocess="true">
         </activity>
@@ -969,10 +969,10 @@
         </activity>
 
         <activity android:name="android.preference.cts.PreferenceStubActivity">
-            <meta-data android:name="android.preference" 
+            <meta-data android:name="android.preference"
                     android:resource="@xml/preferences_from_intent" />
         </activity>
-                
+
         <activity android:name="android.content.cts.ClipboardManagerListenerActivity"/>
 
         <activity android:name="android.app.cts.ActivityManagerMemoryClassLaunchActivity" />
@@ -987,7 +987,7 @@
             </intent-filter>
         </service>
 
-        <activity android:name="android.renderscript.cts.RenderscriptGLStubActivity"
+        <activity android:name="android.renderscriptgraphics.cts.RenderscriptGLStubActivity"
                   android:label="RenderscriptGLStub"/>
     </application>
 
diff --git a/tests/src/android/renderscript/cts/graphics_runner.rs b/tests/src/android/rsg/cts/graphics_runner.rs
similarity index 100%
rename from tests/src/android/renderscript/cts/graphics_runner.rs
rename to tests/src/android/rsg/cts/graphics_runner.rs
diff --git a/tests/src/android/rsg/cts/shared.rsh b/tests/src/android/rsg/cts/shared.rsh
new file mode 100644
index 0000000..f33b708
--- /dev/null
+++ b/tests/src/android/rsg/cts/shared.rsh
@@ -0,0 +1,27 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscriptgraphics.cts)
+
+static int64_t g_time;
+
+static void start(void) {
+    g_time = rsUptimeMillis();
+}
+
+static float end(void) {
+    int64_t t = rsUptimeMillis() - g_time;
+    return ((float)t) / 1000.f;
+}
+
+#define _RS_ASSERT(b) \
+do { \
+    if (!(b)) { \
+        failed = true; \
+        rsDebug(#b " FAILED", 0); \
+    } \
+\
+} while (0)
+
+/* These constants must match those in UnitTest.java */
+static const int RS_MSG_TEST_PASSED = 100;
+static const int RS_MSG_TEST_FAILED = 101;
+
diff --git a/tests/src/android/rsg/cts/structs.rsh b/tests/src/android/rsg/cts/structs.rsh
new file mode 100755
index 0000000..e7d2efd
--- /dev/null
+++ b/tests/src/android/rsg/cts/structs.rsh
@@ -0,0 +1,56 @@
+// 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.
+
+typedef struct ConstMatrix {
+    rs_matrix4x4 MATRIX;
+} ConstMatrix_s;
+ConstMatrix_s *c1;
+
+typedef struct ConstComplex {
+    rs_matrix4x4 MATRIX;
+    rs_matrix4x4 EXTRA;
+    float extra1;
+    float2 extra2;
+    float3 extra3;
+    float4 extra4;
+} ConstComplex_s;
+ConstComplex_s *c2;
+
+typedef struct ConstExtra {
+    rs_matrix4x4 EXTRA;
+    float extra1;
+    float2 extra2;
+    float3 extra3;
+    float4 extra4;
+} ConstExtra_s;
+ConstExtra_s *c3;
+
+typedef struct AllVectorTypes {
+    char2 b2;
+    char3 b3;
+    char4 b4;
+
+    short2 s2;
+    short3 s3;
+    short4 s4;
+
+    int2 i2;
+    int3 i3;
+    int4 i4;
+
+    float2 f2;
+    float3 f3;
+    float4 f4;
+} AllVectorTypes_s;
+AllVectorTypes_s *avt;
diff --git a/tests/src/android/renderscript/cts/stub_activity.rs b/tests/src/android/rsg/cts/stub_activity.rs
similarity index 94%
rename from tests/src/android/renderscript/cts/stub_activity.rs
rename to tests/src/android/rsg/cts/stub_activity.rs
index 7e149f7..f5efce6 100644
--- a/tests/src/android/renderscript/cts/stub_activity.rs
+++ b/tests/src/android/rsg/cts/stub_activity.rs
@@ -15,7 +15,7 @@
 #pragma version(1)
 
 // Tell which java package name the reflected files should belong to
-#pragma rs java_package_name(android.renderscript.cts)
+#pragma rs java_package_name(android.renderscriptgraphics.cts)
 
 // Built-in header with graphics API's
 #include "rs_graphics.rsh"
diff --git a/tests/tests/media/src/android/media/cts/AudioTrackTest.java b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
index f541e65..ac8379a 100644
--- a/tests/tests/media/src/android/media/cts/AudioTrackTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
@@ -636,7 +636,7 @@
         final int TEST_SR = 22050;
         final int TEST_CONF = AudioFormat.CHANNEL_CONFIGURATION_MONO;
         final int TEST_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
-        final int TEST_MODE = AudioTrack.MODE_STREAM;
+        final int TEST_MODE = AudioTrack.MODE_STATIC;
         final int TEST_STREAM_TYPE = AudioManager.STREAM_MUSIC;
 
         // -------- initialization --------------
@@ -645,9 +645,10 @@
                 2 * minBuffSize, TEST_MODE);
         byte data[] = new byte[minBuffSize];
         // -------- test --------------
-        assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
+        assertEquals(TEST_NAME, AudioTrack.STATE_NO_STATIC_DATA, track.getState());
         track.write(data, OFFSET_DEFAULT, data.length);
         track.write(data, OFFSET_DEFAULT, data.length);
+        assertEquals(TEST_NAME, AudioTrack.STATE_INITIALIZED, track.getState());
         track.play();
         track.stop();
         assertEquals(TEST_NAME, AudioTrack.PLAYSTATE_STOPPED, track.getPlayState());
@@ -663,7 +664,7 @@
         final int TEST_SR = 22050;
         final int TEST_CONF = AudioFormat.CHANNEL_CONFIGURATION_MONO;
         final int TEST_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
-        final int TEST_MODE = AudioTrack.MODE_STREAM;
+        final int TEST_MODE = AudioTrack.MODE_STATIC;
         final int TEST_STREAM_TYPE = AudioManager.STREAM_MUSIC;
 
         // -------- initialization --------------
@@ -672,9 +673,10 @@
                 2 * minBuffSize, TEST_MODE);
         byte data[] = new byte[minBuffSize];
         // -------- test --------------
-        assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
+        assertEquals(TEST_NAME, AudioTrack.STATE_NO_STATIC_DATA, track.getState());
         track.write(data, OFFSET_DEFAULT, data.length);
         track.write(data, OFFSET_DEFAULT, data.length);
+        assertEquals(TEST_NAME, AudioTrack.STATE_INITIALIZED, track.getState());
         track.play();
         track.pause();
         assertEquals(TEST_NAME, AudioTrack.PLAYSTATE_PAUSED, track.getPlayState());
@@ -690,7 +692,7 @@
         final int TEST_SR = 22050;
         final int TEST_CONF = AudioFormat.CHANNEL_CONFIGURATION_MONO;
         final int TEST_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
-        final int TEST_MODE = AudioTrack.MODE_STREAM;
+        final int TEST_MODE = AudioTrack.MODE_STATIC;
         final int TEST_STREAM_TYPE = AudioManager.STREAM_MUSIC;
 
         // -------- initialization --------------
@@ -703,9 +705,10 @@
         // count (given the audio track properties), and add 77.
         int frameIndexTooFar = (2 * minBuffSize / 2) + 77;
         // -------- test --------------
-        assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
+        assertEquals(TEST_NAME, AudioTrack.STATE_NO_STATIC_DATA, track.getState());
         track.write(data, OFFSET_DEFAULT, data.length);
         track.write(data, OFFSET_DEFAULT, data.length);
+        assertEquals(TEST_NAME, AudioTrack.STATE_INITIALIZED, track.getState());
         track.play();
         track.stop();
         assertEquals(TEST_NAME, AudioTrack.PLAYSTATE_STOPPED, track.getPlayState());
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java
index 4a1533c..51309c8 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java
@@ -30,7 +30,7 @@
 
 import android.util.Log;
 
-public class AllocationTest extends RSBaseGraphics {
+public class AllocationTest extends RSBaseCompute {
 
     // Test power of two and non power of two, equal and non-equal sizes
     void createTypedHelper(Element e) {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SamplerTest.java b/tests/tests/renderscript/src/android/renderscript/cts/SamplerTest.java
index fa30f9f..6f00e55 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/SamplerTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/SamplerTest.java
@@ -19,7 +19,7 @@
 import android.renderscript.Sampler;
 import android.renderscript.Sampler.Value;
 
-public class SamplerTest extends RSBaseGraphics {
+public class SamplerTest extends RSBaseCompute {
 
     Sampler.Value[] mMinValues;
     Sampler.Value[] mMagValues;
diff --git a/tests/tests/rsg/Android.mk b/tests/tests/rsg/Android.mk
new file mode 100644
index 0000000..9ff554c
--- /dev/null
+++ b/tests/tests/rsg/Android.mk
@@ -0,0 +1,39 @@
+# 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# Replace "Example" with your name.
+LOCAL_PACKAGE_NAME := CtsRenderscriptGraphicsTestCases
+
+# Don't include this package in any target.
+LOCAL_MODULE_TAGS := optional
+
+# When built, explicitly put it in the data partition.
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+# All tests should include android.test.runner.
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_INSTRUMENTATION_FOR := CtsTestStubs
+
+LOCAL_SDK_VERSION := 17
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/rsg/AndroidManifest.xml b/tests/tests/rsg/AndroidManifest.xml
new file mode 100644
index 0000000..886a395
--- /dev/null
+++ b/tests/tests/rsg/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- Replace all the "example" stuff below with your package name, and
+     remove this comment.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.renderscriptgraphics">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!-- This is a self-instrumenting test package. -->
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="com.android.cts.stub"
+                     android:label="CTS tests of Renderscript Graphics component"/>
+
+</manifest>
+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/BaseObjTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/BaseObjTest.java
similarity index 97%
rename from tests/tests/renderscript/src/android/renderscript/cts/BaseObjTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/BaseObjTest.java
index a079951..7773dda 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/BaseObjTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/BaseObjTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.BaseObj;
 import android.renderscript.Font;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ContextCreationTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ContextCreationTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/ContextCreationTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ContextCreationTest.java
index 1edce0a..11b999c 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ContextCreationTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ContextCreationTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.*;
 import android.test.ActivityInstrumentationTestCase2;
@@ -48,7 +48,7 @@
         super.setUp();
         mActivity = getActivity();
     }
-    
+
     @Override
     protected void tearDown() throws Exception {
         mActivity.destroyAll();
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FileA3DTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/FileA3DTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/FileA3DTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/FileA3DTest.java
index ca2bb388..510a3c5 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/FileA3DTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/FileA3DTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import java.io.File;
 
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FontTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/FontTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/FontTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/FontTest.java
index a3e4da0..43b9662 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/FontTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/FontTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import java.io.File;
 import com.android.cts.stub.R;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/MeshTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/MeshTest.java
similarity index 99%
rename from tests/tests/renderscript/src/android/renderscript/cts/MeshTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/MeshTest.java
index ffa733a..9b7eb99 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/MeshTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/MeshTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.Allocation;
 import android.renderscript.Element;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentFixedFunctionTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramFragmentFixedFunctionTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentFixedFunctionTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramFragmentFixedFunctionTest.java
index ac54b74..29824d1 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentFixedFunctionTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramFragmentFixedFunctionTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import com.android.cts.stub.R;
 import android.renderscript.Element;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramFragmentTest.java
similarity index 99%
rename from tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramFragmentTest.java
index 9a71386..ef6ad18 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramFragmentTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import com.android.cts.stub.R;
 
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramRasterTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramRasterTest.java
similarity index 97%
rename from tests/tests/renderscript/src/android/renderscript/cts/ProgramRasterTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramRasterTest.java
index befa926..e752d39 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramRasterTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramRasterTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.ProgramRaster;
 import android.renderscript.ProgramRaster.Builder;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramStoreTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramStoreTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/ProgramStoreTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramStoreTest.java
index b7f5eff..e42f6fe 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramStoreTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramStoreTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.ProgramStore;
 import android.renderscript.ProgramStore.DepthFunc;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexFixedFunctionTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramVertexFixedFunctionTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexFixedFunctionTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramVertexFixedFunctionTest.java
index 0adab9a..a50a9d5 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexFixedFunctionTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramVertexFixedFunctionTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import com.android.cts.stub.R;
 
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramVertexTest.java
similarity index 99%
rename from tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramVertexTest.java
index 3c2c188..7f23bd0 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/ProgramVertexTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import com.android.cts.stub.R;
 
diff --git a/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSBase.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSBase.java
new file mode 100644
index 0000000..7729e1e
--- /dev/null
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSBase.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2011-2012 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 android.renderscriptgraphics.cts;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.renderscript.RenderScript.RSErrorHandler;
+import android.renderscript.RenderScript.RSMessageHandler;
+import android.renderscript.RSRuntimeException;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+/**
+ * Base RenderScript test class. This class provides a message handler and a
+ * convenient way to wait for compute scripts to complete their execution.
+ */
+class RSBase extends AndroidTestCase {
+
+    Context mCtx;
+    Resources mRes;
+
+    private int result;
+    private boolean msgHandled;
+
+    private static final int RS_MSG_TEST_PASSED = 100;
+    private static final int RS_MSG_TEST_FAILED = 101;
+
+    RSMessageHandler mRsMessage = new RSMessageHandler() {
+        public void run() {
+            if (result == 0) {
+                switch (mID) {
+                    case RS_MSG_TEST_PASSED:
+                    case RS_MSG_TEST_FAILED:
+                        result = mID;
+                        break;
+                    default:
+                        fail("Got unexpected RS message");
+                        return;
+                }
+            }
+            msgHandled = true;
+        }
+    };
+
+    protected void waitForMessage() {
+        while (!msgHandled) {
+            Thread.yield();
+        }
+    }
+
+    protected boolean FoundError = false;
+    protected RSErrorHandler mRsError = new RSErrorHandler() {
+        public void run() {
+            FoundError = true;
+            Log.e("RenderscriptCTS", mErrorMessage);
+            throw new RSRuntimeException("Received error " + mErrorNum +
+                                         " message " + mErrorMessage);
+        }
+    };
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        result = 0;
+        msgHandled = false;
+        mCtx = getContext();
+        mRes = mCtx.getResources();
+    }
+
+    /**
+     * Verify that we didn't fail on the control or script side of things.
+     */
+    protected void checkForErrors() {
+        assertFalse(FoundError);
+        assertTrue(result != RS_MSG_TEST_FAILED);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RSBaseGraphics.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSBaseGraphics.java
similarity index 96%
rename from tests/tests/renderscript/src/android/renderscript/cts/RSBaseGraphics.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/RSBaseGraphics.java
index 986a50d..65ba926 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/RSBaseGraphics.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSBaseGraphics.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.RenderScriptGL;
 import android.renderscript.RenderScriptGL.SurfaceConfig;
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/RSSurfaceViewTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSSurfaceViewTest.java
similarity index 97%
rename from tests/tests/renderscript/src/android/renderscript/cts/RSSurfaceViewTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/RSSurfaceViewTest.java
index 9cf8f65..4d46d8d 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/RSSurfaceViewTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RSSurfaceViewTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.renderscript.RSSurfaceView;
 import android.renderscript.RenderScriptGL;
diff --git a/tests/src/android/renderscript/cts/RenderscriptGLStubActivity.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RenderscriptGLStubActivity.java
similarity index 98%
rename from tests/src/android/renderscript/cts/RenderscriptGLStubActivity.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/RenderscriptGLStubActivity.java
index d6d05ac..bddde03 100644
--- a/tests/src/android/renderscript/cts/RenderscriptGLStubActivity.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/RenderscriptGLStubActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -112,7 +112,7 @@
         setContentView(mView);
         oldView.forceDestroy();
     }
-    
+
     public void destroyAll() {
         if (mView != null) {
             mView.forceDestroy();
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/SurfaceConfigTest.java b/tests/tests/rsg/src/android/renderscriptgraphics/cts/SurfaceConfigTest.java
similarity index 98%
rename from tests/tests/renderscript/src/android/renderscript/cts/SurfaceConfigTest.java
rename to tests/tests/rsg/src/android/renderscriptgraphics/cts/SurfaceConfigTest.java
index 94d784e..a402e8a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/SurfaceConfigTest.java
+++ b/tests/tests/rsg/src/android/renderscriptgraphics/cts/SurfaceConfigTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.renderscript.cts;
+package android.renderscriptgraphics.cts;
 import android.test.AndroidTestCase;
 
 import android.renderscript.RSIllegalArgumentException;