Merge "Runtime support for mapping kernels with multiple input allocations"
diff --git a/build_rs.py b/build_rs.py
index 830d4d6..8641fb6 100755
--- a/build_rs.py
+++ b/build_rs.py
@@ -118,6 +118,25 @@
     install_clang_headers(build_dir, install_dir, host)
     install_built_device_files(build_dir, install_dir, host)
     install_license_files(install_dir)
+    # We need to package libwinpthread-1.dll for Windows. This is explicitly
+    # linked whenever pthreads is used, and the build system doesn't allow
+    # us to link just that library statically (ldflags are stripped out
+    # of ldlibs and vice-versa).
+    # Bug: http://b/34273721
+    if host.startswith('windows'):
+        install_winpthreads(install_dir)
+
+
+def install_winpthreads(install_dir):
+      """Installs the winpthreads runtime to the Windows bin directory."""
+      lib_name = 'libwinpthread-1.dll'
+      mingw_dir = android_path(
+          'prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8')
+      # RenderScript NDK toolchains for Windows only contains 32-bit binaries.
+      lib_path = os.path.join(mingw_dir, 'x86_64-w64-mingw32/lib32', lib_name)
+
+      lib_install = os.path.join(install_dir, 'bin', lib_name)
+      install_file(lib_path, lib_install)
 
 
 def install_built_host_files(build_dir, install_dir, host):
@@ -155,6 +174,10 @@
 
     for built_file in built_files:
         dirname = os.path.dirname(built_file)
+        # Put dlls and exes into bin/ for windows.
+        # Bug: http://b/34273721
+        if is_windows:
+            dirname = 'bin'
         install_path = os.path.join(install_dir, dirname)
         if not os.path.exists(install_path):
             os.makedirs(install_path)
