diff --git a/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java b/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java
index 5161697..75b443d 100644
--- a/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java
+++ b/suite/pts/deviceTests/filesystemperf/src/com/android/pts/filesystemperf/AlmostFullTest.java
@@ -37,8 +37,9 @@
 
     // test runner creates multiple instances at the begging.
     // use that to fill disk only once.
-    private static AtomicInteger mRefCounter = new AtomicInteger(0);
-    private static AtomicBoolean mDiskFilled = new AtomicBoolean(false);
+    // set as final to initialize it only once
+    private static final AtomicInteger mRefCounter = new AtomicInteger(0);
+    private static final AtomicBoolean mDiskFilled = new AtomicBoolean(false);
 
     public AlmostFullTest() {
         int currentCounter = mRefCounter.incrementAndGet();
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 ca2bb38..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;