diff --git a/java/tests/Android.mk b/java/tests/Android.mk
deleted file mode 100644
index 9b55c42..0000000
--- a/java/tests/Android.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-ifneq (true,$(TARGET_BUILD_PDK))
-include $(call all-subdir-makefiles)
-endif
diff --git a/java/tests/Refocus/res/layout/activity_main.xml b/java/tests/Refocus/res/layout/activity_main.xml
deleted file mode 100644
index b955264..0000000
--- a/java/tests/Refocus/res/layout/activity_main.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
-    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
-    android:paddingTop="@dimen/activity_vertical_margin"
-    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
-    android:orientation="vertical">
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="0.4">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Pointer RenderScript"
-        android:id="@+id/orignialImageLabel"
-        android:layout_gravity="left"/>
-    <ImageView
-        android:id="@+id/image_view"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/orignialImageLabel"
-        />
-    </RelativeLayout>
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="0.4">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Global Allocation RenderScript"
-        android:id="@+id/newImageLabel"
-        android:layout_gravity="left"/>
-    <ImageView
-        android:id="@+id/image_view_new"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/newImageLabel"
-        />
-    </RelativeLayout>
-
-    <RelativeLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="0.2">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Compare Result"
-        android:id="@+id/compareTextView"
-        android:layout_gravity="right"/>
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/java/tests/Refocus/src/com/android/rs/test/DepthImage.java b/java/tests/Refocus/src/com/android/rs/test/DepthImage.java
deleted file mode 100644
index cc7c53a..0000000
--- a/java/tests/Refocus/src/com/android/rs/test/DepthImage.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.android.rs.refocus;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-
-
-import android.os.AsyncTask;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Created by hoford on 5/15/15.
- */
-public class DepthImage {
-    private final String mFormat;
-    private final double mFar;
-    private final double mNear;
-    private final Bitmap mDepthBitmap;
-    private final double mBlurAtInfinity;
-    private final double mFocalDistance;
-    private final double mDepthOfFiled;
-    private final double mFocalPointX;
-    private final double mFocalPointY;
-    private final DepthTransform mDepthTransform;
-    public DepthImage(Context context, Uri data) throws IOException {
-        InputStream input = context.getContentResolver().openInputStream(data);
-        XmpDepthDecode decode = new XmpDepthDecode(input);
-        mFormat = decode.getFormat();
-        mFar = decode.getFar();
-        mNear = decode.getNear();
-        mDepthBitmap = decode.getDepthBitmap();
-        mBlurAtInfinity = decode.getBlurAtInfinity();
-        mFocalDistance = decode.getFocalDistance();
-        mDepthOfFiled = decode.getDepthOfField();
-        mFocalPointX = decode.getFocalPointX();
-        mFocalPointY = decode.getFocalPointY();
-        input = context.getContentResolver().openInputStream(data);
-        mDepthTransform = decode.getDepthTransform();
-    }
-
-    public Bitmap getDepthBitmap() {
-        return mDepthBitmap;
-    }
-
-    public DepthTransform getDepthTransform() { return mDepthTransform; }
-
-    public String getFormat() {
-        return mFormat;
-    }
-
-    public double getFar() {
-        return mFar;
-    }
-
-    public double getNear() {
-        return mNear;
-    }
-
-    public double getBlurAtInfinity() {
-        return mBlurAtInfinity;
-    }
-
-    public double getFocalDistance() {
-        return mFocalDistance;
-    }
-
-    public double getDepthOfField() {return mDepthOfFiled; }
-
-    public double getFocalPointX() {
-        return mFocalPointX;
-    }
-
-    public double getFocalPointY() {
-        return mFocalPointY;
-    }
-}
-
diff --git a/java/tests/Refocus/src/com/android/rs/test/ImageCompare.java b/java/tests/Refocus/src/com/android/rs/test/ImageCompare.java
deleted file mode 100644
index b390e35..0000000
--- a/java/tests/Refocus/src/com/android/rs/test/ImageCompare.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package com.android.rs.refocus;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Environment;
-import android.util.Log;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.nio.ByteBuffer;
-
-/**
- * Created by xinyiwang on 6/30/15.
- */
-public class ImageCompare {
-    private static byte[] loadImageByteArray(String file_path) {
-        Bitmap bitmap = BitmapFactory.decodeFile(file_path);
-        ByteArrayOutputStream stream = new ByteArrayOutputStream();
-        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
-        return stream.toByteArray();
-    }
-
-    public static boolean compareImage(String file1, String file2) {
-        byte[] first = loadImageByteArray(file1);
-        byte[] second = loadImageByteArray(file2);
-
-        for (int i = 0; i < first.length; i++) {
-            int v1 = 0xFF & first[i];
-            int v2 = 0xFF & second[i];
-            int error = Math.abs(v1 - v2);
-            if (error > 2) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private static byte[] loadBitmapByteArray(Bitmap bitmap) {
-        int bytes = bitmap.getByteCount();
-        ByteBuffer buffer = ByteBuffer.allocate(bytes);
-        bitmap.copyPixelsToBuffer(buffer);
-        byte[] array = buffer.array();
-        return array;
-    }
-
-    public static class CompareValue {
-      float aveDiff = 0;
-      float diffPercent = 0f;
-    }
-
-    public static void compareBitmap(Bitmap bitmap1, Bitmap bitmap2, CompareValue result) {
-        byte[] first = loadBitmapByteArray(bitmap1);
-        byte[] second = loadBitmapByteArray(bitmap2);
-
-        int loopCount = first.length > second.length ? second.length : first.length;
-
-        int diffCount = 0;
-        int diffSum = 0;
-        for (int i = 0; i < loopCount; i++) {
-          int v1 = 0xFF & first[i];
-          int v2 = 0xFF & second[i];
-          int error = Math.abs(v1 - v2);
-          if (error > 0) {
-            diffCount++;
-            //if (error > result.maxDiff) {
-              //result.maxDiff = error;
-            //}
-            diffSum += error;
-          }
-        }
-        result.diffPercent = ((float)diffCount)/first.length;
-        result.aveDiff = ((float)diffSum)/first.length;
-    }
-
-    public static void compareIntermediate(String folder1, String folder2) {
-        File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
-        String folder_path = folder.getAbsolutePath();
-        //String folder_path = "/storage/self/primary/";
-        String file_path_1_base = folder_path + "/" + folder1;
-        String file_path_2_base = folder_path + "/" + folder2;
-        File dir1 = new File(file_path_1_base);
-
-        for ( File imgFile : dir1.listFiles()) {
-           String file_path_2 = file_path_2_base + "/" + imgFile.getName();
-            String file_path_1 = file_path_1_base + "/" + imgFile.getName();
-            System.out.println(file_path_1);
-            System.out.println(file_path_2);
-            boolean same = compareImage(file_path_1, file_path_2);
-            if (same) {
-                Log.d("imageCompare:", imgFile.getName() + " is the same!");
-            } else {
-                Log.d("imageCompare:", imgFile.getName() + " is different!");
-            }
-        }
-    }
-
-    public static void printWrongIndex(String folder1, String folder2, String file, Context mContext) {
-        File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
-        String folder_path = folder.getAbsolutePath();
-        //String folder_path = "/storage/self/primary/";
-        String file_path_1 = folder_path + "/" + folder1 + "/" + file;
-        String file_path_2 = folder_path + "/" + folder2 + "/" + file;
-
-
-
-        Bitmap bitmap1 = BitmapFactory.decodeFile(file_path_1);
-        ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
-        bitmap1.compress(Bitmap.CompressFormat.PNG, 100, stream1);
-        byte[] first =  stream1.toByteArray();
-
-        Bitmap bitmap2 = BitmapFactory.decodeFile(file_path_1);
-        ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
-        bitmap2.compress(Bitmap.CompressFormat.PNG, 100, stream2);
-        byte[] second = stream2.toByteArray();
-
-        int width = bitmap1.getWidth();
-        int height = bitmap1.getHeight();
-
-        byte[] difference = new byte[first.length];
-        //System.out.println("Total pixel: " + width * height);
-        //System.out.println("intdifference length: " + intdifference.length);
-        //System.out.println("byte array length" + first.length);
-
-        for (int i = 0; i < first.length; i++) {
-            int v1 = 0xFF & first[i];
-            int v2 = 0xFF & second[i];
-            int error = Math.abs(v1 - v2);
-            //if (error > 2 ) {
-            //    intdifference[i/4] = 0;
-            //} else {
-            //    intdifference[i/4] = 255;
-            //}
-            difference[i] = (byte)(first[i] - second[i]);
-        }
-
-        //Bitmap differenceBitmap = Bitmap.createBitmap(difference, width, height, Bitmap.Config.ARGB_8888);
-
-        Bitmap differenceBitmap = BitmapFactory.decodeByteArray(difference,0, difference.length);
-        MediaStoreSaver.savePNG(differenceBitmap, "difference", "updateSharp1Difference.png", mContext);
-        System.out.println("difference image saved!");
-    }
-}
diff --git a/java/tests/Refocus/src/com/android/rs/test/MainActivity.java b/java/tests/Refocus/src/com/android/rs/test/MainActivity.java
deleted file mode 100644
index ebd1901..0000000
--- a/java/tests/Refocus/src/com/android/rs/test/MainActivity.java
+++ /dev/null
@@ -1,212 +0,0 @@
-package com.android.rs.refocus;
-
-import android.app.Activity;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Environment;
-import android.os.Bundle;
-import android.support.v8.renderscript.RenderScript;
-import android.util.Log;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.io.File;
-import java.io.IOException;
-
-public class MainActivity extends Activity {
-    private static final int RS_API = 19;
-    private static final String TAG = "MainActivity";
-
-    ImageView mImgView;
-
-    ImageView mNewImgView;
-    TextView mCompareTextView;
-    TextView mPointerLabelTextView;
-    TextView mAllocLabelTextView;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-        mImgView = (ImageView) findViewById(R.id.image_view);
-        mNewImgView = (ImageView) findViewById(R.id.image_view_new);
-        mCompareTextView = (TextView) findViewById(R.id.compareTextView);
-        mPointerLabelTextView = (TextView) findViewById(R.id.orignialImageLabel);
-        mAllocLabelTextView = (TextView) findViewById(R.id.newImageLabel);
-
-        Intent intent = getIntent();
-        if (intent != null) {
-
-            String s = intent.getType();
-            if (s != null && s.indexOf("image/") != -1) {
-                Uri data = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
-                if (data != null) {
-
-                    try {
-                      RenderScript renderScript = RenderScript.create(getApplicationContext(), RS_API);
-                      renderScript.setPriority(RenderScript.Priority.NORMAL);
-
-                      // Get input uri to RGBZ
-                      RGBZ current_rgbz = new RGBZ(data, getContentResolver(), this);
-                      DepthOfFieldOptions current_depth_options = new DepthOfFieldOptions(current_rgbz);
-
-                      // Set image focus settings
-                      current_depth_options.setFocusPoint(0.7f, 0.5f);
-                      current_depth_options.setBokeh(2f);
-
-                      RsTaskParams rsTaskParam = new RsTaskParams(renderScript, current_depth_options);
-                      new RsAsyncTaskRunner().execute(rsTaskParam);
-                      return;
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
-
-                }
-            }
-        }
-
-
-        try {
-            //Uri data = getLocalRef();
-            Uri data = getResourceRef();
-            if (data == null) {
-                return;
-            }
-
-            RenderScript renderScript = RenderScript.create(getApplicationContext(), RS_API);
-            renderScript.setPriority(RenderScript.Priority.NORMAL);
-
-            // Get input uri to RGBZ
-            RGBZ current_rgbz = new RGBZ(data, getContentResolver(), this);
-            DepthOfFieldOptions current_depth_options = new DepthOfFieldOptions(current_rgbz);
-
-            // Set image focus settings
-            current_depth_options.setFocusPoint(0.7f, 0.5f);
-            current_depth_options.setBokeh(2f);
-
-            RsTaskParams rsTaskParam = new RsTaskParams(renderScript, current_depth_options);
-            new RsAsyncTaskRunner().execute(rsTaskParam);
-            return;
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static class RsTaskParams {
-      RenderScript mRenderScript;
-      DepthOfFieldOptions mOptions;
-
-      RsTaskParams(RenderScript renderScript,
-                   DepthOfFieldOptions options) {
-        mRenderScript = renderScript;
-        mOptions = options;
-      }
-    }
-
-    private class RsAsyncTaskRunner extends AsyncTask<RsTaskParams, Integer, Bitmap> {
-
-      Bitmap outputImage;
-      Bitmap outputImageNew;
-      ImageCompare.CompareValue result;
-
-      @Override
-      protected Bitmap doInBackground(RsTaskParams... params) {
-
-        publishProgress(0);
-
-        RenderScriptTask renderScriptTask = new RenderScriptTask(params[0].mRenderScript, RenderScriptTask.script.f32);
-        outputImage = renderScriptTask.applyRefocusFilter(params[0].mOptions);
-        publishProgress(1);
-
-        RenderScriptTask renderScriptTaskNew = new RenderScriptTask(params[0].mRenderScript, RenderScriptTask.script.d1new);
-        outputImageNew = renderScriptTaskNew.applyRefocusFilter(params[0].mOptions);
-        publishProgress(2);
-
-        result = new ImageCompare.CompareValue();
-        ImageCompare.compareBitmap(outputImage, outputImageNew, result);
-        publishProgress(3);
-
-        return outputImage;
-      }
-
-      protected  void onPostExecute(Bitmap result) {
-
-      }
-
-      protected void onProgressUpdate(Integer... progress) {
-        switch (progress[0]){
-          case 0:
-              mAllocLabelTextView.setText("Global Allocation Version...");
-              mPointerLabelTextView.setText("Processing...");
-              mCompareTextView.setText("Image Difference");
-          case 1:
-              mImgView.setImageBitmap(outputImage);
-              mImgView.invalidate();
-              mPointerLabelTextView.setText("Pointer Result");
-              mAllocLabelTextView.setText("Processing...");
-            break;
-          case 2:
-              mNewImgView.setImageBitmap(outputImageNew);
-              mNewImgView.invalidate();
-              mAllocLabelTextView.setText("Global Allocation Version");
-              mCompareTextView.setText("Calculating...");
-            break;
-          case 3:
-              mCompareTextView.setText("Percentage Different: " + result.diffPercent + " Average Difference: " + result.aveDiff);
-            break;
-        }
-      }
-    }
-
-    Uri getLocalRef() {
-
-
-        File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
-
-        Log.v(TAG, "DIRECTORY_DOCUMENTS = " + folder.getAbsolutePath());
-        ;
-        File f = findJpeg(folder);
-        if (f != null) {
-            Log.v(TAG, "File = " + f);
-            return Uri.fromFile(f);
-        }
-        return null;
-    }
-
-    Uri getResourceRef() {
-        Context context = getApplicationContext();
-        int resID = R.drawable.refocusimage;
-        Uri path = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
-            context.getResources().getResourcePackageName(resID) + '/' +
-            context.getResources().getResourceTypeName(resID) + '/' +
-            context.getResources().getResourceEntryName(resID));
-        return path;
-    }
-
-    private File findJpeg(File dir) {
-
-        File[] files = dir.listFiles();
-        if (files == null) return null;
-        for (int i = 0; i < files.length; i++) {
-            if (files[i].isDirectory() && !files[i].getName().startsWith(".")) {
-                File ret = findJpeg(files[i]);
-                if (ret != null) {
-                    Log.v(TAG, "returning " + ret.getAbsolutePath());
-                    return ret;
-                }
-                continue;
-            }
-            if (files[i].getName().toLowerCase().endsWith(".jpg")) {
-                Log.v(TAG, "returning " + files[i].getAbsolutePath());
-                return files[i];
-
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/java/tests/Refocus/src/com/android/rs/test/RGBZ.java b/java/tests/Refocus/src/com/android/rs/test/RGBZ.java
deleted file mode 100644
index e26f7ef..0000000
--- a/java/tests/Refocus/src/com/android/rs/test/RGBZ.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.android.rs.refocus;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-import android.net.Uri;
-import android.util.Log;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-/**
- * An RGBZ image, where Z stands for depth, i.e. a color+depth image.
- * The RGBZ always has a preview image, which represents the latest rendering of the RGBZ.
- * The preview is encoded as the normal jpeg content for client compatibility,
- * while the color channel and depth channels are encoded as XMP data.
- * The class supports lazy initialization where the XMP meta data is loaded only when first
- * accessed.
- *
- * @author chernand@google.com (Carlos Hernandez)
- */
-public class RGBZ {
-  public static final String TAG = "RGBZ";
-
-  private Bitmap bitmap;
-  private Bitmap preview;
-  private Bitmap depthBitmap;
-  private DepthTransform depthTransform;
-  private DepthImage depthImage;
-
-  /**
-   * Creates an RGBZ from a content uri.
-   *
-   * @param uri The uri name of the RGBZ
-   * @throws FileNotFoundException if the RGBZ could not be read
-   */
-  public RGBZ(Uri uri, ContentResolver contentResolver, Context context) throws IOException {
-    preview = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));
-    if (preview == null) {
-      throw new FileNotFoundException(uri.toString());
-    }
-    this.depthImage = new DepthImage(context, uri);
-    this.depthBitmap = depthImage.getDepthBitmap();
-    this.bitmap = setAlphaChannel(preview, this.depthBitmap);
-    this.depthTransform = depthImage.getDepthTransform();
-  }
-
-  /**
-   * @return Whether the RGBZ has a depth channel
-   */
-  public boolean hasDepthmap() {
-    return depthTransform != null;
-  }
-
-  /**
-   * @return The color+depth {@code Bitmap}
-   */
-  public Bitmap getBitmap() {
-    return bitmap;
-  }
-
-  /**
-   * @return The depthmap component of this RGBZ
-   */
-  public DepthTransform getDepthTransform() {
-    return depthTransform;
-  }
-
-  public double getFocusDepth() {
-    return this.depthImage.getFocalDistance();
-  }
-
-  public double getDepthOfField() {
-    return this.depthImage.getDepthOfField();
-  }
-
-  public double getBlurInfinity() {
-    return this.depthImage.getBlurAtInfinity();
-  }
-
-  /**
-   * @return the width of this {@code RGBZ}
-   */
-  public int getWidth() {
-    return bitmap.getWidth();
-  }
-
-  /**
-   * @return the height of this {@code RGBZ}
-   */
-  public int getHeight() {
-    return bitmap.getHeight();
-  }
-
-  /**
-   * @return the depth value of the given pixel
-   */
-
-  public float getDepth(int x, int y) {
-    if (!hasDepthmap()) {
-      return 0.0f;
-    }
-    if (x < 0 || x > depthBitmap.getWidth() ||
-            y < 0 || y > depthBitmap.getHeight()) {
-      Log.e("RGBZ getDepth", "index out of bound");
-      return 0;
-    }
-    return getDepthTransform().reconstruct(Color.blue(depthBitmap.getPixel(x, y)));
-  }
-
-  /**
-   * Sets the depthmap as the alpha channel of the {@code Bitmap}.
-   */
-  public Bitmap setAlphaChannel(Bitmap bitmap, Bitmap depthBitmap) {
-    if (bitmap == null) {
-      return bitmap;
-    }
-    Bitmap result = bitmap.copy(Bitmap.Config.ARGB_8888, true);
-    // set the alpha channel of depthBitmap to alpha of bitmap
-    result = setAlphaChannelFromBitmap(depthBitmap, bitmap, result);
-    return result;
-  }
-
-  private Bitmap setAlphaChannelFromBitmap(Bitmap depth, Bitmap orig, Bitmap dest) {
-    int w = orig.getWidth();
-    int h = orig.getHeight();
-    int[] orig_data = new int[w*h];
-    int[] depth_data = new int[w*h];
-
-    orig.getPixels(orig_data, 0, w, 0, 0, w, h);
-    depth.getPixels(depth_data, 0, w, 0, 0, w, h);
-    for (int i = 0; i < orig_data.length; i++) {
-      int v = orig_data[i] & 0x00FFFFFF;
-      int temp = (depth_data[i] & 0x000000FF) << 24;
-      v = v | temp;
-      orig_data[i] = v;
-    }
-    dest.setPixels(orig_data, 0, w, 0, 0, w, h);
-    return dest;
-  }
-}
-
diff --git a/tests/cpp_api/Android.mk b/tests/cpp_api/Android.mk
new file mode 100644
index 0000000..95904a8
--- /dev/null
+++ b/tests/cpp_api/Android.mk
@@ -0,0 +1,4 @@
+LOCAL_PATH:=$(call my-dir)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+
diff --git a/tests/cppallocation/Android.mk b/tests/cpp_api/cppallocation/Android.mk
similarity index 100%
rename from tests/cppallocation/Android.mk
rename to tests/cpp_api/cppallocation/Android.mk
diff --git a/tests/cppallocation/compute.cpp b/tests/cpp_api/cppallocation/compute.cpp
similarity index 100%
rename from tests/cppallocation/compute.cpp
rename to tests/cpp_api/cppallocation/compute.cpp
diff --git a/tests/cppallocation/multiply.rs b/tests/cpp_api/cppallocation/multiply.rs
similarity index 100%
rename from tests/cppallocation/multiply.rs
rename to tests/cpp_api/cppallocation/multiply.rs
diff --git a/tests/cppbasic-getpointer/Android.mk b/tests/cpp_api/cppbasic-getpointer/Android.mk
similarity index 100%
rename from tests/cppbasic-getpointer/Android.mk
rename to tests/cpp_api/cppbasic-getpointer/Android.mk
diff --git a/tests/cppbasic-getpointer/compute.cpp b/tests/cpp_api/cppbasic-getpointer/compute.cpp
similarity index 100%
rename from tests/cppbasic-getpointer/compute.cpp
rename to tests/cpp_api/cppbasic-getpointer/compute.cpp
diff --git a/tests/cppbasic-getpointer/mono.rs b/tests/cpp_api/cppbasic-getpointer/mono.rs
similarity index 100%
rename from tests/cppbasic-getpointer/mono.rs
rename to tests/cpp_api/cppbasic-getpointer/mono.rs
diff --git a/tests/cppbasic-shared/Android.mk b/tests/cpp_api/cppbasic-shared/Android.mk
similarity index 100%
rename from tests/cppbasic-shared/Android.mk
rename to tests/cpp_api/cppbasic-shared/Android.mk
diff --git a/tests/cppbasic-shared/compute.cpp b/tests/cpp_api/cppbasic-shared/compute.cpp
similarity index 100%
rename from tests/cppbasic-shared/compute.cpp
rename to tests/cpp_api/cppbasic-shared/compute.cpp
diff --git a/tests/cppbasic-shared/mono.rs b/tests/cpp_api/cppbasic-shared/mono.rs
similarity index 100%
rename from tests/cppbasic-shared/mono.rs
rename to tests/cpp_api/cppbasic-shared/mono.rs
diff --git a/tests/cppbasic/Android.mk b/tests/cpp_api/cppbasic/Android.mk
similarity index 100%
rename from tests/cppbasic/Android.mk
rename to tests/cpp_api/cppbasic/Android.mk
diff --git a/tests/cppbasic/compute.cpp b/tests/cpp_api/cppbasic/compute.cpp
similarity index 100%
rename from tests/cppbasic/compute.cpp
rename to tests/cpp_api/cppbasic/compute.cpp
diff --git a/tests/cppbasic/mono.rs b/tests/cpp_api/cppbasic/mono.rs
similarity index 100%
rename from tests/cppbasic/mono.rs
rename to tests/cpp_api/cppbasic/mono.rs
diff --git a/tests/cppf16/Android.mk b/tests/cpp_api/cppf16/Android.mk
similarity index 100%
rename from tests/cppf16/Android.mk
rename to tests/cpp_api/cppf16/Android.mk
diff --git a/tests/cppf16/compute.cpp b/tests/cpp_api/cppf16/compute.cpp
similarity index 100%
rename from tests/cppf16/compute.cpp
rename to tests/cpp_api/cppf16/compute.cpp
diff --git a/tests/cppstrided/Android.mk b/tests/cpp_api/cppstrided/Android.mk
similarity index 100%
rename from tests/cppstrided/Android.mk
rename to tests/cpp_api/cppstrided/Android.mk
diff --git a/tests/cppstrided/compute.cpp b/tests/cpp_api/cppstrided/compute.cpp
similarity index 100%
rename from tests/cppstrided/compute.cpp
rename to tests/cpp_api/cppstrided/compute.cpp
diff --git a/tests/cppstrided/multiply.rs b/tests/cpp_api/cppstrided/multiply.rs
similarity index 100%
rename from tests/cppstrided/multiply.rs
rename to tests/cpp_api/cppstrided/multiply.rs
diff --git a/tests/latency/Android.mk b/tests/cpp_api/latency/Android.mk
similarity index 100%
rename from tests/latency/Android.mk
rename to tests/cpp_api/latency/Android.mk
diff --git a/tests/latency/latency.cpp b/tests/cpp_api/latency/latency.cpp
similarity index 100%
rename from tests/latency/latency.cpp
rename to tests/cpp_api/latency/latency.cpp
diff --git a/tests/latency/latency.rs b/tests/cpp_api/latency/latency.rs
similarity index 100%
rename from tests/latency/latency.rs
rename to tests/cpp_api/latency/latency.rs
diff --git a/tests/typecheck/Android.mk b/tests/cpp_api/typecheck/Android.mk
similarity index 100%
rename from tests/typecheck/Android.mk
rename to tests/cpp_api/typecheck/Android.mk
diff --git a/tests/typecheck/kernels.rs b/tests/cpp_api/typecheck/kernels.rs
similarity index 100%
rename from tests/typecheck/kernels.rs
rename to tests/cpp_api/typecheck/kernels.rs
diff --git a/tests/typecheck/typecheck.cpp b/tests/cpp_api/typecheck/typecheck.cpp
similarity index 100%
rename from tests/typecheck/typecheck.cpp
rename to tests/cpp_api/typecheck/typecheck.cpp
diff --git a/java/Android.mk b/tests/java_api/Android.mk
similarity index 85%
rename from java/Android.mk
rename to tests/java_api/Android.mk
index c8f64ce..a040e34 100644
--- a/java/Android.mk
+++ b/tests/java_api/Android.mk
@@ -3,5 +3,9 @@
 # Only build our tests if we doing a top-level build. Do not build the
 # tests if we are just doing an mm or mmm in frameworks/rs.
 ifeq (,$(ONE_SHOT_MAKEFILE))
+
+ifneq (true,$(TARGET_BUILD_PDK))
 include $(call all-makefiles-under,$(LOCAL_PATH))
 endif
+
+endif
diff --git a/java/tests/Balls/Android.mk b/tests/java_api/Balls/Android.mk
similarity index 100%
rename from java/tests/Balls/Android.mk
rename to tests/java_api/Balls/Android.mk
diff --git a/java/tests/Balls/AndroidManifest.xml b/tests/java_api/Balls/AndroidManifest.xml
similarity index 100%
rename from java/tests/Balls/AndroidManifest.xml
rename to tests/java_api/Balls/AndroidManifest.xml
diff --git a/java/tests/Balls/_index.html b/tests/java_api/Balls/_index.html
similarity index 100%
rename from java/tests/Balls/_index.html
rename to tests/java_api/Balls/_index.html
diff --git a/java/tests/Balls/res/drawable/flares.png b/tests/java_api/Balls/res/drawable/flares.png
similarity index 100%
rename from java/tests/Balls/res/drawable/flares.png
rename to tests/java_api/Balls/res/drawable/flares.png
Binary files differ
diff --git a/java/tests/Balls/res/drawable/test_pattern.png b/tests/java_api/Balls/res/drawable/test_pattern.png
similarity index 100%
rename from java/tests/Balls/res/drawable/test_pattern.png
rename to tests/java_api/Balls/res/drawable/test_pattern.png
Binary files differ
diff --git a/java/tests/Balls/src/com/example/android/rs/balls/Balls.java b/tests/java_api/Balls/src/com/example/android/rs/balls/Balls.java
similarity index 100%
rename from java/tests/Balls/src/com/example/android/rs/balls/Balls.java
rename to tests/java_api/Balls/src/com/example/android/rs/balls/Balls.java
diff --git a/java/tests/Balls/src/com/example/android/rs/balls/BallsRS.java b/tests/java_api/Balls/src/com/example/android/rs/balls/BallsRS.java
similarity index 100%
rename from java/tests/Balls/src/com/example/android/rs/balls/BallsRS.java
rename to tests/java_api/Balls/src/com/example/android/rs/balls/BallsRS.java
diff --git a/java/tests/Balls/src/com/example/android/rs/balls/BallsView.java b/tests/java_api/Balls/src/com/example/android/rs/balls/BallsView.java
similarity index 100%
rename from java/tests/Balls/src/com/example/android/rs/balls/BallsView.java
rename to tests/java_api/Balls/src/com/example/android/rs/balls/BallsView.java
diff --git a/java/tests/Balls/src/com/example/android/rs/balls/ball_physics.rs b/tests/java_api/Balls/src/com/example/android/rs/balls/ball_physics.rs
similarity index 100%
rename from java/tests/Balls/src/com/example/android/rs/balls/ball_physics.rs
rename to tests/java_api/Balls/src/com/example/android/rs/balls/ball_physics.rs
diff --git a/java/tests/Balls/src/com/example/android/rs/balls/balls.rs b/tests/java_api/Balls/src/com/example/android/rs/balls/balls.rs
similarity index 100%
rename from java/tests/Balls/src/com/example/android/rs/balls/balls.rs
rename to tests/java_api/Balls/src/com/example/android/rs/balls/balls.rs
diff --git a/java/tests/Balls/src/com/example/android/rs/balls/balls.rsh b/tests/java_api/Balls/src/com/example/android/rs/balls/balls.rsh
similarity index 100%
rename from java/tests/Balls/src/com/example/android/rs/balls/balls.rsh
rename to tests/java_api/Balls/src/com/example/android/rs/balls/balls.rsh
diff --git a/java/tests/CannyLive/Android.mk b/tests/java_api/CannyLive/Android.mk
similarity index 100%
rename from java/tests/CannyLive/Android.mk
rename to tests/java_api/CannyLive/Android.mk
diff --git a/java/tests/CannyLive/AndroidManifest.xml b/tests/java_api/CannyLive/AndroidManifest.xml
similarity index 100%
rename from java/tests/CannyLive/AndroidManifest.xml
rename to tests/java_api/CannyLive/AndroidManifest.xml
diff --git a/java/tests/CannyLive/_index.html b/tests/java_api/CannyLive/_index.html
similarity index 100%
rename from java/tests/CannyLive/_index.html
rename to tests/java_api/CannyLive/_index.html
diff --git a/java/tests/CannyLive/res/anim/slide_in_from_left.xml b/tests/java_api/CannyLive/res/anim/slide_in_from_left.xml
similarity index 100%
rename from java/tests/CannyLive/res/anim/slide_in_from_left.xml
rename to tests/java_api/CannyLive/res/anim/slide_in_from_left.xml
diff --git a/java/tests/CannyLive/res/anim/slide_out_to_right.xml b/tests/java_api/CannyLive/res/anim/slide_out_to_right.xml
similarity index 100%
rename from java/tests/CannyLive/res/anim/slide_out_to_right.xml
rename to tests/java_api/CannyLive/res/anim/slide_out_to_right.xml
diff --git a/java/tests/CannyLive/res/drawable-hdpi/camera.png b/tests/java_api/CannyLive/res/drawable-hdpi/camera.png
similarity index 100%
rename from java/tests/CannyLive/res/drawable-hdpi/camera.png
rename to tests/java_api/CannyLive/res/drawable-hdpi/camera.png
Binary files differ
diff --git a/java/tests/CannyLive/res/drawable-mdpi/camera.png b/tests/java_api/CannyLive/res/drawable-mdpi/camera.png
similarity index 100%
rename from java/tests/CannyLive/res/drawable-mdpi/camera.png
rename to tests/java_api/CannyLive/res/drawable-mdpi/camera.png
Binary files differ
diff --git a/java/tests/CannyLive/res/drawable-xhdpi/camera.png b/tests/java_api/CannyLive/res/drawable-xhdpi/camera.png
similarity index 100%
rename from java/tests/CannyLive/res/drawable-xhdpi/camera.png
rename to tests/java_api/CannyLive/res/drawable-xhdpi/camera.png
Binary files differ
diff --git a/java/tests/CannyLive/res/drawable-xxhdpi/camera.png b/tests/java_api/CannyLive/res/drawable-xxhdpi/camera.png
similarity index 100%
rename from java/tests/CannyLive/res/drawable-xxhdpi/camera.png
rename to tests/java_api/CannyLive/res/drawable-xxhdpi/camera.png
Binary files differ
diff --git a/java/tests/CannyLive/res/drawable/ic_back.xml b/tests/java_api/CannyLive/res/drawable/ic_back.xml
similarity index 100%
rename from java/tests/CannyLive/res/drawable/ic_back.xml
rename to tests/java_api/CannyLive/res/drawable/ic_back.xml
diff --git a/java/tests/CannyLive/res/drawable/ic_cam.xml b/tests/java_api/CannyLive/res/drawable/ic_cam.xml
similarity index 100%
rename from java/tests/CannyLive/res/drawable/ic_cam.xml
rename to tests/java_api/CannyLive/res/drawable/ic_cam.xml
diff --git a/java/tests/CannyLive/res/layout/activity_main.xml b/tests/java_api/CannyLive/res/layout/activity_main.xml
similarity index 100%
rename from java/tests/CannyLive/res/layout/activity_main.xml
rename to tests/java_api/CannyLive/res/layout/activity_main.xml
diff --git a/java/tests/CannyLive/res/layout/layout.xml b/tests/java_api/CannyLive/res/layout/layout.xml
similarity index 100%
rename from java/tests/CannyLive/res/layout/layout.xml
rename to tests/java_api/CannyLive/res/layout/layout.xml
diff --git a/java/tests/CannyLive/res/mipmap-hdpi/ic_launcher.png b/tests/java_api/CannyLive/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from java/tests/CannyLive/res/mipmap-hdpi/ic_launcher.png
rename to tests/java_api/CannyLive/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/CannyLive/res/mipmap-mdpi/ic_launcher.png b/tests/java_api/CannyLive/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from java/tests/CannyLive/res/mipmap-mdpi/ic_launcher.png
rename to tests/java_api/CannyLive/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/CannyLive/res/mipmap-xhdpi/ic_launcher.png b/tests/java_api/CannyLive/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/CannyLive/res/mipmap-xhdpi/ic_launcher.png
rename to tests/java_api/CannyLive/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/CannyLive/res/mipmap-xxhdpi/ic_launcher.png b/tests/java_api/CannyLive/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/CannyLive/res/mipmap-xxhdpi/ic_launcher.png
rename to tests/java_api/CannyLive/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/CannyLive/res/mipmap-xxxhdpi/ic_launcher.png b/tests/java_api/CannyLive/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/CannyLive/res/mipmap-xxxhdpi/ic_launcher.png
rename to tests/java_api/CannyLive/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/CannyLive/res/values-v21/styles.xml b/tests/java_api/CannyLive/res/values-v21/styles.xml
similarity index 100%
rename from java/tests/CannyLive/res/values-v21/styles.xml
rename to tests/java_api/CannyLive/res/values-v21/styles.xml
diff --git a/java/tests/CannyLive/res/values-w820dp/dimens.xml b/tests/java_api/CannyLive/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/CannyLive/res/values-w820dp/dimens.xml
rename to tests/java_api/CannyLive/res/values-w820dp/dimens.xml
diff --git a/java/tests/CannyLive/res/values/attrs.xml b/tests/java_api/CannyLive/res/values/attrs.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/attrs.xml
rename to tests/java_api/CannyLive/res/values/attrs.xml
diff --git a/java/tests/CannyLive/res/values/base-strings.xml b/tests/java_api/CannyLive/res/values/base-strings.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/base-strings.xml
rename to tests/java_api/CannyLive/res/values/base-strings.xml
diff --git a/java/tests/CannyLive/res/values/colors.xml b/tests/java_api/CannyLive/res/values/colors.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/colors.xml
rename to tests/java_api/CannyLive/res/values/colors.xml
diff --git a/java/tests/CannyLive/res/values/dimens.xml b/tests/java_api/CannyLive/res/values/dimens.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/dimens.xml
rename to tests/java_api/CannyLive/res/values/dimens.xml
diff --git a/java/tests/CannyLive/res/values/strings.xml b/tests/java_api/CannyLive/res/values/strings.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/strings.xml
rename to tests/java_api/CannyLive/res/values/strings.xml
diff --git a/java/tests/CannyLive/res/values/styles.xml b/tests/java_api/CannyLive/res/values/styles.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/styles.xml
rename to tests/java_api/CannyLive/res/values/styles.xml
diff --git a/java/tests/CannyLive/res/values/template-dimens.xml b/tests/java_api/CannyLive/res/values/template-dimens.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/template-dimens.xml
rename to tests/java_api/CannyLive/res/values/template-dimens.xml
diff --git a/java/tests/CannyLive/res/values/template-styles.xml b/tests/java_api/CannyLive/res/values/template-styles.xml
similarity index 100%
rename from java/tests/CannyLive/res/values/template-styles.xml
rename to tests/java_api/CannyLive/res/values/template-styles.xml
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/CameraOps.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/CameraOps.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/CameraOps.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/CameraOps.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/CameraView.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/CameraView.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/CameraView.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/CameraView.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/FixedAspectSurfaceView.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/FixedAspectSurfaceView.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/FixedAspectSurfaceView.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/FixedAspectSurfaceView.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/MainActivity.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/MainActivity.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/MainActivity.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/MainActivity.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/MediaStoreSaver.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/MediaStoreSaver.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/MediaStoreSaver.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/MediaStoreSaver.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/VerticalSeekBar.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/VerticalSeekBar.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/VerticalSeekBar.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/VerticalSeekBar.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/ViewfinderProcessor.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/ViewfinderProcessor.java
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/ViewfinderProcessor.java
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/ViewfinderProcessor.java
diff --git a/java/tests/CannyLive/src/com/android/example/cannylive/canny.rs b/tests/java_api/CannyLive/src/com/android/example/cannylive/canny.rs
similarity index 100%
rename from java/tests/CannyLive/src/com/android/example/cannylive/canny.rs
rename to tests/java_api/CannyLive/src/com/android/example/cannylive/canny.rs
diff --git a/java/tests/ComputeBenchmark/Android.mk b/tests/java_api/ComputeBenchmark/Android.mk
similarity index 100%
rename from java/tests/ComputeBenchmark/Android.mk
rename to tests/java_api/ComputeBenchmark/Android.mk
diff --git a/java/tests/ComputeBenchmark/AndroidManifest.xml b/tests/java_api/ComputeBenchmark/AndroidManifest.xml
similarity index 100%
rename from java/tests/ComputeBenchmark/AndroidManifest.xml
rename to tests/java_api/ComputeBenchmark/AndroidManifest.xml
diff --git a/java/tests/ComputeBenchmark/res/layout/main.xml b/tests/java_api/ComputeBenchmark/res/layout/main.xml
similarity index 100%
rename from java/tests/ComputeBenchmark/res/layout/main.xml
rename to tests/java_api/ComputeBenchmark/res/layout/main.xml
diff --git a/java/tests/ComputeBenchmark/src/com/example/android/rs/computebench/Benchmark.java b/tests/java_api/ComputeBenchmark/src/com/example/android/rs/computebench/Benchmark.java
similarity index 100%
rename from java/tests/ComputeBenchmark/src/com/example/android/rs/computebench/Benchmark.java
rename to tests/java_api/ComputeBenchmark/src/com/example/android/rs/computebench/Benchmark.java
diff --git a/java/tests/ComputeBenchmark/src/com/example/android/rs/computebench/ComputeBench.java b/tests/java_api/ComputeBenchmark/src/com/example/android/rs/computebench/ComputeBench.java
similarity index 100%
rename from java/tests/ComputeBenchmark/src/com/example/android/rs/computebench/ComputeBench.java
rename to tests/java_api/ComputeBenchmark/src/com/example/android/rs/computebench/ComputeBench.java
diff --git a/java/tests/ComputeBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs b/tests/java_api/ComputeBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs
similarity index 100%
rename from java/tests/ComputeBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs
rename to tests/java_api/ComputeBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs
diff --git a/java/tests/ComputePerf/Android.mk b/tests/java_api/ComputePerf/Android.mk
similarity index 100%
rename from java/tests/ComputePerf/Android.mk
rename to tests/java_api/ComputePerf/Android.mk
diff --git a/java/tests/ComputePerf/AndroidManifest.xml b/tests/java_api/ComputePerf/AndroidManifest.xml
similarity index 100%
rename from java/tests/ComputePerf/AndroidManifest.xml
rename to tests/java_api/ComputePerf/AndroidManifest.xml
diff --git a/java/tests/ComputePerf/res/layout/main.xml b/tests/java_api/ComputePerf/res/layout/main.xml
similarity index 100%
rename from java/tests/ComputePerf/res/layout/main.xml
rename to tests/java_api/ComputePerf/res/layout/main.xml
diff --git a/java/tests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java b/tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
similarity index 100%
rename from java/tests/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
rename to tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/ComputePerf.java
diff --git a/java/tests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java b/tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java
similarity index 100%
rename from java/tests/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java
rename to tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/LaunchTest.java
diff --git a/java/tests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java b/tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java
similarity index 100%
rename from java/tests/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java
rename to tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/Mandelbrot.java
diff --git a/java/tests/ComputePerf/src/com/example/android/rs/computeperf/launchtest.rs b/tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/launchtest.rs
similarity index 100%
rename from java/tests/ComputePerf/src/com/example/android/rs/computeperf/launchtest.rs
rename to tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/launchtest.rs
diff --git a/java/tests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs b/tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs
similarity index 100%
rename from java/tests/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs
rename to tests/java_api/ComputePerf/src/com/example/android/rs/computeperf/mandelbrot.rs
diff --git a/java/tests/GenImages/Android.mk b/tests/java_api/GenImages/Android.mk
similarity index 100%
rename from java/tests/GenImages/Android.mk
rename to tests/java_api/GenImages/Android.mk
diff --git a/java/tests/GenImages/AndroidManifest.xml b/tests/java_api/GenImages/AndroidManifest.xml
similarity index 100%
rename from java/tests/GenImages/AndroidManifest.xml
rename to tests/java_api/GenImages/AndroidManifest.xml
diff --git a/java/tests/GenImages/res/drawable-nodpi/test_pattern.png b/tests/java_api/GenImages/res/drawable-nodpi/test_pattern.png
similarity index 100%
rename from java/tests/GenImages/res/drawable-nodpi/test_pattern.png
rename to tests/java_api/GenImages/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/java/tests/GenImages/res/drawable/ic_launcher.png b/tests/java_api/GenImages/res/drawable/ic_launcher.png
similarity index 100%
rename from java/tests/GenImages/res/drawable/ic_launcher.png
rename to tests/java_api/GenImages/res/drawable/ic_launcher.png
Binary files differ
diff --git a/java/tests/GenImages/res/layout/main.xml b/tests/java_api/GenImages/res/layout/main.xml
similarity index 100%
rename from java/tests/GenImages/res/layout/main.xml
rename to tests/java_api/GenImages/res/layout/main.xml
diff --git a/java/tests/GenImages/res/values/strings.xml b/tests/java_api/GenImages/res/values/strings.xml
similarity index 100%
rename from java/tests/GenImages/res/values/strings.xml
rename to tests/java_api/GenImages/res/values/strings.xml
diff --git a/java/tests/GenImages/src/com/android/rs/genimage/GenImage.java b/tests/java_api/GenImages/src/com/android/rs/genimage/GenImage.java
similarity index 100%
rename from java/tests/GenImages/src/com/android/rs/genimage/GenImage.java
rename to tests/java_api/GenImages/src/com/android/rs/genimage/GenImage.java
diff --git a/java/tests/GenImages/src/com/android/rs/genimage/GenImageAct.java b/tests/java_api/GenImages/src/com/android/rs/genimage/GenImageAct.java
similarity index 100%
rename from java/tests/GenImages/src/com/android/rs/genimage/GenImageAct.java
rename to tests/java_api/GenImages/src/com/android/rs/genimage/GenImageAct.java
diff --git a/java/tests/HealingBrush/Android.mk b/tests/java_api/HealingBrush/Android.mk
similarity index 100%
rename from java/tests/HealingBrush/Android.mk
rename to tests/java_api/HealingBrush/Android.mk
diff --git a/java/tests/HealingBrush/AndroidManifest.xml b/tests/java_api/HealingBrush/AndroidManifest.xml
similarity index 100%
rename from java/tests/HealingBrush/AndroidManifest.xml
rename to tests/java_api/HealingBrush/AndroidManifest.xml
diff --git a/java/tests/HealingBrush/res/drawable-nodpi/bugs.jpg b/tests/java_api/HealingBrush/res/drawable-nodpi/bugs.jpg
similarity index 100%
rename from java/tests/HealingBrush/res/drawable-nodpi/bugs.jpg
rename to tests/java_api/HealingBrush/res/drawable-nodpi/bugs.jpg
Binary files differ
diff --git a/java/tests/HealingBrush/res/drawable/ic_launcher.png b/tests/java_api/HealingBrush/res/drawable/ic_launcher.png
similarity index 100%
rename from java/tests/HealingBrush/res/drawable/ic_launcher.png
rename to tests/java_api/HealingBrush/res/drawable/ic_launcher.png
Binary files differ
diff --git a/java/tests/HealingBrush/res/layout/activity_main.xml b/tests/java_api/HealingBrush/res/layout/activity_main.xml
similarity index 100%
rename from java/tests/HealingBrush/res/layout/activity_main.xml
rename to tests/java_api/HealingBrush/res/layout/activity_main.xml
diff --git a/java/tests/HealingBrush/res/values-w820dp/dimens.xml b/tests/java_api/HealingBrush/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/HealingBrush/res/values-w820dp/dimens.xml
rename to tests/java_api/HealingBrush/res/values-w820dp/dimens.xml
diff --git a/java/tests/HealingBrush/res/values/dimens.xml b/tests/java_api/HealingBrush/res/values/dimens.xml
similarity index 100%
rename from java/tests/HealingBrush/res/values/dimens.xml
rename to tests/java_api/HealingBrush/res/values/dimens.xml
diff --git a/java/tests/HealingBrush/res/values/strings.xml b/tests/java_api/HealingBrush/res/values/strings.xml
similarity index 100%
rename from java/tests/HealingBrush/res/values/strings.xml
rename to tests/java_api/HealingBrush/res/values/strings.xml
diff --git a/java/tests/HealingBrush/res/values/styles.xml b/tests/java_api/HealingBrush/res/values/styles.xml
similarity index 100%
rename from java/tests/HealingBrush/res/values/styles.xml
rename to tests/java_api/HealingBrush/res/values/styles.xml
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/DrawView.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/DrawView.java
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/DrawView.java
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/DrawView.java
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/Region.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Region.java
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/Region.java
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Region.java
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/find_region.rs b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/find_region.rs
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/find_region.rs
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/find_region.rs
diff --git a/java/tests/HealingBrush/src/rs/example/android/com/healingbrush/healing.rs b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/healing.rs
similarity index 100%
rename from java/tests/HealingBrush/src/rs/example/android/com/healingbrush/healing.rs
rename to tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/healing.rs
diff --git a/java/tests/HelloComputeNDK/Android.mk b/tests/java_api/HelloComputeNDK/Android.mk
similarity index 100%
rename from java/tests/HelloComputeNDK/Android.mk
rename to tests/java_api/HelloComputeNDK/Android.mk
diff --git a/java/tests/HelloComputeNDK/AndroidManifest.xml b/tests/java_api/HelloComputeNDK/AndroidManifest.xml
similarity index 100%
rename from java/tests/HelloComputeNDK/AndroidManifest.xml
rename to tests/java_api/HelloComputeNDK/AndroidManifest.xml
diff --git a/java/tests/HelloComputeNDK/libhellocomputendk/Android.mk b/tests/java_api/HelloComputeNDK/libhellocomputendk/Android.mk
similarity index 100%
rename from java/tests/HelloComputeNDK/libhellocomputendk/Android.mk
rename to tests/java_api/HelloComputeNDK/libhellocomputendk/Android.mk
diff --git a/java/tests/HelloComputeNDK/libhellocomputendk/helloComputeNDK.cpp b/tests/java_api/HelloComputeNDK/libhellocomputendk/helloComputeNDK.cpp
similarity index 100%
rename from java/tests/HelloComputeNDK/libhellocomputendk/helloComputeNDK.cpp
rename to tests/java_api/HelloComputeNDK/libhellocomputendk/helloComputeNDK.cpp
diff --git a/java/tests/HelloComputeNDK/libhellocomputendk/mono.rs b/tests/java_api/HelloComputeNDK/libhellocomputendk/mono.rs
similarity index 100%
rename from java/tests/HelloComputeNDK/libhellocomputendk/mono.rs
rename to tests/java_api/HelloComputeNDK/libhellocomputendk/mono.rs
diff --git a/java/tests/HelloComputeNDK/res/drawable-nodpi/data.jpg b/tests/java_api/HelloComputeNDK/res/drawable-nodpi/data.jpg
similarity index 100%
rename from java/tests/HelloComputeNDK/res/drawable-nodpi/data.jpg
rename to tests/java_api/HelloComputeNDK/res/drawable-nodpi/data.jpg
Binary files differ
diff --git a/java/tests/HelloComputeNDK/res/layout/main.xml b/tests/java_api/HelloComputeNDK/res/layout/main.xml
similarity index 100%
rename from java/tests/HelloComputeNDK/res/layout/main.xml
rename to tests/java_api/HelloComputeNDK/res/layout/main.xml
diff --git a/java/tests/HelloComputeNDK/src/com/example/android/rs/hellocomputendk/HelloComputeNDK.java b/tests/java_api/HelloComputeNDK/src/com/example/android/rs/hellocomputendk/HelloComputeNDK.java
similarity index 100%
rename from java/tests/HelloComputeNDK/src/com/example/android/rs/hellocomputendk/HelloComputeNDK.java
rename to tests/java_api/HelloComputeNDK/src/com/example/android/rs/hellocomputendk/HelloComputeNDK.java
diff --git a/java/tests/ImageProcessing/Android.mk b/tests/java_api/ImageProcessing/Android.mk
similarity index 100%
rename from java/tests/ImageProcessing/Android.mk
rename to tests/java_api/ImageProcessing/Android.mk
diff --git a/java/tests/ImageProcessing/AndroidManifest.xml b/tests/java_api/ImageProcessing/AndroidManifest.xml
similarity index 100%
rename from java/tests/ImageProcessing/AndroidManifest.xml
rename to tests/java_api/ImageProcessing/AndroidManifest.xml
diff --git a/java/tests/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg b/tests/java_api/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg
similarity index 100%
rename from java/tests/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg
rename to tests/java_api/ImageProcessing/res/drawable-nodpi/img1600x1067.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg b/tests/java_api/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg
similarity index 100%
rename from java/tests/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg
rename to tests/java_api/ImageProcessing/res/drawable-nodpi/img1600x1067b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing/res/layout/main.xml b/tests/java_api/ImageProcessing/res/layout/main.xml
similarity index 100%
rename from java/tests/ImageProcessing/res/layout/main.xml
rename to tests/java_api/ImageProcessing/res/layout/main.xml
diff --git a/java/tests/ImageProcessing/res/layout/spinner_layout.xml b/tests/java_api/ImageProcessing/res/layout/spinner_layout.xml
similarity index 100%
rename from java/tests/ImageProcessing/res/layout/spinner_layout.xml
rename to tests/java_api/ImageProcessing/res/layout/spinner_layout.xml
diff --git a/java/tests/ImageProcessing/res/values/strings.xml b/tests/java_api/ImageProcessing/res/values/strings.xml
similarity index 100%
rename from java/tests/ImageProcessing/res/values/strings.xml
rename to tests/java_api/ImageProcessing/res/values/strings.xml
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Artistic1.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Artistic1.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Artistic1.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Artistic1.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/BWFilter.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/BWFilter.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/BWFilter.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/BWFilter.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Blend.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Blend.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Blend.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Blend.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Blur25.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Blur25.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Blur25.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Blur25.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Blur25G.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Blur25G.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Blur25G.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Blur25G.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/ColorCube.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/ColorCube.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/ColorCube.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/ColorCube.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/ColorMatrix.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/ColorMatrix.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/ColorMatrix.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/ColorMatrix.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Contrast.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Contrast.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Contrast.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Contrast.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Convolve3x3.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Convolve3x3.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Convolve3x3.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Convolve3x3.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Convolve5x5.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Convolve5x5.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Convolve5x5.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Convolve5x5.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Copy.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Copy.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Copy.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Copy.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/CrossProcess.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/CrossProcess.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/CrossProcess.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/CrossProcess.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Exposure.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Exposure.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Exposure.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Exposure.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Fisheye.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Fisheye.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Fisheye.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Fisheye.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Grain.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Grain.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Grain.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Grain.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Greyscale.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Greyscale.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Greyscale.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Greyscale.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/GroupTest.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/GroupTest.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/GroupTest.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/GroupTest.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Histogram.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Histogram.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Histogram.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Histogram.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/ImageProcessingTest.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/ImageProcessingTestRunner.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/LevelsV4.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/LevelsV4.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/LevelsV4.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/LevelsV4.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Mandelbrot.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Mandelbrot.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Mandelbrot.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Mandelbrot.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Mirror.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Mirror.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Mirror.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Mirror.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Resize.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Resize.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Resize.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Resize.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Shadows.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Shadows.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Shadows.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Shadows.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/TestBase.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/TestBase.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/TestBase.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/TestBase.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/UsageIO.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/UsageIO.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/UsageIO.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/UsageIO.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Vibrance.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Vibrance.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Vibrance.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Vibrance.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/Vignette.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/Vignette.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/Vignette.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/Vignette.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/WhiteBalance.java b/tests/java_api/ImageProcessing/src/com/android/rs/image/WhiteBalance.java
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/WhiteBalance.java
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/WhiteBalance.java
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/artistic1.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/artistic1.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/artistic1.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/artistic1.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/blend.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/blend.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/blend.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/blend.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/bwfilter.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/bwfilter.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/bwfilter.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/bwfilter.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/colorcube.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/colorcube.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/colorcube.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/colorcube.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/colormatrix.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/colormatrix.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/colormatrix.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/colormatrix.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/contrast.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/contrast.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/contrast.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/contrast.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/convolve3x3.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/convolve3x3.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/convolve3x3.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/convolve5x5.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/convolve5x5.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/convolve5x5.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/copy.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/copy.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/copy.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/copy.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/exposure.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/exposure.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/exposure.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/exposure.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/fisheye.rsh b/tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye.rsh
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/fisheye.rsh
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye.rsh
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh b/tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_approx.rsh
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_approx_full.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_approx_relaxed.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/fisheye_full.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_full.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/fisheye_full.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_full.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/fisheye_relaxed.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/grain.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/grain.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/grain.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/grain.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/greyscale.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/greyscale.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/greyscale.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/greyscale.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/histogram.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/histogram.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/histogram.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/histogram.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/ip.rsh b/tests/java_api/ImageProcessing/src/com/android/rs/image/ip.rsh
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/ip.rsh
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/ip.rsh
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/levels.rsh b/tests/java_api/ImageProcessing/src/com/android/rs/image/levels.rsh
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/levels.rsh
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/levels.rsh
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/levels_full.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/levels_full.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/levels_full.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/levels_full.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/levels_relaxed.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/levels_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/levels_relaxed.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/levels_relaxed.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/mandelbrot.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/mandelbrot.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/mandelbrot.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/mandelbrot.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/mirror.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/mirror.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/mirror.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/mirror.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/resize.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/resize.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/resize.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/resize.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/shadows.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/shadows.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/shadows.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/shadows.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/threshold.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/threshold.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/threshold.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/threshold.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vibrance.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/vibrance.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vibrance.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vibrance.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vignette.rsh b/tests/java_api/ImageProcessing/src/com/android/rs/image/vignette.rsh
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vignette.rsh
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vignette.rsh
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh b/tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_approx.rsh
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_approx_full.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_approx_relaxed.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vignette_full.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_full.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vignette_full.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_full.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/vignette_relaxed.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/vignette_relaxed.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/vignette_relaxed.rs
diff --git a/java/tests/ImageProcessing/src/com/android/rs/image/wbalance.rs b/tests/java_api/ImageProcessing/src/com/android/rs/image/wbalance.rs
similarity index 100%
rename from java/tests/ImageProcessing/src/com/android/rs/image/wbalance.rs
rename to tests/java_api/ImageProcessing/src/com/android/rs/image/wbalance.rs
diff --git a/java/tests/ImageProcessing2/Android.mk b/tests/java_api/ImageProcessing2/Android.mk
similarity index 100%
rename from java/tests/ImageProcessing2/Android.mk
rename to tests/java_api/ImageProcessing2/Android.mk
diff --git a/java/tests/ImageProcessing2/AndroidManifest.xml b/tests/java_api/ImageProcessing2/AndroidManifest.xml
similarity index 100%
rename from java/tests/ImageProcessing2/AndroidManifest.xml
rename to tests/java_api/ImageProcessing2/AndroidManifest.xml
diff --git a/java/tests/ImageProcessing2/res/drawable-hdpi/ic_action_settings.png b/tests/java_api/ImageProcessing2/res/drawable-hdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-hdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing2/res/drawable-hdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-mdpi/ic_action_settings.png b/tests/java_api/ImageProcessing2/res/drawable-mdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-mdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing2/res/drawable-mdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-nodpi/img1280x720a.jpg b/tests/java_api/ImageProcessing2/res/drawable-nodpi/img1280x720a.jpg
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-nodpi/img1280x720a.jpg
rename to tests/java_api/ImageProcessing2/res/drawable-nodpi/img1280x720a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-nodpi/img1280x720b.jpg b/tests/java_api/ImageProcessing2/res/drawable-nodpi/img1280x720b.jpg
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-nodpi/img1280x720b.jpg
rename to tests/java_api/ImageProcessing2/res/drawable-nodpi/img1280x720b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-nodpi/img1920x1080a.jpg b/tests/java_api/ImageProcessing2/res/drawable-nodpi/img1920x1080a.jpg
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-nodpi/img1920x1080a.jpg
rename to tests/java_api/ImageProcessing2/res/drawable-nodpi/img1920x1080a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-nodpi/img1920x1080b.jpg b/tests/java_api/ImageProcessing2/res/drawable-nodpi/img1920x1080b.jpg
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-nodpi/img1920x1080b.jpg
rename to tests/java_api/ImageProcessing2/res/drawable-nodpi/img1920x1080b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-nodpi/img800x450a.jpg b/tests/java_api/ImageProcessing2/res/drawable-nodpi/img800x450a.jpg
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-nodpi/img800x450a.jpg
rename to tests/java_api/ImageProcessing2/res/drawable-nodpi/img800x450a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-nodpi/img800x450b.jpg b/tests/java_api/ImageProcessing2/res/drawable-nodpi/img800x450b.jpg
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-nodpi/img800x450b.jpg
rename to tests/java_api/ImageProcessing2/res/drawable-nodpi/img800x450b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-xhdpi/ic_action_settings.png b/tests/java_api/ImageProcessing2/res/drawable-xhdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-xhdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing2/res/drawable-xhdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/drawable-xxhdpi/ic_action_settings.png b/tests/java_api/ImageProcessing2/res/drawable-xxhdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing2/res/drawable-xxhdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing2/res/drawable-xxhdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing2/res/layout/controls.xml b/tests/java_api/ImageProcessing2/res/layout/controls.xml
similarity index 100%
rename from java/tests/ImageProcessing2/res/layout/controls.xml
rename to tests/java_api/ImageProcessing2/res/layout/controls.xml
diff --git a/java/tests/ImageProcessing2/res/layout/main.xml b/tests/java_api/ImageProcessing2/res/layout/main.xml
similarity index 100%
rename from java/tests/ImageProcessing2/res/layout/main.xml
rename to tests/java_api/ImageProcessing2/res/layout/main.xml
diff --git a/java/tests/ImageProcessing2/res/layout/spinner_layout.xml b/tests/java_api/ImageProcessing2/res/layout/spinner_layout.xml
similarity index 100%
rename from java/tests/ImageProcessing2/res/layout/spinner_layout.xml
rename to tests/java_api/ImageProcessing2/res/layout/spinner_layout.xml
diff --git a/java/tests/ImageProcessing2/res/menu/main_activity_actions.xml b/tests/java_api/ImageProcessing2/res/menu/main_activity_actions.xml
similarity index 100%
rename from java/tests/ImageProcessing2/res/menu/main_activity_actions.xml
rename to tests/java_api/ImageProcessing2/res/menu/main_activity_actions.xml
diff --git a/java/tests/ImageProcessing2/res/values/strings.xml b/tests/java_api/ImageProcessing2/res/values/strings.xml
similarity index 100%
rename from java/tests/ImageProcessing2/res/values/strings.xml
rename to tests/java_api/ImageProcessing2/res/values/strings.xml
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Artistic1.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Artistic1.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Artistic1.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Artistic1.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/BWFilter.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/BWFilter.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/BWFilter.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/BWFilter.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Blend.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blend.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Blend.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Blend.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Blur25.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Blur25.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Blur25G.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25G.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Blur25G.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25G.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/ColorCube.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorCube.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/ColorCube.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorCube.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Contrast.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Contrast.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Contrast.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Contrast.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Copy.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Copy.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Copy.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Copy.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/CrossProcess.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/CrossProcess.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/CrossProcess.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/CrossProcess.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Exposure.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Exposure.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Exposure.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Exposure.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Fisheye.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Fisheye.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Fisheye.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Fisheye.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Grain.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Grain.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Grain.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Grain.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Greyscale.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Greyscale.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Greyscale.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Greyscale.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/GroupTest.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/GroupTest.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/GroupTest.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/GroupTest.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/IPControls.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/IPControls.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/IPControls.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/IPControls.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/IPSettings.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/IPSettings.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/IPSettings.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/IPSettings.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/IPTestList.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/IPTestList.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/IPTestList.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/IPTestList.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/LevelsV4.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/LevelsV4.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/LevelsV4.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/LevelsV4.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Mandelbrot.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Mandelbrot.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Mandelbrot.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Mandelbrot.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Posterize.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Posterize.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Posterize.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Posterize.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Resize.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Resize.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Resize.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Resize.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Shadows.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Shadows.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Shadows.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Shadows.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/TestBase.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/TestBase.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/TestBase.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/TestBase.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Vibrance.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Vibrance.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Vibrance.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Vibrance.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/Vignette.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Vignette.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/Vignette.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/Vignette.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/artistic1.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/artistic1.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/artistic1.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/artistic1.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/blend.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/blend.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/blend.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/blend.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/bwfilter.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/bwfilter.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/bwfilter.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/bwfilter.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/colorcube.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/colorcube.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/colorcube.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/colorcube.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/colormatrix.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/colormatrix.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/colormatrix.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/colormatrix.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/contrast.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/contrast.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/contrast.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/contrast.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/convolve3x3.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/convolve3x3.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/convolve3x3.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/convolve3x3.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/convolve5x5.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/convolve5x5.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/convolve5x5.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/convolve5x5.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/copy.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/copy.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/copy.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/copy.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/exposure.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/exposure.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/exposure.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/exposure.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/fisheye.rsh b/tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye.rsh
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/fisheye.rsh
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye.rsh
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_approx.rsh b/tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_approx.rsh
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_approx.rsh
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_approx.rsh
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_approx_full.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_approx_full.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_approx_full.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_approx_full.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_approx_relaxed.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_approx_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_approx_relaxed.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_approx_relaxed.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_full.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_full.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_full.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_full.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_relaxed.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/fisheye_relaxed.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/fisheye_relaxed.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/grain.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/grain.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/grain.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/grain.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/greyscale.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/greyscale.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/greyscale.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/greyscale.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/ip.rsh b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ip.rsh
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/ip.rsh
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/ip.rsh
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/levels.rsh b/tests/java_api/ImageProcessing2/src/com/android/rs/image/levels.rsh
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/levels.rsh
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/levels.rsh
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/levels_full.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/levels_full.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/levels_full.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/levels_full.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/levels_relaxed.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/levels_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/levels_relaxed.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/levels_relaxed.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/mandelbrot.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/mandelbrot.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/mandelbrot.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/mandelbrot.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/posterize.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/posterize.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/posterize.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/posterize.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/resize.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/resize.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/resize.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/resize.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/shadows.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/shadows.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/shadows.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/shadows.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/threshold.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/threshold.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/threshold.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/threshold.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/util.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/util.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/util.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/util.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vibrance.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vibrance.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vibrance.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vibrance.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vignette.rsh b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette.rsh
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vignette.rsh
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette.rsh
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vignette_approx.rsh b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_approx.rsh
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vignette_approx.rsh
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_approx.rsh
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vignette_approx_full.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_approx_full.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vignette_approx_full.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_approx_full.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vignette_approx_relaxed.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_approx_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vignette_approx_relaxed.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_approx_relaxed.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vignette_full.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_full.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vignette_full.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_full.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/vignette_relaxed.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/vignette_relaxed.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/vignette_relaxed.rs
diff --git a/java/tests/ImageProcessing2/src/com/android/rs/image/wbalance.rs b/tests/java_api/ImageProcessing2/src/com/android/rs/image/wbalance.rs
similarity index 100%
rename from java/tests/ImageProcessing2/src/com/android/rs/image/wbalance.rs
rename to tests/java_api/ImageProcessing2/src/com/android/rs/image/wbalance.rs
diff --git a/java/tests/ImageProcessing_jb/Android.mk b/tests/java_api/ImageProcessing_jb/Android.mk
similarity index 100%
rename from java/tests/ImageProcessing_jb/Android.mk
rename to tests/java_api/ImageProcessing_jb/Android.mk
diff --git a/java/tests/ImageProcessing_jb/AndroidManifest.xml b/tests/java_api/ImageProcessing_jb/AndroidManifest.xml
similarity index 100%
rename from java/tests/ImageProcessing_jb/AndroidManifest.xml
rename to tests/java_api/ImageProcessing_jb/AndroidManifest.xml
diff --git a/java/tests/ImageProcessing_jb/res/drawable-hdpi/ic_action_settings.png b/tests/java_api/ImageProcessing_jb/res/drawable-hdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-hdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing_jb/res/drawable-hdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-mdpi/ic_action_settings.png b/tests/java_api/ImageProcessing_jb/res/drawable-mdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-mdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing_jb/res/drawable-mdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img1280x720a.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1280x720a.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img1280x720a.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1280x720a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img1280x720b.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1280x720b.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img1280x720b.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1280x720b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img1920x1080a.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1920x1080a.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img1920x1080a.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1920x1080a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img1920x1080b.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1920x1080b.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img1920x1080b.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img1920x1080b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img3840x2160a.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img3840x2160a.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img3840x2160a.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img3840x2160a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img3840x2160b.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img3840x2160b.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img3840x2160b.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img3840x2160b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img800x450a.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img800x450a.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img800x450a.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img800x450a.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-nodpi/img800x450b.jpg b/tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img800x450b.jpg
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-nodpi/img800x450b.jpg
rename to tests/java_api/ImageProcessing_jb/res/drawable-nodpi/img800x450b.jpg
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-xhdpi/ic_action_settings.png b/tests/java_api/ImageProcessing_jb/res/drawable-xhdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-xhdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing_jb/res/drawable-xhdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/drawable-xxhdpi/ic_action_settings.png b/tests/java_api/ImageProcessing_jb/res/drawable-xxhdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/drawable-xxhdpi/ic_action_settings.png
rename to tests/java_api/ImageProcessing_jb/res/drawable-xxhdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/ImageProcessing_jb/res/layout/controls.xml b/tests/java_api/ImageProcessing_jb/res/layout/controls.xml
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/layout/controls.xml
rename to tests/java_api/ImageProcessing_jb/res/layout/controls.xml
diff --git a/java/tests/ImageProcessing_jb/res/layout/main.xml b/tests/java_api/ImageProcessing_jb/res/layout/main.xml
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/layout/main.xml
rename to tests/java_api/ImageProcessing_jb/res/layout/main.xml
diff --git a/java/tests/ImageProcessing_jb/res/layout/spinner_layout.xml b/tests/java_api/ImageProcessing_jb/res/layout/spinner_layout.xml
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/layout/spinner_layout.xml
rename to tests/java_api/ImageProcessing_jb/res/layout/spinner_layout.xml
diff --git a/java/tests/ImageProcessing_jb/res/menu/main_activity_actions.xml b/tests/java_api/ImageProcessing_jb/res/menu/main_activity_actions.xml
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/menu/main_activity_actions.xml
rename to tests/java_api/ImageProcessing_jb/res/menu/main_activity_actions.xml
diff --git a/java/tests/ImageProcessing_jb/res/values/strings.xml b/tests/java_api/ImageProcessing_jb/res/values/strings.xml
similarity index 100%
rename from java/tests/ImageProcessing_jb/res/values/strings.xml
rename to tests/java_api/ImageProcessing_jb/res/values/strings.xml
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Artistic1.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Artistic1.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Artistic1.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Artistic1.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/BWFilter.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/BWFilter.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/BWFilter.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/BWFilter.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Blend.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Blend.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Blend.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Blend.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Blur25.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Blur25.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Blur25.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Blur25.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Blur25G.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Blur25G.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Blur25G.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Blur25G.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ColorCube.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ColorCube.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/ColorCube.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ColorCube.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ColorMatrix.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ColorMatrix.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/ColorMatrix.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ColorMatrix.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Contrast.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Contrast.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Contrast.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Contrast.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Convolve3x3.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Convolve3x3.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Convolve3x3.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Convolve3x3.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Convolve5x5.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Convolve5x5.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Convolve5x5.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Convolve5x5.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Copy.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Copy.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Copy.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Copy.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/CrossProcess.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/CrossProcess.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/CrossProcess.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/CrossProcess.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Exposure.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Exposure.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Exposure.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Exposure.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Fisheye.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Fisheye.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Fisheye.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Fisheye.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Grain.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Grain.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Grain.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Grain.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Greyscale.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Greyscale.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Greyscale.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Greyscale.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/GroupTest.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/GroupTest.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/GroupTest.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/GroupTest.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Histogram.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Histogram.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Histogram.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Histogram.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/IPControlsJB.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/IPControlsJB.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/IPControlsJB.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/IPControlsJB.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/IPSettings.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/IPSettings.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/IPSettings.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/IPSettings.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/IPTestListJB.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/IPTestListJB.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/IPTestListJB.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/IPTestListJB.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingActivityJB.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingActivityJB.java
similarity index 91%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingActivityJB.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingActivityJB.java
index 7705317..4425fe7 100644
--- a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingActivityJB.java
+++ b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingActivityJB.java
@@ -33,6 +33,7 @@
 import android.util.Log;
 import android.renderscript.Allocation;
 import android.renderscript.RenderScript;
+import android.support.test.InstrumentationRegistry;
 
 public class ImageProcessingActivityJB extends Activity
                                        implements SeekBar.OnSeekBarChangeListener,
@@ -68,6 +69,8 @@
     private int mBitmapWidth;
     private int mBitmapHeight;
     private boolean mDemoMode;
+    private float mMinTestRuntime;
+    private int mMinTestIterations;
 
     // Updates pending is a counter of how many kernels have been
     // sent to RS for processing
@@ -240,18 +243,13 @@
             start();
         }
 
-        class Result {
-            float totalTime;
-            int itterations;
-        }
-
         // Run one loop of kernels for at least the specified minimum time.
         // The function returns the average time in ms for the test run
-        private Result runBenchmarkLoop(float minTime) {
+        private Result runBenchmarkLoop(float minTime, int minIter) {
             mUpdatesPending = 0;
             Result r = new Result();
 
-            long t = java.lang.System.currentTimeMillis();
+            long t = java.lang.System.nanoTime();
             do {
                 synchronized(this) {
                     // Shows pending is used to track the number of kernels in the RS pipeline
@@ -269,12 +267,11 @@
 
                 // If animations are enabled update the test state.
                 if (mToggleAnimate) {
-                    mTest.animateBars(r.totalTime);
+                    mTest.animateBars(r.getTotalTime());
                 }
 
                 // Run the kernel
                 mTest.runTest();
-                r.itterations ++;
 
                 if (mToggleDisplay) {
                     // If we are not outputting directly to the TextureView we need to copy from
@@ -290,52 +287,47 @@
                 // Send our RS message handler a message so we know when this work has completed
                 mRS.sendMessage(0, null);
 
-                long t2 = java.lang.System.currentTimeMillis();
-                r.totalTime += (t2 - t) / 1000.f;
+                // Finish previous iteration before recording the time. Without this, the first
+                // few iterations finish very quickly and the later iterations take much longer
+                mRS.finish();
+
+                long t2 = java.lang.System.nanoTime();
+                r.add((t2 - t) / 1000000000.f);
                 t = t2;
-            } while (r.totalTime < minTime);
+            } while (r.getTotalTime() < minTime || r.getIterations() < minIter);
 
             // Wait for any stray operations to complete and update the final time
             mRS.finish();
-            long t2 = java.lang.System.currentTimeMillis();
-            r.totalTime += (t2 - t) / 1000.f;
-            t = t2;
             return r;
         }
 
         // Method to retreive benchmark results for instrumentation tests.
-        float getInstrumentationResult(IPTestListJB.TestName t) {
+        Result getInstrumentationResult(IPTestListJB.TestName t) {
             mTest = changeTest(t, false);
             return getBenchmark();
         }
 
         // Get a benchmark result for a specific test
-        private float getBenchmark() {
+        private Result getBenchmark() {
             mDoingBenchmark = true;
             mUpdatesPending = 0;
 
-            long result = 0;
-            float runtime = 1.f;
-            if (mToggleLong) {
-                runtime = 10.f;
-            }
-
             if (mToggleDVFS) {
                 mDvfsWar.go();
             }
 
             // We run a short bit of work before starting the actual test
             // this is to let any power management do its job and respond
-            runBenchmarkLoop(0.3f);
+            runBenchmarkLoop(0.3f, 0);
 
             // Run the actual benchmark
-            Result r = runBenchmarkLoop(runtime);
+            Result r = runBenchmarkLoop(mMinTestRuntime, mMinTestIterations);
 
-            Log.v("rs", "Test: time=" + r.totalTime +"s,  frames=" + r.itterations +
-                  ", avg=" + r.totalTime / r.itterations * 1000.f);
+            Log.v("rs", "Test: time=" + r.getTotalTime() + "s,  frames=" + r.getIterations() +
+                  ", avg=" + r.getAvg() * 1000.f + ", stdcoef=" + r.getStdCoef() * 100.0f + "%");
 
             mDoingBenchmark = false;
-            return r.totalTime / r.itterations * 1000.f;
+            return r;
         }
 
         public void run() {
@@ -399,7 +391,7 @@
                         }
 
                         // Run the test
-                        mTestResults[ct] = getBenchmark();
+                        mTestResults[ct] = getBenchmark().getAvg() * 1000.0f;
                     }
                     onBenchmarkFinish(mRun);
                 } else {
@@ -660,6 +652,7 @@
         super.onPause();
         if (mProcessor != null) {
             mProcessor.exit();
+            mProcessor = null;
         }
     }
 
@@ -729,6 +722,33 @@
         mBitmapHeight = i.getIntExtra("resolution Y", 0);
         mDemoMode = i.getBooleanExtra("demo", false);
 
+        // Default values
+        mMinTestRuntime = 1.0f;
+        mMinTestIterations = 2;
+
+        // Pass in arguments from "am instrumentation ..." if present
+        // This is wrapped in a try..catch because there was an exception thrown whenever
+        // instrumentation was not used (ie. when the graphical interface was used)
+        try {
+            Bundle extras = InstrumentationRegistry.getArguments();
+            String passedInString = null;
+            if ( extras != null ) {
+                if ( extras.containsKey ("minimum_test_runtime") ) {
+                    mMinTestRuntime = Float.parseFloat(extras.getString("minimum_test_runtime"));
+                }
+                if ( extras.containsKey ("minimum_test_iterations") ) {
+                    mMinTestIterations = Integer.parseInt(
+                            extras.getString("minimum_test_iterations"));
+                }
+            }
+        } catch(Exception e) {
+        }
+
+        // User chose the longer pre-set runtime
+        if (mToggleLong) {
+            mMinTestRuntime = 10.f;
+        }
+
         // Hide the bars in demo mode.
         // Calling from onResume() to make sure the operation is on the UI thread.
         if (!mDemoMode) {
@@ -758,7 +778,9 @@
 
     @Override
     public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
-        mProcessor.setSurface(null);
+        if (mProcessor != null) {
+            mProcessor.setSurface(null);
+        }
         return true;
     }
 
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingTest.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingTest.java
similarity index 87%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingTest.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingTest.java
index df4854d..c720b7a 100644
--- a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingTest.java
+++ b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ImageProcessingTest.java
@@ -26,6 +26,12 @@
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.suitebuilder.annotation.MediumTest;
 
+import android.os.Environment;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
 /**
  * ImageProcessing benchmark test.
  * To run the test, please use command
@@ -37,7 +43,6 @@
     private final String TAG = "ImageProcessingTest";
     // Only run 1 iteration now to fit the MediumTest time requirement.
     // One iteration means running the tests continuous for 1s.
-    private int mIteration = 1;
     private ImageProcessingActivityJB mActivity;
 
     public ImageProcessingTest() {
@@ -60,23 +65,28 @@
 
     @Override
     public void tearDown() throws Exception {
+        if (mActivity.mProcessor != null) {
+            mActivity.mProcessor.exit();
+            mActivity.mProcessor = null;
+        }
         super.tearDown();
     }
 
     class TestAction implements Runnable {
-        TestName mTestName;
-        float mResult;
+        private TestName mTestName;
+        private Result mResult;
         public TestAction(TestName testName) {
             mTestName = testName;
         }
         public void run() {
             mResult = mActivity.mProcessor.getInstrumentationResult(mTestName);
-            Log.v(TAG, "Benchmark for test \"" + mTestName.toString() + "\" is: " + mResult);
+            Log.v(TAG, "Benchmark for test \"" + mTestName.toString() + "\" is: " +
+                    mResult.getAvg() * 1000.f);
             synchronized(this) {
                 this.notify();
             }
         }
-        public float getBenchmark() {
+        public Result getBenchmark() {
             return mResult;
         }
     }
@@ -97,19 +107,43 @@
 
     // TODO: Report more info: mean, median, std, etc.
     public void runTest(TestAction ta, String testName) {
-        float sum = 0;
-        for (int i = 0; i < mIteration; i++) {
-            runOnUiThread(ta);
-            float bmValue = ta.getBenchmark();
-            Log.v(TAG, "results for iteration " + i + " is " + bmValue);
-            sum += bmValue;
-        }
-        float avgResult = sum/mIteration;
+        runOnUiThread(ta);
+        Result times = ta.getBenchmark();
 
         // post result to INSTRUMENTATION_STATUS
         Bundle results = new Bundle();
-        results.putFloat(testName + "_avg", avgResult);
+        results.putFloat(testName + "_avg", times.getAvg() * 1000.0f); // ms
+        results.putFloat(testName + "_stdevp", times.getStdevp() * 1000.0f); // ms
+        results.putFloat(testName + "_stdcoef", times.getStdCoef() * 100.0f); // %
         getInstrumentation().sendStatus(Activity.RESULT_OK, results);
+
+        // save the runtime distribution to a file on the sdcard so a script can plot it
+        writeResults("rsTimes/", testName + "_DATA.txt", times);
+    }
+
+    private void writeResults(String directory, String filename, Result times) {
+        // write result into a file
+        File externalStorage = Environment.getExternalStorageDirectory();
+        if (!externalStorage.canWrite()) {
+            Log.v(TAG, "sdcard is not writable");
+            return;
+        }
+        File resultDirectory = new File(externalStorage, directory);
+        resultDirectory.mkdirs();
+        File resultFile = new File(externalStorage, directory + filename);
+        resultFile.setWritable(true, false);
+        try {
+            BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile));
+            Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath());
+
+            float[] datapoints = times.getTimes();
+            for (int i = 0; i < times.getIterations(); i++) {
+                rsWriter.write(String.format("%d %f\n", i, datapoints[i] * 1000.0));
+            }
+            rsWriter.close();
+        } catch (IOException e) {
+            Log.v(TAG, "Unable to write result file " + e.getMessage());
+        }
     }
 
     // Test case 0: Levels Vec3 Relaxed
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/LevelsV4.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/LevelsV4.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/LevelsV4.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/LevelsV4.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Mandelbrot.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Mandelbrot.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Mandelbrot.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Mandelbrot.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Posterize.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Posterize.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Posterize.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Posterize.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Resize.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Resize.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Resize.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Resize.java
diff --git a/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Result.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Result.java
new file mode 100644
index 0000000..b979e71
--- /dev/null
+++ b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Result.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2016 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.android.rs.imagejb;
+
+import java.util.ArrayList;
+
+class Result {
+
+    private ArrayList<Float> timeList;
+
+    Result() {
+        timeList = new ArrayList<Float>();
+    }
+
+    // Add time
+    public void add(float time) {
+        timeList.add(time);
+    }
+
+    // Get total execution time
+    public float getTotalTime() {
+        float total = 0.0f;
+        for (float time : timeList) {
+            total += time;
+        }
+        return total;
+    }
+
+    // Get number of iterations
+    public int getIterations() {
+        return timeList.size();
+    }
+
+    // Get the average of an array list
+    public float getAvg() {
+        return getTotalTime() / getIterations();
+    }
+
+    // Get the biased ("full population") standard deviation
+    public float getStdevp() {
+        float sumSqDiff = 0;
+        float avg = getAvg();
+        for (float time : timeList) {
+            float diff = time - avg;
+            sumSqDiff += diff * diff;
+        }
+        return (float) Math.sqrt(sumSqDiff / getIterations());
+    }
+
+    // Get the normalized standard deviation ("standard deviation coefficient")
+    public float getStdCoef() {
+        return getStdevp() / getAvg();
+    }
+
+    // Get all times as float[]
+    public float[] getTimes() {
+        float[] array = new float[getIterations()];
+        for (int i = 0; i < getIterations(); i++) {
+            array[i] = timeList.get(i);
+        }
+        return array;
+    }
+}
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Shadows.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Shadows.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Shadows.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Shadows.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/TestBase.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/TestBase.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/TestBase.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/TestBase.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Vibrance.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Vibrance.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Vibrance.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Vibrance.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/Vignette.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Vignette.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/Vignette.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/Vignette.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/WhiteBalance.java b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/WhiteBalance.java
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/WhiteBalance.java
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/WhiteBalance.java
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/artistic1.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/artistic1.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/artistic1.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/artistic1.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/blend.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/blend.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/blend.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/blend.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/bwfilter.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/bwfilter.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/bwfilter.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/bwfilter.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/colorcube.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/colorcube.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/colorcube.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/colorcube.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/colormatrix.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/colormatrix.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/colormatrix.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/colormatrix.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/contrast.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/contrast.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/contrast.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/contrast.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/convolve3x3.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/convolve3x3.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/convolve3x3.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/convolve3x3.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/convolve5x5.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/convolve5x5.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/convolve5x5.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/convolve5x5.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/copy.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/copy.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/copy.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/copy.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/exposure.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/exposure.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/exposure.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/exposure.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye.rsh b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye.rsh
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye.rsh
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye.rsh
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx.rsh b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx.rsh
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx.rsh
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx.rsh
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_full.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_full.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_full.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_full.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_relaxed.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_relaxed.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_approx_relaxed.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_full.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_full.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_full.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_full.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_relaxed.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/fisheye_relaxed.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/fisheye_relaxed.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/grain.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/grain.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/grain.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/grain.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/greyscale.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/greyscale.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/greyscale.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/greyscale.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/histogram.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/histogram.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/histogram.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/histogram.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/ip.rsh b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ip.rsh
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/ip.rsh
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/ip.rsh
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/levels.rsh b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/levels.rsh
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/levels.rsh
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/levels.rsh
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/levels_full.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/levels_full.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/levels_full.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/levels_full.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/levels_relaxed.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/levels_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/levels_relaxed.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/levels_relaxed.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/mandelbrot.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/mandelbrot.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/mandelbrot.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/mandelbrot.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/posterize.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/posterize.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/posterize.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/posterize.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/resize.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/resize.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/resize.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/resize.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/shadows.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/shadows.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/shadows.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/shadows.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/threshold.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/threshold.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/threshold.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/threshold.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/threshold_half.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/threshold_half.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/threshold_half.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/threshold_half.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vibrance.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vibrance.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vibrance.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vibrance.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette.rsh b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette.rsh
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette.rsh
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette.rsh
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_approx.rsh b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_approx.rsh
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_approx.rsh
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_approx.rsh
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_full.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_full.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_full.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_full.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_relaxed.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_relaxed.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_approx_relaxed.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_full.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_full.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_full.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_full.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_relaxed.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_relaxed.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/vignette_relaxed.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/vignette_relaxed.rs
diff --git a/java/tests/ImageProcessing_jb/src/com/android/rs/image/wbalance.rs b/tests/java_api/ImageProcessing_jb/src/com/android/rs/image/wbalance.rs
similarity index 100%
rename from java/tests/ImageProcessing_jb/src/com/android/rs/image/wbalance.rs
rename to tests/java_api/ImageProcessing_jb/src/com/android/rs/image/wbalance.rs
diff --git a/java/tests/LatencyBenchmark/Android.mk b/tests/java_api/LatencyBenchmark/Android.mk
similarity index 100%
rename from java/tests/LatencyBenchmark/Android.mk
rename to tests/java_api/LatencyBenchmark/Android.mk
diff --git a/java/tests/LatencyBenchmark/AndroidManifest.xml b/tests/java_api/LatencyBenchmark/AndroidManifest.xml
similarity index 100%
rename from java/tests/LatencyBenchmark/AndroidManifest.xml
rename to tests/java_api/LatencyBenchmark/AndroidManifest.xml
diff --git a/java/tests/LatencyBenchmark/res/layout/main.xml b/tests/java_api/LatencyBenchmark/res/layout/main.xml
similarity index 100%
rename from java/tests/LatencyBenchmark/res/layout/main.xml
rename to tests/java_api/LatencyBenchmark/res/layout/main.xml
diff --git a/java/tests/LatencyBenchmark/src/com/example/android/rs/computebench/Benchmark.java b/tests/java_api/LatencyBenchmark/src/com/example/android/rs/computebench/Benchmark.java
similarity index 100%
rename from java/tests/LatencyBenchmark/src/com/example/android/rs/computebench/Benchmark.java
rename to tests/java_api/LatencyBenchmark/src/com/example/android/rs/computebench/Benchmark.java
diff --git a/java/tests/LatencyBenchmark/src/com/example/android/rs/computebench/LatencyBench.java b/tests/java_api/LatencyBenchmark/src/com/example/android/rs/computebench/LatencyBench.java
similarity index 100%
rename from java/tests/LatencyBenchmark/src/com/example/android/rs/computebench/LatencyBench.java
rename to tests/java_api/LatencyBenchmark/src/com/example/android/rs/computebench/LatencyBench.java
diff --git a/java/tests/LatencyBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs b/tests/java_api/LatencyBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs
similarity index 100%
rename from java/tests/LatencyBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs
rename to tests/java_api/LatencyBenchmark/src/com/example/android/rs/computebench/compute_benchmark.rs
diff --git a/java/tests/LivePreview/Android.mk b/tests/java_api/LivePreview/Android.mk
similarity index 100%
rename from java/tests/LivePreview/Android.mk
rename to tests/java_api/LivePreview/Android.mk
diff --git a/java/tests/LivePreview/AndroidManifest.xml b/tests/java_api/LivePreview/AndroidManifest.xml
similarity index 100%
rename from java/tests/LivePreview/AndroidManifest.xml
rename to tests/java_api/LivePreview/AndroidManifest.xml
diff --git a/java/tests/LivePreview/res/drawable-nodpi/city.png b/tests/java_api/LivePreview/res/drawable-nodpi/city.png
similarity index 100%
rename from java/tests/LivePreview/res/drawable-nodpi/city.png
rename to tests/java_api/LivePreview/res/drawable-nodpi/city.png
Binary files differ
diff --git a/java/tests/LivePreview/res/layout/cf_format_list_item.xml b/tests/java_api/LivePreview/res/layout/cf_format_list_item.xml
similarity index 100%
rename from java/tests/LivePreview/res/layout/cf_format_list_item.xml
rename to tests/java_api/LivePreview/res/layout/cf_format_list_item.xml
diff --git a/java/tests/LivePreview/res/layout/cf_main.xml b/tests/java_api/LivePreview/res/layout/cf_main.xml
similarity index 100%
rename from java/tests/LivePreview/res/layout/cf_main.xml
rename to tests/java_api/LivePreview/res/layout/cf_main.xml
diff --git a/java/tests/LivePreview/res/layout/main.xml b/tests/java_api/LivePreview/res/layout/main.xml
similarity index 100%
rename from java/tests/LivePreview/res/layout/main.xml
rename to tests/java_api/LivePreview/res/layout/main.xml
diff --git a/java/tests/LivePreview/res/layout/rs.xml b/tests/java_api/LivePreview/res/layout/rs.xml
similarity index 100%
rename from java/tests/LivePreview/res/layout/rs.xml
rename to tests/java_api/LivePreview/res/layout/rs.xml
diff --git a/java/tests/LivePreview/res/values/strings.xml b/tests/java_api/LivePreview/res/values/strings.xml
similarity index 100%
rename from java/tests/LivePreview/res/values/strings.xml
rename to tests/java_api/LivePreview/res/values/strings.xml
diff --git a/java/tests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java b/tests/java_api/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
similarity index 100%
rename from java/tests/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
rename to tests/java_api/LivePreview/src/com/android/rs/livepreview/CameraPreviewActivity.java
diff --git a/java/tests/LivePreview/src/com/android/rs/livepreview/RsYuv.java b/tests/java_api/LivePreview/src/com/android/rs/livepreview/RsYuv.java
similarity index 100%
rename from java/tests/LivePreview/src/com/android/rs/livepreview/RsYuv.java
rename to tests/java_api/LivePreview/src/com/android/rs/livepreview/RsYuv.java
diff --git a/java/tests/LivePreview/src/com/android/rs/livepreview/yuv.rs b/tests/java_api/LivePreview/src/com/android/rs/livepreview/yuv.rs
similarity index 100%
rename from java/tests/LivePreview/src/com/android/rs/livepreview/yuv.rs
rename to tests/java_api/LivePreview/src/com/android/rs/livepreview/yuv.rs
diff --git a/java/tests/MathErr/Android.mk b/tests/java_api/MathErr/Android.mk
similarity index 100%
rename from java/tests/MathErr/Android.mk
rename to tests/java_api/MathErr/Android.mk
diff --git a/java/tests/MathErr/AndroidManifest.xml b/tests/java_api/MathErr/AndroidManifest.xml
similarity index 100%
rename from java/tests/MathErr/AndroidManifest.xml
rename to tests/java_api/MathErr/AndroidManifest.xml
diff --git a/java/tests/MathErr/res/layout/main.xml b/tests/java_api/MathErr/res/layout/main.xml
similarity index 100%
rename from java/tests/MathErr/res/layout/main.xml
rename to tests/java_api/MathErr/res/layout/main.xml
diff --git a/java/tests/MathErr/src/com/example/android/rs/matherr/MathErr.java b/tests/java_api/MathErr/src/com/example/android/rs/matherr/MathErr.java
similarity index 100%
rename from java/tests/MathErr/src/com/example/android/rs/matherr/MathErr.java
rename to tests/java_api/MathErr/src/com/example/android/rs/matherr/MathErr.java
diff --git a/java/tests/MathErr/src/com/example/android/rs/matherr/MathErrActivity.java b/tests/java_api/MathErr/src/com/example/android/rs/matherr/MathErrActivity.java
similarity index 100%
rename from java/tests/MathErr/src/com/example/android/rs/matherr/MathErrActivity.java
rename to tests/java_api/MathErr/src/com/example/android/rs/matherr/MathErrActivity.java
diff --git a/java/tests/MathErr/src/com/example/android/rs/matherr/math_err.rs b/tests/java_api/MathErr/src/com/example/android/rs/matherr/math_err.rs
similarity index 100%
rename from java/tests/MathErr/src/com/example/android/rs/matherr/math_err.rs
rename to tests/java_api/MathErr/src/com/example/android/rs/matherr/math_err.rs
diff --git a/java/tests/RSTest_CompatLib/Android.mk b/tests/java_api/RSTest_CompatLib/Android.mk
similarity index 100%
rename from java/tests/RSTest_CompatLib/Android.mk
rename to tests/java_api/RSTest_CompatLib/Android.mk
diff --git a/java/tests/RSTest_CompatLib/AndroidManifest.xml b/tests/java_api/RSTest_CompatLib/AndroidManifest.xml
similarity index 100%
rename from java/tests/RSTest_CompatLib/AndroidManifest.xml
rename to tests/java_api/RSTest_CompatLib/AndroidManifest.xml
diff --git a/java/tests/RSTest_CompatLib/res/drawable-nodpi/test_pattern.png b/tests/java_api/RSTest_CompatLib/res/drawable-nodpi/test_pattern.png
similarity index 100%
rename from java/tests/RSTest_CompatLib/res/drawable-nodpi/test_pattern.png
rename to tests/java_api/RSTest_CompatLib/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/RSTest.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/RSTest.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/RSTest.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/RSTest.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/RSTestCore.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/RSTestCore.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/RSTestCore.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_alloc.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copy.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copy.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copy.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copy.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copyPadded.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copyPadded.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copyPadded.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_alloc_copyPadded.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_apitest.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_array_alloc.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_array_alloc.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_array_alloc.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_array_alloc.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_array_init.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_array_init.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_array_init.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_array_init.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_atomic.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_atomic.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_atomic.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_atomic.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_bug_char.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_bug_char.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_bug_char.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_bug_char.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_clamp.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_clamp.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_clamp.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_clamp.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_clamp_relaxed.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_clamp_relaxed.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_clamp_relaxed.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_clamp_relaxed.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_constant.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_constant.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_constant.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_constant.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_convert.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_convert.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_convert.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_convert.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_convert_relaxed.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_convert_relaxed.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_convert_relaxed.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_convert_relaxed.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_copy_test.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_copy_test.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_copy_test.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_copy_test.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_element.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_element.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_element.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_element.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_foreach.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_foreach_bounds.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_fp_mad.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_fp_mad.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_fp_mad.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_instance.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_instance.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_instance.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_instance.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_int4.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_int4.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_int4.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_int4.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_kernel.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_kernel.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_kernel.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_kernel.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_kernel_struct.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_kernel_struct.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_kernel_struct.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_kernel_struct.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_math.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_math.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_math.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_math.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_math_agree.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_math_agree.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_math_agree.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_math_agree.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_math_conformance.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_math_conformance.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_math_conformance.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_math_conformance.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_min.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_min.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_min.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_min.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_noroot.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_primitives.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_primitives.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_primitives.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_reduce.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_reduce.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_reduce.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_reduce.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_reduce_backward.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_reduce_backward.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_reduce_backward.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_reduce_backward.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_refcount.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_refcount.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_refcount.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_rsdebug.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_rsdebug.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_rsdebug.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_rstime.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_rstime.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_rstime.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_rstypes.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_rstypes.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_rstypes.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_sampler.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_sampler.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_sampler.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_sampler.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_float.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_float.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_float.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_float.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_gatherscatter.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_gatherscatter.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_gatherscatter.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_gatherscatter.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_nochain.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_nochain.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_nochain.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_nochain.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_pointwise.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_pointwise.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_pointwise.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_script_group2_pointwise.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_alloc.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_alloc.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_alloc.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_alloc.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_ref_count.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_single_source_script.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_struct.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_struct.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_struct.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_struct.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_unsigned.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_unsigned.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_unsigned.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_unsigned.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_vector.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_vector.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UT_vector.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UT_vector.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/UnitTest.java b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UnitTest.java
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/UnitTest.java
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/UnitTest.java
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/addup.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/addup.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/addup.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/addup.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/alloc.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/alloc.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/alloc.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/alloc.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/apitest.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/array_alloc.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/array_alloc.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/array_alloc.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/array_alloc.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/array_init.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/array_init.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/array_init.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/array_init.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/atomic.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/atomic.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/atomic.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/atomic.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/bug_char.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/bug_char.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/bug_char.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/bug_char.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/clamp.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/clamp.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/clamp.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/clamp.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/clamp_relaxed.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/clamp_relaxed.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/clamp_relaxed.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/clamp_relaxed.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/constant.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/constant.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/constant.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/constant.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/convert.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/convert.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/convert.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/convert.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/convert_relaxed.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/convert_relaxed.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/convert_relaxed.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/convert_relaxed.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/copy_test.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/copy_test.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/copy_test.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/copy_test.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/double.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/double.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/double.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/double.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/element.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/element.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/element.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/element.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/float_test.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/float_test.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/float_test.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/float_test.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/foreach.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/foreach.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/foreach.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/foreach.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/foreach_bounds.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/fp_mad.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/fp_mad.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/fp_mad.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/fp_mad.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/increment.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/increment.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/increment.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/increment.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/increment2.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/increment2.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/increment2.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/increment2.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/instance.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/instance.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/instance.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/instance.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/int4.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/int4.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/int4.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/int4.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/kernel.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/kernel.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/kernel.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/kernel.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/kernel_struct.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/kernel_struct.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/kernel_struct.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/kernel_struct.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/math.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/math.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/math.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/math.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/math_agree.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/math_agree.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/math_agree.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/math_agree.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/math_conformance.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/math_conformance.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/math_conformance.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/math_conformance.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/min.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/min.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/min.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/min.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/noroot.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/noroot.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/noroot.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/noroot.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/primitives.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/primitives.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/primitives.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/primitives.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/reduce.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/reduce.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/reduce.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/reduce.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/reduce_backward.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/reduce_backward.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/reduce_backward.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/reduce_backward.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/refcount.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/refcount.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/refcount.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/refcount.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/rsdebug.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rsdebug.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/rsdebug.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rsdebug.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/rslist.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rslist.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/rslist.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rslist.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/rstime.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rstime.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/rstime.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rstime.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/rstypes.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rstypes.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/rstypes.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/rstypes.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/sampler.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/sampler.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/sampler.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/sampler.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/shared.rsh b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/shared.rsh
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/shared.rsh
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/shared.rsh
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/single_source_alloc.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/single_source_alloc.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/single_source_alloc.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/single_source_alloc.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/single_source_ref_count.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/single_source_ref_count.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/single_source_ref_count.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/single_source_ref_count.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/single_source_script.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/single_source_script.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/single_source_script.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/single_source_script.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/struct.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/struct.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/struct.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/struct.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/unsigned.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/unsigned.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/unsigned.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/unsigned.rs
diff --git a/java/tests/RSTest_CompatLib/src/com/android/rs/test/vector.rs b/tests/java_api/RSTest_CompatLib/src/com/android/rs/test/vector.rs
similarity index 100%
rename from java/tests/RSTest_CompatLib/src/com/android/rs/test/vector.rs
rename to tests/java_api/RSTest_CompatLib/src/com/android/rs/test/vector.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/Android.mk b/tests/java_api/RSTest_CompatLibLegacy/Android.mk
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/Android.mk
rename to tests/java_api/RSTest_CompatLibLegacy/Android.mk
diff --git a/java/tests/RSTest_CompatLibLegacy/AndroidManifest.xml b/tests/java_api/RSTest_CompatLibLegacy/AndroidManifest.xml
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/AndroidManifest.xml
rename to tests/java_api/RSTest_CompatLibLegacy/AndroidManifest.xml
diff --git a/java/tests/RSTest_CompatLibLegacy/res/drawable-nodpi/test_pattern.png b/tests/java_api/RSTest_CompatLibLegacy/res/drawable-nodpi/test_pattern.png
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/res/drawable-nodpi/test_pattern.png
rename to tests/java_api/RSTest_CompatLibLegacy/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/alloc.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/alloc.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/alloc.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/alloc.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/apitest.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/apitest.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/apitest.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/apitest.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/array_alloc.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/array_alloc.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/array_alloc.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/array_alloc.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/array_init.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/array_init.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/array_init.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/array_init.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/atomic.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/atomic.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/atomic.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/atomic.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/bug_char.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/bug_char.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/bug_char.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/bug_char.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp_relaxed.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp_relaxed.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp_relaxed.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/clamp_relaxed.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/constant.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/constant.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/constant.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/constant.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/convert.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/convert.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/convert.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/convert.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/convert_relaxed.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/convert_relaxed.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/convert_relaxed.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/convert_relaxed.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/copy_test.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/copy_test.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/copy_test.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/copy_test.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/element.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/element.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/element.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/element.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach_bounds.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach_bounds.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach_bounds.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/foreach_bounds.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/fp_mad.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/fp_mad.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/fp_mad.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/fp_mad.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/instance.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/instance.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/instance.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/instance.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/int4.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/int4.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/int4.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/int4.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel_struct.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel_struct.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel_struct.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/kernel_struct.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/math.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/math.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/math.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/math.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/math_agree.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/math_agree.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/math_agree.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/math_agree.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/math_conformance.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/math_conformance.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/math_conformance.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/math_conformance.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/min.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/min.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/min.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/min.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/noroot.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/noroot.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/noroot.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/noroot.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/primitives.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/primitives.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/primitives.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/primitives.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/refcount.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/refcount.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/refcount.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/refcount.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rsdebug.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rsdebug.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rsdebug.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rsdebug.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rslist.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rslist.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rslist.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rslist.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rstime.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rstime.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rstime.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rstime.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rstypes.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rstypes.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/rstypes.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/rstypes.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/sampler.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/sampler.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/sampler.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/sampler.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/shared.rsh b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/shared.rsh
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/shared.rsh
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/shared.rsh
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/struct.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/struct.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/struct.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/struct.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/unsigned.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/unsigned.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/unsigned.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/unsigned.rs
diff --git a/java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/vector.rs b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/vector.rs
similarity index 100%
rename from java/tests/RSTest_CompatLibLegacy/src/com/android/rs/test/vector.rs
rename to tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/vector.rs
diff --git a/java/tests/Refocus/Android.mk b/tests/java_api/Refocus/Android.mk
similarity index 100%
rename from java/tests/Refocus/Android.mk
rename to tests/java_api/Refocus/Android.mk
diff --git a/java/tests/Refocus/AndroidManifest.xml b/tests/java_api/Refocus/AndroidManifest.xml
similarity index 100%
rename from java/tests/Refocus/AndroidManifest.xml
rename to tests/java_api/Refocus/AndroidManifest.xml
diff --git a/java/tests/Refocus/dataExtraction/N5.txt b/tests/java_api/Refocus/dataExtraction/N5.txt
similarity index 100%
rename from java/tests/Refocus/dataExtraction/N5.txt
rename to tests/java_api/Refocus/dataExtraction/N5.txt
diff --git a/java/tests/Refocus/dataExtraction/N5ave.txt b/tests/java_api/Refocus/dataExtraction/N5ave.txt
similarity index 100%
rename from java/tests/Refocus/dataExtraction/N5ave.txt
rename to tests/java_api/Refocus/dataExtraction/N5ave.txt
diff --git a/java/tests/Refocus/dataExtraction/N5clean.txt b/tests/java_api/Refocus/dataExtraction/N5clean.txt
similarity index 100%
rename from java/tests/Refocus/dataExtraction/N5clean.txt
rename to tests/java_api/Refocus/dataExtraction/N5clean.txt
diff --git a/java/tests/Refocus/dataExtraction/RefocusTestTimingProcess.txt b/tests/java_api/Refocus/dataExtraction/RefocusTestTimingProcess.txt
similarity index 100%
rename from java/tests/Refocus/dataExtraction/RefocusTestTimingProcess.txt
rename to tests/java_api/Refocus/dataExtraction/RefocusTestTimingProcess.txt
diff --git a/java/tests/Refocus/dataExtraction/extract_ave.sh b/tests/java_api/Refocus/dataExtraction/extract_ave.sh
similarity index 100%
rename from java/tests/Refocus/dataExtraction/extract_ave.sh
rename to tests/java_api/Refocus/dataExtraction/extract_ave.sh
diff --git a/java/tests/Refocus/dataExtraction/extract_data.sh b/tests/java_api/Refocus/dataExtraction/extract_data.sh
similarity index 100%
rename from java/tests/Refocus/dataExtraction/extract_data.sh
rename to tests/java_api/Refocus/dataExtraction/extract_data.sh
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/apple.jpg b/tests/java_api/Refocus/res/drawable-nodpi/apple.jpg
new file mode 100644
index 0000000..d12f6c5
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/apple.jpg
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/balls.png b/tests/java_api/Refocus/res/drawable-nodpi/balls.png
new file mode 100644
index 0000000..83da288
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/balls.png
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/balls_depthmap.pfm b/tests/java_api/Refocus/res/drawable-nodpi/balls_depthmap.pfm
new file mode 100644
index 0000000..b762cfd
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/balls_depthmap.pfm
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/cup.jpg b/tests/java_api/Refocus/res/drawable-nodpi/cup.jpg
new file mode 100644
index 0000000..098ee18
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/cup.jpg
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/flower.png b/tests/java_api/Refocus/res/drawable-nodpi/flower.png
new file mode 100644
index 0000000..0107b38
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/flower.png
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/flower_depthmap.png b/tests/java_api/Refocus/res/drawable-nodpi/flower_depthmap.png
new file mode 100644
index 0000000..d5e8c25
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/flower_depthmap.png
Binary files differ
diff --git a/java/tests/Refocus/res/drawable-nodpi/refocusimage.jpg b/tests/java_api/Refocus/res/drawable-nodpi/refocusimage.jpg
similarity index 100%
rename from java/tests/Refocus/res/drawable-nodpi/refocusimage.jpg
rename to tests/java_api/Refocus/res/drawable-nodpi/refocusimage.jpg
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/sculpture.png b/tests/java_api/Refocus/res/drawable-nodpi/sculpture.png
new file mode 100644
index 0000000..112f310
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/sculpture.png
Binary files differ
diff --git a/tests/java_api/Refocus/res/drawable-nodpi/sculpture_depthmap.pfm b/tests/java_api/Refocus/res/drawable-nodpi/sculpture_depthmap.pfm
new file mode 100644
index 0000000..25ff119
--- /dev/null
+++ b/tests/java_api/Refocus/res/drawable-nodpi/sculpture_depthmap.pfm
Binary files differ
diff --git a/tests/java_api/Refocus/res/layout/activity_main.xml b/tests/java_api/Refocus/res/layout/activity_main.xml
new file mode 100644
index 0000000..019065b
--- /dev/null
+++ b/tests/java_api/Refocus/res/layout/activity_main.xml
@@ -0,0 +1,16 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+	    xmlns:tools="http://schemas.android.com/tools"
+	    android:layout_width="match_parent"
+	    android:layout_height="match_parent"
+	    android:orientation="vertical">
+  <LinearLayout android:layout_width="match_parent"
+		android:layout_height="match_parent"
+		android:id="@+id/layoutTopMost"
+		android:paddingLeft="@dimen/activity_horizontal_margin"
+		android:paddingRight="@dimen/activity_horizontal_margin"
+		android:paddingTop="@dimen/activity_vertical_margin"
+		android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
+		android:orientation="vertical">
+
+  </LinearLayout>
+</ScrollView>
diff --git a/java/tests/Refocus/res/mipmap-hdpi/ic_launcher.png b/tests/java_api/Refocus/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from java/tests/Refocus/res/mipmap-hdpi/ic_launcher.png
rename to tests/java_api/Refocus/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/Refocus/res/mipmap-mdpi/ic_launcher.png b/tests/java_api/Refocus/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from java/tests/Refocus/res/mipmap-mdpi/ic_launcher.png
rename to tests/java_api/Refocus/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/Refocus/res/mipmap-xhdpi/ic_launcher.png b/tests/java_api/Refocus/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/Refocus/res/mipmap-xhdpi/ic_launcher.png
rename to tests/java_api/Refocus/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/Refocus/res/mipmap-xxhdpi/ic_launcher.png b/tests/java_api/Refocus/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/Refocus/res/mipmap-xxhdpi/ic_launcher.png
rename to tests/java_api/Refocus/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/Refocus/res/values-w820dp/dimens.xml b/tests/java_api/Refocus/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/Refocus/res/values-w820dp/dimens.xml
rename to tests/java_api/Refocus/res/values-w820dp/dimens.xml
diff --git a/java/tests/Refocus/res/values/dimens.xml b/tests/java_api/Refocus/res/values/dimens.xml
similarity index 100%
rename from java/tests/Refocus/res/values/dimens.xml
rename to tests/java_api/Refocus/res/values/dimens.xml
diff --git a/java/tests/Refocus/res/values/strings.xml b/tests/java_api/Refocus/res/values/strings.xml
similarity index 100%
rename from java/tests/Refocus/res/values/strings.xml
rename to tests/java_api/Refocus/res/values/strings.xml
diff --git a/java/tests/Refocus/src/com/android/rs/test/BlurStack.java b/tests/java_api/Refocus/src/com/android/rs/test/BlurStack.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/BlurStack.java
rename to tests/java_api/Refocus/src/com/android/rs/test/BlurStack.java
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/DepthImage.java b/tests/java_api/Refocus/src/com/android/rs/test/DepthImage.java
new file mode 100644
index 0000000..63e6dcd
--- /dev/null
+++ b/tests/java_api/Refocus/src/com/android/rs/test/DepthImage.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2015 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.android.rs.refocus;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import com.android.rs.refocus.image.RangeInverseDepthTransform;
+import com.android.rs.refocus.image.RangeLinearDepthTransform;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class DepthImage {
+    private final String mFormat;
+    private final double mFar;
+    private final double mNear;
+    private final Bitmap mDepthBitmap;
+    private final double mBlurAtInfinity;
+    private final double mFocalDistance;
+    private final double mDepthOfField;
+    private final double mFocalPointX;
+    private final double mFocalPointY;
+    private final DepthTransform mDepthTransform;
+
+    public DepthImage(String format, double far, double near,
+                      Bitmap depthBitmap, double blurAtInfinity,
+                      double focalDistance, double depthOfField,
+                      double focalPointX, double focalPointY,
+                      DepthTransform depthTransform) {
+        mFormat = format;
+        mFar = far;
+        mNear = near;
+        mDepthBitmap = depthBitmap;
+        mBlurAtInfinity = blurAtInfinity;
+        mFocalDistance = focalDistance;
+        mDepthOfField = depthOfField;
+        mFocalPointX = focalPointX;
+        mFocalPointY = focalPointY;
+        mDepthTransform = depthTransform;
+    }
+
+    public static DepthImage createFromXMPMetadata(Context context, Uri image)
+            throws IOException {
+        InputStream input = context.getContentResolver().openInputStream(image);
+        XmpDepthDecode decode = new XmpDepthDecode(input);
+        return new DepthImage(decode.getFormat(), decode.getFar(),
+                              decode.getNear(), decode.getDepthBitmap(),
+                              decode.getBlurAtInfinity(),
+                              decode.getFocalDistance(),
+                              decode.getDepthOfField(),
+                              decode.getFocalPointX(),
+                              decode.getFocalPointY(),
+                              decode.getDepthTransform());
+    }
+
+    public static DepthImage createFromDepthmap(Context context, Uri uriDepthmap)
+            throws IOException {
+        Bitmap bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uriDepthmap));
+        if (bitmap == null) {
+            throw new FileNotFoundException(uriDepthmap.toString());
+        }
+
+        double near = 12.0;
+        double far = 120.0;
+        DepthTransform transform = new RangeInverseDepthTransform((float)near, (float)far);
+        return new DepthImage(RangeInverseDepthTransform.FORMAT,
+                              far,
+                              near,
+                              bitmap, // depthmap
+                              5.0,    // blur at ininity
+                              15.0,   // focal distance
+                              0.1,    // depth of field
+                              0.5,    // x of focal point
+                              0.5,    // y of focla point
+                              transform);
+    }
+
+    private static class MinMax {
+        public float min;
+        public float max;
+
+        public MinMax(float min, float max) {
+            this.min = min;
+            this.max = max;
+        }
+
+        public static MinMax create(float min, float max) {
+            return new MinMax(min, max);
+        }
+    }
+
+    private static MinMax findMinAndMax(final float[] array) {
+        float min = array[0];
+        float max = min;
+        for (int i = 1; i < array.length; i++) {
+            final float x = array[i];
+            if (x < min) {
+                min = x;
+            } else if (x > max) {
+                max = x;
+            }
+        }
+        return MinMax.create(min, max);
+    }
+
+    public static DepthImage createFromPFM(Context context, Uri uriPFM)
+            throws IOException {
+        PortableFloatMap pfm = new PortableFloatMap(context.getContentResolver().openInputStream(uriPFM));
+
+        final float[] floatPixels = pfm.getPixelArray();
+        int[] intPixels = new int[floatPixels.length];
+        final MinMax minMax = findMinAndMax(floatPixels);
+        final float near = minMax.min;
+        final float far  = minMax.max;
+        DepthTransform transform = new RangeInverseDepthTransform(near, far);
+
+/*
+        android.util.Log.v("DepthImage", "near = " + String.format("%g", near));
+        android.util.Log.v("DepthImage", "far  = " + String.format("%g", far));
+*/
+        int width = pfm.getWidth();
+        int height = pfm.getHeight();
+
+        for (int i = 0; i < intPixels.length; i++) {
+            int value = transform.quantize(floatPixels[i]) & 0xFF;
+            intPixels[i] = value | (value << 8) | (value << 16) | (0xFF << 24);
+/*
+            if (i >= intPixels.length - width) {
+                android.util.Log.v("DepthImage", "float pixel " + i + ":" + String.format("%g", floatPixels[i]));
+                android.util.Log.v("DepthImage", "int pixel   " + i + ":" + String.format("0x%02X", intPixels[i]));
+            }
+*/
+        }
+
+        Bitmap bitmap = Bitmap.createBitmap(intPixels, width, height, Bitmap.Config.ARGB_8888);
+
+        // MediaStoreSaver.savePNG(bitmap, "depthmap", "balls", context);
+
+        return new DepthImage(RangeInverseDepthTransform.FORMAT,
+                              far,
+                              near,
+                              bitmap, // depthmap
+                              400.0,  // blur at ininity
+                              //15.0,  // blur at ininity
+                              19.6,   // focal distance
+                              //near+(far-near)*0.2,   // focal distance
+                              //5.0,    // flocal distance
+                              0.005,    // depth of field
+                              0.4,    // x of focal point
+                              0.4,    // y of focal point
+                              transform);
+    }
+
+    public Bitmap getDepthBitmap() {
+        return mDepthBitmap;
+    }
+
+    public DepthTransform getDepthTransform() { return mDepthTransform; }
+
+    public String getFormat() {
+        return mFormat;
+    }
+
+    public double getFar() {
+        return mFar;
+    }
+
+    public double getNear() {
+        return mNear;
+    }
+
+    public double getBlurAtInfinity() {
+        return mBlurAtInfinity;
+    }
+
+    public double getFocalDistance() {
+        return mFocalDistance;
+    }
+
+    public double getDepthOfField() {return mDepthOfField; }
+
+    public double getFocalPointX() {
+        return mFocalPointX;
+    }
+
+    public double getFocalPointY() {
+        return mFocalPointY;
+    }
+}
+
diff --git a/java/tests/Refocus/src/com/android/rs/test/DepthOfFieldOptions.java b/tests/java_api/Refocus/src/com/android/rs/test/DepthOfFieldOptions.java
similarity index 89%
rename from java/tests/Refocus/src/com/android/rs/test/DepthOfFieldOptions.java
rename to tests/java_api/Refocus/src/com/android/rs/test/DepthOfFieldOptions.java
index 0a907d5..4004dbb 100644
--- a/java/tests/Refocus/src/com/android/rs/test/DepthOfFieldOptions.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/DepthOfFieldOptions.java
@@ -23,7 +23,7 @@
   public DepthOfFieldOptions(RGBZ rgbz) {
     this.focalDepth = (float)rgbz.getFocusDepth();
     this.depthOfField = (float)rgbz.getDepthOfField();
-    this.blurInfinity = (float)rgbz.getBlurInfinity() * Math.max(rgbz.getHeight(), rgbz.getWidth());
+    this.blurInfinity = (float)rgbz.getBlurInfinity();
     this.rgbz = rgbz;
   }
 
@@ -36,4 +36,8 @@
   public void setBokeh(float bokeh) {
     this.blurInfinity = bokeh * 200;
   }
+
+  public void setDepthOfField(float depthOfField) {
+    this.depthOfField = depthOfField;
+  }
 }
diff --git a/java/tests/Refocus/src/com/android/rs/test/DepthTransform.java b/tests/java_api/Refocus/src/com/android/rs/test/DepthTransform.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/DepthTransform.java
rename to tests/java_api/Refocus/src/com/android/rs/test/DepthTransform.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java b/tests/java_api/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java
rename to tests/java_api/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/ImageCompare.java b/tests/java_api/Refocus/src/com/android/rs/test/ImageCompare.java
new file mode 100644
index 0000000..3bd91a7
--- /dev/null
+++ b/tests/java_api/Refocus/src/com/android/rs/test/ImageCompare.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2016 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.android.rs.refocus;
+
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import java.lang.Math;
+
+public class ImageCompare {
+
+    /**
+     * Compute the luma channel of an RGB image, i.e., the Y channel of the
+     * equivalent YCbCr image.
+     * https://en.wikipedia.org/wiki/YCbCr
+     */
+    private static double luma(int pixel) {
+        final int R = Color.red(pixel);
+        final int G = Color.green(pixel);
+        final int B = Color.blue(pixel);
+        return 0.299 * R + 0.587 * G + 0.114 * B;
+    }
+
+    /**
+     * Compute peak signal-to-noise ration (PSNR) between two images
+     * The greater the value of psnr, the closer the two images are to each
+     * other. For identical images, psnr = +infinity.
+     * For 8-bit images, a psnr above 50 is commonly acceptable for a lossy
+     * conversion.
+     *
+     * References:
+     * http://www.mathworks.com/help/vision/ref/psnr.html
+     * https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
+     */
+    public static double psnr(Bitmap bitmap1, Bitmap bitmap2) {
+        if (bitmap1.getWidth() != bitmap2.getWidth() ||
+            bitmap1.getHeight() != bitmap2.getHeight()) {
+            throw new RuntimeException("images were of diffrent size");
+        }
+
+        if (bitmap1.sameAs(bitmap2)) {
+            android.util.Log.i("RefocusTest",
+                               "bitmaps verified to be identical in fast path.");
+            return Double.POSITIVE_INFINITY;
+        }
+
+        final int width = bitmap1.getWidth();
+        final int height = bitmap1.getHeight();
+        final int numPixels = width * height;
+
+        double noise = 0;
+        for (int y = 0; y < height; y++) {
+            for (int x = 0; x < width; x++) {
+                int pixel1 = bitmap1.getPixel(x, y);
+                int pixel2 = bitmap2.getPixel(x, y);
+                if (pixel1 != pixel2) {
+                    final double Y1 = luma(pixel1);
+                    final double Y2 = luma(pixel2);
+                    noise += (Y1 - Y2) * (Y1 - Y2);
+                }
+            }
+        }
+
+        final double mse = noise / numPixels;
+        final double psnr = 20 * Math.log10(255) - 10 * Math.log10(mse);
+        return psnr;
+    }
+}
diff --git a/java/tests/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java b/tests/java_api/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java
rename to tests/java_api/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/LayerInfo.java b/tests/java_api/Refocus/src/com/android/rs/test/LayerInfo.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/LayerInfo.java
rename to tests/java_api/Refocus/src/com/android/rs/test/LayerInfo.java
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java b/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java
new file mode 100644
index 0000000..22b56ed
--- /dev/null
+++ b/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java
@@ -0,0 +1,296 @@
+package com.android.rs.refocus;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Environment;
+import android.os.Bundle;
+import android.support.v8.renderscript.RenderScript;
+import android.util.Log;
+import android.util.Pair;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.LinearLayout.LayoutParams;
+import android.widget.TextView;
+
+import java.io.File;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+
+public class MainActivity extends Activity {
+    private static final int RS_API = 19;
+    private static final String TAG = "MainActivity";
+
+    private LinearLayout mLayout;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        mLayout = (LinearLayout) findViewById(R.id.layoutTopMost);
+
+        Intent intent = getIntent();
+        if (intent != null) {
+
+            String s = intent.getType();
+            if (s != null && s.indexOf("image/") != -1) {
+                Uri data = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
+                if (data != null) {
+
+                    try {
+                      RenderScript renderScript = RenderScript.create(getApplicationContext(), RS_API);
+                      renderScript.setPriority(RenderScript.Priority.NORMAL);
+
+                      // Get input uri to RGBZ
+                      RGBZ current_rgbz = new RGBZ(data, getContentResolver(), this);
+                      DepthOfFieldOptions current_depth_options = new DepthOfFieldOptions(current_rgbz);
+
+                      // Set image focus settings
+                      current_depth_options.setFocusPoint(0.7f, 0.5f);
+                      current_depth_options.setBokeh(2f);
+
+                      RsTaskParams rsTaskParam = new RsTaskParams(this, renderScript, current_depth_options);
+                      new RsAsyncTaskRunner().execute(rsTaskParam);
+                      return;
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+
+                }
+            }
+        }
+
+
+        try {
+            RenderScript renderScript = RenderScript.create(getApplicationContext(), RS_API);
+            renderScript.setPriority(RenderScript.Priority.NORMAL);
+
+            RGBZ rgbz;
+            DepthOfFieldOptions options;
+            RsTaskParams task;
+/*
+            rgbz = new RGBZ(getResourceRef(R.drawable.flower2), getContentResolver(), this);
+            options = new DepthOfFieldOptions(rgbz);
+            options.setFocusPoint(0.5f, 0.5f);
+            options.setBokeh(0.25f);
+
+            task = new RsTaskParams(this, renderScript, options);
+            new RsAsyncTaskRunner().execute(task);
+
+            rgbz = new RGBZ(getResourceRef(R.drawable.cup), getContentResolver(), this);
+            options = new DepthOfFieldOptions(rgbz);
+            options.setFocusPoint(0.5f, 0.5f);
+            options.setBokeh(0.25f);
+
+            task = new RsTaskParams(this, renderScript, options);
+            new RsAsyncTaskRunner().execute(task);
+
+            rgbz = new RGBZ(getResourceRef(R.drawable.apple), getContentResolver(), this);
+            options = new DepthOfFieldOptions(rgbz);
+            options.setFocusPoint(0.5f, 0.5f);
+            options.setBokeh(0.25f);
+
+            task = new RsTaskParams(this, renderScript, options);
+            new RsAsyncTaskRunner().execute(task);
+*/
+/*
+            RGBZ current_rgbz = new RGBZ(getResourceRef(R.drawable.refocusimage),
+                                         getContentResolver(), this);
+*/
+            rgbz = new RGBZ(getResourceRef(R.drawable.flower),
+                            getResourceRef(R.drawable.flower_depthmap),
+                            getContentResolver(), this);
+            options = new DepthOfFieldOptions(rgbz);
+            options.setFocusPoint(0.5f, 0.5f);
+            options.setBokeh(0.025f);
+
+            task = new RsTaskParams(this, renderScript, options);
+            new RsAsyncTaskRunner().execute(task);
+
+/*
+            RGBZ current_rgbz =
+                    RGBZ.createFromBitmapDepthmap(getResourceRef(R.drawable.balls),
+                                                  getResourceRef(R.drawable.balls_depthmap1),
+                                                  getContentResolver(), this);
+*/
+            rgbz = RGBZ.createFromPFMDepthmap(getResourceRef(R.drawable.balls),
+                                              getResourceRef(R.drawable.balls_depthmap),
+                                              getContentResolver(), this);
+            options = new DepthOfFieldOptions(rgbz);
+            options.setFocusPoint(0.2f, 0.167f);
+            options.setBokeh(2.0f);
+            options.setDepthOfField(0.005f);
+
+            task = new RsTaskParams(this, renderScript, options);
+            new RsAsyncTaskRunner().execute(task);
+
+            rgbz = RGBZ.createFromPFMDepthmap(getResourceRef(R.drawable.sculpture),
+                                              getResourceRef(R.drawable.sculpture_depthmap),
+                                              getContentResolver(), this);
+            options = new DepthOfFieldOptions(rgbz);
+            // Set image focus settings
+            options.setFocusPoint(0.33f, 0.66f);
+            options.setBokeh(0.1f);
+            options.setDepthOfField(0.2f);
+
+            task = new RsTaskParams(this, renderScript, options);
+            new RsAsyncTaskRunner().execute(task);
+
+            return;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static class RsTaskParams {
+        MainActivity mContext;
+      RenderScript mRenderScript;
+      DepthOfFieldOptions mOptions;
+
+        public ImageView mImageView1;
+        public ImageView mImageView2;
+        public TextView  mTextView;
+
+      RsTaskParams(MainActivity context,
+                   RenderScript renderScript,
+                   DepthOfFieldOptions options) {
+          mContext = context;
+        mRenderScript = renderScript;
+        mOptions = options;
+
+        LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT,
+                                                LayoutParams.WRAP_CONTENT);
+        mImageView1 = new ImageView(context);
+        mImageView1.setLayoutParams(lparams);
+        context.mLayout.addView(mImageView1);
+
+        mImageView2 = new ImageView(context);
+        mImageView2.setLayoutParams(lparams);
+        context.mLayout.addView(mImageView2);
+
+        mTextView = new TextView(context);
+        mTextView.setLayoutParams(lparams);
+        context.mLayout.addView(mTextView);
+      }
+
+    }
+
+    private class Result {
+        public ArrayList<Pair<String,Long>> timingsOld;
+        public ArrayList<Pair<String,Long>> timingsNew;
+        public double psnr;
+
+        public Result(ArrayList<Pair<String,Long>> timingsOld,
+                      ArrayList<Pair<String,Long>> timingsNew,
+                      double psnr) {
+            this.timingsOld = timingsOld;
+            this.timingsNew = timingsNew;
+            this.psnr = psnr;
+        }
+    }
+
+    private class RsAsyncTaskRunner extends AsyncTask<RsTaskParams, ImageView, Result> {
+      Bitmap outputImageOld;
+      Bitmap outputImage;
+      Bitmap outputImageNew;
+      TextView textView;
+
+      @Override
+      protected Result doInBackground(RsTaskParams... params) {
+
+        RenderScriptTask renderScriptTask = new RenderScriptTask(params[0].mRenderScript, RenderScriptTask.script.f32);
+        outputImageOld = outputImage = renderScriptTask.applyRefocusFilter(params[0].mOptions);
+        final ImageView v = params[0].mImageView1;
+        publishProgress(v);
+
+        RenderScriptTask renderScriptTaskNew = new RenderScriptTask(params[0].mRenderScript, RenderScriptTask.script.d1new);
+        outputImageNew = outputImage = renderScriptTaskNew.applyRefocusFilter(params[0].mOptions);
+        final ImageView v2 = params[0].mImageView2;
+        publishProgress(v2);
+
+        double psnr = ImageCompare.psnr(outputImageOld, outputImage);
+        textView = params[0].mTextView;
+
+        return new Result(renderScriptTask.timings, renderScriptTaskNew.timings, psnr);
+      }
+
+      protected  void onPostExecute(Result result) {
+          StringBuffer buffer = new StringBuffer();
+          DecimalFormat formatter = new DecimalFormat("#,###");
+
+          buffer.append("PSNR: " + String.format("%.02f", result.psnr) + "\n");
+          long sum1 = 0, sum2 = 0;
+          for (int i = 0; i < result.timingsOld.size(); i++) {
+              String tag = result.timingsOld.get(i).first;
+              long t1 = result.timingsOld.get(i).second.longValue();
+              long t2 = result.timingsNew.get(i).second.longValue();
+              buffer.append(tag + ":" + formatter.format(t1) + ":" +
+                            formatter.format(t2) + ":"  +
+                            String.format("%.02f", (double) t1 / t2) + "\n");
+              sum1 += t1;
+              sum2 += t2;
+          }
+          buffer.append("Sum (ms):" +
+                        String.format("%.02f", (double)sum1 / 1000000) + ":" +
+                        String.format("%.02f", (double)sum2 / 1000000) + ":" +
+                        String.format("%.02f", (double) sum1 / sum2) + "\n");
+          textView.setText(buffer.toString());
+      }
+
+      protected void onProgressUpdate(ImageView... progress) {
+          progress[0].setImageBitmap(outputImage);
+      }
+    }
+
+    Uri getLocalRef() {
+
+
+        File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
+
+        Log.v(TAG, "DIRECTORY_DOCUMENTS = " + folder.getAbsolutePath());
+        ;
+        File f = findJpeg(folder);
+        if (f != null) {
+            Log.v(TAG, "File = " + f);
+            return Uri.fromFile(f);
+        }
+        return null;
+    }
+
+    Uri getResourceRef(int resID) {
+        Context context = getApplicationContext();
+        Uri path = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
+            context.getResources().getResourcePackageName(resID) + '/' +
+            context.getResources().getResourceTypeName(resID) + '/' +
+            context.getResources().getResourceEntryName(resID));
+        return path;
+    }
+
+    private File findJpeg(File dir) {
+
+        File[] files = dir.listFiles();
+        if (files == null) return null;
+        for (int i = 0; i < files.length; i++) {
+            if (files[i].isDirectory() && !files[i].getName().startsWith(".")) {
+                File ret = findJpeg(files[i]);
+                if (ret != null) {
+                    Log.v(TAG, "returning " + ret.getAbsolutePath());
+                    return ret;
+                }
+                continue;
+            }
+            if (files[i].getName().toLowerCase().endsWith(".jpg")) {
+                Log.v(TAG, "returning " + files[i].getAbsolutePath());
+                return files[i];
+
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/java/tests/Refocus/src/com/android/rs/test/MediaStoreSaver.java b/tests/java_api/Refocus/src/com/android/rs/test/MediaStoreSaver.java
similarity index 93%
rename from java/tests/Refocus/src/com/android/rs/test/MediaStoreSaver.java
rename to tests/java_api/Refocus/src/com/android/rs/test/MediaStoreSaver.java
index 005643f..9ec942f 100644
--- a/java/tests/Refocus/src/com/android/rs/test/MediaStoreSaver.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/MediaStoreSaver.java
@@ -45,8 +45,9 @@
             System.out.println("make directory: " + dir.getAbsolutePath());
             dir.mkdirs();
         }
-        int n = dir.listFiles().length;
-        File file = new File(dir, imageName + n + ".png");
+        //int n = dir.listFiles().length;
+        //File file = new File(dir, imageName + n + ".png");
+        File file = new File(dir, imageName + ".png");
         try {
             FileOutputStream fOut = new FileOutputStream(file);
             bitmap.compress(Bitmap.CompressFormat.PNG, 0, fOut);
@@ -59,7 +60,7 @@
             e.printStackTrace();
         }
 
-        MediaStorageScan(mContext, file);
+        // MediaStorageScan(mContext, file);
         return file.getAbsolutePath();
     }
     /*
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/PortableFloatMap.java b/tests/java_api/Refocus/src/com/android/rs/test/PortableFloatMap.java
new file mode 100644
index 0000000..0d5fd1f
--- /dev/null
+++ b/tests/java_api/Refocus/src/com/android/rs/test/PortableFloatMap.java
@@ -0,0 +1,97 @@
+package com.android.rs.refocus;
+
+import android.graphics.Bitmap;
+import com.android.rs.refocus.DepthTransform;
+import com.android.rs.refocus.image.RangeLinearDepthTransform;
+import java.io.InputStream;
+import java.io.IOException;
+import java.lang.RuntimeException;
+import java.lang.StringBuffer;
+import java.nio.ByteBuffer;
+import java.nio.FloatBuffer;
+import java.nio.ByteOrder;
+
+public class PortableFloatMap {
+
+    private int mWidth;
+    private int mHeight;
+    private float mScale;
+    private boolean mLittleEndian;
+    private ByteOrder mByteOrder;
+
+    private int mBytesPerPixel;
+    private ByteBuffer mData;
+
+    private static String readString(InputStream in)
+            throws IOException {
+        StringBuffer buffer = new StringBuffer();
+        int c;
+        while ((c = in.read()) != -1 && c != 0xa && c != 0x20) {
+            buffer.append((char)c);
+        }
+        return buffer.toString();
+    }
+
+    public PortableFloatMap(InputStream in)
+            throws IOException {
+        String formatLine = readString(in);
+
+        if (formatLine.compareTo("Pf") != 0) {
+            // Currently "PF" (RGB32F) is not supported.
+            // Only "Pf" (Greyscale32F) is supported.
+            throw new RuntimeException("Unexpected format line: " + formatLine);
+        }
+
+        mBytesPerPixel = 4;
+
+        String widthLine = readString(in);
+
+        mWidth = Integer.parseInt(widthLine);
+
+        String heightLine = readString(in);
+
+        mHeight = Integer.parseInt(heightLine);
+
+        final int bytesPerRow = mBytesPerPixel * mWidth;
+
+        mData = ByteBuffer.allocate(bytesPerRow * mHeight);
+
+        String scaleLine = readString(in);
+
+        mScale = Float.parseFloat(scaleLine);
+
+        mData.order(mScale < 0 ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN);
+
+        byte[] row = new byte[mBytesPerPixel * mWidth];
+
+        for (int y = 0; y < mHeight; y++) {
+            int nRead = 0;
+            int offset = 0;
+            while (offset < bytesPerRow) {
+                nRead = in.read(row, offset, bytesPerRow - offset);
+                if (nRead < 0) {
+                    throw new RuntimeException("Unexpected End of File.");
+                }
+                offset += nRead;
+            }
+            mData.put(row);
+        }
+        mData.rewind();
+    }
+
+    final float[] getPixelArray() {
+        FloatBuffer floatBuffer = mData.asFloatBuffer();
+        if (floatBuffer.hasArray()) {
+            return floatBuffer.array();
+        }
+
+        float[] array = new float[mWidth * mHeight];
+        floatBuffer.get(array);
+
+        return array;
+    }
+
+    int getWidth() { return mWidth; }
+
+    int getHeight() { return mHeight; }
+}
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/RGBZ.java b/tests/java_api/Refocus/src/com/android/rs/test/RGBZ.java
new file mode 100644
index 0000000..8e82659
--- /dev/null
+++ b/tests/java_api/Refocus/src/com/android/rs/test/RGBZ.java
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2015 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.android.rs.refocus;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.net.Uri;
+import android.util.Log;
+import com.android.rs.refocus.image.RangeInverseDepthTransform;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * An RGBZ image, where Z stands for depth, i.e. a color+depth image.
+ * The RGBZ always has a preview image, which represents the latest rendering of the RGBZ.
+ * The preview is encoded as the normal jpeg content for client compatibility,
+ * while the color channel and depth channels are encoded as XMP data.
+ * The class supports lazy initialization where the XMP meta data is loaded only when first
+ * accessed.
+ */
+public class RGBZ {
+  public static final String TAG = "RGBZ";
+
+  private Bitmap bitmap;
+  private Bitmap preview;
+  private Bitmap depthBitmap;
+  private DepthTransform depthTransform;
+  private DepthImage depthImage;
+
+  /**
+   * Creates an RGBZ from a content uri.
+   *
+   * @param uri The uri name of the RGBZ
+   * @throws FileNotFoundException if the RGBZ could not be read
+   */
+  public RGBZ(Uri uri, ContentResolver contentResolver, Context context) throws IOException {
+    preview = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));
+    if (preview == null) {
+      throw new FileNotFoundException(uri.toString());
+    }
+    depthImage = DepthImage.createFromXMPMetadata(context, uri);
+    depthBitmap = depthImage.getDepthBitmap();
+    //MediaStoreSaver.savePNG(depthBitmap, "depthmap", "depthmap", context);
+    bitmap = setAlphaChannel(preview, depthBitmap);
+    depthTransform = depthImage.getDepthTransform();
+  }
+
+  /**
+   * Creates an RGBZ from uris to an image and a depthmap.
+   *
+   * @param uriImage The uri name of the image
+   * @param uriDepthmap The uri name of the depthmap
+   * @throws FileNotFoundException if the RGBZ could not be read
+   */
+  public RGBZ(Uri uriImage, Uri uriDepthmap, ContentResolver contentResolver,
+              Context context) throws IOException {
+    preview = BitmapFactory.decodeStream(contentResolver.openInputStream(uriImage));
+    if (preview == null) {
+      throw new FileNotFoundException(uriImage.toString());
+    }
+    depthImage = DepthImage.createFromDepthmap(context, uriDepthmap);
+    depthBitmap = depthImage.getDepthBitmap();
+    bitmap = setAlphaChannel(preview, depthBitmap);
+    depthTransform = depthImage.getDepthTransform();
+  }
+
+
+    public RGBZ(Bitmap image, DepthImage depthImage) {
+        preview = image;
+        this.depthImage = depthImage;
+        depthBitmap = depthImage.getDepthBitmap();
+        bitmap = setAlphaChannel(preview, depthBitmap);
+        depthTransform = depthImage.getDepthTransform();
+    }
+
+    public static RGBZ createFromBitmapDepthmap(Uri uriImage, Uri uriDepthmap,
+                                                ContentResolver contentResolver, Context context)
+            throws IOException {
+        Bitmap image = BitmapFactory.decodeStream(contentResolver.openInputStream(uriImage));
+        if (image == null) {
+            throw new FileNotFoundException(uriImage.toString());
+        }
+        DepthImage depthImage = DepthImage.createFromDepthmap(context, uriDepthmap);
+        return new RGBZ(image, depthImage);
+    }
+
+    public static RGBZ createFromPFMDepthmap(Uri uriImage, Uri uriDepthmap,
+                                             ContentResolver contentResolver, Context context)
+            throws IOException {
+        Bitmap image = BitmapFactory.decodeStream(contentResolver.openInputStream(uriImage));
+        if (image == null) {
+            throw new FileNotFoundException(uriImage.toString());
+        }
+        DepthImage depthImage = DepthImage.createFromPFM(context, uriDepthmap);
+        MediaStoreSaver.savePNG(depthImage.getDepthBitmap(), "depthmap",
+                                "depthmap", context);
+        return new RGBZ(image, depthImage);
+    }
+
+  /**
+   * @return Whether the RGBZ has a depth channel
+   */
+  public boolean hasDepthmap() {
+    return depthTransform != null;
+  }
+
+  /**
+   * @return The color+depth {@code Bitmap}
+   */
+  public Bitmap getBitmap() {
+    return bitmap;
+  }
+
+  /**
+   * @return The depthmap component of this RGBZ
+   */
+  public DepthTransform getDepthTransform() {
+    return depthTransform;
+  }
+
+  public double getFocusDepth() {
+    return this.depthImage.getFocalDistance();
+  }
+
+  public double getDepthOfField() {
+    return this.depthImage.getDepthOfField();
+  }
+
+  public double getBlurInfinity() {
+    return this.depthImage.getBlurAtInfinity();
+  }
+
+  /**
+   * @return the width of this {@code RGBZ}
+   */
+  public int getWidth() {
+    return bitmap.getWidth();
+  }
+
+  /**
+   * @return the height of this {@code RGBZ}
+   */
+  public int getHeight() {
+    return bitmap.getHeight();
+  }
+
+  /**
+   * @return the depth value of the given pixel
+   */
+
+  public float getDepth(int x, int y) {
+    if (!hasDepthmap()) {
+      return 0.0f;
+    }
+    if (x < 0 || x > depthBitmap.getWidth() ||
+            y < 0 || y > depthBitmap.getHeight()) {
+      Log.e("RGBZ getDepth", "index out of bound");
+      return 0;
+    }
+    return getDepthTransform().reconstruct(Color.blue(depthBitmap.getPixel(x, y)));
+  }
+
+  /**
+   * Sets the depthmap as the alpha channel of the {@code Bitmap}.
+   */
+  public Bitmap setAlphaChannel(Bitmap bitmap, Bitmap depthBitmap) {
+    if (bitmap == null) {
+      return bitmap;
+    }
+    Bitmap result = bitmap.copy(Bitmap.Config.ARGB_8888, true);
+    // set the alpha channel of depthBitmap to alpha of bitmap
+    result = setAlphaChannelFromBitmap(depthBitmap, bitmap, result);
+    return result;
+  }
+
+  private Bitmap setAlphaChannelFromBitmap(Bitmap depth, Bitmap orig, Bitmap dest) {
+    int w = orig.getWidth();
+    int h = orig.getHeight();
+    int[] orig_data = new int[w*h];
+    int[] depth_data = new int[w*h];
+
+    orig.getPixels(orig_data, 0, w, 0, 0, w, h);
+    depth.getPixels(depth_data, 0, w, 0, 0, w, h);
+    for (int i = 0; i < orig_data.length; i++) {
+      int v = orig_data[i] & 0x00FFFFFF;
+      int temp = (depth_data[i] & 0x000000FF) << 24;
+      v = v | temp;
+      orig_data[i] = v;
+    }
+    dest.setPixels(orig_data, 0, w, 0, 0, w, h);
+    return dest;
+  }
+}
+
diff --git a/java/tests/Refocus/src/com/android/rs/test/RefocusFilter.java b/tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java
similarity index 93%
rename from java/tests/Refocus/src/com/android/rs/test/RefocusFilter.java
rename to tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java
index 5ac3422..ddb2b48 100644
--- a/java/tests/Refocus/src/com/android/rs/test/RefocusFilter.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java
@@ -3,6 +3,8 @@
 import android.graphics.Bitmap;
 import android.support.v8.renderscript.RenderScript;
 import android.util.Log;
+import android.util.Pair;
+import java.util.ArrayList;
 
 /**
  * An abstract class that implements refocus filtering using Render Script. The
@@ -23,6 +25,18 @@
   // Script functions in .rs file.
   protected ScriptType scriptC;
 
+  // Timing info for each phase and total computation
+  public ArrayList<Pair<String,Long>> timings = new ArrayList<Pair<String,Long>>();
+
+  public void logTiming(String implementation, String phase, long time) {
+      logTiming(implementation, phase, time, "ns");
+  }
+
+  public void logTiming(String implementation, String phase, long time, String unit) {
+      timings.add(Pair.create(phase + " (" + unit + ")", Long.valueOf(time)));
+      Log.d(implementation, phase + ":" + time + " " + unit);
+  }
+
   /*
    * A constructor that initializes the class.
    *
diff --git a/java/tests/Refocus/src/com/android/rs/test/RenderScriptTask.java b/tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java
similarity index 87%
rename from java/tests/Refocus/src/com/android/rs/test/RenderScriptTask.java
rename to tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java
index 6c932ba..c8e9559 100644
--- a/java/tests/Refocus/src/com/android/rs/test/RenderScriptTask.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java
@@ -6,7 +6,8 @@
 import android.graphics.Bitmap;
 import android.support.v8.renderscript.RenderScript;
 import android.util.Log;
-
+import android.util.Pair;
+import java.util.ArrayList;
 
 /**
  * An wrapper class that calls the refocus filtering function in
@@ -62,6 +63,8 @@
    */
   private RenderScript renderScript;
 
+  public ArrayList<Pair<String,Long>> timings;
+
   /**
    * A constructor of render script context.
    *
@@ -81,29 +84,28 @@
    * @return the refocus filtering result
    */
   public Bitmap applyRefocusFilter(DepthOfFieldOptions options) {
-    long startTime = System.currentTimeMillis();
-
     // Generates {@code rgbdImage} and {@code blurStack}.
     prepareRefocusFilter(options);
-    Bitmap outputImage = null;
+
     // Check which version of RenderScript code is used.
+    RefocusFilter filter;
     switch (mScript) {
       case f32:
-        RefocusFilterF32 rfFilterF32 = new RefocusFilterF32(renderScript);
-        outputImage =
-                rfFilterF32.compute(rgbdImage, blurStack);
+        filter = new RefocusFilterF32(renderScript);
         break;
       case d1new:
-        RefocusFilterd1new rfFilterd1new = new RefocusFilterd1new(renderScript);
-        outputImage =
-                rfFilterd1new.compute(rgbdImage, blurStack);
+        filter = new RefocusFilterd1new(renderScript);
         break;
+      default:
+        filter = null;
     }
 
+    long startTime = System.currentTimeMillis();
+    Bitmap outputImage = filter.compute(rgbdImage, blurStack);
     long endTime = System.currentTimeMillis();
-    float duration = (endTime - startTime);
-    Log.d(TAG, "applyRefocusFilter is finished in " + (duration / 1000.0f)
-        + " seconds");
+    filter.logTiming(TAG, "TOTAL", endTime - startTime, "ms");
+
+    timings = filter.timings;
 
     return outputImage;
   }
diff --git a/java/tests/Refocus/src/com/android/rs/test/XmpDepthDecode.java b/tests/java_api/Refocus/src/com/android/rs/test/XmpDepthDecode.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/XmpDepthDecode.java
rename to tests/java_api/Refocus/src/com/android/rs/test/XmpDepthDecode.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/camera_response.rsh b/tests/java_api/Refocus/src/com/android/rs/test/camera_response.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/camera_response.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/camera_response.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/camera_response_fast.rsh b/tests/java_api/Refocus/src/com/android/rs/test/camera_response_fast.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/camera_response_fast.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/camera_response_fast.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java b/tests/java_api/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java
rename to tests/java_api/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java b/tests/java_api/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java
rename to tests/java_api/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java b/tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
similarity index 88%
rename from java/tests/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
rename to tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
index ee5ca47..2df00bd 100644
--- a/java/tests/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
@@ -65,9 +65,13 @@
     startnow = System.nanoTime();
     scriptC.forEach_PackOutputImage(buffers.outAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "PackOutputImage: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "PackOutputImage", endnow - startnow);
 
+    startnow = System.nanoTime();
     buffers.outAllocation.copyTo(buffers.outputImage);
+    endnow = System.nanoTime();
+    logTiming(myTAG, "CopyOutputImage", endnow - startnow);
+
     return buffers.outputImage;
   }
 
@@ -133,16 +137,16 @@
     startnow = System.nanoTime();
     //scriptC.forEach_MarkLayerMask(buffers.inAllocation);
     // Pass sharp meta allocation directly into the kernel
-    scriptC.forEach_MarkLayerMaskPassInput(buffers.sharpActualDepthAllocation, buffers.sharpDilatedDepthAllocation);
+    scriptC.forEach_MarkLayerMaskPassInput(buffers.sharpActualDepthAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "MarkLayerMask: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "MarkLayerMask", endnow - startnow);
 
     startnow = System.nanoTime();
     //scriptC.forEach_ComputeLayerMatteBehindFocalDepth(buffers.inAllocation);
     // Pass g_sharp_meta into kernel and get updated g_sharp_meta
     scriptC.forEach_ComputeLayerMatteBehindFocalDepthPassInput(buffers.sharpDilatedDepthAllocation, buffers.sharpDilatedDepthAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "ComputeLayerMatteBehindFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "ComputeLayerMatteBehindFocalDepth", endnow - startnow);
   }
 
   @Override
@@ -162,7 +166,7 @@
       scriptC.forEach_ComputeIntegralImageForLayerBehindFocalDepth(
           buffers.inAllocation, launchOptions);
       endnow = System.nanoTime();
-      Log.d(myTAG, "ComputeIntegralImageForLayerBehindFocalDepth: "+(endnow - startnow)+ " ns" );
+      logTiming(myTAG, "ComputeIntegralImageForLayerBehindFocalDepth", endnow - startnow);
     } else {
       scriptC.invoke_SetUseIntegralImage(0);
     }
@@ -172,7 +176,8 @@
     // Pass g_fuzzy_RGBA into kernel and get g_fuzzy_RGBA as output
     scriptC.forEach_FilterLayerBehindFocalDepthPassInput(buffers.fuzzyRGBAAllocation, buffers.fuzzyRGBAAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "FilterLayerBehindFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "FilterLayerBehindFocalDepth", endnow - startnow);
+
     //extractFuzzyImage("fuzzy_behind");
     //extractSharpImage("sharp_behind");
   }
@@ -186,10 +191,10 @@
 
     //scriptC.forEach_UpdateSharpImageUsingFuzzyImage(buffers.inAllocation);
     // Pass input and output version of UpdateSharpImageUsingFuzzyImage
-		scriptC.forEach_UpdateSharpUsingFuzzyPassInput(buffers.sharpDilatedDepthAllocation, buffers.sharpDilatedDepthAllocation);
+    scriptC.forEach_UpdateSharpUsingFuzzyPassInput(buffers.sharpDilatedDepthAllocation, buffers.sharpDilatedDepthAllocation);
+    endnow = System.nanoTime();
+    logTiming(myTAG, "UpdateSharpImageUsingFuzzyImage", endnow - startnow);
 
-		endnow = System.nanoTime();
-		Log.d(myTAG, "updateSharpImageUsingFuzzyImage: "+(endnow - startnow)+ " ns" );
     //extractSharpImage("sharp_update");
   }
 
@@ -204,16 +209,16 @@
     startnow = System.nanoTime();
     //scriptC.forEach_MarkLayerMask(buffers.inAllocation);
     // Pass sharp meta allocation directly into the kernel
-    scriptC.forEach_MarkLayerMaskPassInput(buffers.sharpActualDepthAllocation, buffers.sharpDilatedDepthAllocation);
+    scriptC.forEach_MarkLayerMaskPassInput(buffers.sharpActualDepthAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "MarkLayerMask: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "MarkLayerMask", endnow - startnow);
 
     startnow = System.nanoTime();
     //scriptC.forEach_ComputeLayerMatteInFrontOfFocalDepth(buffers.inAllocation);
     // Pass g_sharp_meta and g_fuzzy_RGBA directly into the kernel
     scriptC.forEach_ComputeLayerMatteInFrontOfFocalDepthPassInput(buffers.sharpDilatedDepthAllocation, buffers.sharpDilatedDepthAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "ComputeLayerMatteInFrontOfFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "ComputeLayerMatteInFrontOfFocalDepth", endnow - startnow);
   }
 
   @Override
@@ -232,7 +237,7 @@
       scriptC.forEach_ComputeIntegralImageForLayerInFrontOfFocalDepth(
           buffers.inAllocation, launchOptions);
       endnow = System.nanoTime();
-      Log.d(myTAG, "ComputeIntegralImageForLayerInFrontOfFocalDepth: "+(endnow - startnow)+ " ns" );
+      logTiming(myTAG, "ComputeIntegralImageForLayerInFrontOfFocalDepth", endnow - startnow);
     } else {
       scriptC.invoke_SetUseIntegralImage(0);
     }
@@ -241,7 +246,7 @@
     // Pass g_sharp_dilated_depth into kernel and get g_fuzzy_RGBA as output
     scriptC.forEach_FilterLayerInFrontOfFocalDepthPassInput(buffers.sharpDilatedDepthAllocation, buffers.sharpDilatedDepthAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "FilterLayerInFrontOfFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "FilterLayerInFrontOfFocalDepth", endnow - startnow);
 
     //extractFuzzyImage("fuzzy_front");
     //extractSharpImage("sharp_front");
@@ -257,6 +262,6 @@
     scriptC.forEach_FinalizeFuzzyImageUsingSharpImage(buffers.inAllocation);
     //scriptC.forEach_FinalizeFuzzyImageUsingSharpImagePassInput(buffers.sharpActualDepthAllocation, buffers.fuzzyRGBAAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "finalizeFuzzyImageUsingSharpImage: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "FinalizeFuzzyImageUsingSharpImage", endnow - startnow);
   }
 }
diff --git a/java/tests/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java b/tests/java_api/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java
rename to tests/java_api/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java b/tests/java_api/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java
rename to tests/java_api/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java b/tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
similarity index 89%
rename from java/tests/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
rename to tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
index d7ccef9..f203a81 100644
--- a/java/tests/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
@@ -63,9 +63,13 @@
     startnow = System.nanoTime();
     scriptC.forEach_PackOutputImage(buffers.outAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "PackOutputImage: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "PackOutputImage", endnow - startnow);
 
+    startnow = System.nanoTime();
     buffers.outAllocation.copyTo(buffers.outputImage);
+    endnow = System.nanoTime();
+    logTiming(myTAG, "CopyOutputImage", endnow - startnow);
+
     return buffers.outputImage;
   }
 
@@ -131,12 +135,12 @@
     startnow = System.nanoTime();
     scriptC.forEach_MarkLayerMask(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "MarkLayerMask: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "MarkLayerMask", endnow - startnow);
 
     startnow = System.nanoTime();
     scriptC.forEach_ComputeLayerMatteBehindFocalDepth(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "ComputeLayerMatteBehindFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "ComputeLayerMatteBehindFocalDepth", endnow - startnow);
   }
 
   @Override
@@ -155,7 +159,7 @@
       scriptC.forEach_ComputeIntegralImageForLayerBehindFocalDepth(
           buffers.inAllocation, launchOptions);
       endnow = System.nanoTime();
-      Log.d(myTAG, "ComputeIntegralImageForLayerBehindFocalDepth: "+(endnow - startnow)+ " ns" );
+      logTiming(myTAG, "ComputeIntegralImageForLayerBehindFocalDepth", endnow - startnow);
     } else {
       scriptC.invoke_SetUseIntegralImage(0);
     }
@@ -163,7 +167,7 @@
     startnow = System.nanoTime();
     scriptC.forEach_FilterLayerBehindFocalDepth(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "FilterLayerBehindFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "FilterLayerBehindFocalDepth", endnow - startnow);
 
     //extractFuzzyImage("fuzzy_behind");
     //extractSharpImage("sharp_behind");
@@ -177,7 +181,7 @@
     startnow = System.nanoTime();
     scriptC.forEach_UpdateSharpImageUsingFuzzyImage(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "UpdateSharpImageUsingFuzzyImage: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "UpdateSharpImageUsingFuzzyImage", endnow - startnow);
 
     //extractSharpImage("sharp_update");
   }
@@ -191,12 +195,12 @@
     startnow = System.nanoTime();
     scriptC.forEach_MarkLayerMask(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "MarkLayerMask: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "MarkLayerMask", endnow - startnow);
 
     startnow = System.nanoTime();
     scriptC.forEach_ComputeLayerMatteInFrontOfFocalDepth(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "ComputeLayerMatteInFrontOfFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "ComputeLayerMatteInFrontOfFocalDepth", endnow - startnow);
   }
 
   @Override
@@ -215,14 +219,14 @@
       scriptC.forEach_ComputeIntegralImageForLayerInFrontOfFocalDepth(
           buffers.inAllocation, launchOptions);
       endnow = System.nanoTime();
-      Log.d(myTAG, "ComputeIntegralImageForLayerInFrontOfFocalDepth: "+(endnow - startnow)+ " ns" );
+      logTiming(myTAG, "ComputeIntegralImageForLayerInFrontOfFocalDepth", endnow - startnow);
     } else {
       scriptC.invoke_SetUseIntegralImage(0);
     }
     startnow = System.nanoTime();
     scriptC.forEach_FilterLayerInFrontOfFocalDepth(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "FilterLayerInFrontOfFocalDepth: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "FilterLayerInFrontOfFocalDepth", endnow - startnow);
 
     //extractFuzzyImage("fuzzy_front");
     //extractSharpImage("sharp_front");
@@ -237,6 +241,6 @@
     startnow = System.nanoTime();
     scriptC.forEach_FinalizeFuzzyImageUsingSharpImage(buffers.inAllocation);
     endnow = System.nanoTime();
-    Log.d(myTAG, "FinalizeFuzzyImageUsingSharpImage: "+(endnow - startnow)+ " ns" );
+    logTiming(myTAG, "FinalizeFuzzyImageUsingSharpImage", endnow - startnow);
   }
 }
diff --git a/java/tests/Refocus/src/com/android/rs/test/image/RangeInverseDepthTransform.java b/tests/java_api/Refocus/src/com/android/rs/test/image/RangeInverseDepthTransform.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/image/RangeInverseDepthTransform.java
rename to tests/java_api/Refocus/src/com/android/rs/test/image/RangeInverseDepthTransform.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/image/RangeLinearDepthTransform.java b/tests/java_api/Refocus/src/com/android/rs/test/image/RangeLinearDepthTransform.java
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/image/RangeLinearDepthTransform.java
rename to tests/java_api/Refocus/src/com/android/rs/test/image/RangeLinearDepthTransform.java
diff --git a/java/tests/Refocus/src/com/android/rs/test/image_and_kernel.rsh b/tests/java_api/Refocus/src/com/android/rs/test/image_and_kernel.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/image_and_kernel.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/image_and_kernel.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/layer_info.rsh b/tests/java_api/Refocus/src/com/android/rs/test/layer_info.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/layer_info.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/layer_info.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/layer_info_fast.rsh b/tests/java_api/Refocus/src/com/android/rs/test/layer_info_fast.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/layer_info_fast.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/layer_info_fast.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/layered_filter_d1new_helper.rsh b/tests/java_api/Refocus/src/com/android/rs/test/layered_filter_d1new_helper.rsh
similarity index 98%
rename from java/tests/Refocus/src/com/android/rs/test/layered_filter_d1new_helper.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/layered_filter_d1new_helper.rsh
index 39c8d90..77a0c31 100644
--- a/java/tests/Refocus/src/com/android/rs/test/layered_filter_d1new_helper.rsh
+++ b/tests/java_api/Refocus/src/com/android/rs/test/layered_filter_d1new_helper.rsh
@@ -73,7 +73,7 @@
   }
 
   // Converts min_dist to a matte value.
-  rsSetElementAt_uchar(g_sharp_matte, (uchar)(dilation_radius + 1 - (int)half_sqrt((float)min_dist)), index_sharp_meta);
+  rsSetElementAt_uchar(g_sharp_matte, (uchar)(dilation_radius + 1 - (int)(half_sqrt((float)min_dist) + 0.5f)), index_sharp_meta);
   // If sharp->matte > 0, depth must be within the depth range of this layer.
   rsSetElementAt_uchar(g_sharp_dilated_depth, (uchar)depth, index_sharp_meta);
 }
@@ -113,7 +113,7 @@
     current_meta_index += jump_to_next_row;
   }
   // Converts min_dist to a matte value.
-  rsSetElementAt_uchar(g_sharp_matte, (uchar)(dilation_radius + 1 - (int)half_sqrt((float)min_dist)), index_sharp_meta);
+  rsSetElementAt_uchar(g_sharp_matte, (uchar)(dilation_radius + 1 - (int)(half_sqrt((float)min_dist) + 0.5f)), index_sharp_meta);
   // If sharp->matte > 0, depth must be within the depth range of this layer.
   return (uchar)depth;
 }
diff --git a/java/tests/Refocus/src/com/android/rs/test/layered_filter_f32_helper.rsh b/tests/java_api/Refocus/src/com/android/rs/test/layered_filter_f32_helper.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/layered_filter_f32_helper.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/layered_filter_f32_helper.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/layered_filter_fast_d1new.rs b/tests/java_api/Refocus/src/com/android/rs/test/layered_filter_fast_d1new.rs
similarity index 98%
rename from java/tests/Refocus/src/com/android/rs/test/layered_filter_fast_d1new.rs
rename to tests/java_api/Refocus/src/com/android/rs/test/layered_filter_fast_d1new.rs
index 8437123..750e4ee 100644
--- a/java/tests/Refocus/src/com/android/rs/test/layered_filter_fast_d1new.rs
+++ b/tests/java_api/Refocus/src/com/android/rs/test/layered_filter_fast_d1new.rs
@@ -30,7 +30,7 @@
 // UnpackInputImage, ComputeLayerMatteBehindFocalDepth, ComputeIntegralImageForLayerBehindFocalDepth,
 // FilterLayerBehindFocalDepth, updateSharpImageUsingFuzzyImage, ComputeLayerMatteInFrontOfFocalDepth,
 // FilterLayerInFrontOfFocalDepth
-double cpuDummy;
+// double cpuDummy;
 
 // Image size of padded images: g_sharp_image and g_fuzzy_image.
 // Float4 that stores the image size info: 1. width, 2. height, 3. margin
@@ -179,8 +179,8 @@
 // Another version of MarkLayerMask kernel that directly passes input allocation to kernels
 // Input: g_sharp_actual_depth
 // Output: g_sharp_dilated_depth
-uchar __attribute__((kernel)) MarkLayerMaskPassInput(uchar in_sharp_actual_depth, uint32_t x) {
-  if (!OnTheLayer(in_sharp_actual_depth, g_target_layer_i2)) return rsGetElementAt_uchar(g_sharp_dilated_depth, x);
+void __attribute__((kernel)) MarkLayerMaskPassInput(uchar in_sharp_actual_depth, uint32_t x) {
+  if (!OnTheLayer(in_sharp_actual_depth, g_target_layer_i2)) return;
 
   // Marks this pixel as active.
   rsSetElementAt_uchar(g_sharp_active, 1, x);
@@ -207,7 +207,8 @@
     ValidDepthNotOnTheLayer(sharp_actual_depth, g_target_layer_i2);
 
   if (!is_this_pixel_on_boundary) {
-    return in_sharp_actual_depth;
+    rsSetElementAt_uchar(g_sharp_dilated_depth, in_sharp_actual_depth, x);
+    return;
   }
 
   // Marks pixels near the boundary of active pixels to compute matte later.
@@ -233,8 +234,6 @@
     }
     current_meta_index += jump_to_next_row;
   }
-
-  return in_sharp_actual_depth;
 }
 // Distance transform in processing layers in pass one from the back-most to
 // the sharp depth.
diff --git a/java/tests/Refocus/src/com/android/rs/test/layered_filter_fast_f32.rs b/tests/java_api/Refocus/src/com/android/rs/test/layered_filter_fast_f32.rs
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/layered_filter_fast_f32.rs
rename to tests/java_api/Refocus/src/com/android/rs/test/layered_filter_fast_f32.rs
diff --git a/java/tests/Refocus/src/com/android/rs/test/luts_for_speedup_f32.rsh b/tests/java_api/Refocus/src/com/android/rs/test/luts_for_speedup_f32.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/luts_for_speedup_f32.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/luts_for_speedup_f32.rsh
diff --git a/java/tests/Refocus/src/com/android/rs/test/pixel_format_f32.rsh b/tests/java_api/Refocus/src/com/android/rs/test/pixel_format_f32.rsh
similarity index 100%
rename from java/tests/Refocus/src/com/android/rs/test/pixel_format_f32.rsh
rename to tests/java_api/Refocus/src/com/android/rs/test/pixel_format_f32.rsh
diff --git a/java/tests/RsBLAS_Benchmark/Android.mk b/tests/java_api/RsBLAS_Benchmark/Android.mk
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/Android.mk
rename to tests/java_api/RsBLAS_Benchmark/Android.mk
diff --git a/java/tests/RsBLAS_Benchmark/AndroidManifest.xml b/tests/java_api/RsBLAS_Benchmark/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/AndroidManifest.xml
rename to tests/java_api/RsBLAS_Benchmark/AndroidManifest.xml
diff --git a/java/tests/RsBLAS_Benchmark/libsgemm/Android.mk b/tests/java_api/RsBLAS_Benchmark/libsgemm/Android.mk
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/libsgemm/Android.mk
rename to tests/java_api/RsBLAS_Benchmark/libsgemm/Android.mk
diff --git a/java/tests/RsBLAS_Benchmark/libsgemm/test_data.cpp b/tests/java_api/RsBLAS_Benchmark/libsgemm/test_data.cpp
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/libsgemm/test_data.cpp
rename to tests/java_api/RsBLAS_Benchmark/libsgemm/test_data.cpp
diff --git a/java/tests/RsBLAS_Benchmark/res/drawable-hdpi/ic_action_settings.png b/tests/java_api/RsBLAS_Benchmark/res/drawable-hdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/drawable-hdpi/ic_action_settings.png
rename to tests/java_api/RsBLAS_Benchmark/res/drawable-hdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/RsBLAS_Benchmark/res/drawable-mdpi/ic_action_settings.png b/tests/java_api/RsBLAS_Benchmark/res/drawable-mdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/drawable-mdpi/ic_action_settings.png
rename to tests/java_api/RsBLAS_Benchmark/res/drawable-mdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/RsBLAS_Benchmark/res/drawable-xhdpi/ic_action_settings.png b/tests/java_api/RsBLAS_Benchmark/res/drawable-xhdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/drawable-xhdpi/ic_action_settings.png
rename to tests/java_api/RsBLAS_Benchmark/res/drawable-xhdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/RsBLAS_Benchmark/res/drawable-xxhdpi/ic_action_settings.png b/tests/java_api/RsBLAS_Benchmark/res/drawable-xxhdpi/ic_action_settings.png
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/drawable-xxhdpi/ic_action_settings.png
rename to tests/java_api/RsBLAS_Benchmark/res/drawable-xxhdpi/ic_action_settings.png
Binary files differ
diff --git a/java/tests/RsBLAS_Benchmark/res/layout/controls.xml b/tests/java_api/RsBLAS_Benchmark/res/layout/controls.xml
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/layout/controls.xml
rename to tests/java_api/RsBLAS_Benchmark/res/layout/controls.xml
diff --git a/java/tests/RsBLAS_Benchmark/res/layout/main.xml b/tests/java_api/RsBLAS_Benchmark/res/layout/main.xml
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/layout/main.xml
rename to tests/java_api/RsBLAS_Benchmark/res/layout/main.xml
diff --git a/java/tests/RsBLAS_Benchmark/res/menu/main_activity_actions.xml b/tests/java_api/RsBLAS_Benchmark/res/menu/main_activity_actions.xml
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/menu/main_activity_actions.xml
rename to tests/java_api/RsBLAS_Benchmark/res/menu/main_activity_actions.xml
diff --git a/java/tests/RsBLAS_Benchmark/res/values/strings.xml b/tests/java_api/RsBLAS_Benchmark/res/values/strings.xml
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/res/values/strings.xml
rename to tests/java_api/RsBLAS_Benchmark/res/values/strings.xml
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BNNMTest.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BNNMTest.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BNNMTest.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BNNMTest.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasBenchmark.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasBenchmark.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasBenchmark.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasBenchmark.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasControls.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasControls.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasControls.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasControls.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasSettings.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasSettings.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasSettings.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasSettings.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTest.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTest.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTest.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTest.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTestList.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTestList.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTestList.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/BlasTestList.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/GoogLeNet.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/GoogLeNet.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/GoogLeNet.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/GoogLeNet.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/SGEMMTest.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/SGEMMTest.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/SGEMMTest.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/SGEMMTest.java
diff --git a/java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/TestBase.java b/tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/TestBase.java
similarity index 100%
rename from java/tests/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/TestBase.java
rename to tests/java_api/RsBLAS_Benchmark/src/com/example/android/rs/blasbenchmark/TestBase.java
diff --git a/java/tests/RsCameraDemo/Android.mk b/tests/java_api/RsCameraDemo/Android.mk
similarity index 100%
rename from java/tests/RsCameraDemo/Android.mk
rename to tests/java_api/RsCameraDemo/Android.mk
diff --git a/java/tests/RsCameraDemo/AndroidManifest.xml b/tests/java_api/RsCameraDemo/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsCameraDemo/AndroidManifest.xml
rename to tests/java_api/RsCameraDemo/AndroidManifest.xml
diff --git a/java/tests/RsCameraDemo/_index.html b/tests/java_api/RsCameraDemo/_index.html
similarity index 100%
rename from java/tests/RsCameraDemo/_index.html
rename to tests/java_api/RsCameraDemo/_index.html
diff --git a/java/tests/RsCameraDemo/res/anim/slide_in_from_left.xml b/tests/java_api/RsCameraDemo/res/anim/slide_in_from_left.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/anim/slide_in_from_left.xml
rename to tests/java_api/RsCameraDemo/res/anim/slide_in_from_left.xml
diff --git a/java/tests/RsCameraDemo/res/anim/slide_out_to_right.xml b/tests/java_api/RsCameraDemo/res/anim/slide_out_to_right.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/anim/slide_out_to_right.xml
rename to tests/java_api/RsCameraDemo/res/anim/slide_out_to_right.xml
diff --git a/java/tests/RsCameraDemo/res/drawable-hdpi/camera.png b/tests/java_api/RsCameraDemo/res/drawable-hdpi/camera.png
similarity index 100%
rename from java/tests/RsCameraDemo/res/drawable-hdpi/camera.png
rename to tests/java_api/RsCameraDemo/res/drawable-hdpi/camera.png
Binary files differ
diff --git a/java/tests/RsCameraDemo/res/drawable-mdpi/camera.png b/tests/java_api/RsCameraDemo/res/drawable-mdpi/camera.png
similarity index 100%
rename from java/tests/RsCameraDemo/res/drawable-mdpi/camera.png
rename to tests/java_api/RsCameraDemo/res/drawable-mdpi/camera.png
Binary files differ
diff --git a/java/tests/RsCameraDemo/res/drawable-xhdpi/camera.png b/tests/java_api/RsCameraDemo/res/drawable-xhdpi/camera.png
similarity index 100%
rename from java/tests/RsCameraDemo/res/drawable-xhdpi/camera.png
rename to tests/java_api/RsCameraDemo/res/drawable-xhdpi/camera.png
Binary files differ
diff --git a/java/tests/RsCameraDemo/res/drawable-xxhdpi/camera.png b/tests/java_api/RsCameraDemo/res/drawable-xxhdpi/camera.png
similarity index 100%
rename from java/tests/RsCameraDemo/res/drawable-xxhdpi/camera.png
rename to tests/java_api/RsCameraDemo/res/drawable-xxhdpi/camera.png
Binary files differ
diff --git a/java/tests/RsCameraDemo/res/drawable/ic_back.xml b/tests/java_api/RsCameraDemo/res/drawable/ic_back.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/drawable/ic_back.xml
rename to tests/java_api/RsCameraDemo/res/drawable/ic_back.xml
diff --git a/java/tests/RsCameraDemo/res/drawable/ic_cam.xml b/tests/java_api/RsCameraDemo/res/drawable/ic_cam.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/drawable/ic_cam.xml
rename to tests/java_api/RsCameraDemo/res/drawable/ic_cam.xml
diff --git a/java/tests/RsCameraDemo/res/layout/activity_main.xml b/tests/java_api/RsCameraDemo/res/layout/activity_main.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/layout/activity_main.xml
rename to tests/java_api/RsCameraDemo/res/layout/activity_main.xml
diff --git a/java/tests/RsCameraDemo/res/values-v21/styles.xml b/tests/java_api/RsCameraDemo/res/values-v21/styles.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values-v21/styles.xml
rename to tests/java_api/RsCameraDemo/res/values-v21/styles.xml
diff --git a/java/tests/RsCameraDemo/res/values-w820dp/dimens.xml b/tests/java_api/RsCameraDemo/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values-w820dp/dimens.xml
rename to tests/java_api/RsCameraDemo/res/values-w820dp/dimens.xml
diff --git a/java/tests/RsCameraDemo/res/values/attrs.xml b/tests/java_api/RsCameraDemo/res/values/attrs.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values/attrs.xml
rename to tests/java_api/RsCameraDemo/res/values/attrs.xml
diff --git a/java/tests/RsCameraDemo/res/values/base-strings.xml b/tests/java_api/RsCameraDemo/res/values/base-strings.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values/base-strings.xml
rename to tests/java_api/RsCameraDemo/res/values/base-strings.xml
diff --git a/java/tests/RsCameraDemo/res/values/strings.xml b/tests/java_api/RsCameraDemo/res/values/strings.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values/strings.xml
rename to tests/java_api/RsCameraDemo/res/values/strings.xml
diff --git a/java/tests/RsCameraDemo/res/values/template-dimens.xml b/tests/java_api/RsCameraDemo/res/values/template-dimens.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values/template-dimens.xml
rename to tests/java_api/RsCameraDemo/res/values/template-dimens.xml
diff --git a/java/tests/RsCameraDemo/res/values/template-styles.xml b/tests/java_api/RsCameraDemo/res/values/template-styles.xml
similarity index 100%
rename from java/tests/RsCameraDemo/res/values/template-styles.xml
rename to tests/java_api/RsCameraDemo/res/values/template-styles.xml
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/CameraOps.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/CameraOps.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/CameraOps.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/CameraOps.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/CameraView.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/CameraView.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/CameraView.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/CameraView.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/FixedAspectSurfaceView.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/FixedAspectSurfaceView.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/FixedAspectSurfaceView.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/FixedAspectSurfaceView.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/MainActivity.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/MainActivity.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/MainActivity.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/MainActivity.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/MediaStoreSaver.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/MediaStoreSaver.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/MediaStoreSaver.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/MediaStoreSaver.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/VerticalSeekBar.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/VerticalSeekBar.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/VerticalSeekBar.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/VerticalSeekBar.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/ViewfinderProcessor.java b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/ViewfinderProcessor.java
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/ViewfinderProcessor.java
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/ViewfinderProcessor.java
diff --git a/java/tests/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rs b/tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rs
similarity index 100%
rename from java/tests/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rs
rename to tests/java_api/RsCameraDemo/src/com/android/example/rscamera/focus_peak.rs
diff --git a/java/tests/RsNbody/Android.mk b/tests/java_api/RsNbody/Android.mk
similarity index 100%
rename from java/tests/RsNbody/Android.mk
rename to tests/java_api/RsNbody/Android.mk
diff --git a/java/tests/RsNbody/AndroidManifest.xml b/tests/java_api/RsNbody/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsNbody/AndroidManifest.xml
rename to tests/java_api/RsNbody/AndroidManifest.xml
diff --git a/java/tests/RsNbody/res/layout/activity_main.xml b/tests/java_api/RsNbody/res/layout/activity_main.xml
similarity index 100%
rename from java/tests/RsNbody/res/layout/activity_main.xml
rename to tests/java_api/RsNbody/res/layout/activity_main.xml
diff --git a/java/tests/RsNbody/res/mipmap-hdpi/ic_launcher.png b/tests/java_api/RsNbody/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from java/tests/RsNbody/res/mipmap-hdpi/ic_launcher.png
rename to tests/java_api/RsNbody/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/RsNbody/res/mipmap-mdpi/ic_launcher.png b/tests/java_api/RsNbody/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from java/tests/RsNbody/res/mipmap-mdpi/ic_launcher.png
rename to tests/java_api/RsNbody/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/RsNbody/res/mipmap-xhdpi/ic_launcher.png b/tests/java_api/RsNbody/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/RsNbody/res/mipmap-xhdpi/ic_launcher.png
rename to tests/java_api/RsNbody/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/RsNbody/res/mipmap-xxhdpi/ic_launcher.png b/tests/java_api/RsNbody/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/RsNbody/res/mipmap-xxhdpi/ic_launcher.png
rename to tests/java_api/RsNbody/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/RsNbody/res/mipmap-xxxhdpi/ic_launcher.png b/tests/java_api/RsNbody/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/RsNbody/res/mipmap-xxxhdpi/ic_launcher.png
rename to tests/java_api/RsNbody/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/RsNbody/res/values-w820dp/dimens.xml b/tests/java_api/RsNbody/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/RsNbody/res/values-w820dp/dimens.xml
rename to tests/java_api/RsNbody/res/values-w820dp/dimens.xml
diff --git a/java/tests/RsNbody/res/values/colors.xml b/tests/java_api/RsNbody/res/values/colors.xml
similarity index 100%
rename from java/tests/RsNbody/res/values/colors.xml
rename to tests/java_api/RsNbody/res/values/colors.xml
diff --git a/java/tests/RsNbody/res/values/dimens.xml b/tests/java_api/RsNbody/res/values/dimens.xml
similarity index 100%
rename from java/tests/RsNbody/res/values/dimens.xml
rename to tests/java_api/RsNbody/res/values/dimens.xml
diff --git a/java/tests/RsNbody/res/values/strings.xml b/tests/java_api/RsNbody/res/values/strings.xml
similarity index 100%
rename from java/tests/RsNbody/res/values/strings.xml
rename to tests/java_api/RsNbody/res/values/strings.xml
diff --git a/java/tests/RsNbody/res/values/styles.xml b/tests/java_api/RsNbody/res/values/styles.xml
similarity index 100%
rename from java/tests/RsNbody/res/values/styles.xml
rename to tests/java_api/RsNbody/res/values/styles.xml
diff --git a/java/tests/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLRenderer.java b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLRenderer.java
similarity index 100%
rename from java/tests/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLRenderer.java
rename to tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLRenderer.java
diff --git a/java/tests/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLSurfaceView.java b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLSurfaceView.java
similarity index 100%
rename from java/tests/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLSurfaceView.java
rename to tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/BasicGLSurfaceView.java
diff --git a/java/tests/RsNbody/src/com/example/android/rs/nbody_gl/MainActivity.java b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/MainActivity.java
similarity index 100%
rename from java/tests/RsNbody/src/com/example/android/rs/nbody_gl/MainActivity.java
rename to tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/MainActivity.java
diff --git a/java/tests/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java
similarity index 100%
rename from java/tests/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java
rename to tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java
diff --git a/java/tests/RsNbody/src/com/example/android/rs/nbody_gl/nbody.rs b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/nbody.rs
similarity index 100%
rename from java/tests/RsNbody/src/com/example/android/rs/nbody_gl/nbody.rs
rename to tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/nbody.rs
diff --git a/java/tests/RsTest/Android.mk b/tests/java_api/RsTest/Android.mk
similarity index 100%
rename from java/tests/RsTest/Android.mk
rename to tests/java_api/RsTest/Android.mk
diff --git a/java/tests/RsTest/AndroidManifest.xml b/tests/java_api/RsTest/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsTest/AndroidManifest.xml
rename to tests/java_api/RsTest/AndroidManifest.xml
diff --git a/java/tests/RsTest/res/drawable-nodpi/test_pattern.png b/tests/java_api/RsTest/res/drawable-nodpi/test_pattern.png
similarity index 100%
rename from java/tests/RsTest/res/drawable-nodpi/test_pattern.png
rename to tests/java_api/RsTest/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/java/tests/RsTest/src/com/android/rs/test/RSContinuousTest.java b/tests/java_api/RsTest/src/com/android/rs/test/RSContinuousTest.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/RSContinuousTest.java
rename to tests/java_api/RsTest/src/com/android/rs/test/RSContinuousTest.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/RSContinuousTestActivity.java b/tests/java_api/RsTest/src/com/android/rs/test/RSContinuousTestActivity.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/RSContinuousTestActivity.java
rename to tests/java_api/RsTest/src/com/android/rs/test/RSContinuousTestActivity.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/RSTest.java b/tests/java_api/RsTest/src/com/android/rs/test/RSTest.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/RSTest.java
rename to tests/java_api/RsTest/src/com/android/rs/test/RSTest.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RsTest/src/com/android/rs/test/RSTestCore.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/RSTestCore.java
rename to tests/java_api/RsTest/src/com/android/rs/test/RSTestCore.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_alloc.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_alloc.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_alloc.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_array_alloc.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_array_alloc.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_array_alloc.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_array_alloc.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_array_init.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_array_init.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_array_init.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_array_init.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_atomic.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_atomic.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_atomic.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_atomic.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_bug_char.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_bug_char.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_bug_char.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_bug_char.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_check_dims.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_check_dims.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_check_dims.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_check_dims.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_clamp.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_clamp.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_clamp.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_clamp_relaxed.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_constant.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_constant.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_constant.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_constant.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_convert.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_convert.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_convert.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_convert.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_convert_relaxed.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_convert_relaxed.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_convert_relaxed.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_convert_relaxed.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_copy_test.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_copy_test.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_copy_test.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_copy_test.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_ctxt_default.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_ctxt_default.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_ctxt_default.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_ctxt_default.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_element.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_element.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_element.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_element.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_foreach.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_foreach.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_foreach_bounds.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_bounds.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_foreach_bounds.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_bounds.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_multi.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_foreach_multi.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_foreach_multi.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_fp16.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_fp16.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_fp16.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_fp16_globals.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp16_globals.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_fp16_globals.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_fp16_globals.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_fp_mad.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_fp_mad.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_fp_mad.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_int4.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_int4.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_int4.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_int4.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_kernel.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_kernel.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_kernel.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_kernel2d.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_kernel2d.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_kernel2d_oldstyle.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_kernel3d.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel3d.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_kernel3d.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_kernel3d.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_kernel_struct.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_kernel_struct.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_kernel_struct.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_kernel_struct.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_math.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_math.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_math.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_math_agree.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_agree.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_math_agree.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_math_agree.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_math_conformance.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_conformance.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_math_conformance.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_math_conformance.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_math_fp16.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_math_fp16.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_math_fp16.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_math_fp16.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_min.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_min.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_min.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_min.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_noroot.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_noroot.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_noroot.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_noroot.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_primitives.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_primitives.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_primitives.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_reduce.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_reduce.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_reduce.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_reduce.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_reduce_backward.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_reduce_backward.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_reduce_backward.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_reduce_backward.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_refcount.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_refcount.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_refcount.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_rsdebug.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_rsdebug.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_rsdebug.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_rstime.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_rstime.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_rstime.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_rstypes.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_rstypes.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_rstypes.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_sampler.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_sampler.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_sampler.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_sampler.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_script_group2_float.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_float.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_script_group2_float.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_float.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_gatherscatter.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_nochain.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_script_group2_pointwise.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_single_source_alloc.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_alloc.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_single_source_alloc.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_alloc.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_ref_count.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_single_source_script.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_script.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_single_source_script.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_single_source_script.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_small_struct.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_small_struct.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_small_struct.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_small_struct.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_static_globals.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_static_globals.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_static_globals.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_static_globals.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_struct.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_struct.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_struct.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_struct.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_struct_field.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_struct_field.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_struct_field.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_struct_field.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_unsigned.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_unsigned.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_unsigned.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_unsigned.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UT_vector.java b/tests/java_api/RsTest/src/com/android/rs/test/UT_vector.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UT_vector.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UT_vector.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/UnitTest.java b/tests/java_api/RsTest/src/com/android/rs/test/UnitTest.java
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/UnitTest.java
rename to tests/java_api/RsTest/src/com/android/rs/test/UnitTest.java
diff --git a/java/tests/RsTest/src/com/android/rs/test/addup.rs b/tests/java_api/RsTest/src/com/android/rs/test/addup.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/addup.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/addup.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/alloc.rs b/tests/java_api/RsTest/src/com/android/rs/test/alloc.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/alloc.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/alloc.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/array_alloc.rs b/tests/java_api/RsTest/src/com/android/rs/test/array_alloc.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/array_alloc.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/array_alloc.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/array_init.rs b/tests/java_api/RsTest/src/com/android/rs/test/array_init.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/array_init.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/array_init.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/atomic.rs b/tests/java_api/RsTest/src/com/android/rs/test/atomic.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/atomic.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/atomic.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/bug_char.rs b/tests/java_api/RsTest/src/com/android/rs/test/bug_char.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/bug_char.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/bug_char.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/check_dims.rs b/tests/java_api/RsTest/src/com/android/rs/test/check_dims.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/check_dims.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/check_dims.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/clamp.rs b/tests/java_api/RsTest/src/com/android/rs/test/clamp.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/clamp.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/clamp.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/clamp_relaxed.rs b/tests/java_api/RsTest/src/com/android/rs/test/clamp_relaxed.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/clamp_relaxed.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/clamp_relaxed.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/constant.rs b/tests/java_api/RsTest/src/com/android/rs/test/constant.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/constant.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/constant.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/convert.rs b/tests/java_api/RsTest/src/com/android/rs/test/convert.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/convert.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/convert.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/convert_relaxed.rs b/tests/java_api/RsTest/src/com/android/rs/test/convert_relaxed.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/convert_relaxed.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/convert_relaxed.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/copy_test.rs b/tests/java_api/RsTest/src/com/android/rs/test/copy_test.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/copy_test.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/copy_test.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/ctxt_default.rs b/tests/java_api/RsTest/src/com/android/rs/test/ctxt_default.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/ctxt_default.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/ctxt_default.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/double.rs b/tests/java_api/RsTest/src/com/android/rs/test/double.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/double.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/double.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/element.rs b/tests/java_api/RsTest/src/com/android/rs/test/element.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/element.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/element.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/float_test.rs b/tests/java_api/RsTest/src/com/android/rs/test/float_test.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/float_test.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/float_test.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/foreach.rs b/tests/java_api/RsTest/src/com/android/rs/test/foreach.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/foreach.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/foreach.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/foreach_bounds.rs b/tests/java_api/RsTest/src/com/android/rs/test/foreach_bounds.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/foreach_bounds.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/foreach_bounds.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs b/tests/java_api/RsTest/src/com/android/rs/test/foreach_multi.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/foreach_multi.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/foreach_multi.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/fp16.rs b/tests/java_api/RsTest/src/com/android/rs/test/fp16.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/fp16.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/fp16.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/fp16_globals.rs b/tests/java_api/RsTest/src/com/android/rs/test/fp16_globals.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/fp16_globals.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/fp16_globals.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/fp_mad.rs b/tests/java_api/RsTest/src/com/android/rs/test/fp_mad.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/fp_mad.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/fp_mad.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/increment.rs b/tests/java_api/RsTest/src/com/android/rs/test/increment.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/increment.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/increment.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/increment2.rs b/tests/java_api/RsTest/src/com/android/rs/test/increment2.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/increment2.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/increment2.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/int4.rs b/tests/java_api/RsTest/src/com/android/rs/test/int4.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/int4.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/int4.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/kernel.rs b/tests/java_api/RsTest/src/com/android/rs/test/kernel.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/kernel.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/kernel.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/kernel2d.rs b/tests/java_api/RsTest/src/com/android/rs/test/kernel2d.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/kernel2d.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/kernel2d.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/kernel2d_oldstyle.rs b/tests/java_api/RsTest/src/com/android/rs/test/kernel2d_oldstyle.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/kernel2d_oldstyle.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/kernel2d_oldstyle.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/kernel3d.rs b/tests/java_api/RsTest/src/com/android/rs/test/kernel3d.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/kernel3d.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/kernel3d.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/kernel_struct.rs b/tests/java_api/RsTest/src/com/android/rs/test/kernel_struct.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/kernel_struct.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/kernel_struct.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/math.rs b/tests/java_api/RsTest/src/com/android/rs/test/math.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/math.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/math.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/math_agree.rs b/tests/java_api/RsTest/src/com/android/rs/test/math_agree.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/math_agree.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/math_agree.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/math_conformance.rs b/tests/java_api/RsTest/src/com/android/rs/test/math_conformance.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/math_conformance.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/math_conformance.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/math_fp16.rs b/tests/java_api/RsTest/src/com/android/rs/test/math_fp16.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/math_fp16.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/math_fp16.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/min.rs b/tests/java_api/RsTest/src/com/android/rs/test/min.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/min.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/min.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/noroot.rs b/tests/java_api/RsTest/src/com/android/rs/test/noroot.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/noroot.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/noroot.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/primitives.rs b/tests/java_api/RsTest/src/com/android/rs/test/primitives.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/primitives.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/primitives.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/reduce.rs b/tests/java_api/RsTest/src/com/android/rs/test/reduce.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/reduce.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/reduce.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/reduce_backward.rs b/tests/java_api/RsTest/src/com/android/rs/test/reduce_backward.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/reduce_backward.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/reduce_backward.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/refcount.rs b/tests/java_api/RsTest/src/com/android/rs/test/refcount.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/refcount.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/refcount.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/rsdebug.rs b/tests/java_api/RsTest/src/com/android/rs/test/rsdebug.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/rsdebug.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/rsdebug.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/rslist.rs b/tests/java_api/RsTest/src/com/android/rs/test/rslist.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/rslist.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/rslist.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/rstime.rs b/tests/java_api/RsTest/src/com/android/rs/test/rstime.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/rstime.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/rstime.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/rstypes.rs b/tests/java_api/RsTest/src/com/android/rs/test/rstypes.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/rstypes.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/rstypes.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/sampler.rs b/tests/java_api/RsTest/src/com/android/rs/test/sampler.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/sampler.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/sampler.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/shared.rsh b/tests/java_api/RsTest/src/com/android/rs/test/shared.rsh
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/shared.rsh
rename to tests/java_api/RsTest/src/com/android/rs/test/shared.rsh
diff --git a/java/tests/RsTest/src/com/android/rs/test/single_source_alloc.rs b/tests/java_api/RsTest/src/com/android/rs/test/single_source_alloc.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/single_source_alloc.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/single_source_alloc.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/single_source_ref_count.rs b/tests/java_api/RsTest/src/com/android/rs/test/single_source_ref_count.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/single_source_ref_count.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/single_source_ref_count.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/single_source_script.rs b/tests/java_api/RsTest/src/com/android/rs/test/single_source_script.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/single_source_script.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/single_source_script.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/small_struct.rs b/tests/java_api/RsTest/src/com/android/rs/test/small_struct.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/small_struct.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/small_struct.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/static_globals.rs b/tests/java_api/RsTest/src/com/android/rs/test/static_globals.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/static_globals.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/static_globals.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/struct.rs b/tests/java_api/RsTest/src/com/android/rs/test/struct.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/struct.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/struct.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/struct_field.rs b/tests/java_api/RsTest/src/com/android/rs/test/struct_field.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/struct_field.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/struct_field.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/unsigned.rs b/tests/java_api/RsTest/src/com/android/rs/test/unsigned.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/unsigned.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/unsigned.rs
diff --git a/java/tests/RsTest/src/com/android/rs/test/vector.rs b/tests/java_api/RsTest/src/com/android/rs/test/vector.rs
similarity index 100%
rename from java/tests/RsTest/src/com/android/rs/test/vector.rs
rename to tests/java_api/RsTest/src/com/android/rs/test/vector.rs
diff --git a/java/tests/RsTest_11/Android.mk b/tests/java_api/RsTest_11/Android.mk
similarity index 100%
rename from java/tests/RsTest_11/Android.mk
rename to tests/java_api/RsTest_11/Android.mk
diff --git a/java/tests/RsTest_11/AndroidManifest.xml b/tests/java_api/RsTest_11/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsTest_11/AndroidManifest.xml
rename to tests/java_api/RsTest_11/AndroidManifest.xml
diff --git a/java/tests/RsTest_11/res/drawable/test_pattern.png b/tests/java_api/RsTest_11/res/drawable/test_pattern.png
similarity index 100%
rename from java/tests/RsTest_11/res/drawable/test_pattern.png
rename to tests/java_api/RsTest_11/res/drawable/test_pattern.png
Binary files differ
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RsTest_11/src/com/android/rs/test/RSTestCore.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/RSTestCore.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/RSTestCore.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/RSTestView.java b/tests/java_api/RsTest_11/src/com/android/rs/test/RSTestView.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/RSTestView.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/RSTestView.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/RSTest_v11.java b/tests/java_api/RsTest_11/src/com/android/rs/test/RSTest_v11.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/RSTest_v11.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/RSTest_v11.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UT_fp_mad.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UT_fp_mad.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UT_fp_mad.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UT_math.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UT_math.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UT_math.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UT_math.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UT_primitives.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UT_primitives.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UT_primitives.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UT_rsdebug.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UT_rsdebug.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UT_rsdebug.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UT_rstime.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UT_rstime.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UT_rstime.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UT_rstypes.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UT_rstypes.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UT_rstypes.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/UnitTest.java b/tests/java_api/RsTest_11/src/com/android/rs/test/UnitTest.java
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/UnitTest.java
rename to tests/java_api/RsTest_11/src/com/android/rs/test/UnitTest.java
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/fp_mad.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/fp_mad.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/fp_mad.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/fp_mad.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/math.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/math.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/math.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/math.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/primitives.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/primitives.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/primitives.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/primitives.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/rsdebug.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/rsdebug.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/rsdebug.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/rsdebug.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/rslist.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/rslist.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/rslist.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/rslist.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/rstime.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/rstime.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/rstime.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/rstime.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/rstypes.rs b/tests/java_api/RsTest_11/src/com/android/rs/test/rstypes.rs
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/rstypes.rs
rename to tests/java_api/RsTest_11/src/com/android/rs/test/rstypes.rs
diff --git a/java/tests/RsTest_11/src/com/android/rs/test/shared.rsh b/tests/java_api/RsTest_11/src/com/android/rs/test/shared.rsh
similarity index 100%
rename from java/tests/RsTest_11/src/com/android/rs/test/shared.rsh
rename to tests/java_api/RsTest_11/src/com/android/rs/test/shared.rsh
diff --git a/java/tests/RsTest_14/Android.mk b/tests/java_api/RsTest_14/Android.mk
similarity index 100%
rename from java/tests/RsTest_14/Android.mk
rename to tests/java_api/RsTest_14/Android.mk
diff --git a/java/tests/RsTest_14/AndroidManifest.xml b/tests/java_api/RsTest_14/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsTest_14/AndroidManifest.xml
rename to tests/java_api/RsTest_14/AndroidManifest.xml
diff --git a/java/tests/RsTest_14/res/drawable-nodpi/test_pattern.png b/tests/java_api/RsTest_14/res/drawable-nodpi/test_pattern.png
similarity index 100%
rename from java/tests/RsTest_14/res/drawable-nodpi/test_pattern.png
rename to tests/java_api/RsTest_14/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RsTest_14/src/com/android/rs/test/RSTestCore.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/RSTestCore.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/RSTestCore.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/RSTestView.java b/tests/java_api/RsTest_14/src/com/android/rs/test/RSTestView.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/RSTestView.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/RSTestView.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/RSTest_v14.java b/tests/java_api/RsTest_14/src/com/android/rs/test/RSTest_v14.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/RSTest_v14.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/RSTest_v14.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_alloc.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_alloc.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_alloc.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_foreach.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_foreach.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_foreach.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_fp_mad.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_fp_mad.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_fp_mad.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_math.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_math.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_math.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_math.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_primitives.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_primitives.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_primitives.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_refcount.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_refcount.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_refcount.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_rsdebug.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_rsdebug.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_rsdebug.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_rstime.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_rstime.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_rstime.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_rstypes.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_rstypes.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_rstypes.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UT_vector.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UT_vector.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UT_vector.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UT_vector.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/UnitTest.java b/tests/java_api/RsTest_14/src/com/android/rs/test/UnitTest.java
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/UnitTest.java
rename to tests/java_api/RsTest_14/src/com/android/rs/test/UnitTest.java
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/alloc.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/alloc.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/alloc.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/alloc.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/foreach.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/foreach.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/foreach.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/foreach.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/fp_mad.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/fp_mad.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/fp_mad.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/fp_mad.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/math.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/math.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/math.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/math.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/math.rs.bak b/tests/java_api/RsTest_14/src/com/android/rs/test/math.rs.bak
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/math.rs.bak
rename to tests/java_api/RsTest_14/src/com/android/rs/test/math.rs.bak
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/math.rs.orig b/tests/java_api/RsTest_14/src/com/android/rs/test/math.rs.orig
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/math.rs.orig
rename to tests/java_api/RsTest_14/src/com/android/rs/test/math.rs.orig
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/primitives.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/primitives.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/primitives.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/primitives.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/refcount.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/refcount.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/refcount.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/refcount.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/rsdebug.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/rsdebug.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/rsdebug.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/rsdebug.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/rslist.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/rslist.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/rslist.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/rslist.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/rstime.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/rstime.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/rstime.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/rstime.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/rstypes.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/rstypes.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/rstypes.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/rstypes.rs
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/shared.rsh b/tests/java_api/RsTest_14/src/com/android/rs/test/shared.rsh
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/shared.rsh
rename to tests/java_api/RsTest_14/src/com/android/rs/test/shared.rsh
diff --git a/java/tests/RsTest_14/src/com/android/rs/test/vector.rs b/tests/java_api/RsTest_14/src/com/android/rs/test/vector.rs
similarity index 100%
rename from java/tests/RsTest_14/src/com/android/rs/test/vector.rs
rename to tests/java_api/RsTest_14/src/com/android/rs/test/vector.rs
diff --git a/java/tests/RsTest_16/Android.mk b/tests/java_api/RsTest_16/Android.mk
similarity index 100%
rename from java/tests/RsTest_16/Android.mk
rename to tests/java_api/RsTest_16/Android.mk
diff --git a/java/tests/RsTest_16/AndroidManifest.xml b/tests/java_api/RsTest_16/AndroidManifest.xml
similarity index 100%
rename from java/tests/RsTest_16/AndroidManifest.xml
rename to tests/java_api/RsTest_16/AndroidManifest.xml
diff --git a/java/tests/RsTest_16/res/drawable-nodpi/test_pattern.png b/tests/java_api/RsTest_16/res/drawable-nodpi/test_pattern.png
similarity index 100%
rename from java/tests/RsTest_16/res/drawable-nodpi/test_pattern.png
rename to tests/java_api/RsTest_16/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RsTest_16/src/com/android/rs/test/RSTestCore.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/RSTestCore.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/RSTestCore.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/RSTestView.java b/tests/java_api/RsTest_16/src/com/android/rs/test/RSTestView.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/RSTestView.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/RSTestView.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/RSTest_v16.java b/tests/java_api/RsTest_16/src/com/android/rs/test/RSTest_v16.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/RSTest_v16.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/RSTest_v16.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_alloc.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_alloc.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_alloc.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_foreach.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_foreach.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_foreach.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_fp_mad.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_fp_mad.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_fp_mad.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_math.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_math.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_math.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_math.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_primitives.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_primitives.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_primitives.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_refcount.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_refcount.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_refcount.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_rsdebug.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_rsdebug.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_rsdebug.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_rstime.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_rstime.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_rstime.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_rstypes.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_rstypes.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_rstypes.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UT_vector.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UT_vector.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UT_vector.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UT_vector.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/UnitTest.java b/tests/java_api/RsTest_16/src/com/android/rs/test/UnitTest.java
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/UnitTest.java
rename to tests/java_api/RsTest_16/src/com/android/rs/test/UnitTest.java
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/alloc.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/alloc.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/alloc.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/alloc.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/foreach.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/foreach.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/foreach.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/foreach.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/fp_mad.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/fp_mad.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/fp_mad.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/fp_mad.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/math.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/math.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/math.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/math.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/primitives.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/primitives.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/primitives.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/primitives.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/refcount.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/refcount.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/refcount.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/refcount.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/rsdebug.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/rsdebug.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/rsdebug.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/rsdebug.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/rslist.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/rslist.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/rslist.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/rslist.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/rstime.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/rstime.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/rstime.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/rstime.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/rstypes.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/rstypes.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/rstypes.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/rstypes.rs
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/shared.rsh b/tests/java_api/RsTest_16/src/com/android/rs/test/shared.rsh
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/shared.rsh
rename to tests/java_api/RsTest_16/src/com/android/rs/test/shared.rsh
diff --git a/java/tests/RsTest_16/src/com/android/rs/test/vector.rs b/tests/java_api/RsTest_16/src/com/android/rs/test/vector.rs
similarity index 100%
rename from java/tests/RsTest_16/src/com/android/rs/test/vector.rs
rename to tests/java_api/RsTest_16/src/com/android/rs/test/vector.rs
diff --git a/java/tests/SSHealingBrush/Android.mk b/tests/java_api/SSHealingBrush/Android.mk
similarity index 100%
rename from java/tests/SSHealingBrush/Android.mk
rename to tests/java_api/SSHealingBrush/Android.mk
diff --git a/java/tests/SSHealingBrush/AndroidManifest.xml b/tests/java_api/SSHealingBrush/AndroidManifest.xml
similarity index 100%
rename from java/tests/SSHealingBrush/AndroidManifest.xml
rename to tests/java_api/SSHealingBrush/AndroidManifest.xml
diff --git a/java/tests/SSHealingBrush/cnb b/tests/java_api/SSHealingBrush/cnb
similarity index 100%
rename from java/tests/SSHealingBrush/cnb
rename to tests/java_api/SSHealingBrush/cnb
diff --git a/java/tests/SSHealingBrush/res/drawable-nodpi/bugs.jpg b/tests/java_api/SSHealingBrush/res/drawable-nodpi/bugs.jpg
similarity index 100%
rename from java/tests/SSHealingBrush/res/drawable-nodpi/bugs.jpg
rename to tests/java_api/SSHealingBrush/res/drawable-nodpi/bugs.jpg
Binary files differ
diff --git a/java/tests/SSHealingBrush/res/drawable/ic_launcher.png b/tests/java_api/SSHealingBrush/res/drawable/ic_launcher.png
similarity index 100%
rename from java/tests/SSHealingBrush/res/drawable/ic_launcher.png
rename to tests/java_api/SSHealingBrush/res/drawable/ic_launcher.png
Binary files differ
diff --git a/java/tests/SSHealingBrush/res/layout/activity_main.xml b/tests/java_api/SSHealingBrush/res/layout/activity_main.xml
similarity index 100%
rename from java/tests/SSHealingBrush/res/layout/activity_main.xml
rename to tests/java_api/SSHealingBrush/res/layout/activity_main.xml
diff --git a/java/tests/SSHealingBrush/res/values-w820dp/dimens.xml b/tests/java_api/SSHealingBrush/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/SSHealingBrush/res/values-w820dp/dimens.xml
rename to tests/java_api/SSHealingBrush/res/values-w820dp/dimens.xml
diff --git a/java/tests/SSHealingBrush/res/values/dimens.xml b/tests/java_api/SSHealingBrush/res/values/dimens.xml
similarity index 100%
rename from java/tests/SSHealingBrush/res/values/dimens.xml
rename to tests/java_api/SSHealingBrush/res/values/dimens.xml
diff --git a/java/tests/SSHealingBrush/res/values/strings.xml b/tests/java_api/SSHealingBrush/res/values/strings.xml
similarity index 100%
rename from java/tests/SSHealingBrush/res/values/strings.xml
rename to tests/java_api/SSHealingBrush/res/values/strings.xml
diff --git a/java/tests/SSHealingBrush/res/values/styles.xml b/tests/java_api/SSHealingBrush/res/values/styles.xml
similarity index 100%
rename from java/tests/SSHealingBrush/res/values/styles.xml
rename to tests/java_api/SSHealingBrush/res/values/styles.xml
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/DrawView.java b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/DrawView.java
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/DrawView.java
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/DrawView.java
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/Healing.java b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/Healing.java
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/Healing.java
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/Healing.java
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/MediaStoreSaver.java
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/Region.java b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/Region.java
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/Region.java
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/Region.java
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/find_region.rs b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/find_region.rs
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/find_region.rs
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/find_region.rs
diff --git a/java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/healing.rs b/tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/healing.rs
similarity index 100%
rename from java/tests/SSHealingBrush/src/rs/example/android/com/healingbrush/healing.rs
rename to tests/java_api/SSHealingBrush/src/rs/example/android/com/healingbrush/healing.rs
diff --git a/java/tests/SampleTest/Android.mk b/tests/java_api/SampleTest/Android.mk
similarity index 100%
rename from java/tests/SampleTest/Android.mk
rename to tests/java_api/SampleTest/Android.mk
diff --git a/java/tests/SampleTest/AndroidManifest.xml b/tests/java_api/SampleTest/AndroidManifest.xml
similarity index 100%
rename from java/tests/SampleTest/AndroidManifest.xml
rename to tests/java_api/SampleTest/AndroidManifest.xml
diff --git a/java/tests/SampleTest/res/drawable-nodpi/city.png b/tests/java_api/SampleTest/res/drawable-nodpi/city.png
similarity index 100%
rename from java/tests/SampleTest/res/drawable-nodpi/city.png
rename to tests/java_api/SampleTest/res/drawable-nodpi/city.png
Binary files differ
diff --git a/java/tests/SampleTest/res/drawable-nodpi/twobytwo.png b/tests/java_api/SampleTest/res/drawable-nodpi/twobytwo.png
similarity index 100%
rename from java/tests/SampleTest/res/drawable-nodpi/twobytwo.png
rename to tests/java_api/SampleTest/res/drawable-nodpi/twobytwo.png
Binary files differ
diff --git a/java/tests/SampleTest/res/layout/rs.xml b/tests/java_api/SampleTest/res/layout/rs.xml
similarity index 100%
rename from java/tests/SampleTest/res/layout/rs.xml
rename to tests/java_api/SampleTest/res/layout/rs.xml
diff --git a/java/tests/SampleTest/res/values/strings.xml b/tests/java_api/SampleTest/res/values/strings.xml
similarity index 100%
rename from java/tests/SampleTest/res/values/strings.xml
rename to tests/java_api/SampleTest/res/values/strings.xml
diff --git a/java/tests/SampleTest/src/com/android/rs/sample/SampleRSActivity.java b/tests/java_api/SampleTest/src/com/android/rs/sample/SampleRSActivity.java
similarity index 100%
rename from java/tests/SampleTest/src/com/android/rs/sample/SampleRSActivity.java
rename to tests/java_api/SampleTest/src/com/android/rs/sample/SampleRSActivity.java
diff --git a/java/tests/SampleTest/src/com/android/rs/sample/sample.rs b/tests/java_api/SampleTest/src/com/android/rs/sample/sample.rs
similarity index 100%
rename from java/tests/SampleTest/src/com/android/rs/sample/sample.rs
rename to tests/java_api/SampleTest/src/com/android/rs/sample/sample.rs
diff --git a/java/tests/ScriptGroupTest/Android.mk b/tests/java_api/ScriptGroupTest/Android.mk
similarity index 100%
rename from java/tests/ScriptGroupTest/Android.mk
rename to tests/java_api/ScriptGroupTest/Android.mk
diff --git a/java/tests/ScriptGroupTest/AndroidManifest.xml b/tests/java_api/ScriptGroupTest/AndroidManifest.xml
similarity index 100%
rename from java/tests/ScriptGroupTest/AndroidManifest.xml
rename to tests/java_api/ScriptGroupTest/AndroidManifest.xml
diff --git a/java/tests/ScriptGroupTest/res/drawable-nodpi/img1600x1067.jpg b/tests/java_api/ScriptGroupTest/res/drawable-nodpi/img1600x1067.jpg
similarity index 100%
rename from java/tests/ScriptGroupTest/res/drawable-nodpi/img1600x1067.jpg
rename to tests/java_api/ScriptGroupTest/res/drawable-nodpi/img1600x1067.jpg
Binary files differ
diff --git a/java/tests/ScriptGroupTest/res/drawable-nodpi/img1600x1067b.jpg b/tests/java_api/ScriptGroupTest/res/drawable-nodpi/img1600x1067b.jpg
similarity index 100%
rename from java/tests/ScriptGroupTest/res/drawable-nodpi/img1600x1067b.jpg
rename to tests/java_api/ScriptGroupTest/res/drawable-nodpi/img1600x1067b.jpg
Binary files differ
diff --git a/java/tests/ScriptGroupTest/res/layout/main.xml b/tests/java_api/ScriptGroupTest/res/layout/main.xml
similarity index 100%
rename from java/tests/ScriptGroupTest/res/layout/main.xml
rename to tests/java_api/ScriptGroupTest/res/layout/main.xml
diff --git a/java/tests/ScriptGroupTest/res/layout/spinner_layout.xml b/tests/java_api/ScriptGroupTest/res/layout/spinner_layout.xml
similarity index 100%
rename from java/tests/ScriptGroupTest/res/layout/spinner_layout.xml
rename to tests/java_api/ScriptGroupTest/res/layout/spinner_layout.xml
diff --git a/java/tests/ScriptGroupTest/res/values/strings.xml b/tests/java_api/ScriptGroupTest/res/values/strings.xml
similarity index 100%
rename from java/tests/ScriptGroupTest/res/values/strings.xml
rename to tests/java_api/ScriptGroupTest/res/values/strings.xml
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/Filters.java b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/Filters.java
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/Filters.java
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/Filters.java
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/ScriptGroupTestActivity.java b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/ScriptGroupTestActivity.java
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/ScriptGroupTestActivity.java
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/ScriptGroupTestActivity.java
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/TestBase.java b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/TestBase.java
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/TestBase.java
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/TestBase.java
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/colormatrix_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/colormatrix_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/colormatrix_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/colormatrix_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/contrast_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/contrast_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/contrast_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/contrast_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/exposure_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/exposure_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/exposure_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/exposure_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/f4touc4.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/f4touc4.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/f4touc4.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/f4touc4.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_f.rsh b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_f.rsh
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_f.rsh
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_f.rsh
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_relaxed_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_relaxed_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_relaxed_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/fisheye_approx_relaxed_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/greyscale_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/greyscale_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/greyscale_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/greyscale_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/ip.rsh b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/ip.rsh
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/ip.rsh
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/ip.rsh
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/levels_f.rsh b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/levels_f.rsh
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/levels_f.rsh
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/levels_f.rsh
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/levels_relaxed_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/levels_relaxed_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/levels_relaxed_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/levels_relaxed_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/shadows_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/shadows_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/shadows_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/shadows_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/uc4tof4.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/uc4tof4.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/uc4tof4.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/uc4tof4.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vibrance_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vibrance_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vibrance_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vibrance_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_f.rsh b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_f.rsh
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_f.rsh
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_f.rsh
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_relaxed_f.rs b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_relaxed_f.rs
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_relaxed_f.rs
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vignette_approx_relaxed_f.rs
diff --git a/java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vignette_f.rsh b/tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vignette_f.rsh
similarity index 100%
rename from java/tests/ScriptGroupTest/src/com/android/rs/sgtest/vignette_f.rsh
rename to tests/java_api/ScriptGroupTest/src/com/android/rs/sgtest/vignette_f.rsh
diff --git a/java/tests/VrDemo/Android.mk b/tests/java_api/VrDemo/Android.mk
similarity index 100%
rename from java/tests/VrDemo/Android.mk
rename to tests/java_api/VrDemo/Android.mk
diff --git a/java/tests/VrDemo/AndroidManifest.xml b/tests/java_api/VrDemo/AndroidManifest.xml
similarity index 100%
rename from java/tests/VrDemo/AndroidManifest.xml
rename to tests/java_api/VrDemo/AndroidManifest.xml
diff --git a/java/tests/VrDemo/_index.html b/tests/java_api/VrDemo/_index.html
similarity index 100%
rename from java/tests/VrDemo/_index.html
rename to tests/java_api/VrDemo/_index.html
diff --git a/java/tests/VrDemo/res/drawable-hdpi/ic_launcher.png b/tests/java_api/VrDemo/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from java/tests/VrDemo/res/drawable-hdpi/ic_launcher.png
rename to tests/java_api/VrDemo/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/VrDemo/res/drawable-mdpi/ic_launcher.png b/tests/java_api/VrDemo/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from java/tests/VrDemo/res/drawable-mdpi/ic_launcher.png
rename to tests/java_api/VrDemo/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/VrDemo/res/drawable-xhdpi/ic_launcher.png b/tests/java_api/VrDemo/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/VrDemo/res/drawable-xhdpi/ic_launcher.png
rename to tests/java_api/VrDemo/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/VrDemo/res/drawable-xxhdpi/ic_launcher.png b/tests/java_api/VrDemo/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from java/tests/VrDemo/res/drawable-xxhdpi/ic_launcher.png
rename to tests/java_api/VrDemo/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/java/tests/VrDemo/res/layout-land/activity_vr.xml b/tests/java_api/VrDemo/res/layout-land/activity_vr.xml
similarity index 100%
rename from java/tests/VrDemo/res/layout-land/activity_vr.xml
rename to tests/java_api/VrDemo/res/layout-land/activity_vr.xml
diff --git a/java/tests/VrDemo/res/layout/activity_vr.xml b/tests/java_api/VrDemo/res/layout/activity_vr.xml
similarity index 100%
rename from java/tests/VrDemo/res/layout/activity_vr.xml
rename to tests/java_api/VrDemo/res/layout/activity_vr.xml
diff --git a/java/tests/VrDemo/res/values-v21/styles.xml b/tests/java_api/VrDemo/res/values-v21/styles.xml
similarity index 100%
rename from java/tests/VrDemo/res/values-v21/styles.xml
rename to tests/java_api/VrDemo/res/values-v21/styles.xml
diff --git a/java/tests/VrDemo/res/values-w820dp/dimens.xml b/tests/java_api/VrDemo/res/values-w820dp/dimens.xml
similarity index 100%
rename from java/tests/VrDemo/res/values-w820dp/dimens.xml
rename to tests/java_api/VrDemo/res/values-w820dp/dimens.xml
diff --git a/java/tests/VrDemo/res/values/dimens.xml b/tests/java_api/VrDemo/res/values/dimens.xml
similarity index 100%
rename from java/tests/VrDemo/res/values/dimens.xml
rename to tests/java_api/VrDemo/res/values/dimens.xml
diff --git a/java/tests/VrDemo/res/values/strings.xml b/tests/java_api/VrDemo/res/values/strings.xml
similarity index 100%
rename from java/tests/VrDemo/res/values/strings.xml
rename to tests/java_api/VrDemo/res/values/strings.xml
diff --git a/java/tests/VrDemo/res/values/styles.xml b/tests/java_api/VrDemo/res/values/styles.xml
similarity index 100%
rename from java/tests/VrDemo/res/values/styles.xml
rename to tests/java_api/VrDemo/res/values/styles.xml
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/VrActivity.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/VrActivity.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/VrActivity.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/VrView.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/VrView.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/VrView.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/VrView.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/BasicPipeline.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/BasicPipeline.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/BasicPipeline.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/BasicPipeline.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Cube.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Cube.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Cube.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Cube.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Material.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Material.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Material.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Material.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Matrix.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Matrix.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Matrix.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Matrix.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Pipeline.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Pipeline.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Pipeline.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Pipeline.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Quaternion.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Quaternion.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Quaternion.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Quaternion.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/RsBrickedBitMask.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/RsBrickedBitMask.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/RsBrickedBitMask.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/RsBrickedBitMask.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Transform.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Transform.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Transform.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Transform.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/TriData.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/TriData.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/TriData.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/TriData.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/VectorUtil.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/VectorUtil.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/VectorUtil.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/VectorUtil.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/ViewMatrix.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/ViewMatrix.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/ViewMatrix.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/ViewMatrix.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/Volume.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Volume.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/Volume.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/Volume.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/VrPipline1.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/VrPipline1.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/VrPipline1.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/VrPipline1.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/VrState.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/VrState.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/VrState.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/VrState.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/bricked.rs b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/bricked.rs
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/bricked.rs
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/bricked.rs
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/bugdroid.rs b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/bugdroid.rs
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/bugdroid.rs
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/bugdroid.rs
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/mandelbulb.rs b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/mandelbulb.rs
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/mandelbulb.rs
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/mandelbulb.rs
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/rasterize.rs b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/rasterize.rs
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/rasterize.rs
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/rasterize.rs
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs b/tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/engine/vr.rs
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Droid.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/Droid.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Droid.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/Droid.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/LoaderDicom.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/LoaderDicom.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/loaders/LoaderDicom.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/LoaderDicom.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/LoaderRaw.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/LoaderRaw.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/loaders/LoaderRaw.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/LoaderRaw.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/Mandelbulb.java
diff --git a/java/tests/VrDemo/src/com/example/android/rs/vr/loaders/VolumeLoader.java b/tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/VolumeLoader.java
similarity index 100%
rename from java/tests/VrDemo/src/com/example/android/rs/vr/loaders/VolumeLoader.java
rename to tests/java_api/VrDemo/src/com/example/android/rs/vr/loaders/VolumeLoader.java
diff --git a/update_rs_prebuilts.sh b/update_rs_prebuilts.sh
index 3cef67f..d951d04 100755
--- a/update_rs_prebuilts.sh
+++ b/update_rs_prebuilts.sh
@@ -80,7 +80,7 @@
   echo Building for target $1
   lunch $1
   # Build a sample support application to ensure that all the pieces are up to date.
-  cd $MY_ANDROID_DIR/frameworks/rs/java/tests/RSTest_CompatLib/ && mma -j$NUM_CORES FORCE_BUILD_RS_COMPAT=true && cd - || exit 6
+  cd $MY_ANDROID_DIR/frameworks/rs/tests/java_api/RSTest_CompatLib/ && mma -j$NUM_CORES FORCE_BUILD_RS_COMPAT=true && cd - || exit 6
 }
 
 build_rs_host_tools() {