Merge "Animate backlight quickly when display state request to change or power mode changed"
diff --git a/api/current.txt b/api/current.txt
index 74645d5..f65e1e9 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -9167,6 +9167,7 @@
method public void setAppLabel(java.lang.CharSequence);
method public void setAppPackageName(java.lang.String);
method public void setInstallLocation(int);
+ method public void setOriginatingUid(int);
method public void setOriginatingUri(android.net.Uri);
method public void setReferrerUri(android.net.Uri);
method public void setSize(long);
@@ -48518,6 +48519,8 @@
public class InternalError extends java.lang.VirtualMachineError {
ctor public InternalError();
ctor public InternalError(java.lang.String);
+ ctor public InternalError(java.lang.String, java.lang.Throwable);
+ ctor public InternalError(java.lang.Throwable);
}
public class InterruptedException extends java.lang.Exception {
@@ -49290,6 +49293,8 @@
public abstract class VirtualMachineError extends java.lang.Error {
ctor public VirtualMachineError();
ctor public VirtualMachineError(java.lang.String);
+ ctor public VirtualMachineError(java.lang.String, java.lang.Throwable);
+ ctor public VirtualMachineError(java.lang.Throwable);
}
public final class Void {
@@ -53032,6 +53037,7 @@
method public static java.security.cert.CertPathBuilder getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
method public static java.security.cert.CertPathBuilder getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
+ method public final java.security.cert.CertPathChecker getRevocationChecker();
}
public class CertPathBuilderException extends java.security.GeneralSecurityException {
@@ -53049,6 +53055,13 @@
public abstract class CertPathBuilderSpi {
ctor public CertPathBuilderSpi();
method public abstract java.security.cert.CertPathBuilderResult engineBuild(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
+ method public java.security.cert.CertPathChecker engineGetRevocationChecker();
+ }
+
+ public abstract interface CertPathChecker {
+ method public abstract void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
+ method public abstract void init(boolean) throws java.security.cert.CertPathValidatorException;
+ method public abstract boolean isForwardCheckingSupported();
}
public abstract interface CertPathParameters implements java.lang.Cloneable {
@@ -53063,6 +53076,7 @@
method public static java.security.cert.CertPathValidator getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
method public static java.security.cert.CertPathValidator getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
+ method public final java.security.cert.CertPathChecker getRevocationChecker();
method public final java.security.cert.CertPathValidatorResult validate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
}
@@ -53099,6 +53113,7 @@
public abstract class CertPathValidatorSpi {
ctor public CertPathValidatorSpi();
+ method public java.security.cert.CertPathChecker engineGetRevocationChecker();
method public abstract java.security.cert.CertPathValidatorResult engineValidate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
}
@@ -53257,9 +53272,10 @@
method public java.security.cert.CertPath getCertPath();
}
- public abstract class PKIXCertPathChecker implements java.lang.Cloneable {
+ public abstract class PKIXCertPathChecker implements java.security.cert.CertPathChecker java.lang.Cloneable {
ctor protected PKIXCertPathChecker();
method public abstract void check(java.security.cert.Certificate, java.util.Collection<java.lang.String>) throws java.security.cert.CertPathValidatorException;
+ method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
method public java.lang.Object clone();
method public abstract java.util.Set<java.lang.String> getSupportedExtensions();
method public abstract void init(boolean) throws java.security.cert.CertPathValidatorException;
@@ -53319,6 +53335,30 @@
enum_constant public static final java.security.cert.PKIXReason UNRECOGNIZED_CRIT_EXT;
}
+ public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker {
+ ctor protected PKIXRevocationChecker();
+ method public java.util.List<java.security.cert.Extension> getOcspExtensions();
+ method public java.net.URI getOcspResponder();
+ method public java.security.cert.X509Certificate getOcspResponderCert();
+ method public java.util.Map<java.security.cert.X509Certificate, byte[]> getOcspResponses();
+ method public java.util.Set<java.security.cert.PKIXRevocationChecker.Option> getOptions();
+ method public abstract java.util.List<java.security.cert.CertPathValidatorException> getSoftFailExceptions();
+ method public void setOcspExtensions(java.util.List<java.security.cert.Extension>);
+ method public void setOcspResponder(java.net.URI);
+ method public void setOcspResponderCert(java.security.cert.X509Certificate);
+ method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate, byte[]>);
+ method public void setOptions(java.util.Set<java.security.cert.PKIXRevocationChecker.Option>);
+ }
+
+ public static final class PKIXRevocationChecker.Option extends java.lang.Enum {
+ method public static java.security.cert.PKIXRevocationChecker.Option valueOf(java.lang.String);
+ method public static final java.security.cert.PKIXRevocationChecker.Option[] values();
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option NO_FALLBACK;
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option ONLY_END_ENTITY;
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option PREFER_CRLS;
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option SOFT_FAIL;
+ }
+
public abstract interface PolicyNode {
method public abstract java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
method public abstract int getDepth();
@@ -53478,6 +53518,7 @@
method public javax.security.auth.x500.X500Principal getSubjectX500Principal();
method public abstract byte[] getTBSCertificate() throws java.security.cert.CertificateEncodingException;
method public abstract int getVersion();
+ method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
}
public abstract interface X509Extension {
diff --git a/api/system-current.txt b/api/system-current.txt
index f17c2f1..a365004 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -9451,6 +9451,7 @@
method public void setAppPackageName(java.lang.String);
method public void setGrantedRuntimePermissions(java.lang.String[]);
method public void setInstallLocation(int);
+ method public void setOriginatingUid(int);
method public void setOriginatingUri(android.net.Uri);
method public void setReferrerUri(android.net.Uri);
method public void setSize(long);
@@ -51136,6 +51137,8 @@
public class InternalError extends java.lang.VirtualMachineError {
ctor public InternalError();
ctor public InternalError(java.lang.String);
+ ctor public InternalError(java.lang.String, java.lang.Throwable);
+ ctor public InternalError(java.lang.Throwable);
}
public class InterruptedException extends java.lang.Exception {
@@ -51908,6 +51911,8 @@
public abstract class VirtualMachineError extends java.lang.Error {
ctor public VirtualMachineError();
ctor public VirtualMachineError(java.lang.String);
+ ctor public VirtualMachineError(java.lang.String, java.lang.Throwable);
+ ctor public VirtualMachineError(java.lang.Throwable);
}
public final class Void {
@@ -55650,6 +55655,7 @@
method public static java.security.cert.CertPathBuilder getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
method public static java.security.cert.CertPathBuilder getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
+ method public final java.security.cert.CertPathChecker getRevocationChecker();
}
public class CertPathBuilderException extends java.security.GeneralSecurityException {
@@ -55667,6 +55673,13 @@
public abstract class CertPathBuilderSpi {
ctor public CertPathBuilderSpi();
method public abstract java.security.cert.CertPathBuilderResult engineBuild(java.security.cert.CertPathParameters) throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException;
+ method public java.security.cert.CertPathChecker engineGetRevocationChecker();
+ }
+
+ public abstract interface CertPathChecker {
+ method public abstract void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
+ method public abstract void init(boolean) throws java.security.cert.CertPathValidatorException;
+ method public abstract boolean isForwardCheckingSupported();
}
public abstract interface CertPathParameters implements java.lang.Cloneable {
@@ -55681,6 +55694,7 @@
method public static java.security.cert.CertPathValidator getInstance(java.lang.String, java.lang.String) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException;
method public static java.security.cert.CertPathValidator getInstance(java.lang.String, java.security.Provider) throws java.security.NoSuchAlgorithmException;
method public final java.security.Provider getProvider();
+ method public final java.security.cert.CertPathChecker getRevocationChecker();
method public final java.security.cert.CertPathValidatorResult validate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
}
@@ -55717,6 +55731,7 @@
public abstract class CertPathValidatorSpi {
ctor public CertPathValidatorSpi();
+ method public java.security.cert.CertPathChecker engineGetRevocationChecker();
method public abstract java.security.cert.CertPathValidatorResult engineValidate(java.security.cert.CertPath, java.security.cert.CertPathParameters) throws java.security.cert.CertPathValidatorException, java.security.InvalidAlgorithmParameterException;
}
@@ -55875,9 +55890,10 @@
method public java.security.cert.CertPath getCertPath();
}
- public abstract class PKIXCertPathChecker implements java.lang.Cloneable {
+ public abstract class PKIXCertPathChecker implements java.security.cert.CertPathChecker java.lang.Cloneable {
ctor protected PKIXCertPathChecker();
method public abstract void check(java.security.cert.Certificate, java.util.Collection<java.lang.String>) throws java.security.cert.CertPathValidatorException;
+ method public void check(java.security.cert.Certificate) throws java.security.cert.CertPathValidatorException;
method public java.lang.Object clone();
method public abstract java.util.Set<java.lang.String> getSupportedExtensions();
method public abstract void init(boolean) throws java.security.cert.CertPathValidatorException;
@@ -55937,6 +55953,30 @@
enum_constant public static final java.security.cert.PKIXReason UNRECOGNIZED_CRIT_EXT;
}
+ public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker {
+ ctor protected PKIXRevocationChecker();
+ method public java.util.List<java.security.cert.Extension> getOcspExtensions();
+ method public java.net.URI getOcspResponder();
+ method public java.security.cert.X509Certificate getOcspResponderCert();
+ method public java.util.Map<java.security.cert.X509Certificate, byte[]> getOcspResponses();
+ method public java.util.Set<java.security.cert.PKIXRevocationChecker.Option> getOptions();
+ method public abstract java.util.List<java.security.cert.CertPathValidatorException> getSoftFailExceptions();
+ method public void setOcspExtensions(java.util.List<java.security.cert.Extension>);
+ method public void setOcspResponder(java.net.URI);
+ method public void setOcspResponderCert(java.security.cert.X509Certificate);
+ method public void setOcspResponses(java.util.Map<java.security.cert.X509Certificate, byte[]>);
+ method public void setOptions(java.util.Set<java.security.cert.PKIXRevocationChecker.Option>);
+ }
+
+ public static final class PKIXRevocationChecker.Option extends java.lang.Enum {
+ method public static java.security.cert.PKIXRevocationChecker.Option valueOf(java.lang.String);
+ method public static final java.security.cert.PKIXRevocationChecker.Option[] values();
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option NO_FALLBACK;
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option ONLY_END_ENTITY;
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option PREFER_CRLS;
+ enum_constant public static final java.security.cert.PKIXRevocationChecker.Option SOFT_FAIL;
+ }
+
public abstract interface PolicyNode {
method public abstract java.util.Iterator<? extends java.security.cert.PolicyNode> getChildren();
method public abstract int getDepth();
@@ -56096,6 +56136,7 @@
method public javax.security.auth.x500.X500Principal getSubjectX500Principal();
method public abstract byte[] getTBSCertificate() throws java.security.cert.CertificateEncodingException;
method public abstract int getVersion();
+ method public void verify(java.security.PublicKey, java.security.Provider) throws java.security.cert.CertificateException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.SignatureException;
}
public abstract interface X509Extension {
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index a2ef410..436aed1 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -99,6 +99,9 @@
import android.view.WindowManagerGlobal;
import android.renderscript.RenderScriptCacheDir;
import android.security.keystore.AndroidKeyStoreProvider;
+import android.system.Os;
+import android.system.OsConstants;
+import android.system.ErrnoException;
import com.android.internal.app.IVoiceInteractor;
import com.android.internal.content.ReferrerIntent;
@@ -783,48 +786,6 @@
setCoreSettings(coreSettings);
- /*
- * Two possible indications that this package could be
- * sharing its runtime with other packages:
- *
- * 1.) the sharedUserId attribute is set in the manifest,
- * indicating a request to share a VM with other
- * packages with the same sharedUserId.
- *
- * 2.) the application element of the manifest has an
- * attribute specifying a non-default process name,
- * indicating the desire to run in another packages VM.
- *
- * If sharing is enabled we do not have a unique application
- * in a process and therefore cannot rely on the package
- * name inside the runtime.
- */
- IPackageManager pm = getPackageManager();
- android.content.pm.PackageInfo pi = null;
- try {
- pi = pm.getPackageInfo(appInfo.packageName, 0, UserHandle.myUserId());
- } catch (RemoteException e) {
- }
- if (pi != null) {
- boolean sharedUserIdSet = (pi.sharedUserId != null);
- boolean processNameNotDefault =
- (pi.applicationInfo != null &&
- !appInfo.packageName.equals(pi.applicationInfo.processName));
- boolean sharable = (sharedUserIdSet || processNameNotDefault);
-
- // Tell the VMRuntime about the application, unless it is shared
- // inside a process.
- if (!sharable) {
- final List<String> codePaths = new ArrayList<>();
- codePaths.add(appInfo.sourceDir);
- if (appInfo.splitSourceDirs != null) {
- Collections.addAll(codePaths, appInfo.splitSourceDirs);
- }
- VMRuntime.registerAppInfo(appInfo.packageName, appInfo.dataDir,
- codePaths.toArray(new String[codePaths.size()]));
- }
- }
-
AppBindData data = new AppBindData();
data.processName = processName;
data.appInfo = appInfo;
@@ -4429,6 +4390,87 @@
}
}
+ private static void setupJitProfileSupport(LoadedApk loadedApk, File cacheDir) {
+ final ApplicationInfo appInfo = loadedApk.getApplicationInfo();
+ if (isSharingRuntime(appInfo)) {
+ // If sharing is enabled we do not have a unique application
+ // in a process and therefore cannot rely on the package
+ // name inside the runtime.
+ return;
+ }
+ final List<String> codePaths = new ArrayList<>();
+ if ((appInfo.flags & ApplicationInfo.FLAG_HAS_CODE) != 0) {
+ codePaths.add(appInfo.sourceDir);
+ }
+ if (appInfo.splitSourceDirs != null) {
+ Collections.addAll(codePaths, appInfo.splitSourceDirs);
+ }
+
+ if (codePaths.isEmpty()) {
+ // If there are no code paths there's no need to setup a profile file and register with
+ // the runtime,
+ return;
+ }
+
+ // Add an extension to the file name to better reveal its intended use.
+ // Keep in sync with BackgroundDexOptService.
+ final String profileExtension = ".prof";
+ final File profileFile = new File(cacheDir, loadedApk.mPackageName + profileExtension);
+ if (!profileFile.exists()) {
+ FileDescriptor fd = null;
+ try {
+ final int permissions = 0600; // read-write for user.
+ fd = Os.open(profileFile.getAbsolutePath(), OsConstants.O_CREAT, permissions);
+ Os.fchmod(fd, permissions);
+ Os.fchown(fd, appInfo.uid, appInfo.uid);
+ } catch (ErrnoException e) {
+ Log.w(TAG, "Unable to create jit profile file " + profileFile, e);
+ try {
+ Os.unlink(profileFile.getAbsolutePath());
+ } catch (ErrnoException unlinkErr) {
+ Log.v(TAG, "Unable to unlink jit profile file " + profileFile, unlinkErr);
+ }
+ return;
+ } finally {
+ IoUtils.closeQuietly(fd);
+ }
+ }
+
+ VMRuntime.registerAppInfo(profileFile.getAbsolutePath(), appInfo.dataDir,
+ codePaths.toArray(new String[codePaths.size()]));
+ }
+
+ /*
+ * Two possible indications that this package could be
+ * sharing its runtime with other packages:
+ *
+ * 1) the sharedUserId attribute is set in the manifest,
+ * indicating a request to share a VM with other
+ * packages with the same sharedUserId.
+ *
+ * 2) the application element of the manifest has an
+ * attribute specifying a non-default process name,
+ * indicating the desire to run in another packages VM.
+ */
+ private static boolean isSharingRuntime(ApplicationInfo appInfo) {
+ IPackageManager pm = getPackageManager();
+ android.content.pm.PackageInfo pi = null;
+ try {
+ pi = pm.getPackageInfo(appInfo.packageName, 0, UserHandle.myUserId());
+ } catch (RemoteException e) {
+ }
+ if (pi != null) {
+ boolean sharedUserIdSet = (pi.sharedUserId != null);
+ boolean processNameNotDefault = (pi.applicationInfo != null) &&
+ !appInfo.packageName.equals(pi.applicationInfo.processName);
+ boolean sharable = sharedUserIdSet || processNameNotDefault;
+ return sharable;
+ }
+ // We couldn't get information for the package. Be pessimistic and assume
+ // it's sharing the runtime.
+ return true;
+ }
+
private void updateDefaultDensity() {
if (mCurDefaultDisplayDpi != Configuration.DENSITY_DPI_UNDEFINED
&& mCurDefaultDisplayDpi != DisplayMetrics.DENSITY_DEVICE
@@ -4531,12 +4573,14 @@
Log.v(TAG, "Unable to initialize \"java.io.tmpdir\" property due to missing cache directory");
}
- // Use codeCacheDir to store generated/compiled graphics code
+ // Use codeCacheDir to store generated/compiled graphics code and jit profiling data.
final File codeCacheDir = appContext.getCodeCacheDir();
if (codeCacheDir != null) {
setupGraphicsSupport(data.info, codeCacheDir);
+ setupJitProfileSupport(data.info, codeCacheDir);
} else {
- Log.e(TAG, "Unable to setupGraphicsSupport due to missing code-cache directory");
+ Log.e(TAG, "Unable to setupGraphicsSupport and setupJitProfileSupport " +
+ "due to missing code-cache directory");
}
}
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 9341be1..3283005 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -868,6 +868,9 @@
public static final int MODE_INHERIT_EXISTING = 2;
/** {@hide} */
+ public static final int UID_UNKNOWN = -1;
+
+ /** {@hide} */
public int mode = MODE_INVALID;
/** {@hide} */
public int installFlags;
@@ -886,6 +889,8 @@
/** {@hide} */
public Uri originatingUri;
/** {@hide} */
+ public int originatingUid = UID_UNKNOWN;
+ /** {@hide} */
public Uri referrerUri;
/** {@hide} */
public String abiOverride;
@@ -915,6 +920,7 @@
appIcon = source.readParcelable(null);
appLabel = source.readString();
originatingUri = source.readParcelable(null);
+ originatingUid = source.readInt();
referrerUri = source.readParcelable(null);
abiOverride = source.readString();
volumeUuid = source.readString();
@@ -983,6 +989,15 @@
}
/**
+ * Sets the UID that initiated package installation. Used for verification purposes.
+ *
+ * @see PackageManager#EXTRA_VERIFICATION_INSTALLER_UID
+ */
+ public void setOriginatingUid(int originatingUid) {
+ this.originatingUid = originatingUid;
+ }
+
+ /**
* Optionally set the URI that referred you to install this package. Used
* for verification purposes.
*
@@ -1022,6 +1037,11 @@
}
/** {@hide} */
+ public void setInstallFlagsForcePermissionPrompt() {
+ installFlags |= PackageManager.INSTALL_FORCE_PERMISSION_PROMPT;
+ }
+
+ /** {@hide} */
public void dump(IndentingPrintWriter pw) {
pw.printPair("mode", mode);
pw.printHexPair("installFlags", installFlags);
@@ -1031,6 +1051,7 @@
pw.printPair("appIcon", (appIcon != null));
pw.printPair("appLabel", appLabel);
pw.printPair("originatingUri", originatingUri);
+ pw.printPair("originatingUid", originatingUid);
pw.printPair("referrerUri", referrerUri);
pw.printPair("abiOverride", abiOverride);
pw.printPair("volumeUuid", volumeUuid);
@@ -1053,6 +1074,7 @@
dest.writeParcelable(appIcon, flags);
dest.writeString(appLabel);
dest.writeParcelable(originatingUri, flags);
+ dest.writeInt(originatingUid);
dest.writeParcelable(referrerUri, flags);
dest.writeString(abiOverride);
dest.writeString(volumeUuid);
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index c8e9402..054dafe 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -422,6 +422,15 @@
public static final int INSTALL_FORCE_VOLUME_UUID = 0x00000200;
/**
+ * Flag parameter for {@link #installPackage} to indicate that we always want to force
+ * the prompt for permission approval. This overrides any special behaviour for internal
+ * components.
+ *
+ * @hide
+ */
+ public static final int INSTALL_FORCE_PERMISSION_PROMPT = 0x00000400;
+
+ /**
* Flag parameter for
* {@link #setComponentEnabledSetting(android.content.ComponentName, int, int)} to indicate
* that you don't want to kill the app containing the component. Be careful when you set this
diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java
index 8f45f72..852a4d9 100644
--- a/core/java/android/hardware/camera2/CameraDevice.java
+++ b/core/java/android/hardware/camera2/CameraDevice.java
@@ -168,7 +168,7 @@
* <p>The active capture session determines the set of potential output Surfaces for
* the camera device for each capture request. A given request may use all
* or only some of the outputs. Once the CameraCaptureSession is created, requests can be
- * can be submitted with {@link CameraCaptureSession#capture capture},
+ * submitted with {@link CameraCaptureSession#capture capture},
* {@link CameraCaptureSession#captureBurst captureBurst},
* {@link CameraCaptureSession#setRepeatingRequest setRepeatingRequest}, or
* {@link CameraCaptureSession#setRepeatingBurst setRepeatingBurst}.</p>
diff --git a/core/java/android/os/ServiceManager.java b/core/java/android/os/ServiceManager.java
index 13b8b66..2ba4aa4 100644
--- a/core/java/android/os/ServiceManager.java
+++ b/core/java/android/os/ServiceManager.java
@@ -112,8 +112,10 @@
/**
* Return a list of all currently running services.
+ * @return an array of all currently running services, or <code>null</code> in
+ * case of an exception
*/
- public static String[] listServices() throws RemoteException {
+ public static String[] listServices() {
try {
return getIServiceManager().listServices();
} catch (RemoteException e) {
diff --git a/core/java/android/security/net/config/ApplicationConfig.java b/core/java/android/security/net/config/ApplicationConfig.java
index 71d9d5d..4de36cd 100644
--- a/core/java/android/security/net/config/ApplicationConfig.java
+++ b/core/java/android/security/net/config/ApplicationConfig.java
@@ -120,6 +120,32 @@
return mTrustManager;
}
+ /**
+ * Returns {@code true} if cleartext traffic is permitted for this application, which is the
+ * case only if all configurations permit cleartext traffic. For finer-grained policy use
+ * {@link #isCleartextTrafficPermitted(String)}.
+ */
+ public boolean isCleartextTrafficPermitted() {
+ ensureInitialized();
+ if (mConfigs != null) {
+ for (Pair<Domain, NetworkSecurityConfig> entry : mConfigs) {
+ if (!entry.second.isCleartextTrafficPermitted()) {
+ return false;
+ }
+ }
+ }
+
+ return mDefaultConfig.isCleartextTrafficPermitted();
+ }
+
+ /**
+ * Returns {@code true} if cleartext traffic is permitted for this application when connecting
+ * to {@code hostname}.
+ */
+ public boolean isCleartextTrafficPermitted(String hostname) {
+ return getConfigForHostname(hostname).isCleartextTrafficPermitted();
+ }
+
private void ensureInitialized() {
synchronized(mLock) {
if (mInitialized) {
diff --git a/core/java/android/security/net/config/ConfigNetworkSecurityPolicy.java b/core/java/android/security/net/config/ConfigNetworkSecurityPolicy.java
new file mode 100644
index 0000000..e7d17c2
--- /dev/null
+++ b/core/java/android/security/net/config/ConfigNetworkSecurityPolicy.java
@@ -0,0 +1,40 @@
+/**
+ * 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 android.security.net.config;
+
+/**
+ * {@link libcore.net.NetworkSecurityPolicy} based on an {@link ApplicationConfig}.
+ *
+ * @hide
+ */
+public class ConfigNetworkSecurityPolicy extends libcore.net.NetworkSecurityPolicy {
+ private final ApplicationConfig mConfig;
+
+ public ConfigNetworkSecurityPolicy(ApplicationConfig config) {
+ mConfig = config;
+ }
+
+ @Override
+ public boolean isCleartextTrafficPermitted() {
+ return mConfig.isCleartextTrafficPermitted();
+ }
+
+ @Override
+ public boolean isCleartextTrafficPermitted(String hostname) {
+ return mConfig.isCleartextTrafficPermitted(hostname);
+ }
+}
diff --git a/core/java/android/security/net/config/NetworkSecurityConfigProvider.java b/core/java/android/security/net/config/NetworkSecurityConfigProvider.java
index 5ebc7ac..0f66873 100644
--- a/core/java/android/security/net/config/NetworkSecurityConfigProvider.java
+++ b/core/java/android/security/net/config/NetworkSecurityConfigProvider.java
@@ -40,5 +40,6 @@
throw new RuntimeException("Failed to install provider as highest priority provider."
+ " Provider was installed at position " + pos);
}
+ libcore.net.NetworkSecurityPolicy.setInstance(new ConfigNetworkSecurityPolicy(config));
}
}
diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java
index 5f5943f..87bee44 100644
--- a/core/java/android/widget/DatePicker.java
+++ b/core/java/android/widget/DatePicker.java
@@ -999,8 +999,8 @@
private boolean isNewDate(int year, int month, int dayOfMonth) {
return (mCurrentDate.get(Calendar.YEAR) != year
- || mCurrentDate.get(Calendar.MONTH) != dayOfMonth
- || mCurrentDate.get(Calendar.DAY_OF_MONTH) != month);
+ || mCurrentDate.get(Calendar.MONTH) != month
+ || mCurrentDate.get(Calendar.DAY_OF_MONTH) != dayOfMonth);
}
private void setDate(int year, int month, int dayOfMonth) {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
index 3337714..07ec843 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java
@@ -511,7 +511,7 @@
GregorianCalendar weekRange = new GregorianCalendar();
final long now = weekRange.getTimeInMillis();
setToMidnight(weekRange);
- weekRange.roll(Calendar.DATE, 6);
+ weekRange.add(Calendar.DATE, 6);
final long nextAlarmMs = mController.getNextAlarm();
if (nextAlarmMs > 0) {
GregorianCalendar nextAlarm = new GregorianCalendar();
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 0366fff..cf09b84 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -140,6 +140,7 @@
private static final String ATTR_APP_ICON = "appIcon";
private static final String ATTR_APP_LABEL = "appLabel";
private static final String ATTR_ORIGINATING_URI = "originatingUri";
+ private static final String ATTR_ORIGINATING_UID = "originatingUid";
private static final String ATTR_REFERRER_URI = "referrerUri";
private static final String ATTR_ABI_OVERRIDE = "abiOverride";
private static final String ATTR_VOLUME_UUID = "volumeUuid";
@@ -405,6 +406,8 @@
params.appIcon = readBitmapAttribute(in, ATTR_APP_ICON);
params.appLabel = readStringAttribute(in, ATTR_APP_LABEL);
params.originatingUri = readUriAttribute(in, ATTR_ORIGINATING_URI);
+ params.originatingUid =
+ readIntAttribute(in, ATTR_ORIGINATING_UID, SessionParams.UID_UNKNOWN);
params.referrerUri = readUriAttribute(in, ATTR_REFERRER_URI);
params.abiOverride = readStringAttribute(in, ATTR_ABI_OVERRIDE);
params.volumeUuid = readStringAttribute(in, ATTR_VOLUME_UUID);
@@ -477,6 +480,7 @@
writeStringAttribute(out, ATTR_APP_PACKAGE_NAME, params.appPackageName);
writeStringAttribute(out, ATTR_APP_LABEL, params.appLabel);
writeUriAttribute(out, ATTR_ORIGINATING_URI, params.originatingUri);
+ writeIntAttribute(out, ATTR_ORIGINATING_UID, params.originatingUid);
writeUriAttribute(out, ATTR_REFERRER_URI, params.referrerUri);
writeStringAttribute(out, ATTR_ABI_OVERRIDE, params.abiOverride);
writeStringAttribute(out, ATTR_VOLUME_UUID, params.volumeUuid);
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 4a473fd..a441cb2 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -222,11 +222,17 @@
// waived if the installer is the device owner.
DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(
Context.DEVICE_POLICY_SERVICE);
+ final boolean isPermissionGranted =
+ (mPm.checkUidPermission(android.Manifest.permission.INSTALL_PACKAGES, installerUid)
+ == PackageManager.PERMISSION_GRANTED);
+ final boolean isInstallerRoot = (installerUid == Process.ROOT_UID);
+ final boolean forcePermissionPrompt =
+ (params.installFlags & PackageManager.INSTALL_FORCE_PERMISSION_PROMPT) != 0;
mIsInstallerDeviceOwner = (dpm != null) && dpm.isDeviceOwnerApp(installerPackageName);
- if ((mPm.checkUidPermission(android.Manifest.permission.INSTALL_PACKAGES, installerUid)
- == PackageManager.PERMISSION_GRANTED)
- || (installerUid == Process.ROOT_UID)
- || mIsInstallerDeviceOwner) {
+ if ((isPermissionGranted
+ || isInstallerRoot
+ || mIsInstallerDeviceOwner)
+ && !forcePermissionPrompt) {
mPermissionsAccepted = true;
} else {
mPermissionsAccepted = false;
@@ -955,7 +961,9 @@
if (accepted) {
// Mark and kick off another install pass
- mPermissionsAccepted = true;
+ synchronized (mLock) {
+ mPermissionsAccepted = true;
+ }
mHandler.obtainMessage(MSG_COMMIT).sendToTarget();
} else {
destroyInternal();
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index ae73fa4..9a49178 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -9558,7 +9558,7 @@
IPackageInstallObserver2 observer, PackageInstaller.SessionParams params,
String installerPackageName, int installerUid, UserHandle user) {
final VerificationParams verifParams = new VerificationParams(null, params.originatingUri,
- params.referrerUri, installerUid, null);
+ params.referrerUri, params.originatingUid, null);
verifParams.setInstallerUid(installerUid);
final OriginInfo origin;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 8a73815..aa74b42 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -4312,7 +4312,7 @@
AppWindowToken ttoken = findAppWindowToken(transferFrom);
if (ttoken != null) {
WindowState startingWindow = ttoken.startingWindow;
- if (startingWindow != null) {
+ if (startingWindow != null && ttoken.startingView != null) {
// In this case, the starting icon has already been displayed, so start
// letting windows get shown immediately without any more transitions.
mSkipAppTransitionAnimation = true;
diff --git a/tests/RenderScriptTests/Android.mk b/tests/RenderScriptTests/Android.mk
deleted file mode 100644
index 5053e7d..0000000
--- a/tests/RenderScriptTests/Android.mk
+++ /dev/null
@@ -1 +0,0 @@
-include $(call all-subdir-makefiles)
diff --git a/tests/RenderScriptTests/FBOTest/Android.mk b/tests/RenderScriptTests/FBOTest/Android.mk
deleted file mode 100644
index 7a578d9..0000000
--- a/tests/RenderScriptTests/FBOTest/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_PACKAGE_NAME := FBOTest
-
-LOCAL_SDK_VERSION := 17
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/FBOTest/AndroidManifest.xml b/tests/RenderScriptTests/FBOTest/AndroidManifest.xml
deleted file mode 100644
index 788e856..0000000
--- a/tests/RenderScriptTests/FBOTest/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.fbotest">
- <application android:label="_FBOTest">
- <activity android:name="FBOTest"
- android:label="FBO Base Test"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="FBOSync"
- android:label="FBO Sync Test"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/tests/RenderScriptTests/FBOTest/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/FBOTest/res/drawable-nodpi/robot.png
deleted file mode 100644
index f7353fd..0000000
--- a/tests/RenderScriptTests/FBOTest/res/drawable-nodpi/robot.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/FBOTest/res/raw/robot.a3d b/tests/RenderScriptTests/FBOTest/res/raw/robot.a3d
deleted file mode 100644
index f48895c..0000000
--- a/tests/RenderScriptTests/FBOTest/res/raw/robot.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSync.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSync.java
deleted file mode 100644
index d30ad7e..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSync.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.fbotest;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.MenuInflater;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-import android.net.Uri;
-
-import java.lang.Runtime;
-
-public class FBOSync extends Activity {
-
- private FBOSyncView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new FBOSyncView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onPause();
- mView.pause();
- }
-}
-
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncRS.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncRS.java
deleted file mode 100644
index 57a117c..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncRS.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.fbotest;
-
-import java.io.Writer;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.Element.DataType;
-import android.renderscript.Element.DataKind;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.renderscript.Type.Builder;
-import android.util.Log;
-
-
-public class FBOSyncRS {
-
- public FBOSyncRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initRS();
- }
-
- public void surfaceChanged() {
- mRS.getWidth();
- mRS.getHeight();
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private Sampler mSampler;
- private ProgramStore mPSBackground;
- private ProgramFragment mPFBackground;
- private ProgramVertex mPVBackground;
- private ProgramVertexFixedFunction.Constants mPVA;
-
- private Allocation mGridImage;
- private Allocation mOffscreen;
- private Allocation mOffscreenDepth;
- private Allocation mAllocPV;
- private Allocation mReadBackTest;
-
- private Font mItalic;
- private Allocation mTextAlloc;
-
- private ScriptField_MeshInfo mMeshes;
- private ScriptC_fbosync mScript;
-
-
- public void onActionDown(float x, float y) {
- mScript.invoke_onActionDown(x, y);
- }
-
- public void onActionScale(float scale) {
- mScript.invoke_onActionScale(scale);
- }
-
- public void onActionMove(float x, float y) {
- mScript.invoke_onActionMove(x, y);
- }
-
- private void initPFS() {
- ProgramStore.Builder b = new ProgramStore.Builder(mRS);
-
- b.setDepthFunc(ProgramStore.DepthFunc.LESS);
- b.setDitherEnabled(false);
- b.setDepthMaskEnabled(true);
- mPSBackground = b.create();
-
- mScript.set_gPFSBackground(mPSBackground);
- }
-
- private void initPF() {
- Sampler.Builder bs = new Sampler.Builder(mRS);
- bs.setMinification(Sampler.Value.LINEAR);
- bs.setMagnification(Sampler.Value.LINEAR);
- bs.setWrapS(Sampler.Value.CLAMP);
- bs.setWrapT(Sampler.Value.CLAMP);
- mSampler = bs.create();
-
- ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS);
- b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mPFBackground = b.create();
- mPFBackground.bindSampler(mSampler, 0);
-
- mScript.set_gPFBackground(mPFBackground);
- }
-
- private void initPV() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mPVBackground = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA);
-
- mScript.set_gPVBackground(mPVBackground);
- }
-
- private void loadImage() {
- mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- mScript.set_gTGrid(mGridImage);
- }
-
- private void initTextAllocation(String fileName) {
- String allocString = "Displaying file: " + fileName;
- mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT);
- mScript.set_gTextAlloc(mTextAlloc);
- }
-
- private void initMeshes(FileA3D model) {
- int numEntries = model.getIndexEntryCount();
- int numMeshes = 0;
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- numMeshes ++;
- }
- }
-
- if (numMeshes > 0) {
- mMeshes = new ScriptField_MeshInfo(mRS, numMeshes);
-
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- Mesh mesh = entry.getMesh();
- mMeshes.set_mMesh(i, mesh, false);
- mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false);
- }
- }
- mMeshes.copyAll();
- } else {
- throw new RSRuntimeException("No valid meshes in file");
- }
-
- mScript.bind_gMeshes(mMeshes);
- mScript.invoke_updateMeshInfo();
- }
-
- public void loadA3DFile(String path) {
- FileA3D model = FileA3D.createFromFile(mRS, path);
- initMeshes(model);
- initTextAllocation(path);
- }
-
- private void initRS() {
-
- mScript = new ScriptC_fbosync(mRS, mRes, R.raw.fbosync);
-
- initPFS();
- initPF();
- initPV();
-
- loadImage();
-
- Type.Builder b = new Type.Builder(mRS, Element.RGBA_8888(mRS));
- b.setX(512).setY(512);
- mOffscreen = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_SCRIPT |
- Allocation.USAGE_GRAPHICS_TEXTURE |
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gOffscreen(mOffscreen);
-
- mReadBackTest = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_SCRIPT |
- Allocation.USAGE_GRAPHICS_TEXTURE);
- mScript.set_gReadBackTest(mReadBackTest);
-
- b = new Type.Builder(mRS,
- Element.createPixel(mRS, DataType.UNSIGNED_16,
- DataKind.PIXEL_DEPTH));
- b.setX(512).setY(512);
- mOffscreenDepth = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gOffscreenDepth(mOffscreenDepth);
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot);
- initMeshes(model);
-
- mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8);
- mScript.set_gItalic(mItalic);
-
- initTextAllocation("R.raw.robot");
-
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncView.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncView.java
deleted file mode 100644
index 6a85628..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOSyncView.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.fbotest;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-import android.view.ScaleGestureDetector;
-import android.util.Log;
-
-public class FBOSyncView extends RSSurfaceView {
-
- private RenderScriptGL mRS;
- private FBOSyncRS mRender;
-
- private ScaleGestureDetector mScaleDetector;
-
- private static final int INVALID_POINTER_ID = -1;
- private int mActivePointerId = INVALID_POINTER_ID;
-
- public FBOSyncView(Context context) {
- super(context);
- ensureRenderScript();
- mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
- }
-
- private void ensureRenderScript() {
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRender = new FBOSyncRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- mRender.surfaceChanged();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- public void loadA3DFile(String path) {
- mRender.loadA3DFile(path);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- mScaleDetector.onTouchEvent(ev);
-
- boolean ret = false;
- float x = ev.getX();
- float y = ev.getY();
-
- final int action = ev.getAction();
-
- switch (action & MotionEvent.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN: {
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(0);
- ret = true;
- break;
- }
- case MotionEvent.ACTION_MOVE: {
- if (!mScaleDetector.isInProgress()) {
- mRender.onActionMove(x, y);
- }
- mRender.onActionDown(x, y);
- ret = true;
- break;
- }
-
- case MotionEvent.ACTION_UP: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_CANCEL: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_POINTER_UP: {
- final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
- >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
- final int pointerId = ev.getPointerId(pointerIndex);
- if (pointerId == mActivePointerId) {
- // This was our active pointer going up. Choose a new
- // active pointer and adjust accordingly.
- final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- x = ev.getX(newPointerIndex);
- y = ev.getY(newPointerIndex);
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(newPointerIndex);
- }
- break;
- }
- }
-
- return ret;
- }
-
- private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mRender.onActionScale(detector.getScaleFactor());
- return true;
- }
- }
-}
-
-
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTest.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTest.java
deleted file mode 100644
index 72aa3ea..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2008 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.fbotest;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.MenuInflater;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-import android.net.Uri;
-
-import java.lang.Runtime;
-
-public class FBOTest extends Activity {
-
- private FBOTestView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new FBOTestView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onPause();
- mView.pause();
- }
-}
-
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestRS.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestRS.java
deleted file mode 100644
index 9e30c4b5..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestRS.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.fbotest;
-
-import java.io.Writer;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.Element.DataType;
-import android.renderscript.Element.DataKind;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.renderscript.Type.Builder;
-import android.util.Log;
-
-
-public class FBOTestRS {
-
- public FBOTestRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initRS();
- }
-
- public void surfaceChanged() {
- mRS.getWidth();
- mRS.getHeight();
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private Sampler mSampler;
- private ProgramStore mPSBackground;
- private ProgramFragment mPFBackground;
- private ProgramVertex mPVBackground;
- private ProgramVertexFixedFunction.Constants mPVA;
-
- private Allocation mGridImage;
- private Allocation mOffscreen;
- private Allocation mOffscreenDepth;
- private Allocation mAllocPV;
-
- private Font mItalic;
- private Allocation mTextAlloc;
-
- private ScriptField_MeshInfo mMeshes;
- private ScriptC_fbotest mScript;
-
-
- public void onActionDown(float x, float y) {
- mScript.invoke_onActionDown(x, y);
- }
-
- public void onActionScale(float scale) {
- mScript.invoke_onActionScale(scale);
- }
-
- public void onActionMove(float x, float y) {
- mScript.invoke_onActionMove(x, y);
- }
-
- private void initPFS() {
- ProgramStore.Builder b = new ProgramStore.Builder(mRS);
-
- b.setDepthFunc(ProgramStore.DepthFunc.LESS);
- b.setDitherEnabled(false);
- b.setDepthMaskEnabled(true);
- mPSBackground = b.create();
-
- mScript.set_gPFSBackground(mPSBackground);
- }
-
- private void initPF() {
- Sampler.Builder bs = new Sampler.Builder(mRS);
- bs.setMinification(Sampler.Value.LINEAR);
- bs.setMagnification(Sampler.Value.LINEAR);
- bs.setWrapS(Sampler.Value.CLAMP);
- bs.setWrapT(Sampler.Value.CLAMP);
- mSampler = bs.create();
-
- ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS);
- b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mPFBackground = b.create();
- mPFBackground.bindSampler(mSampler, 0);
-
- mScript.set_gPFBackground(mPFBackground);
- }
-
- private void initPV() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mPVBackground = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA);
-
- mScript.set_gPVBackground(mPVBackground);
- }
-
- private void loadImage() {
- mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- mScript.set_gTGrid(mGridImage);
- }
-
- private void initTextAllocation(String fileName) {
- String allocString = "Displaying file: " + fileName;
- mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT);
- mScript.set_gTextAlloc(mTextAlloc);
- }
-
- private void initMeshes(FileA3D model) {
- int numEntries = model.getIndexEntryCount();
- int numMeshes = 0;
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- numMeshes ++;
- }
- }
-
- if (numMeshes > 0) {
- mMeshes = new ScriptField_MeshInfo(mRS, numMeshes);
-
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- Mesh mesh = entry.getMesh();
- mMeshes.set_mMesh(i, mesh, false);
- mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false);
- }
- }
- mMeshes.copyAll();
- } else {
- throw new RSRuntimeException("No valid meshes in file");
- }
-
- mScript.bind_gMeshes(mMeshes);
- mScript.invoke_updateMeshInfo();
- }
-
- public void loadA3DFile(String path) {
- FileA3D model = FileA3D.createFromFile(mRS, path);
- initMeshes(model);
- initTextAllocation(path);
- }
-
- private void initRS() {
-
- mScript = new ScriptC_fbotest(mRS, mRes, R.raw.fbotest);
-
- initPFS();
- initPF();
- initPV();
-
- loadImage();
-
- Type.Builder b = new Type.Builder(mRS, Element.RGBA_8888(mRS));
- b.setX(512).setY(512);
- mOffscreen = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_GRAPHICS_TEXTURE |
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gOffscreen(mOffscreen);
-
- b = new Type.Builder(mRS,
- Element.createPixel(mRS, DataType.UNSIGNED_16,
- DataKind.PIXEL_DEPTH));
- b.setX(512).setY(512);
- mOffscreenDepth = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gOffscreenDepth(mOffscreenDepth);
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot);
- initMeshes(model);
-
- mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8);
- mScript.set_gItalic(mItalic);
-
- initTextAllocation("R.raw.robot");
-
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestView.java b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestView.java
deleted file mode 100644
index c9598ee..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/FBOTestView.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.fbotest;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-import android.view.ScaleGestureDetector;
-import android.util.Log;
-
-public class FBOTestView extends RSSurfaceView {
-
- private RenderScriptGL mRS;
- private FBOTestRS mRender;
-
- private ScaleGestureDetector mScaleDetector;
-
- private static final int INVALID_POINTER_ID = -1;
- private int mActivePointerId = INVALID_POINTER_ID;
-
- public FBOTestView(Context context) {
- super(context);
- ensureRenderScript();
- mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
- }
-
- private void ensureRenderScript() {
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRender = new FBOTestRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- mRender.surfaceChanged();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- public void loadA3DFile(String path) {
- mRender.loadA3DFile(path);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- mScaleDetector.onTouchEvent(ev);
-
- boolean ret = false;
- float x = ev.getX();
- float y = ev.getY();
-
- final int action = ev.getAction();
-
- switch (action & MotionEvent.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN: {
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(0);
- ret = true;
- break;
- }
- case MotionEvent.ACTION_MOVE: {
- if (!mScaleDetector.isInProgress()) {
- mRender.onActionMove(x, y);
- }
- mRender.onActionDown(x, y);
- ret = true;
- break;
- }
-
- case MotionEvent.ACTION_UP: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_CANCEL: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_POINTER_UP: {
- final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
- >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
- final int pointerId = ev.getPointerId(pointerIndex);
- if (pointerId == mActivePointerId) {
- // This was our active pointer going up. Choose a new
- // active pointer and adjust accordingly.
- final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- x = ev.getX(newPointerIndex);
- y = ev.getY(newPointerIndex);
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(newPointerIndex);
- }
- break;
- }
- }
-
- return ret;
- }
-
- private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mRender.onActionScale(detector.getScaleFactor());
- return true;
- }
- }
-}
-
-
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs
deleted file mode 100644
index 0c177ef..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbosync.rs
+++ /dev/null
@@ -1,230 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.fbotest)
-
-#include "rs_graphics.rsh"
-
-rs_program_vertex gPVBackground;
-rs_program_fragment gPFBackground;
-
-rs_allocation gTGrid;
-
-rs_program_store gPFSBackground;
-
-rs_font gItalic;
-rs_allocation gTextAlloc;
-
-rs_allocation gOffscreen;
-rs_allocation gOffscreenDepth;
-rs_allocation gReadBackTest;
-
-typedef struct MeshInfo {
- rs_mesh mMesh;
- int mNumIndexSets;
- float3 bBoxMin;
- float3 bBoxMax;
-} MeshInfo_t;
-
-MeshInfo_t *gMeshes;
-
-static float3 gLookAt;
-
-static float gRotateX;
-static float gRotateY;
-static float gZoom;
-
-static float gLastX;
-static float gLastY;
-
-void onActionDown(float x, float y) {
- gLastX = x;
- gLastY = y;
-}
-
-void onActionScale(float scale) {
-
- gZoom *= 1.0f / scale;
- gZoom = max(0.1f, min(gZoom, 500.0f));
-}
-
-void onActionMove(float x, float y) {
- float dx = gLastX - x;
- float dy = gLastY - y;
-
- if (fabs(dy) <= 2.0f) {
- dy = 0.0f;
- }
- if (fabs(dx) <= 2.0f) {
- dx = 0.0f;
- }
-
- gRotateY -= dx;
- if (gRotateY > 360) {
- gRotateY -= 360;
- }
- if (gRotateY < 0) {
- gRotateY += 360;
- }
-
- gRotateX -= dy;
- gRotateX = min(gRotateX, 80.0f);
- gRotateX = max(gRotateX, -80.0f);
-
- gLastX = x;
- gLastY = y;
-}
-
-void init() {
- gRotateX = 0.0f;
- gRotateY = 0.0f;
- gZoom = 50.0f;
- gLookAt = 0.0f;
-}
-
-void updateMeshInfo() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- float minX, minY, minZ, maxX, maxY, maxZ;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgMeshComputeBoundingBox(info->mMesh,
- &minX, &minY, &minZ,
- &maxX, &maxY, &maxZ);
- info->bBoxMin = (float3){minX, minY, minZ};
- info->bBoxMax = (float3){maxX, maxY, maxZ};
- gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f;
- }
- gLookAt = gLookAt / (float)size;
-}
-
-static void renderAllMeshes() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgDrawMesh(info->mMesh);
- }
-}
-
-static void drawDescription() {
- uint height = rsgGetHeight();
- int left = 0, right = 0, top = 0, bottom = 0;
-
- rsgBindFont(gItalic);
-
- rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom);
- rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom);
-}
-
-static void renderOffscreen(bool useDepth) {
-
- rsgBindColorTarget(gOffscreen, 0);
- if (useDepth) {
- rsgBindDepthTarget(gOffscreenDepth);
- rsgClearDepth(1.0f);
- } else {
- rsgClearDepthTarget();
- }
- rsgClearColor(0.8f, 0.0f, 0.0f, 1.0f);
-
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsAllocationGetDimX(gOffscreen) / (float)rsAllocationGetDimY(gOffscreen);
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gTGrid);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- // Position our models on the screen
- rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom);
- rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- renderAllMeshes();
-
- // Render into the frambuffer
- rsgClearAllRenderTargets();
-}
-
-static void drawOffscreenResult(int posX, int posY, rs_allocation texture) {
- // display the result
- rs_matrix4x4 proj, matrix;
- rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
- rsgBindTexture(gPFBackground, 0, texture);
- float startX = posX, startY = posY;
- float width = 256, height = 256;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 1,
- startX, startY + height, 0, 0, 0,
- startX + width, startY + height, 0, 1, 0,
- startX + width, startY, 0, 1, 1);
-}
-
-int root(void) {
-
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
-
- renderOffscreen(true);
- drawOffscreenResult(0, 0, gOffscreen);
-
-
- uint32_t w = rsAllocationGetDimX(gOffscreen);
- uint32_t h = rsAllocationGetDimY(gOffscreen);
-
- rsgAllocationSyncAll(gOffscreen, RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET);
-
- rsAllocationCopy2DRange(gReadBackTest, 0, 0, 0,
- RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, w, h,
- gOffscreen, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
-
- rsgAllocationSyncAll(gReadBackTest);
- drawOffscreenResult(0, 300, gReadBackTest);
-
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gTGrid);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- // Position our models on the screen
- rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom);
- rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- renderAllMeshes();
-
- drawDescription();
-
- return 0;
-}
diff --git a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs b/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs
deleted file mode 100644
index 13a3c85..0000000
--- a/tests/RenderScriptTests/FBOTest/src/com/android/fbotest/fbotest.rs
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.fbotest)
-
-#include "rs_graphics.rsh"
-
-rs_program_vertex gPVBackground;
-rs_program_fragment gPFBackground;
-
-rs_allocation gTGrid;
-
-rs_program_store gPFSBackground;
-
-rs_font gItalic;
-rs_allocation gTextAlloc;
-
-rs_allocation gOffscreen;
-rs_allocation gOffscreenDepth;
-
-typedef struct MeshInfo {
- rs_mesh mMesh;
- int mNumIndexSets;
- float3 bBoxMin;
- float3 bBoxMax;
-} MeshInfo_t;
-
-MeshInfo_t *gMeshes;
-
-static float3 gLookAt;
-
-static float gRotateX;
-static float gRotateY;
-static float gZoom;
-
-static float gLastX;
-static float gLastY;
-
-void onActionDown(float x, float y) {
- gLastX = x;
- gLastY = y;
-}
-
-void onActionScale(float scale) {
-
- gZoom *= 1.0f / scale;
- gZoom = max(0.1f, min(gZoom, 500.0f));
-}
-
-void onActionMove(float x, float y) {
- float dx = gLastX - x;
- float dy = gLastY - y;
-
- if (fabs(dy) <= 2.0f) {
- dy = 0.0f;
- }
- if (fabs(dx) <= 2.0f) {
- dx = 0.0f;
- }
-
- gRotateY -= dx;
- if (gRotateY > 360) {
- gRotateY -= 360;
- }
- if (gRotateY < 0) {
- gRotateY += 360;
- }
-
- gRotateX -= dy;
- gRotateX = min(gRotateX, 80.0f);
- gRotateX = max(gRotateX, -80.0f);
-
- gLastX = x;
- gLastY = y;
-}
-
-void init() {
- gRotateX = 0.0f;
- gRotateY = 0.0f;
- gZoom = 50.0f;
- gLookAt = 0.0f;
-}
-
-void updateMeshInfo() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- float minX, minY, minZ, maxX, maxY, maxZ;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgMeshComputeBoundingBox(info->mMesh,
- &minX, &minY, &minZ,
- &maxX, &maxY, &maxZ);
- info->bBoxMin = (float3){minX, minY, minZ};
- info->bBoxMax = (float3){maxX, maxY, maxZ};
- gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f;
- }
- gLookAt = gLookAt / (float)size;
-}
-
-static void renderAllMeshes() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgDrawMesh(info->mMesh);
- }
-}
-
-static void drawDescription() {
- uint height = rsgGetHeight();
- int left = 0, right = 0, top = 0, bottom = 0;
-
- rsgBindFont(gItalic);
-
- rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom);
- rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom);
-}
-
-static void renderOffscreen(bool useDepth) {
-
- rsgBindColorTarget(gOffscreen, 0);
- if (useDepth) {
- rsgBindDepthTarget(gOffscreenDepth);
- rsgClearDepth(1.0f);
- } else {
- rsgClearDepthTarget();
- }
- rsgClearColor(0.8f, 0.8f, 0.8f, 1.0f);
-
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsAllocationGetDimX(gOffscreen) / (float)rsAllocationGetDimY(gOffscreen);
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gTGrid);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- // Position our models on the screen
- rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom);
- rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- renderAllMeshes();
-
- // Render into the frambuffer
- rsgClearAllRenderTargets();
-}
-
-static void drawOffscreenResult(int posX, int posY) {
- // display the result
- rs_matrix4x4 proj, matrix;
- rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
- rsgBindTexture(gPFBackground, 0, gOffscreen);
- float startX = posX, startY = posY;
- float width = 256, height = 256;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 1,
- startX, startY + height, 0, 0, 0,
- startX + width, startY + height, 0, 1, 0,
- startX + width, startY, 0, 1, 1);
-}
-
-int root(void) {
-
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
-
- renderOffscreen(true);
- drawOffscreenResult(0, 0);
-
- renderOffscreen(false);
- drawOffscreenResult(0, 256);
-
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gTGrid);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- // Position our models on the screen
- rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom);
- rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- renderAllMeshes();
-
- drawDescription();
-
- return 0;
-}
diff --git a/tests/RenderScriptTests/HelloWorld/Android.mk b/tests/RenderScriptTests/HelloWorld/Android.mk
deleted file mode 100644
index c1c08ec..0000000
--- a/tests/RenderScriptTests/HelloWorld/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_PACKAGE_NAME := RsHelloWorld
-
-LOCAL_SDK_VERSION := 17
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/HelloWorld/AndroidManifest.xml b/tests/RenderScriptTests/HelloWorld/AndroidManifest.xml
deleted file mode 100644
index 1d37dc9..0000000
--- a/tests/RenderScriptTests/HelloWorld/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.android.rs.helloworld">
- <uses-sdk android:minSdkVersion="11" />
- <application android:label="RsHelloWorld"
- android:icon="@drawable/test_pattern">
- <activity android:name="HelloWorld"
- android:label="RsHelloWorld"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/tests/RenderScriptTests/HelloWorld/_index.html b/tests/RenderScriptTests/HelloWorld/_index.html
deleted file mode 100644
index 4cab738..0000000
--- a/tests/RenderScriptTests/HelloWorld/_index.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A Renderscript graphics application that draws the text "Hello, World!" where the user touches.</p>
\ No newline at end of file
diff --git a/tests/RenderScriptTests/HelloWorld/res/drawable/test_pattern.png b/tests/RenderScriptTests/HelloWorld/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/tests/RenderScriptTests/HelloWorld/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java
deleted file mode 100644
index 9b1697b..0000000
--- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.helloworld;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-// Renderscript activity
-public class HelloWorld extends Activity {
-
- // Custom view to use with RenderScript
- private HelloWorldView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our view and set it as the content of our Activity
- mView = new HelloWorldView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally an app should implement onResume() and onPause()
- // to take appropriate action when the activity loses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally an app should implement onResume() and onPause()
- // to take appropriate action when the activity loses focus
- super.onPause();
- mView.pause();
- }
-
-}
-
diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java
deleted file mode 100644
index 4316411..0000000
--- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.helloworld;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-
-// This is the renderer for the HelloWorldView
-public class HelloWorldRS {
- private Resources mRes;
- private RenderScriptGL mRS;
-
- private ScriptC_helloworld mScript;
-
- public HelloWorldRS() {
- }
-
- // This provides us with the renderscript context and resources that
- // allow us to create the script that does rendering
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initRS();
- }
-
- public void onActionDown(int x, int y) {
- mScript.set_gTouchX(x);
- mScript.set_gTouchY(y);
- }
-
- private void initRS() {
- mScript = new ScriptC_helloworld(mRS, mRes, R.raw.helloworld);
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java
deleted file mode 100644
index 557ebc5..0000000
--- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.helloworld;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-
-public class HelloWorldView extends RSSurfaceView {
- // Renderscipt context
- private RenderScriptGL mRS;
- // Script that does the rendering
- private HelloWorldRS mRender;
-
- public HelloWorldView(Context context) {
- super(context);
- ensureRenderScript();
- }
-
- private void ensureRenderScript() {
- if (mRS == null) {
- // Initialize renderscript with desired surface characteristics.
- // In this case, just use the defaults
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- mRS = createRenderScriptGL(sc);
- // Create an instance of the script that does the rendering
- mRender = new HelloWorldRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- // Handle the system event and clean up
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- // Pass touch events from the system to the rendering script
- if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- mRender.onActionDown((int)ev.getX(), (int)ev.getY());
- return true;
- }
-
- return false;
- }
-}
-
-
diff --git a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs b/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs
deleted file mode 100644
index bcf624e..0000000
--- a/tests/RenderScriptTests/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-// Tell which java package name the reflected files should belong to
-#pragma rs java_package_name(com.example.android.rs.helloworld)
-
-// Built-in header with graphics API's
-#include "rs_graphics.rsh"
-
-// gTouchX and gTouchY are variables that will be reflected for use
-// by the java API. We can use them to notify the script of touch events.
-int gTouchX;
-int gTouchY;
-
-// This is invoked automatically when the script is created
-void init() {
- gTouchX = 50.0f;
- gTouchY = 50.0f;
-}
-
-int root(void) {
-
- // Clear the background color
- rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
- // Tell the runtime what the font color should be
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- // Introuduce ourselves to the world by drawing a greeting
- // at the position user touched on the screen
- rsgDrawText("Hello World!", gTouchX, gTouchY);
-
- // Return value tells RS roughly how often to redraw
- // in this case 20 ms
- return 20;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/Android.mk b/tests/RenderScriptTests/MiscSamples/Android.mk
deleted file mode 100644
index ee3567b..0000000
--- a/tests/RenderScriptTests/MiscSamples/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_PACKAGE_NAME := RsMiscSamples
-
-LOCAL_SDK_VERSION := 17
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/MiscSamples/AndroidManifest.xml b/tests/RenderScriptTests/MiscSamples/AndroidManifest.xml
deleted file mode 100644
index 08a3976..0000000
--- a/tests/RenderScriptTests/MiscSamples/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.android.rs.miscsamples">
- <uses-sdk android:minSdkVersion="11" />
- <application android:label="RsMiscSamples"
- android:icon="@drawable/test_pattern">
- <activity android:name="RsList"
- android:label="RsList"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity android:name="RsRenderStates"
- android:label="RsStates"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/tests/RenderScriptTests/MiscSamples/_index.html b/tests/RenderScriptTests/MiscSamples/_index.html
deleted file mode 100644
index 5872431..0000000
--- a/tests/RenderScriptTests/MiscSamples/_index.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A set of samples that demonstrate how to use various features of the Renderscript APIs.</p>
\ No newline at end of file
diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/checker.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/checker.png
deleted file mode 100644
index b631e1e..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/checker.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/cubemap_test.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/cubemap_test.png
deleted file mode 100644
index baf35d0..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/cubemap_test.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/data.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/data.png
deleted file mode 100644
index 8e34714..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/data.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/leaf.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/leaf.png
deleted file mode 100644
index 3cd3775..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/leaf.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/test_pattern.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/torusmap.png b/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/torusmap.png
deleted file mode 100644
index 1e08f3b..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/drawable-nodpi/torusmap.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/multitexf.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/multitexf.glsl
deleted file mode 100644
index e492a47..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/multitexf.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- vec2 t0 = varTex0.xy;
- lowp vec4 col0 = texture2D(UNI_Tex0, t0).rgba;
- lowp vec4 col1 = texture2D(UNI_Tex1, t0*4.0).rgba;
- lowp vec4 col2 = texture2D(UNI_Tex2, t0).rgba;
- col0.xyz = col0.xyz*col1.xyz*1.5;
- col0.xyz = mix(col0.xyz, col2.xyz, col2.w);
- col0.w = 0.5;
- gl_FragColor = col0;
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shader2f.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shader2f.glsl
deleted file mode 100644
index 5fc05f1..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shader2f.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(-varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = normalize(UNI_light0_Posision.xyz - varWorldPos);
- vec3 light0R = -reflect(light0Vec, worldNorm);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse;
- float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
- float light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular;
-
- vec3 light1Vec = normalize(UNI_light1_Posision.xyz - varWorldPos);
- vec3 light1R = reflect(light1Vec, worldNorm);
- float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse;
- float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
- float light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular;
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
- col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz);
- col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz;
- col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shader2movev.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shader2movev.glsl
deleted file mode 100644
index a2c807e..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shader2movev.glsl
+++ /dev/null
@@ -1,21 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 objPos = ATTRIB_position;
- vec3 oldPos = objPos.xyz;
- objPos.xyz += 0.1*sin(objPos.xyz*2.0 + UNI_time);
- objPos.xyz += 0.05*sin(objPos.xyz*4.0 + UNI_time*0.5);
- objPos.xyz += 0.02*sin(objPos.xyz*7.0 + UNI_time*0.75);
- vec4 worldPos = UNI_model * objPos;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * (ATTRIB_normal + oldPos - objPos.xyz);
-
- varWorldPos = worldPos.xyz;
- varWorldNormal = worldNorm;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shader2v.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shader2v.glsl
deleted file mode 100644
index e6885a3..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shader2v.glsl
+++ /dev/null
@@ -1,17 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 objPos = ATTRIB_position;
- vec4 worldPos = UNI_model * objPos;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * ATTRIB_normal;
-
- varWorldPos = worldPos.xyz;
- varWorldNormal = worldNorm;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayf.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayf.glsl
deleted file mode 100644
index 238ecad..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayf.glsl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-varying lowp float light0_Diffuse;
-varying lowp float light0_Specular;
-varying lowp float light1_Diffuse;
-varying lowp float light1_Specular;
-varying vec2 varTex0;
-
-void main() {
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
- col.xyz = col.xyz * (light0_Diffuse * UNI_light_DiffuseColor[0].xyz + light1_Diffuse * UNI_light_DiffuseColor[1].xyz);
- col.xyz += light0_Specular * UNI_light_SpecularColor[0].xyz;
- col.xyz += light1_Specular * UNI_light_SpecularColor[1].xyz;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayv.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayv.glsl
deleted file mode 100644
index 7a1310a..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderarrayv.glsl
+++ /dev/null
@@ -1,32 +0,0 @@
-varying float light0_Diffuse;
-varying float light0_Specular;
-varying float light1_Diffuse;
-varying float light1_Specular;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 worldPos = UNI_model[0] * ATTRIB_position;
- worldPos = UNI_model[1] * worldPos;
- gl_Position = UNI_proj * worldPos;
-
- mat4 model0 = UNI_model[0];
- mat3 model3 = mat3(model0[0].xyz, model0[1].xyz, model0[2].xyz);
- vec3 worldNorm = model3 * ATTRIB_normal;
- vec3 V = normalize(-worldPos.xyz);
-
- vec3 light0Vec = normalize(UNI_light_Posision[0].xyz - worldPos.xyz);
- vec3 light0R = -reflect(light0Vec, worldNorm);
- light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light_Diffuse[0];
- float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
- light0_Specular = pow(light0Spec, UNI_light_CosinePower[0]) * UNI_light_Specular[0];
-
- vec3 light1Vec = normalize(UNI_light_Posision[1].xyz - worldPos.xyz);
- vec3 light1R = reflect(light1Vec, worldNorm);
- light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light_Diffuse[1];
- float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
- light1_Specular = pow(light1Spec, UNI_light_CosinePower[1]) * UNI_light_Specular[1];
-
- gl_PointSize = 1.0;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubef.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shadercubef.glsl
deleted file mode 100644
index 15696a4..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubef.glsl
+++ /dev/null
@@ -1,8 +0,0 @@
-
-varying vec3 worldNormal;
-
-void main() {
- lowp vec4 col = textureCube(UNI_Tex0, worldNormal);
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubev.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shadercubev.glsl
deleted file mode 100644
index 70f5cd6..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shadercubev.glsl
+++ /dev/null
@@ -1,10 +0,0 @@
-varying vec3 worldNormal;
-
-// This is where actual shader code begins
-void main() {
- vec4 worldPos = UNI_model * ATTRIB_position;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- worldNormal = model3 * ATTRIB_normal;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderf.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderf.glsl
deleted file mode 100644
index d56e203..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderf.glsl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-varying lowp float light0_Diffuse;
-varying lowp float light0_Specular;
-varying lowp float light1_Diffuse;
-varying lowp float light1_Specular;
-varying vec2 varTex0;
-
-void main() {
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
- col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz);
- col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz;
- col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/shaderv.glsl b/tests/RenderScriptTests/MiscSamples/res/raw/shaderv.glsl
deleted file mode 100644
index f7d01de..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/shaderv.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-varying float light0_Diffuse;
-varying float light0_Specular;
-varying float light1_Diffuse;
-varying float light1_Specular;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 worldPos = UNI_model * ATTRIB_position;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * ATTRIB_normal;
- vec3 V = normalize(-worldPos.xyz);
-
- vec3 light0Vec = normalize(UNI_light0_Posision.xyz - worldPos.xyz);
- vec3 light0R = -reflect(light0Vec, worldNorm);
- light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse;
- float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
- light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular;
-
- vec3 light1Vec = normalize(UNI_light1_Posision.xyz - worldPos.xyz);
- vec3 light1R = reflect(light1Vec, worldNorm);
- light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse;
- float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
- light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular;
-
- gl_PointSize = 1.0;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/res/raw/torus.a3d b/tests/RenderScriptTests/MiscSamples/res/raw/torus.a3d
deleted file mode 100644
index 0322b01..0000000
--- a/tests/RenderScriptTests/MiscSamples/res/raw/torus.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java
deleted file mode 100644
index dade3b3..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.miscsamples;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class RsList extends Activity {
-
- private RsListView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new RsListView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity loses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity loses focus
- super.onPause();
- mView.pause();
- }
-
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java
deleted file mode 100644
index eeb2480..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.miscsamples;
-
-import java.io.Writer;
-import java.util.Vector;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-
-public class RsListRS {
-
- private final int STATE_LAST_FOCUS = 1;
-
- private static final String[] DATA_LIST = {
- "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
- "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
- "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
- "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
- "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
- "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
- "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria",
- "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
- "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
- "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
- "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
- "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
- "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
- "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
- "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
- "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
- "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
- "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
- "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
- "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
- "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
- "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
- "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
- "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
- "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
- "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
- "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
- "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
- "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
- "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
- "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
- "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
- "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
- "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
- "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
- "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
- "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
- "Ukraine", "United Arab Emirates", "United Kingdom",
- "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
- "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
- "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
- };
-
- public RsListRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initRS();
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private Font mItalic;
-
- ScriptField_ListAllocs_s mListAllocs;
-
- private ScriptC_rslist mScript;
-
- int mLastX;
- int mLastY;
-
- public void onActionDown(int x, int y) {
- mScript.set_gDY(0.0f);
-
- mLastX = x;
- mLastY = y;
- }
-
- public void onActionMove(int x, int y) {
- int dx = mLastX - x;
- int dy = mLastY - y;
-
- if (Math.abs(dy) <= 2) {
- dy = 0;
- }
-
- mScript.set_gDY(dy);
-
- mLastX = x;
- mLastY = y;
- }
-
- private void initRS() {
-
- mScript = new ScriptC_rslist(mRS, mRes, R.raw.rslist);
-
- mListAllocs = new ScriptField_ListAllocs_s(mRS, DATA_LIST.length);
- for (int i = 0; i < DATA_LIST.length; i ++) {
- ScriptField_ListAllocs_s.Item listElem = new ScriptField_ListAllocs_s.Item();
- listElem.text = Allocation.createFromString(mRS, DATA_LIST[i], Allocation.USAGE_SCRIPT);
- mListAllocs.set(listElem, i, false);
- }
-
- mListAllocs.copyAll();
-
- mScript.bind_gList(mListAllocs);
-
- mItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8);
- mScript.set_gItalic(mItalic);
-
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java
deleted file mode 100644
index db6e6c5..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.miscsamples;
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-
-public class RsListView extends RSSurfaceView {
-
- public RsListView(Context context) {
- super(context);
- ensureRenderScript();
- }
-
- private RenderScriptGL mRS;
- private RsListRS mRender;
-
- private void ensureRenderScript() {
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- mRS = createRenderScriptGL(sc);
- mRender = new RsListRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev)
- {
- boolean ret = false;
- int act = ev.getAction();
- if (act == MotionEvent.ACTION_DOWN) {
- mRender.onActionDown((int)ev.getX(), (int)ev.getY());
- ret = true;
- } else if (act == MotionEvent.ACTION_MOVE) {
- mRender.onActionMove((int)ev.getX(), (int)ev.getY());
- ret = true;
- }
-
- return ret;
- }
-}
-
-
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java
deleted file mode 100644
index f4ea76e..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.miscsamples;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class RsRenderStates extends Activity {
-
- private RsRenderStatesView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new RsRenderStatesView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onPause();
- mView.pause();
- }
-
-}
-
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java
deleted file mode 100644
index 0e319fe..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.miscsamples;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.renderscript.*;
-import android.renderscript.Font.Style;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.renderscript.ProgramStore.BlendSrcFunc;
-import android.renderscript.ProgramStore.BlendDstFunc;
-import android.renderscript.Sampler.Value;
-import android.util.Log;
-
-
-public class RsRenderStatesRS {
-
- int mWidth;
- int mHeight;
-
- public RsRenderStatesRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mWidth = mRS.getWidth();
- mHeight = mRS.getHeight();
- mRes = res;
- mOptionsARGB.inScaled = false;
- mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888;
- mMode = 0;
- mMaxModes = 0;
- initRS();
- }
-
- public void surfaceChanged() {
- mWidth = mRS.getWidth();
- mHeight = mRS.getHeight();
-
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(mWidth, mHeight);
- mPVA.setProjection(proj);
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
-
- private Sampler mLinearClamp;
- private Sampler mLinearWrap;
- private Sampler mMipLinearWrap;
- private Sampler mNearestClamp;
- private Sampler mMipLinearAniso8;
- private Sampler mMipLinearAniso15;
-
- private ProgramStore mProgStoreBlendNoneDepth;
- private ProgramStore mProgStoreBlendNone;
- private ProgramStore mProgStoreBlendAlpha;
- private ProgramStore mProgStoreBlendAdd;
-
- private ProgramFragment mProgFragmentTexture;
- private ProgramFragment mProgFragmentColor;
-
- private ProgramVertex mProgVertex;
- private ProgramVertexFixedFunction.Constants mPVA;
-
- // Custom shaders
- private ProgramVertex mProgVertexCustom;
- private ProgramFragment mProgFragmentCustom;
- private ProgramFragment mProgFragmentMultitex;
- private ScriptField_VertexShaderConstants_s mVSConst;
- private ScriptField_VertexShaderConstants2_s mVSConst2;
- private ScriptField_FragentShaderConstants_s mFSConst;
- private ScriptField_FragentShaderConstants2_s mFSConst2;
-
- private ProgramVertex mProgVertexCustom2;
- private ProgramFragment mProgFragmentCustom2;
-
- private ProgramVertex mProgVertexCube;
- private ProgramFragment mProgFragmentCube;
-
- private ProgramRaster mCullBack;
- private ProgramRaster mCullFront;
- private ProgramRaster mCullNone;
-
- private Allocation mTexTorus;
- private Allocation mTexOpaque;
- private Allocation mTexTransparent;
- private Allocation mTexChecker;
- private Allocation mTexCube;
-
- private Mesh mMbyNMesh;
- private Mesh mTorus;
-
- Font mFontSans;
- Font mFontSerif;
- Font mFontSerifBold;
- Font mFontSerifItalic;
- Font mFontSerifBoldItalic;
- Font mFontMono;
- private Allocation mTextAlloc;
-
- private ScriptC_rsrenderstates mScript;
-
- private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
-
- int mMode;
- int mMaxModes;
-
- public void onActionDown(int x, int y) {
- mMode ++;
- mMode = mMode % mMaxModes;
- mScript.set_gDisplayMode(mMode);
- }
-
- ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) {
- ProgramStore.Builder builder = new ProgramStore.Builder(rs);
- builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
- builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ONE);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(false);
- return builder.create();
- }
-
- private Mesh getMbyNMesh(float width, float height, int wResolution, int hResolution) {
-
- Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS,
- 2, Mesh.TriangleMeshBuilder.TEXTURE_0);
-
- for (int y = 0; y <= hResolution; y++) {
- final float normalizedY = (float)y / hResolution;
- final float yOffset = (normalizedY - 0.5f) * height;
- for (int x = 0; x <= wResolution; x++) {
- float normalizedX = (float)x / wResolution;
- float xOffset = (normalizedX - 0.5f) * width;
- tmb.setTexture(normalizedX, normalizedY);
- tmb.addVertex(xOffset, yOffset);
- }
- }
-
- for (int y = 0; y < hResolution; y++) {
- final int curY = y * (wResolution + 1);
- final int belowY = (y + 1) * (wResolution + 1);
- for (int x = 0; x < wResolution; x++) {
- int curV = curY + x;
- int belowV = belowY + x;
- tmb.addTriangle(curV, belowV, curV + 1);
- tmb.addTriangle(belowV, belowV + 1, curV + 1);
- }
- }
-
- return tmb.create(true);
- }
-
- private void initProgramStore() {
- // Use stock the stock program store object
- mProgStoreBlendNoneDepth = ProgramStore.BLEND_NONE_DEPTH_TEST(mRS);
- mProgStoreBlendNone = ProgramStore.BLEND_NONE_DEPTH_NONE(mRS);
-
- // Create a custom program store
- ProgramStore.Builder builder = new ProgramStore.Builder(mRS);
- builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
- builder.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
- ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(false);
- mProgStoreBlendAlpha = builder.create();
-
- mProgStoreBlendAdd = BLEND_ADD_DEPTH_NONE(mRS);
-
- mScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth);
- mScript.set_gProgStoreBlendNone(mProgStoreBlendNone);
- mScript.set_gProgStoreBlendAlpha(mProgStoreBlendAlpha);
- mScript.set_gProgStoreBlendAdd(mProgStoreBlendAdd);
- }
-
- private void initProgramFragment() {
-
- ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mProgFragmentTexture = texBuilder.create();
- mProgFragmentTexture.bindSampler(mLinearClamp, 0);
-
- ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- colBuilder.setVaryingColor(false);
- mProgFragmentColor = colBuilder.create();
-
- mScript.set_gProgFragmentColor(mProgFragmentColor);
- mScript.set_gProgFragmentTexture(mProgFragmentTexture);
- }
-
- private void initProgramVertex() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mProgVertex = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mProgVertex).bindConstants(mPVA);
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(mWidth, mHeight);
- mPVA.setProjection(proj);
-
- mScript.set_gProgVertex(mProgVertex);
- }
-
- private void initCustomShaders() {
- mVSConst = new ScriptField_VertexShaderConstants_s(mRS, 1);
- mVSConst2 = new ScriptField_VertexShaderConstants2_s(mRS, 1);
- mFSConst = new ScriptField_FragentShaderConstants_s(mRS, 1);
- mFSConst2 = new ScriptField_FragentShaderConstants2_s(mRS, 1);
-
- mScript.bind_gVSConstants(mVSConst);
- mScript.bind_gVSConstants2(mVSConst2);
- mScript.bind_gFSConstants(mFSConst);
- mScript.bind_gFSConstants2(mFSConst2);
-
- // Initialize the shader builder
- ProgramVertex.Builder pvbCustom = new ProgramVertex.Builder(mRS);
- // Specify the resource that contains the shader string
- pvbCustom.setShader(mRes, R.raw.shaderv);
- // Use a script field to spcify the input layout
- pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
- // Define the constant input layout
- pvbCustom.addConstant(mVSConst.getAllocation().getType());
- mProgVertexCustom = pvbCustom.create();
- // Bind the source of constant data
- mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0);
-
- ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS);
- // Specify the resource that contains the shader string
- pfbCustom.setShader(mRes, R.raw.shaderf);
- //Tell the builder how many textures we have
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- // Define the constant input layout
- pfbCustom.addConstant(mFSConst.getAllocation().getType());
- mProgFragmentCustom = pfbCustom.create();
- // Bind the source of constant data
- mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0);
-
- pvbCustom = new ProgramVertex.Builder(mRS);
- pvbCustom.setShader(mRes, R.raw.shaderarrayv);
- pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
- pvbCustom.addConstant(mVSConst2.getAllocation().getType());
- mProgVertexCustom2 = pvbCustom.create();
- mProgVertexCustom2.bindConstants(mVSConst2.getAllocation(), 0);
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.shaderarrayf);
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- pfbCustom.addConstant(mFSConst2.getAllocation().getType());
- mProgFragmentCustom2 = pfbCustom.create();
- mProgFragmentCustom2.bindConstants(mFSConst2.getAllocation(), 0);
-
- // Cubemap test shaders
- pvbCustom = new ProgramVertex.Builder(mRS);
- pvbCustom.setShader(mRes, R.raw.shadercubev);
- pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
- pvbCustom.addConstant(mVSConst.getAllocation().getType());
- mProgVertexCube = pvbCustom.create();
- mProgVertexCube.bindConstants(mVSConst.getAllocation(), 0);
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.shadercubef);
- pfbCustom.addTexture(Program.TextureType.TEXTURE_CUBE);
- mProgFragmentCube = pfbCustom.create();
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.multitexf);
- for (int texCount = 0; texCount < 3; texCount ++) {
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- }
- mProgFragmentMultitex = pfbCustom.create();
-
- mScript.set_gProgVertexCustom(mProgVertexCustom);
- mScript.set_gProgFragmentCustom(mProgFragmentCustom);
- mScript.set_gProgVertexCustom2(mProgVertexCustom2);
- mScript.set_gProgFragmentCustom2(mProgFragmentCustom2);
- mScript.set_gProgVertexCube(mProgVertexCube);
- mScript.set_gProgFragmentCube(mProgFragmentCube);
- mScript.set_gProgFragmentMultitex(mProgFragmentMultitex);
- }
-
- private Allocation loadTextureRGB(int id) {
- return Allocation.createFromBitmapResource(mRS, mRes, id,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private Allocation loadTextureARGB(int id) {
- Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB);
- return Allocation.createFromBitmap(mRS, b,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private void loadImages() {
- mTexTorus = loadTextureRGB(R.drawable.torusmap);
- mTexOpaque = loadTextureRGB(R.drawable.data);
- mTexTransparent = loadTextureARGB(R.drawable.leaf);
- mTexChecker = loadTextureRGB(R.drawable.checker);
- Bitmap b = BitmapFactory.decodeResource(mRes, R.drawable.cubemap_test);
- mTexCube = Allocation.createCubemapFromBitmap(mRS, b);
-
- mScript.set_gTexTorus(mTexTorus);
- mScript.set_gTexOpaque(mTexOpaque);
- mScript.set_gTexTransparent(mTexTransparent);
- mScript.set_gTexChecker(mTexChecker);
- mScript.set_gTexCube(mTexCube);
- }
-
- private void initFonts() {
- // Sans font by family name
- mFontSans = Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8);
- mFontSerif = Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8);
- // Create fonts by family and style
- mFontSerifBold = Font.create(mRS, mRes, "serif", Font.Style.BOLD, 8);
- mFontSerifItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8);
- mFontSerifBoldItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8);
- mFontMono = Font.create(mRS, mRes, "mono", Font.Style.NORMAL, 8);
-
- mTextAlloc = Allocation.createFromString(mRS, "String from allocation", Allocation.USAGE_SCRIPT);
-
- mScript.set_gFontSans(mFontSans);
- mScript.set_gFontSerif(mFontSerif);
- mScript.set_gFontSerifBold(mFontSerifBold);
- mScript.set_gFontSerifItalic(mFontSerifItalic);
- mScript.set_gFontSerifBoldItalic(mFontSerifBoldItalic);
- mScript.set_gFontMono(mFontMono);
- mScript.set_gTextAlloc(mTextAlloc);
- }
-
- private void initMesh() {
- mMbyNMesh = getMbyNMesh(256, 256, 10, 10);
- mScript.set_gMbyNMesh(mMbyNMesh);
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.torus);
- FileA3D.IndexEntry entry = model.getIndexEntry(0);
- if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) {
- Log.e("rs", "could not load model");
- } else {
- mTorus = (Mesh)entry.getObject();
- mScript.set_gTorusMesh(mTorus);
- }
- }
-
- private void initSamplers() {
- Sampler.Builder bs = new Sampler.Builder(mRS);
- bs.setMinification(Sampler.Value.LINEAR);
- bs.setMagnification(Sampler.Value.LINEAR);
- bs.setWrapS(Sampler.Value.WRAP);
- bs.setWrapT(Sampler.Value.WRAP);
- mLinearWrap = bs.create();
-
- mLinearClamp = Sampler.CLAMP_LINEAR(mRS);
- mNearestClamp = Sampler.CLAMP_NEAREST(mRS);
- mMipLinearWrap = Sampler.WRAP_LINEAR_MIP_LINEAR(mRS);
-
- bs = new Sampler.Builder(mRS);
- bs.setMinification(Sampler.Value.LINEAR_MIP_LINEAR);
- bs.setMagnification(Sampler.Value.LINEAR);
- bs.setWrapS(Sampler.Value.WRAP);
- bs.setWrapT(Sampler.Value.WRAP);
- bs.setAnisotropy(8.0f);
- mMipLinearAniso8 = bs.create();
- bs.setAnisotropy(15.0f);
- mMipLinearAniso15 = bs.create();
-
- mScript.set_gLinearClamp(mLinearClamp);
- mScript.set_gLinearWrap(mLinearWrap);
- mScript.set_gMipLinearWrap(mMipLinearWrap);
- mScript.set_gMipLinearAniso8(mMipLinearAniso8);
- mScript.set_gMipLinearAniso15(mMipLinearAniso15);
- mScript.set_gNearestClamp(mNearestClamp);
- }
-
- private void initProgramRaster() {
- mCullBack = ProgramRaster.CULL_BACK(mRS);
- mCullFront = ProgramRaster.CULL_FRONT(mRS);
- mCullNone = ProgramRaster.CULL_NONE(mRS);
-
- mScript.set_gCullBack(mCullBack);
- mScript.set_gCullFront(mCullFront);
- mScript.set_gCullNone(mCullNone);
- }
-
- private void initRS() {
-
- mScript = new ScriptC_rsrenderstates(mRS, mRes, R.raw.rsrenderstates);
-
- mMaxModes = mScript.get_gMaxModes();
-
- initSamplers();
- initProgramStore();
- initProgramFragment();
- initProgramVertex();
- initFonts();
- loadImages();
- initMesh();
- initProgramRaster();
- initCustomShaders();
-
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java
deleted file mode 100644
index a15e38f..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.rs.miscsamples;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-
-public class RsRenderStatesView extends RSSurfaceView {
-
- public RsRenderStatesView(Context context) {
- super(context);
- ensureRenderScript();
- }
-
- private RenderScriptGL mRS;
- private RsRenderStatesRS mRender;
-
- private void ensureRenderScript() {
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRender = new RsRenderStatesRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- mRender.surfaceChanged();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- if (ev.getAction() == MotionEvent.ACTION_DOWN) {
- mRender.onActionDown((int)ev.getX(), (int)ev.getY());
- return true;
- }
-
- return false;
- }
-}
-
-
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs
deleted file mode 100644
index d9d450d..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.example.android.rs.miscsamples)
-
-#include "rs_graphics.rsh"
-
-float gDY;
-
-rs_font gItalic;
-
-typedef struct ListAllocs_s {
- rs_allocation text;
-} ListAllocs;
-
-ListAllocs *gList;
-
-void init() {
- gDY = 0.0f;
-}
-
-int textPos = 0;
-
-int root(void) {
-
- rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-
- textPos -= (int)gDY*2;
- gDY *= 0.95;
-
- rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f);
- rsgBindFont(gItalic);
-
- rs_allocation listAlloc;
- listAlloc = rsGetAllocation(gList);
- int allocSize = rsAllocationGetDimX(listAlloc);
-
- int width = rsgGetWidth();
- int height = rsgGetHeight();
-
- int itemHeight = 80;
- int currentYPos = itemHeight + textPos;
-
- for (int i = 0; i < allocSize; i ++) {
- if (currentYPos - itemHeight > height) {
- break;
- }
-
- if (currentYPos > 0) {
- rsgDrawRect(0, currentYPos - 1, width, currentYPos, 0);
- rsgDrawText(gList[i].text, 30, currentYPos - 32);
- }
- currentYPos += itemHeight;
- }
-
- return 10;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs
deleted file mode 100644
index 5dabd00..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs
+++ /dev/null
@@ -1,680 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.example.android.rs.miscsamples)
-
-#include "rs_graphics.rsh"
-#include "shader_def.rsh"
-
-const int gMaxModes = 11;
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentColor;
-rs_program_fragment gProgFragmentTexture;
-
-rs_program_store gProgStoreBlendNoneDepth;
-rs_program_store gProgStoreBlendNone;
-rs_program_store gProgStoreBlendAlpha;
-rs_program_store gProgStoreBlendAdd;
-
-rs_allocation gTexOpaque;
-rs_allocation gTexTorus;
-rs_allocation gTexTransparent;
-rs_allocation gTexChecker;
-rs_allocation gTexCube;
-
-rs_mesh gMbyNMesh;
-rs_mesh gTorusMesh;
-
-rs_font gFontSans;
-rs_font gFontSerif;
-rs_font gFontSerifBold;
-rs_font gFontSerifItalic;
-rs_font gFontSerifBoldItalic;
-rs_font gFontMono;
-rs_allocation gTextAlloc;
-
-int gDisplayMode;
-
-rs_sampler gLinearClamp;
-rs_sampler gLinearWrap;
-rs_sampler gMipLinearWrap;
-rs_sampler gMipLinearAniso8;
-rs_sampler gMipLinearAniso15;
-rs_sampler gNearestClamp;
-
-rs_program_raster gCullBack;
-rs_program_raster gCullFront;
-rs_program_raster gCullNone;
-
-// Custom vertex shader compunents
-VertexShaderConstants *gVSConstants;
-VertexShaderConstants2 *gVSConstants2;
-FragentShaderConstants *gFSConstants;
-FragentShaderConstants2 *gFSConstants2;
-// Export these out to easily set the inputs to shader
-VertexShaderInputs *gVSInputs;
-// Custom shaders we use for lighting
-rs_program_vertex gProgVertexCustom;
-rs_program_fragment gProgFragmentCustom;
-rs_program_vertex gProgVertexCustom2;
-rs_program_fragment gProgFragmentCustom2;
-rs_program_vertex gProgVertexCube;
-rs_program_fragment gProgFragmentCube;
-rs_program_fragment gProgFragmentMultitex;
-
-float gDt = 0;
-
-void init() {
-}
-
-static void displayFontSamples() {
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- int yPos = 100;
- rsgBindFont(gFontSans);
- rsgDrawText("Sans font sample", 30, yPos);
- yPos += 30;
- rsgFontColor(0.5f, 0.9f, 0.5f, 1.0f);
- rsgBindFont(gFontSerif);
- rsgDrawText("Serif font sample", 30, yPos);
- yPos += 30;
- rsgFontColor(0.7f, 0.7f, 0.7f, 1.0f);
- rsgBindFont(gFontSerifBold);
- rsgDrawText("Serif Bold font sample", 30, yPos);
- yPos += 30;
- rsgFontColor(0.5f, 0.5f, 0.9f, 1.0f);
- rsgBindFont(gFontSerifItalic);
- rsgDrawText("Serif Italic font sample", 30, yPos);
- yPos += 30;
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontSerifBoldItalic);
- rsgDrawText("Serif Bold Italic font sample", 30, yPos);
- yPos += 30;
- rsgBindFont(gFontMono);
- rsgDrawText("Monospace font sample", 30, yPos);
- yPos += 50;
-
- // Now use text metrics to center the text
- uint width = rsgGetWidth();
- uint height = rsgGetHeight();
- int left = 0, right = 0, top = 0, bottom = 0;
-
- rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f);
- rsgBindFont(gFontSerifBoldItalic);
-
- rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom);
- int centeredPos = width / 2 - (right - left) / 2;
- rsgDrawText(gTextAlloc, centeredPos, yPos);
- yPos += 30;
-
- const char* text = "Centered Text Sample";
- rsgMeasureText(text, &left, &right, &top, &bottom);
- centeredPos = width / 2 - (right - left) / 2;
- rsgDrawText(text, centeredPos, yPos);
- yPos += 30;
-
- rsgBindFont(gFontSans);
- text = "More Centered Text Samples";
- rsgMeasureText(text, &left, &right, &top, &bottom);
- centeredPos = width / 2 - (right - left) / 2;
- rsgDrawText(text, centeredPos, yPos);
- yPos += 30;
-
- // Now draw bottom and top right aligned text
- text = "Top-right aligned text";
- rsgMeasureText(text, &left, &right, &top, &bottom);
- rsgDrawText(text, width - right, top);
-
- text = "Top-left";
- rsgMeasureText(text, &left, &right, &top, &bottom);
- rsgDrawText(text, -left, top);
-
- text = "Bottom-right aligned text";
- rsgMeasureText(text, &left, &right, &top, &bottom);
- rsgDrawText(text, width - right, height + bottom);
-
-}
-
-static void bindProgramVertexOrtho() {
- // Default vertex sahder
- rsgBindProgramVertex(gProgVertex);
- // Setup the projectioni matrix
- rs_matrix4x4 proj;
- rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-}
-
-static void displayShaderSamples() {
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNone);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
- float startX = 0, startY = 0;
- float width = 256, height = 256;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1,
- startX + width, startY + height, 0, 1, 1,
- startX + width, startY, 0, 1, 0);
-
- startX = 200; startY = 0;
- width = 128; height = 128;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1,
- startX + width, startY + height, 0, 1, 1,
- startX + width, startY, 0, 1, 0);
-
- rsgBindProgramStore(gProgStoreBlendAlpha);
- rsgBindTexture(gProgFragmentTexture, 0, gTexTransparent);
- startX = 0; startY = 200;
- width = 128; height = 128;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1,
- startX + width, startY + height, 0, 1, 1,
- startX + width, startY, 0, 1, 0);
-
- // Fragment program with simple color
- rsgBindProgramFragment(gProgFragmentColor);
- rsgProgramFragmentConstantColor(gProgFragmentColor, 0.9, 0.3, 0.3, 1);
- rsgDrawRect(200, 300, 350, 450, 0);
- rsgProgramFragmentConstantColor(gProgFragmentColor, 0.3, 0.9, 0.3, 1);
- rsgDrawRect(50, 400, 400, 600, 0);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Texture shader", 10, 50);
- rsgDrawText("Alpha-blended texture shader", 10, 280);
- rsgDrawText("Flat color shader", 100, 450);
-}
-
-static void displayBlendingSamples() {
- int i;
-
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- rsgBindProgramFragment(gProgFragmentColor);
-
- rsgBindProgramStore(gProgStoreBlendNone);
- for (i = 0; i < 3; i ++) {
- float iPlusOne = (float)(i + 1);
- rsgProgramFragmentConstantColor(gProgFragmentColor,
- 0.1f*iPlusOne, 0.2f*iPlusOne, 0.3f*iPlusOne, 1);
- float yPos = 150 * (float)i;
- rsgDrawRect(0, yPos, 200, yPos + 200, 0);
- }
-
- rsgBindProgramStore(gProgStoreBlendAlpha);
- for (i = 0; i < 3; i ++) {
- float iPlusOne = (float)(i + 1);
- rsgProgramFragmentConstantColor(gProgFragmentColor,
- 0.2f*iPlusOne, 0.3f*iPlusOne, 0.1f*iPlusOne, 0.5);
- float yPos = 150 * (float)i;
- rsgDrawRect(150, yPos, 350, yPos + 200, 0);
- }
-
- rsgBindProgramStore(gProgStoreBlendAdd);
- for (i = 0; i < 3; i ++) {
- float iPlusOne = (float)(i + 1);
- rsgProgramFragmentConstantColor(gProgFragmentColor,
- 0.3f*iPlusOne, 0.1f*iPlusOne, 0.2f*iPlusOne, 0.5);
- float yPos = 150 * (float)i;
- rsgDrawRect(300, yPos, 500, yPos + 200, 0);
- }
-
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("No Blending", 10, 50);
- rsgDrawText("Alpha Blending", 160, 150);
- rsgDrawText("Additive Blending", 320, 250);
-
-}
-
-static void displayMeshSamples() {
-
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadTranslate(&matrix, 128, 128, 0);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNone);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
- rsgDrawMesh(gMbyNMesh);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("User gen 10 by 10 grid mesh", 10, 250);
-}
-
-static void displayTextureSamplers() {
-
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNone);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
- // Linear clamp
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- float startX = 0, startY = 0;
- float width = 300, height = 300;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1.1,
- startX + width, startY + height, 0, 1.1, 1.1,
- startX + width, startY, 0, 1.1, 0);
-
- // Linear Wrap
- rsgBindSampler(gProgFragmentTexture, 0, gLinearWrap);
- startX = 0; startY = 300;
- width = 300; height = 300;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1.1,
- startX + width, startY + height, 0, 1.1, 1.1,
- startX + width, startY, 0, 1.1, 0);
-
- // Nearest
- rsgBindSampler(gProgFragmentTexture, 0, gNearestClamp);
- startX = 300; startY = 0;
- width = 300; height = 300;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1.1,
- startX + width, startY + height, 0, 1.1, 1.1,
- startX + width, startY, 0, 1.1, 0);
-
- rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap);
- startX = 300; startY = 300;
- width = 300; height = 300;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1.5,
- startX + width, startY + height, 0, 1.5, 1.5,
- startX + width, startY, 0, 1.5, 0);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Filtering: linear clamp", 10, 290);
- rsgDrawText("Filtering: linear wrap", 10, 590);
- rsgDrawText("Filtering: nearest clamp", 310, 290);
- rsgDrawText("Filtering: miplinear wrap", 310, 590);
-}
-
-static float gTorusRotation = 0;
-
-static void displayCullingSamples() {
- rsgBindProgramVertex(gProgVertex);
- // Setup the projectioni matrix with 60 degree field of view
- rs_matrix4x4 proj;
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gTexTorus);
-
- // Aplly a rotation to our mesh
- gTorusRotation += 50.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- rs_matrix4x4 matrix;
- // Position our model on the screen
- rsMatrixLoadTranslate(&matrix, -2.0f, 0.0f, -10.0f);
- rsMatrixRotate(&matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
- // Use front face culling
- rsgBindProgramRaster(gCullFront);
- rsgDrawMesh(gTorusMesh);
-
- rsMatrixLoadTranslate(&matrix, 2.0f, 0.0f, -10.0f);
- rsMatrixRotate(&matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
- // Use back face culling
- rsgBindProgramRaster(gCullBack);
- rsgDrawMesh(gTorusMesh);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Displaying mesh front/back face culling", 10, rsgGetHeight() - 10);
-}
-
-static float gLight0Rotation = 0;
-static float gLight1Rotation = 0;
-
-static void setupCustomShaderLights() {
- float4 light0Pos = {-5.0f, 5.0f, -10.0f, 1.0f};
- float4 light1Pos = {2.0f, 5.0f, 15.0f, 1.0f};
- float4 light0DiffCol = {0.9f, 0.7f, 0.7f, 1.0f};
- float4 light0SpecCol = {0.9f, 0.6f, 0.6f, 1.0f};
- float4 light1DiffCol = {0.5f, 0.5f, 0.9f, 1.0f};
- float4 light1SpecCol = {0.5f, 0.5f, 0.9f, 1.0f};
-
- gLight0Rotation += 50.0f * gDt;
- if (gLight0Rotation > 360.0f) {
- gLight0Rotation -= 360.0f;
- }
- gLight1Rotation -= 50.0f * gDt;
- if (gLight1Rotation > 360.0f) {
- gLight1Rotation -= 360.0f;
- }
-
- rs_matrix4x4 l0Mat;
- rsMatrixLoadRotate(&l0Mat, gLight0Rotation, 1.0f, 0.0f, 0.0f);
- light0Pos = rsMatrixMultiply(&l0Mat, light0Pos);
- rs_matrix4x4 l1Mat;
- rsMatrixLoadRotate(&l1Mat, gLight1Rotation, 0.0f, 0.0f, 1.0f);
- light1Pos = rsMatrixMultiply(&l1Mat, light1Pos);
-
- // Set light 0 properties
- gVSConstants->light0_Posision = light0Pos;
- gVSConstants->light0_Diffuse = 1.0f;
- gVSConstants->light0_Specular = 0.5f;
- gVSConstants->light0_CosinePower = 10.0f;
- // Set light 1 properties
- gVSConstants->light1_Posision = light1Pos;
- gVSConstants->light1_Diffuse = 1.0f;
- gVSConstants->light1_Specular = 0.7f;
- gVSConstants->light1_CosinePower = 25.0f;
- rsgAllocationSyncAll(rsGetAllocation(gVSConstants));
-
- gVSConstants2->light_Posision[0] = light0Pos;
- gVSConstants2->light_Diffuse[0] = 1.0f;
- gVSConstants2->light_Specular[0] = 0.5f;
- gVSConstants2->light_CosinePower[0] = 10.0f;
- gVSConstants2->light_Posision[1] = light1Pos;
- gVSConstants2->light_Diffuse[1] = 1.0f;
- gVSConstants2->light_Specular[1] = 0.7f;
- gVSConstants2->light_CosinePower[1] = 25.0f;
- rsgAllocationSyncAll(rsGetAllocation(gVSConstants2));
-
- // Update fragmetn shader constants
- // Set light 0 colors
- gFSConstants->light0_DiffuseColor = light0DiffCol;
- gFSConstants->light0_SpecularColor = light0SpecCol;
- // Set light 1 colors
- gFSConstants->light1_DiffuseColor = light1DiffCol;
- gFSConstants->light1_SpecularColor = light1SpecCol;
- rsgAllocationSyncAll(rsGetAllocation(gFSConstants));
-
- gFSConstants2->light_DiffuseColor[0] = light0DiffCol;
- gFSConstants2->light_SpecularColor[0] = light0SpecCol;
- // Set light 1 colors
- gFSConstants2->light_DiffuseColor[1] = light1DiffCol;
- gFSConstants2->light_SpecularColor[1] = light1SpecCol;
- rsgAllocationSyncAll(rsGetAllocation(gFSConstants2));
-}
-
-static void displayCustomShaderSamples() {
-
- // Update vertex shader constants
- // Load model matrix
- // Aplly a rotation to our mesh
- gTorusRotation += 50.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- // Position our model on the screen
- rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f);
- rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f);
- // Setup the projectioni matrix
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f);
- setupCustomShaderLights();
-
- rsgBindProgramVertex(gProgVertexCustom);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- rsgBindProgramFragment(gProgFragmentCustom);
- rsgBindSampler(gProgFragmentCustom, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentCustom, 0, gTexTorus);
-
- // Use back face culling
- rsgBindProgramRaster(gCullBack);
- rsgDrawMesh(gTorusMesh);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Custom shader sample", 10, rsgGetHeight() - 10);
-}
-
-static void displayCustomShaderSamples2() {
-
- // Update vertex shader constants
- // Load model matrix
- // Aplly a rotation to our mesh
- gTorusRotation += 50.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- // Position our model on the screen
- rsMatrixLoadTranslate(&gVSConstants2->model[1], 0.0f, 0.0f, -10.0f);
- rsMatrixLoadIdentity(&gVSConstants2->model[0]);
- rsMatrixRotate(&gVSConstants2->model[0], gTorusRotation, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&gVSConstants2->model[0], gTorusRotation, 0.0f, 0.0f, 1.0f);
- // Setup the projectioni matrix
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&gVSConstants2->proj, 30.0f, aspect, 0.1f, 100.0f);
- setupCustomShaderLights();
-
- rsgBindProgramVertex(gProgVertexCustom2);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- rsgBindProgramFragment(gProgFragmentCustom2);
- rsgBindSampler(gProgFragmentCustom2, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentCustom2, 0, gTexTorus);
-
- // Use back face culling
- rsgBindProgramRaster(gCullBack);
- rsgDrawMesh(gTorusMesh);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Custom shader sample with array uniforms", 10, rsgGetHeight() - 10);
-}
-
-static void displayCubemapShaderSample() {
- // Update vertex shader constants
- // Load model matrix
- // Aplly a rotation to our mesh
- gTorusRotation += 50.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- // Position our model on the screen
- // Position our model on the screen
- rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f);
- rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f);
- // Setup the projectioni matrix
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f);
- rsgAllocationSyncAll(rsGetAllocation(gFSConstants));
-
- rsgBindProgramVertex(gProgVertexCube);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- rsgBindProgramFragment(gProgFragmentCube);
- rsgBindSampler(gProgFragmentCube, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentCube, 0, gTexCube);
-
- // Use back face culling
- rsgBindProgramRaster(gCullBack);
- rsgDrawMesh(gTorusMesh);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Cubemap shader sample", 10, rsgGetHeight() - 10);
-}
-
-static void displayMultitextureSample() {
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNone);
- rsgBindProgramFragment(gProgFragmentMultitex);
- rsgBindSampler(gProgFragmentMultitex, 0, gLinearClamp);
- rsgBindSampler(gProgFragmentMultitex, 1, gLinearWrap);
- rsgBindSampler(gProgFragmentMultitex, 2, gLinearClamp);
- rsgBindTexture(gProgFragmentMultitex, 0, gTexChecker);
- rsgBindTexture(gProgFragmentMultitex, 1, gTexTorus);
- rsgBindTexture(gProgFragmentMultitex, 2, gTexTransparent);
-
- float startX = 0, startY = 0;
- float width = 256, height = 256;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1,
- startX + width, startY + height, 0, 1, 1,
- startX + width, startY, 0, 1, 0);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- rsgDrawText("Custom shader with multitexturing", 10, 280);
-}
-
-static float gAnisoTime = 0.0f;
-static uint anisoMode = 0;
-static void displayAnisoSample() {
-
- gAnisoTime += gDt;
-
- rsgBindProgramVertex(gProgVertex);
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rs_matrix4x4 proj;
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rs_matrix4x4 matrix;
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNone);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsMatrixLoadTranslate(&matrix, 0.0f, 0.0f, -10.0f);
- rsMatrixRotate(&matrix, -80, 1.0f, 0.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- rsgBindProgramRaster(gCullNone);
-
- rsgBindTexture(gProgFragmentTexture, 0, gTexChecker);
-
- if (gAnisoTime >= 5.0f) {
- gAnisoTime = 0.0f;
- anisoMode ++;
- anisoMode = anisoMode % 3;
- }
-
- if (anisoMode == 0) {
- rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso8);
- } else if (anisoMode == 1) {
- rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso15);
- } else {
- rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap);
- }
-
- float startX = -15;
- float startY = -15;
- float width = 30;
- float height = 30;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 10,
- startX + width, startY + height, 0, 10, 10,
- startX + width, startY, 0, 10, 0);
-
- rsgBindProgramRaster(gCullBack);
-
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgBindFont(gFontMono);
- if (anisoMode == 0) {
- rsgDrawText("Anisotropic filtering 8", 10, 40);
- } else if (anisoMode == 1) {
- rsgDrawText("Anisotropic filtering 15", 10, 40);
- } else {
- rsgDrawText("Miplinear filtering", 10, 40);
- }
-}
-
-int root(void) {
-
- gDt = rsGetDt();
-
- rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f);
- rsgClearDepth(1.0f);
-
- switch (gDisplayMode) {
- case 0:
- displayFontSamples();
- break;
- case 1:
- displayShaderSamples();
- break;
- case 2:
- displayBlendingSamples();
- break;
- case 3:
- displayMeshSamples();
- break;
- case 4:
- displayTextureSamplers();
- break;
- case 5:
- displayCullingSamples();
- break;
- case 6:
- displayCustomShaderSamples();
- break;
- case 7:
- displayMultitextureSample();
- break;
- case 8:
- displayAnisoSample();
- break;
- case 9:
- displayCustomShaderSamples2();
- break;
- case 10:
- displayCubemapShaderSample();
- break;
- }
-
- return 10;
-}
diff --git a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh b/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh
deleted file mode 100644
index 08cf361..0000000
--- a/tests/RenderScriptTests/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.example.android.rs.miscsamples)
-
-typedef struct VertexShaderConstants_s {
- rs_matrix4x4 model;
- rs_matrix4x4 proj;
- float4 light0_Posision;
- float light0_Diffuse;
- float light0_Specular;
- float light0_CosinePower;
-
- float4 light1_Posision;
- float light1_Diffuse;
- float light1_Specular;
- float light1_CosinePower;
-} VertexShaderConstants;
-
-typedef struct VertexShaderConstants2_s {
- rs_matrix4x4 model[2];
- rs_matrix4x4 proj;
- float4 light_Posision[2];
- float light_Diffuse[2];
- float light_Specular[2];
- float light_CosinePower[2];
-} VertexShaderConstants2;
-
-typedef struct VertexShaderConstants3_s {
- rs_matrix4x4 model;
- rs_matrix4x4 proj;
- float time;
-} VertexShaderConstants3;
-
-
-typedef struct FragentShaderConstants_s {
- float4 light0_DiffuseColor;
- float4 light0_SpecularColor;
-
- float4 light1_DiffuseColor;
- float4 light1_SpecularColor;
-} FragentShaderConstants;
-
-typedef struct FragentShaderConstants2_s {
- float4 light_DiffuseColor[2];
- float4 light_SpecularColor[2];
-} FragentShaderConstants2;
-
-typedef struct FragentShaderConstants3_s {
- float4 light0_DiffuseColor;
- float4 light0_SpecularColor;
- float4 light0_Posision;
- float light0_Diffuse;
- float light0_Specular;
- float light0_CosinePower;
-
- float4 light1_DiffuseColor;
- float4 light1_SpecularColor;
- float4 light1_Posision;
- float light1_Diffuse;
- float light1_Specular;
- float light1_CosinePower;
-} FragentShaderConstants3;
-
-typedef struct VertexShaderInputs_s {
- float4 position;
- float3 normal;
- float2 texture0;
-} VertexShaderInputs;
-
diff --git a/tests/RenderScriptTests/ModelViewer/Android.mk b/tests/RenderScriptTests/ModelViewer/Android.mk
deleted file mode 100644
index 86724cf..0000000
--- a/tests/RenderScriptTests/ModelViewer/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript
-
-LOCAL_SDK_VERSION := 17
-
-LOCAL_PACKAGE_NAME := ModelViewer
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/ModelViewer/AndroidManifest.xml b/tests/RenderScriptTests/ModelViewer/AndroidManifest.xml
deleted file mode 100644
index 57ec4fe..0000000
--- a/tests/RenderScriptTests/ModelViewer/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.modelviewer">
- <application android:label="ModelViewer">
- <activity android:name="SimpleModel"
- android:label="SimpleModel"
- android:screenOrientation="nosensor">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="A3DSelector"
- android:label="A3DSelector"
- android:hardwareAccelerated="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- </intent-filter>
- </activity>
- <activity android:name="SceneGraph"
- android:label="SceneGraph"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/tests/RenderScriptTests/ModelViewer/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/ModelViewer/res/drawable-nodpi/robot.png
deleted file mode 100644
index f7353fd..0000000
--- a/tests/RenderScriptTests/ModelViewer/res/drawable-nodpi/robot.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/ModelViewer/res/menu/loader_menu.xml b/tests/RenderScriptTests/ModelViewer/res/menu/loader_menu.xml
deleted file mode 100644
index 2a8759c..0000000
--- a/tests/RenderScriptTests/ModelViewer/res/menu/loader_menu.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@+id/load_model"
- android:title="@string/load_model" />
- <item android:id="@+id/display_options"
- android:title="@string/display_options" />
- <item android:id="@+id/sensor"
- android:title="@string/sensor" />
-</menu>
diff --git a/tests/RenderScriptTests/ModelViewer/res/raw/robot.a3d b/tests/RenderScriptTests/ModelViewer/res/raw/robot.a3d
deleted file mode 100644
index f48895c..0000000
--- a/tests/RenderScriptTests/ModelViewer/res/raw/robot.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/ModelViewer/res/values/strings.xml b/tests/RenderScriptTests/ModelViewer/res/values/strings.xml
deleted file mode 100644
index a5c8f22..0000000
--- a/tests/RenderScriptTests/ModelViewer/res/values/strings.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <skip />
- <string name="load_model">Load Model</string>
- <string name="display_options">Display Options</string>
- <string name="sensor">Toggle Sensor</string>
-</resources>
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/A3DSelector.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/A3DSelector.java
deleted file mode 100644
index 0e2004f..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/A3DSelector.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.modelviewer;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.ArrayList;
-import java.util.List;
-
-import android.app.ListActivity;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-/**
- * A list view where the last item the user clicked is placed in
- * the "activated" state, causing its background to highlight.
- */
-public class A3DSelector extends ListActivity {
-
- File[] mCurrentSubList;
- File mCurrentFile;
-
- class A3DFilter implements FileFilter {
- public boolean accept(File file) {
- if (file.isDirectory()) {
- return true;
- }
- return file.getName().endsWith(".a3d");
- }
- }
-
- private void populateList(File file) {
-
- mCurrentFile = file;
- setTitle(mCurrentFile.getAbsolutePath() + "/*.a3d");
- List<String> names = new ArrayList<String>();
- names.add("..");
-
- mCurrentSubList = mCurrentFile.listFiles(new A3DFilter());
-
- if (mCurrentSubList != null) {
- for (int i = 0; i < mCurrentSubList.length; i ++) {
- String fileName = mCurrentSubList[i].getName();
- if (mCurrentSubList[i].isDirectory()) {
- fileName = "/" + fileName;
- }
- names.add(fileName);
- }
- }
-
- // Use the built-in layout for showing a list item with a single
- // line of text whose background is changes when activated.
- setListAdapter(new ArrayAdapter<String>(this,
- android.R.layout.simple_list_item_activated_1, names));
- getListView().setTextFilterEnabled(true);
-
- // Tell the list view to show one checked/activated item at a time.
- getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- populateList(new File("/sdcard/"));
- }
-
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id) {
- if (position == 0) {
- File parent = mCurrentFile.getParentFile();
- if (parent == null) {
- return;
- }
- populateList(parent);
- return;
- }
-
- // the first thing in list is parent directory
- File selectedFile = mCurrentSubList[position - 1];
- if (selectedFile.isDirectory()) {
- populateList(selectedFile);
- return;
- }
-
- Intent resultIntent = new Intent();
- resultIntent.setData(Uri.fromFile(selectedFile));
- setResult(RESULT_OK, resultIntent);
- finish();
- }
-
-}
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraph.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraph.java
deleted file mode 100644
index c9c4dc1..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraph.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2008 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.modelviewer;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-
-import java.lang.Runtime;
-
-public class SceneGraph extends Activity {
-
- private SceneGraphView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new SceneGraphView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onPause();
- mView.pause();
- }
-
-}
-
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java
deleted file mode 100644
index f91f31e..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2008 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.modelviewer;
-
-import java.io.Writer;
-import java.util.Map;
-import java.util.Vector;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.Element.Builder;
-import android.renderscript.Font.Style;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-
-public class SceneGraphRS {
-
- private final int STATE_LAST_FOCUS = 1;
-
- int mWidth;
- int mHeight;
- int mRotation;
-
- public SceneGraphRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res, int width, int height) {
- mRS = rs;
- mRes = res;
- mWidth = width;
- mHeight = height;
- mRotation = 0;
- initRS();
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private Sampler mSampler;
- private ProgramStore mPSBackground;
- private ProgramFragment mPFBackground;
- private ProgramVertex mPVBackground;
- private ProgramVertexFixedFunction.Constants mPVA;
-
- private Allocation mGridImage;
- private Allocation mAllocPV;
-
- private Mesh mMesh;
-
- private Font mItalic;
- private Allocation mTextAlloc;
-
- private ScriptC_scenegraph mScript;
- private ScriptC_transform mTransformScript;
-
- int mLastX;
- int mLastY;
-
- public void touchEvent(int x, int y) {
- int dx = mLastX - x;
- if (Math.abs(dx) > 50 || Math.abs(dx) < 3) {
- dx = 0;
- }
-
- mRotation -= dx;
- if (mRotation > 360) {
- mRotation -= 360;
- }
- if (mRotation < 0) {
- mRotation += 360;
- }
-
- mScript.set_gRotate(-(float)mRotation);
-
- mLastX = x;
- mLastY = y;
- }
-
- private void initPFS() {
- ProgramStore.Builder b = new ProgramStore.Builder(mRS);
-
- b.setDepthFunc(ProgramStore.DepthFunc.LESS);
- b.setDitherEnabled(false);
- b.setDepthMaskEnabled(true);
- mPSBackground = b.create();
-
- mScript.set_gPFSBackground(mPSBackground);
- }
-
- private void initPF() {
- Sampler.Builder bs = new Sampler.Builder(mRS);
- bs.setMinification(Sampler.Value.LINEAR);
- bs.setMagnification(Sampler.Value.LINEAR);
- bs.setWrapS(Sampler.Value.CLAMP);
- bs.setWrapT(Sampler.Value.CLAMP);
- mSampler = bs.create();
-
- ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS);
- b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mPFBackground = b.create();
- mPFBackground.bindSampler(mSampler, 0);
-
- mScript.set_gPFBackground(mPFBackground);
- }
-
- private void initPV() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mPVBackground = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA);
-
- mScript.set_gPVBackground(mPVBackground);
- }
-
- private void loadImage() {
- mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- mScript.set_gTGrid(mGridImage);
- }
-
- private void initTextAllocation() {
- String allocString = "Displaying file: R.raw.robot";
- mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT);
- mScript.set_gTextAlloc(mTextAlloc);
- }
-
- SgTransform mRootTransform;
- SgTransform mGroup1;
-
- SgTransform mRobot1;
- SgTransform mRobot2;
-
- void initTransformHierarchy() {
- mRootTransform = new SgTransform(mRS);
-
- mGroup1 = new SgTransform(mRS);
- mRootTransform.addChild(mGroup1);
-
- mRobot1 = new SgTransform(mRS);
- mRobot2 = new SgTransform(mRS);
-
- mGroup1.addChild(mRobot1);
- mGroup1.addChild(mRobot2);
-
- mGroup1.setTransform(0, new Float4(0.0f, 0.0f, -15.0f, 0.0f), TransformType.TRANSLATE);
- mGroup1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 15.0f), TransformType.ROTATE);
-
- mRobot1.setTransform(0, new Float4(-3.0f, -0.5f, 0.0f, 0.0f), TransformType.TRANSLATE);
- mRobot1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 20.0f), TransformType.ROTATE);
- mRobot1.setTransform(2, new Float4(0.2f, 0.2f, 0.2f, 0.0f), TransformType.SCALE);
-
- mRobot2.setTransform(0, new Float4(3.0f, 0.0f, 0.0f, 0.0f), TransformType.TRANSLATE);
- mRobot2.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, -20.0f), TransformType.ROTATE);
- mRobot2.setTransform(2, new Float4(0.3f, 0.3f, 0.3f, 0.0f), TransformType.SCALE);
- }
-
- private void initRS() {
-
- mScript = new ScriptC_scenegraph(mRS, mRes, R.raw.scenegraph);
- mTransformScript = new ScriptC_transform(mRS, mRes, R.raw.transform);
- mTransformScript.set_transformScript(mTransformScript);
-
- mScript.set_gTransformRS(mTransformScript);
-
- initPFS();
- initPF();
- initPV();
-
- loadImage();
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot);
- FileA3D.IndexEntry entry = model.getIndexEntry(0);
- if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) {
- Log.e("rs", "could not load model");
- } else {
- mMesh = (Mesh)entry.getObject();
- mScript.set_gTestMesh(mMesh);
- }
-
- mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8);
- mScript.set_gItalic(mItalic);
-
- initTextAllocation();
-
- initTransformHierarchy();
-
- mScript.bind_gRootNode(mRootTransform.getField());
-
- mScript.bind_gGroup(mGroup1.mParent.mChildField);
- mScript.bind_gRobot1(mRobot1.mParent.mChildField);
- mScript.set_gRobot1Index(mRobot1.mIndexInParentGroup);
- mScript.bind_gRobot2(mRobot2.mParent.mChildField);
- mScript.set_gRobot2Index(mRobot2.mIndexInParentGroup);
-
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphView.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphView.java
deleted file mode 100644
index 0b6a3b8..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SceneGraphView.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2008 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.modelviewer;
-
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-public class SceneGraphView extends RSSurfaceView {
-
- public SceneGraphView(Context context) {
- super(context);
- //setFocusable(true);
- }
-
- private RenderScriptGL mRS;
- private SceneGraphRS mRender;
-
-
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRS.setSurface(holder, w, h);
- mRender = new SceneGraphRS();
- mRender.init(mRS, getResources(), w, h);
- }
- }
-
- @Override
- protected void onDetachedFromWindow() {
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event)
- {
- // break point at here
- // this method doesn't work when 'extends View' include 'extends ScrollView'.
- return super.onKeyDown(keyCode, event);
- }
-
-
- @Override
- public boolean onTouchEvent(MotionEvent ev)
- {
- boolean ret = true;
- int act = ev.getAction();
- if (act == ev.ACTION_UP) {
- ret = false;
- }
-
- mRender.touchEvent((int)ev.getX(), (int)ev.getY());
- return ret;
- }
-}
-
-
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SgTransform.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SgTransform.java
deleted file mode 100644
index f5484e2..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SgTransform.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2008 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.modelviewer;
-
-import java.io.Writer;
-import java.util.Map;
-import java.util.Vector;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.Element.Builder;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-enum TransformType {
-
- NONE(0),
- TRANSLATE(1),
- ROTATE(2),
- SCALE(3);
-
- int mID;
- TransformType(int id) {
- mID = id;
- }
-}
-
-public class SgTransform {
-
-
- ScriptField_SgTransform mTransformField;
- ScriptField_SgTransform mChildField;
- public ScriptField_SgTransform.Item mTransformData;
-
- RenderScript mRS;
-
- Vector mChildren;
- SgTransform mParent;
- int mIndexInParentGroup;
-
- public void setParent(SgTransform parent, int parentIndex) {
- mParent = parent;
- mIndexInParentGroup = parentIndex;
- }
-
- public void addChild(SgTransform child) {
- mChildren.add(child);
- child.setParent(this, mChildren.size() - 1);
- }
-
- public void setTransform(int index, Float4 value, TransformType type) {
- mTransformData.transforms[index] = value;
- mTransformData.transformTypes[index] = type.mID;
- }
-
- void initData() {
- int numElements = mTransformData.transforms.length;
- mTransformData.transformTypes = new int[numElements];
- for (int i = 0; i < numElements; i ++) {
- mTransformData.transforms[i] = new Float4(0, 0, 0, 0);
- mTransformData.transformTypes[i] = TransformType.NONE.mID;
- }
-
- mTransformData.isDirty = 1;
- mTransformData.children = null;
- }
-
- public SgTransform(RenderScript rs) {
- mRS = rs;
- mTransformData = new ScriptField_SgTransform.Item();
- mChildren = new Vector();
- initData();
- }
-
- public ScriptField_SgTransform.Item getData() {
- if (mChildren.size() != 0) {
- mChildField = new ScriptField_SgTransform(mRS, mChildren.size());
- mTransformData.children = mChildField.getAllocation();
-
- for (int i = 0; i < mChildren.size(); i ++) {
- SgTransform child = (SgTransform)mChildren.get(i);
- mChildField.set(child.getData(), i, false);
- }
- mChildField.copyAll();
- }
-
- return mTransformData;
- }
-
- public ScriptField_SgTransform getField() {
- mTransformField = new ScriptField_SgTransform(mRS, 1);
- mTransformField.set(getData(), 0, true);
- return mTransformField;
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModel.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModel.java
deleted file mode 100644
index 2b29ff4..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModel.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2008 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.modelviewer;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.MenuInflater;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-import android.net.Uri;
-
-import java.lang.Runtime;
-
-public class SimpleModel extends Activity {
-
- private SimpleModelView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new SimpleModelView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onPause();
- mView.pause();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.loader_menu, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
- case R.id.load_model:
- loadModel();
- return true;
- case R.id.display_options:
- return true;
- case R.id.sensor:
- mView.toggleSensor();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- private static final int FIND_A3D_MODEL = 10;
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode == RESULT_OK) {
- if (requestCode == FIND_A3D_MODEL) {
- Uri selectedImageUri = data.getData();
- Log.e("Selected Path: ", selectedImageUri.getPath());
- mView.loadA3DFile(selectedImageUri.getPath());
- }
- }
- }
-
- public void loadModel() {
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_PICK);
- intent.setClassName("com.android.modelviewer",
- "com.android.modelviewer.A3DSelector");
- startActivityForResult(intent, FIND_A3D_MODEL);
- }
-
-}
-
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java
deleted file mode 100644
index 5fa3a9e..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.modelviewer;
-
-import java.io.Writer;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-
-public class SimpleModelRS {
-
- public SimpleModelRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initRS();
- }
-
- public void surfaceChanged() {
- mRS.getWidth();
- mRS.getHeight();
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private Sampler mSampler;
- private ProgramStore mPSBackground;
- private ProgramFragment mPFBackground;
- private ProgramVertex mPVBackground;
- private ProgramVertexFixedFunction.Constants mPVA;
-
- private Allocation mGridImage;
- private Allocation mAllocPV;
-
- private Font mItalic;
- private Allocation mTextAlloc;
-
- private ScriptField_MeshInfo mMeshes;
- private ScriptC_simplemodel mScript;
-
-
- public void onActionDown(float x, float y) {
- mScript.invoke_onActionDown(x, y);
- }
-
- public void onActionScale(float scale) {
- mScript.invoke_onActionScale(scale);
- }
-
- public void onActionMove(float x, float y) {
- mScript.invoke_onActionMove(x, y);
- }
-
- public void onPostureChanged(Matrix4f posture) {
- mScript.set_gPostureMatrix(posture);
- }
-
- private void initPFS() {
- ProgramStore.Builder b = new ProgramStore.Builder(mRS);
-
- b.setDepthFunc(ProgramStore.DepthFunc.LESS);
- b.setDitherEnabled(false);
- b.setDepthMaskEnabled(true);
- mPSBackground = b.create();
-
- mScript.set_gPFSBackground(mPSBackground);
- }
-
- private void initPF() {
- Sampler.Builder bs = new Sampler.Builder(mRS);
- bs.setMinification(Sampler.Value.LINEAR);
- bs.setMagnification(Sampler.Value.LINEAR);
- bs.setWrapS(Sampler.Value.CLAMP);
- bs.setWrapT(Sampler.Value.CLAMP);
- mSampler = bs.create();
-
- ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS);
- b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mPFBackground = b.create();
- mPFBackground.bindSampler(mSampler, 0);
-
- mScript.set_gPFBackground(mPFBackground);
- }
-
- private void initPV() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mPVBackground = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA);
-
- mScript.set_gPVBackground(mPVBackground);
- }
-
- private void loadImage() {
- mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- mScript.set_gTGrid(mGridImage);
- }
-
- private void initTextAllocation(String fileName) {
- String allocString = "Displaying file: " + fileName;
- mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT);
- mScript.set_gTextAlloc(mTextAlloc);
- }
-
- private void initMeshes(FileA3D model) {
- int numEntries = model.getIndexEntryCount();
- int numMeshes = 0;
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- numMeshes ++;
- }
- }
-
- if (numMeshes > 0) {
- mMeshes = new ScriptField_MeshInfo(mRS, numMeshes);
-
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- Mesh mesh = entry.getMesh();
- mMeshes.set_mMesh(i, mesh, false);
- mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false);
- }
- }
- mMeshes.copyAll();
- } else {
- throw new RSRuntimeException("No valid meshes in file");
- }
-
- mScript.bind_gMeshes(mMeshes);
- mScript.invoke_updateMeshInfo();
- }
-
- public void loadA3DFile(String path) {
- FileA3D model = FileA3D.createFromFile(mRS, path);
- initMeshes(model);
- initTextAllocation(path);
- }
-
- private void initRS() {
-
- mScript = new ScriptC_simplemodel(mRS, mRes, R.raw.simplemodel);
-
- initPFS();
- initPF();
- initPV();
-
- loadImage();
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot);
- initMeshes(model);
-
- mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8);
- mScript.set_gItalic(mItalic);
-
- initTextAllocation("R.raw.robot");
-
- mRS.bindRootScript(mScript);
- }
-}
-
-
-
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelView.java b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelView.java
deleted file mode 100644
index 4b7836b..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/SimpleModelView.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.modelviewer;
-
-import android.renderscript.Matrix4f;
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-import android.view.ScaleGestureDetector;
-import android.util.Log;
-
-public class SimpleModelView extends RSSurfaceView implements SensorEventListener {
-
- private RenderScriptGL mRS;
- private SimpleModelRS mRender;
-
- private ScaleGestureDetector mScaleDetector;
-
- private SensorManager mSensorManager;
- private Sensor mRotationVectorSensor;
- private final float[] mRotationMatrix = new float[16];
-
- private static final int INVALID_POINTER_ID = -1;
- private int mActivePointerId = INVALID_POINTER_ID;
- private boolean mUseSensor = false;
- private Matrix4f mIdentityMatrix = new Matrix4f();
-
- public SimpleModelView(Context context) {
- super(context);
- ensureRenderScript();
- mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
- // Get an instance of the SensorManager
- mSensorManager = (SensorManager)getContext().getSystemService(Context.SENSOR_SERVICE);
- // find the rotation-vector sensor
- mRotationVectorSensor = mSensorManager.getDefaultSensor(
- Sensor.TYPE_ROTATION_VECTOR);
- mIdentityMatrix.loadIdentity();
- }
-
- private void ensureRenderScript() {
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRender = new SimpleModelRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- public void resume() {
- mSensorManager.registerListener(this, mRotationVectorSensor, 10000);
- }
-
- @Override
- public void pause() {
- mSensorManager.unregisterListener(this);
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- mRender.surfaceChanged();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- public void loadA3DFile(String path) {
- mRender.loadA3DFile(path);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- mScaleDetector.onTouchEvent(ev);
-
- boolean ret = false;
- float x = ev.getX();
- float y = ev.getY();
-
- final int action = ev.getAction();
-
- switch (action & MotionEvent.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN: {
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(0);
- ret = true;
- break;
- }
- case MotionEvent.ACTION_MOVE: {
- if (!mScaleDetector.isInProgress()) {
- mRender.onActionMove(x, y);
- }
- mRender.onActionDown(x, y);
- ret = true;
- break;
- }
-
- case MotionEvent.ACTION_UP: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_CANCEL: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_POINTER_UP: {
- final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
- >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
- final int pointerId = ev.getPointerId(pointerIndex);
- if (pointerId == mActivePointerId) {
- // This was our active pointer going up. Choose a new
- // active pointer and adjust accordingly.
- final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- x = ev.getX(newPointerIndex);
- y = ev.getY(newPointerIndex);
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(newPointerIndex);
- }
- break;
- }
- }
-
- return ret;
- }
-
- private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mRender.onActionScale(detector.getScaleFactor());
- return true;
- }
- }
-
- public void onSensorChanged(SensorEvent event) {
- // we received a sensor event. it is a good practice to check
- // that we received the proper event
- if (mUseSensor) {
- if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
- // convert the rotation-vector to a 4x4 matrix. the matrix
- // is interpreted by Open GL as the inverse of the
- // rotation-vector, which is what we want.
- SensorManager.getRotationMatrixFromVector(
- mRotationMatrix , event.values);
-
- if (mRender != null) {
- mRender.onPostureChanged(new Matrix4f(mRotationMatrix));
- }
- }
- }
- }
-
- public void onAccuracyChanged(Sensor sensor, int accuracy) {
- }
-
- public void toggleSensor() {
- mUseSensor = !mUseSensor;
- if (mUseSensor == false) {
- mRender.onPostureChanged(mIdentityMatrix);
- }
- }
-}
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/scenegraph.rs b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/scenegraph.rs
deleted file mode 100644
index 5c5b1c9..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/scenegraph.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.modelviewer)
-
-#include "rs_graphics.rsh"
-#include "transform_def.rsh"
-
-rs_program_vertex gPVBackground;
-rs_program_fragment gPFBackground;
-
-rs_allocation gTGrid;
-rs_mesh gTestMesh;
-
-rs_program_store gPFSBackground;
-
-float gRotate;
-
-rs_font gItalic;
-rs_allocation gTextAlloc;
-
-rs_script gTransformRS;
-
-SgTransform *gGroup;
-SgTransform *gRobot1;
-int gRobot1Index;
-SgTransform *gRobot2;
-int gRobot2Index;
-
-SgTransform *gRootNode;
-
-void init() {
- gRotate = 0.0f;
-}
-
-int root(void) {
-
- gGroup->transforms[1].w += 0.5f;
- gGroup->isDirty = 1;
-
- SgTransform *robot1Ptr = gRobot1 + gRobot1Index;
-
- robot1Ptr->transforms[1].w -= 1.5f;
- robot1Ptr->isDirty = 1;
-
- SgTransform *robot2Ptr = gRobot2 + gRobot2Index;
- robot2Ptr->transforms[1].w += 2.5f;
- robot2Ptr->isDirty = 1;
-
- rsForEach(gTransformRS, gRootNode->children, gRootNode->children);
-
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
-
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gTGrid);
-
- rsgProgramVertexLoadModelMatrix(&robot1Ptr->globalMat);
- rsgDrawMesh(gTestMesh);
-
- rsgProgramVertexLoadModelMatrix(&robot2Ptr->globalMat);
- rsgDrawMesh(gTestMesh);
-
- //color(0.3f, 0.3f, 0.3f, 1.0f);
- rsgDrawText("Renderscript transform test", 30, 695);
-
- rsgBindFont(gItalic);
- rsgDrawText(gTextAlloc, 30, 730);
-
- return 10;
-}
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/simplemodel.rs b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/simplemodel.rs
deleted file mode 100644
index d3dd5b9..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/simplemodel.rs
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.modelviewer)
-
-#include "rs_graphics.rsh"
-
-rs_program_vertex gPVBackground;
-rs_program_fragment gPFBackground;
-
-rs_allocation gTGrid;
-
-rs_program_store gPFSBackground;
-
-rs_font gItalic;
-rs_allocation gTextAlloc;
-
-rs_matrix4x4 gPostureMatrix;
-
-typedef struct MeshInfo {
- rs_mesh mMesh;
- int mNumIndexSets;
- float3 bBoxMin;
- float3 bBoxMax;
-} MeshInfo_t;
-
-MeshInfo_t *gMeshes;
-
-static float3 gLookAt;
-
-static float gRotateX;
-static float gRotateY;
-static float gZoom;
-
-static float gLastX;
-static float gLastY;
-
-static float3 toFloat3(float x, float y, float z) {
- float3 f;
- f.x = x;
- f.y = y;
- f.z = z;
- return f;
-}
-
-void onActionDown(float x, float y) {
- gLastX = x;
- gLastY = y;
-}
-
-void onActionScale(float scale) {
-
- gZoom *= 1.0f / scale;
- gZoom = max(0.1f, min(gZoom, 500.0f));
-}
-
-void onActionMove(float x, float y) {
- float dx = gLastX - x;
- float dy = gLastY - y;
-
- if (fabs(dy) <= 2.0f) {
- dy = 0.0f;
- }
- if (fabs(dx) <= 2.0f) {
- dx = 0.0f;
- }
-
- gRotateY -= dx;
- if (gRotateY > 360) {
- gRotateY -= 360;
- }
- if (gRotateY < 0) {
- gRotateY += 360;
- }
-
- gRotateX -= dy;
- gRotateX = min(gRotateX, 80.0f);
- gRotateX = max(gRotateX, -80.0f);
-
- gLastX = x;
- gLastY = y;
-}
-
-void init() {
- gRotateX = 0.0f;
- gRotateY = 0.0f;
- gZoom = 50.0f;
- gLookAt = 0.0f;
- rsMatrixLoadIdentity(&gPostureMatrix);
-}
-
-void updateMeshInfo() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- float minX, minY, minZ, maxX, maxY, maxZ;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgMeshComputeBoundingBox(info->mMesh,
- &minX, &minY, &minZ,
- &maxX, &maxY, &maxZ);
- info->bBoxMin = toFloat3(minX, minY, minZ);
- info->bBoxMax = toFloat3(maxX, maxY, maxZ);
- gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f;
- }
- gLookAt = gLookAt / (float)size;
-}
-
-static void renderAllMeshes() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgDrawMesh(info->mMesh);
- }
-}
-
-void drawDescription() {
- uint height = rsgGetHeight();
- int left = 0, right = 0, top = 0, bottom = 0;
-
- rsgBindFont(gItalic);
-
- rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom);
- rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom);
-}
-
-int root(void) {
-
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
-
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gTGrid);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- // Position our models on the screen
- rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom);
- rsMatrixMultiply(&matrix, &gPostureMatrix);
- rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
-
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- renderAllMeshes();
-
- drawDescription();
-
- return 0;
-}
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform.rs b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform.rs
deleted file mode 100644
index 85c0630..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.modelviewer)
-
-#include "transform_def.rsh"
-
-rs_script transformScript;
-
-typedef struct {
- int changed;
- rs_matrix4x4 *mat;
-} ParentData;
-
-static void appendTransformation(int type, float4 data, rs_matrix4x4 *mat) {
- rs_matrix4x4 temp;
-
- switch (type) {
- case TRANSFORM_TRANSLATE:
- rsMatrixLoadTranslate(&temp, data.x, data.y, data.z);
- break;
- case TRANSFORM_ROTATE:
- rsMatrixLoadRotate(&temp, data.w, data.x, data.y, data.z);
- break;
- case TRANSFORM_SCALE:
- rsMatrixLoadScale(&temp, data.x, data.y, data.z);
- break;
- }
- rsMatrixMultiply(mat, &temp);
-}
-
-void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
-
- SgTransform *data = (SgTransform *)v_out;
- const ParentData *parent = (const ParentData *)usrData;
-
- //rsDebug("Transform data", (int)data);
- //rsDebug("Entering parent", (int)parent);
-
- rs_matrix4x4 *localMat = &data->localMat;
- rs_matrix4x4 *globalMat = &data->globalMat;
-
- ParentData toChild;
- toChild.changed = 0;
- toChild.mat = globalMat;
-
- //rsDebug("Transform is dirty", data->isDirty);
-
- // Refresh matrices if dirty
- if (data->isDirty) {
- data->isDirty = 0;
- toChild.changed = 1;
-
- // Reset our local matrix
- rsMatrixLoadIdentity(localMat);
-
- for (int i = 0; i < 16; i ++) {
- if (data->transformTypes[i] == TRANSFORM_NONE) {
- break;
- }
- //rsDebug("Transform adding transformation", transformTypes[i]);
- appendTransformation(data->transformTypes[i], data->transforms[i], localMat);
- }
- }
-
- //rsDebug("Transform checking parent", (int)0);
-
- if (parent) {
- if (parent->changed) {
- toChild.changed = 1;
-
- rsMatrixLoad(globalMat, parent->mat);
- rsMatrixMultiply(globalMat, localMat);
- }
- } else {
- rsMatrixLoad(globalMat, localMat);
- }
-
- //rsDebug("Transform calling self with child ", (int)data->children.p);
- if (data->children.p) {
- rsForEach(transformScript, data->children, data->children, (void*)&toChild, sizeof(toChild));
- }
-}
diff --git a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform_def.rsh b/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform_def.rsh
deleted file mode 100644
index 24a36c1..0000000
--- a/tests/RenderScriptTests/ModelViewer/src/com/android/modelviewer/transform_def.rsh
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.modelviewer)
-
-#define TRANSFORM_NONE 0
-#define TRANSFORM_TRANSLATE 1
-#define TRANSFORM_ROTATE 2
-#define TRANSFORM_SCALE 3
-
-typedef struct __attribute__((packed, aligned(4))) SgTransform {
- rs_matrix4x4 globalMat;
- rs_matrix4x4 localMat;
-
- float4 transforms[16];
- int transformTypes[16];
-
- int isDirty;
-
- rs_allocation children;
-
-} SgTransform;
diff --git a/tests/RenderScriptTests/PerfTest/Android.mk b/tests/RenderScriptTests/PerfTest/Android.mk
deleted file mode 100644
index e9ee771..0000000
--- a/tests/RenderScriptTests/PerfTest/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_JAVA_LIBRARIES := android.test.runner
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript
-
-LOCAL_SDK_VERSION := 17
-
-LOCAL_PACKAGE_NAME := PerfTest
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/PerfTest/AndroidManifest.xml b/tests/RenderScriptTests/PerfTest/AndroidManifest.xml
deleted file mode 100644
index cc60396..0000000
--- a/tests/RenderScriptTests/PerfTest/AndroidManifest.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.perftest">
-
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
- <uses-sdk android:minSdkVersion="11" />
- <application android:label="PerfTest"
- android:icon="@drawable/test_pattern">
- <uses-library android:name="android.test.runner" />
- <activity android:name="RsBench"
- android:label="RsBenchmark">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
- <instrumentation android:name=".RsPerfTestRunner"
- android:targetPackage="com.android.perftest"
- android:label="Test runner for RsBench tests"
- />
-</manifest>
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/checker.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/checker.png
deleted file mode 100644
index b631e1e..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/checker.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/data.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/data.png
deleted file mode 100644
index 8e34714..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/data.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/flares.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/flares.png
deleted file mode 100644
index 3a5c970..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/flares.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/globe.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/globe.png
deleted file mode 100644
index f9d6172..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/globe.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/leaf.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/leaf.png
deleted file mode 100644
index 3cd3775..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/leaf.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/light1.jpg b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/light1.jpg
deleted file mode 100644
index 2f2f10e..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/light1.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/space.jpg b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/space.jpg
deleted file mode 100644
index b61f6a3..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/space.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/test_pattern.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/torusmap.png b/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/torusmap.png
deleted file mode 100644
index 1e08f3b..0000000
--- a/tests/RenderScriptTests/PerfTest/res/drawable-nodpi/torusmap.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/menu/loader_menu.xml b/tests/RenderScriptTests/PerfTest/res/menu/loader_menu.xml
deleted file mode 100644
index 59a251d..0000000
--- a/tests/RenderScriptTests/PerfTest/res/menu/loader_menu.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@+id/benchmark_all"
- android:title="@string/benchmark_all" />
- <item android:id="@+id/benchmark_one"
- android:title="@string/benchmark_one" />
- <item android:id="@+id/debug_mode"
- android:title="@string/debug_mode" />
-</menu>
-
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/multitexf.glsl b/tests/RenderScriptTests/PerfTest/res/raw/multitexf.glsl
deleted file mode 100644
index e492a47..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/multitexf.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- vec2 t0 = varTex0.xy;
- lowp vec4 col0 = texture2D(UNI_Tex0, t0).rgba;
- lowp vec4 col1 = texture2D(UNI_Tex1, t0*4.0).rgba;
- lowp vec4 col2 = texture2D(UNI_Tex2, t0).rgba;
- col0.xyz = col0.xyz*col1.xyz*1.5;
- col0.xyz = mix(col0.xyz, col2.xyz, col2.w);
- col0.w = 0.5;
- gl_FragColor = col0;
-}
-
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shader2f.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shader2f.glsl
deleted file mode 100644
index 5fc05f1..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/shader2f.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(-varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = normalize(UNI_light0_Posision.xyz - varWorldPos);
- vec3 light0R = -reflect(light0Vec, worldNorm);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse;
- float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
- float light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular;
-
- vec3 light1Vec = normalize(UNI_light1_Posision.xyz - varWorldPos);
- vec3 light1R = reflect(light1Vec, worldNorm);
- float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse;
- float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
- float light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular;
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
- col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz);
- col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz;
- col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shader2movev.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shader2movev.glsl
deleted file mode 100644
index a2c807e..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/shader2movev.glsl
+++ /dev/null
@@ -1,21 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 objPos = ATTRIB_position;
- vec3 oldPos = objPos.xyz;
- objPos.xyz += 0.1*sin(objPos.xyz*2.0 + UNI_time);
- objPos.xyz += 0.05*sin(objPos.xyz*4.0 + UNI_time*0.5);
- objPos.xyz += 0.02*sin(objPos.xyz*7.0 + UNI_time*0.75);
- vec4 worldPos = UNI_model * objPos;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * (ATTRIB_normal + oldPos - objPos.xyz);
-
- varWorldPos = worldPos.xyz;
- varWorldNormal = worldNorm;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shader2v.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shader2v.glsl
deleted file mode 100644
index e6885a3..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/shader2v.glsl
+++ /dev/null
@@ -1,17 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 objPos = ATTRIB_position;
- vec4 worldPos = UNI_model * objPos;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * ATTRIB_normal;
-
- varWorldPos = worldPos.xyz;
- varWorldNormal = worldNorm;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shaderf.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shaderf.glsl
deleted file mode 100644
index d56e203..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/shaderf.glsl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-varying lowp float light0_Diffuse;
-varying lowp float light0_Specular;
-varying lowp float light1_Diffuse;
-varying lowp float light1_Specular;
-varying vec2 varTex0;
-
-void main() {
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
- col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz);
- col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz;
- col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/shaderv.glsl b/tests/RenderScriptTests/PerfTest/res/raw/shaderv.glsl
deleted file mode 100644
index f7d01de..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/shaderv.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-varying float light0_Diffuse;
-varying float light0_Specular;
-varying float light1_Diffuse;
-varying float light1_Specular;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 worldPos = UNI_model * ATTRIB_position;
- gl_Position = UNI_proj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * ATTRIB_normal;
- vec3 V = normalize(-worldPos.xyz);
-
- vec3 light0Vec = normalize(UNI_light0_Posision.xyz - worldPos.xyz);
- vec3 light0R = -reflect(light0Vec, worldNorm);
- light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse;
- float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
- light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular;
-
- vec3 light1Vec = normalize(UNI_light1_Posision.xyz - worldPos.xyz);
- vec3 light1R = reflect(light1Vec, worldNorm);
- light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse;
- float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
- light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular;
-
- gl_PointSize = 1.0;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/singletexf.glsl b/tests/RenderScriptTests/PerfTest/res/raw/singletexf.glsl
deleted file mode 100644
index 83dfc7f..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/singletexf.glsl
+++ /dev/null
@@ -1,8 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- lowp vec3 col0 = texture2D(UNI_Tex0, varTex0).rgb;
- gl_FragColor.xyz = col0;
- gl_FragColor.w = 0.5;
-}
-
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/singletexfm.glsl b/tests/RenderScriptTests/PerfTest/res/raw/singletexfm.glsl
deleted file mode 100644
index 656961c..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/singletexfm.glsl
+++ /dev/null
@@ -1,8 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- lowp vec3 col0 = texture2D(UNI_Tex0, varTex0).rgb;
- gl_FragColor.xyz = col0 * UNI_modulate.rgb;
- gl_FragColor.w = UNI_modulate.a;
-}
-
diff --git a/tests/RenderScriptTests/PerfTest/res/raw/torus.a3d b/tests/RenderScriptTests/PerfTest/res/raw/torus.a3d
deleted file mode 100644
index 0322b01..0000000
--- a/tests/RenderScriptTests/PerfTest/res/raw/torus.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/PerfTest/res/values/strings.xml b/tests/RenderScriptTests/PerfTest/res/values/strings.xml
deleted file mode 100644
index ce9819e..0000000
--- a/tests/RenderScriptTests/PerfTest/res/values/strings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <skip />
- <string name="benchmark_all">Benchmark All</string>
- <string name="benchmark_one">Benchmark One</string>
- <string name="debug_mode">Debug Mode</string>
-</resources>
-
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/FillTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/FillTest.java
deleted file mode 100644
index 41f664a..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/FillTest.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import android.os.Environment;
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-
-
-import android.util.Log;
-
-
-public class FillTest implements RsBenchBaseTest{
-
- private static final String TAG = "FillTest";
- private RenderScriptGL mRS;
- private Resources mRes;
-
- // Custom shaders
- private ProgramFragment mProgFragmentMultitex;
- private ProgramFragment mProgFragmentSingletex;
- private ProgramFragment mProgFragmentSingletexModulate;
- private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
- int mBenchmarkDimX;
- int mBenchmarkDimY;
-
- private ScriptC_fill_test mFillScript;
- ScriptField_TestScripts_s.Item[] mTests;
- ScriptField_FillTestFragData_s mFragData;
-
- private final String[] mNames = {
- "Fill screen 10x singletexture",
- "Fill screen 10x 3tex multitexture",
- "Fill screen 10x blended singletexture",
- "Fill screen 10x blended 3tex multitexture",
- "Fill screen 3x modulate blended singletexture",
- "Fill screen 1x modulate blended singletexture",
- };
-
- public FillTest() {
- mOptionsARGB.inScaled = false;
- mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888;
- mBenchmarkDimX = 1280;
- mBenchmarkDimY = 720;
- }
-
- void addTest(int index, int testId, int blend, int quadCount) {
- mTests[index] = new ScriptField_TestScripts_s.Item();
- mTests[index].testScript = mFillScript;
- mTests[index].testName = Allocation.createFromString(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
- mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
-
- ScriptField_FillTestData_s.Item dataItem = new ScriptField_FillTestData_s.Item();
- dataItem.testId = testId;
- dataItem.blend = blend;
- dataItem.quadCount = quadCount;
- ScriptField_FillTestData_s testData = new ScriptField_FillTestData_s(mRS, 1);
- testData.set(dataItem, 0, true);
- mTests[index].testData = testData.getAllocation();
- }
-
- public boolean init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initCustomShaders();
- initFillScript();
- mTests = new ScriptField_TestScripts_s.Item[mNames.length];
-
- int index = 0;
-
- addTest(index++, 1 /*testId*/, 0 /*blend*/, 10 /*quadCount*/);
- addTest(index++, 0 /*testId*/, 0 /*blend*/, 10 /*quadCount*/);
- addTest(index++, 1 /*testId*/, 1 /*blend*/, 10 /*quadCount*/);
- addTest(index++, 0 /*testId*/, 1 /*blend*/, 10 /*quadCount*/);
- addTest(index++, 2 /*testId*/, 1 /*blend*/, 3 /*quadCount*/);
- addTest(index++, 2 /*testId*/, 1 /*blend*/, 1 /*quadCount*/);
-
- return true;
- }
-
- public ScriptField_TestScripts_s.Item[] getTests() {
- return mTests;
- }
-
- public String[] getTestNames() {
- return mNames;
- }
-
- private void initCustomShaders() {
- ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.multitexf);
- for (int texCount = 0; texCount < 3; texCount ++) {
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- }
- mProgFragmentMultitex = pfbCustom.create();
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.singletexf);
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- mProgFragmentSingletex = pfbCustom.create();
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.singletexfm);
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- mFragData = new ScriptField_FillTestFragData_s(mRS, 1);
- pfbCustom.addConstant(mFragData.getType());
- mProgFragmentSingletexModulate = pfbCustom.create();
- mProgFragmentSingletexModulate.bindConstants(mFragData.getAllocation(), 0);
- }
-
- private Allocation loadTextureARGB(int id) {
- Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB);
- return Allocation.createFromBitmap(mRS, b,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private Allocation loadTextureRGB(int id) {
- return Allocation.createFromBitmapResource(mRS, mRes, id,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- void initFillScript() {
- mFillScript = new ScriptC_fill_test(mRS, mRes, R.raw.fill_test);
-
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertexFixedFunction progVertex = pvb.create();
- ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)progVertex).bindConstants(PVA);
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(mBenchmarkDimX, mBenchmarkDimY);
- PVA.setProjection(proj);
- mFillScript.set_gProgVertex(progVertex);
-
- mFillScript.set_gProgFragmentTexture(mProgFragmentSingletex);
- mFillScript.set_gProgFragmentTextureModulate(mProgFragmentSingletexModulate);
- mFillScript.set_gProgFragmentMultitex(mProgFragmentMultitex);
- mFillScript.set_gProgStoreBlendNone(ProgramStore.BLEND_NONE_DEPTH_NONE(mRS));
- mFillScript.set_gProgStoreBlendAlpha(ProgramStore.BLEND_ALPHA_DEPTH_NONE(mRS));
-
- mFillScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
- mFillScript.set_gLinearWrap(Sampler.WRAP_LINEAR(mRS));
- mFillScript.set_gTexTorus(loadTextureRGB(R.drawable.torusmap));
- mFillScript.set_gTexOpaque(loadTextureRGB(R.drawable.data));
- mFillScript.set_gTexTransparent(loadTextureARGB(R.drawable.leaf));
- mFillScript.set_gTexChecker(loadTextureRGB(R.drawable.checker));
-
- mFillScript.bind_gFragData(mFragData);
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/MeshTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/MeshTest.java
deleted file mode 100644
index cdb4435..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/MeshTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import android.os.Environment;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.renderscript.*;
-import android.renderscript.Element.DataKind;
-import android.renderscript.Element.DataType;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Program.TextureType;
-import android.renderscript.RenderScript.RSMessageHandler;
-import android.renderscript.Mesh.Primitive;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramVertexFixedFunction;
-
-import android.util.Log;
-
-
-public class MeshTest implements RsBenchBaseTest{
-
- private static final String TAG = "MeshTest";
- private RenderScriptGL mRS;
- private Resources mRes;
-
- int mBenchmarkDimX;
- int mBenchmarkDimY;
-
- private Mesh m10by10Mesh;
- private Mesh m100by100Mesh;
- private Mesh mWbyHMesh;
-
- private ScriptC_mesh_test mGeoScript;
-
- private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
-
- ScriptField_TestScripts_s.Item[] mTests;
-
- private final String[] mNames = {
- "Full screen mesh 10 by 10",
- "Full screen mesh 100 by 100",
- "Full screen mesh W / 4 by H / 4"
- };
-
- public MeshTest() {
- mBenchmarkDimX = 1280;
- mBenchmarkDimY = 720;
- }
-
- void addTest(int index, int meshNum) {
- mTests[index] = new ScriptField_TestScripts_s.Item();
- mTests[index].testScript = mGeoScript;
- mTests[index].testName = Allocation.createFromString(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
- mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
-
- ScriptField_MeshTestData_s.Item dataItem = new ScriptField_MeshTestData_s.Item();
- dataItem.meshNum = meshNum;
- ScriptField_MeshTestData_s testData = new ScriptField_MeshTestData_s(mRS, 1);
- testData.set(dataItem, 0, true);
- mTests[index].testData = testData.getAllocation();
- }
-
- public boolean init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initGeoScript();
- mTests = new ScriptField_TestScripts_s.Item[mNames.length];
-
- int index = 0;
- addTest(index++, 0 /*meshNum*/);
- addTest(index++, 1 /*meshNum*/);
- addTest(index++, 2 /*meshNum*/);
-
- return true;
- }
-
- public ScriptField_TestScripts_s.Item[] getTests() {
- return mTests;
- }
-
- public String[] getTestNames() {
- return mNames;
- }
-
- private Mesh getMbyNMesh(float width, float height, int wResolution, int hResolution) {
-
- Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS,
- 2, Mesh.TriangleMeshBuilder.TEXTURE_0);
-
- for (int y = 0; y <= hResolution; y++) {
- final float normalizedY = (float)y / hResolution;
- final float yOffset = (normalizedY - 0.5f) * height;
- for (int x = 0; x <= wResolution; x++) {
- float normalizedX = (float)x / wResolution;
- float xOffset = (normalizedX - 0.5f) * width;
- tmb.setTexture((float)x % 2, (float)y % 2);
- tmb.addVertex(xOffset, yOffset);
- }
- }
-
- for (int y = 0; y < hResolution; y++) {
- final int curY = y * (wResolution + 1);
- final int belowY = (y + 1) * (wResolution + 1);
- for (int x = 0; x < wResolution; x++) {
- int curV = curY + x;
- int belowV = belowY + x;
- tmb.addTriangle(curV, belowV, curV + 1);
- tmb.addTriangle(belowV, belowV + 1, curV + 1);
- }
- }
-
- return tmb.create(true);
- }
-
- private Allocation loadTextureRGB(int id) {
- return Allocation.createFromBitmapResource(mRS, mRes, id,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- void initGeoScript() {
- mGeoScript = new ScriptC_mesh_test(mRS, mRes, R.raw.mesh_test);
-
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertexFixedFunction progVertex = pvb.create();
- ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)progVertex).bindConstants(PVA);
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(mBenchmarkDimX, mBenchmarkDimY);
- PVA.setProjection(proj);
-
- mGeoScript.set_gProgVertex(progVertex);
- ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mGeoScript.set_gProgFragmentTexture(texBuilder.create());
- mGeoScript.set_gProgStoreBlendNone(ProgramStore.BLEND_NONE_DEPTH_NONE(mRS));
-
- mGeoScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
- mGeoScript.set_gTexOpaque(loadTextureRGB(R.drawable.data));
-
- m10by10Mesh = getMbyNMesh(mBenchmarkDimX, mBenchmarkDimY, 10, 10);
- m100by100Mesh = getMbyNMesh(mBenchmarkDimX, mBenchmarkDimY, 100, 100);
- mWbyHMesh= getMbyNMesh(mBenchmarkDimX, mBenchmarkDimY, mBenchmarkDimX/4, mBenchmarkDimY/4);
-
- mGeoScript.set_g10by10Mesh(m10by10Mesh);
- mGeoScript.set_g100by100Mesh(m100by100Mesh);
- mGeoScript.set_gWbyHMesh(mWbyHMesh);
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBench.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBench.java
deleted file mode 100644
index 0dceafe..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBench.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2008 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.perftest;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MenuInflater;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-import android.widget.Toast;
-
-import java.lang.Runtime;
-
-public class RsBench extends Activity {
- private final String TAG = "RsBench";
- public RsBenchView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- int iterations = 0;
- Intent intent = getIntent();
- Uri uri = intent.getData();
- if (uri != null) {
- // when lauched from instrumentation
- String scheme = uri.getScheme();
- if ("iterations".equals(scheme)) {
- iterations = Integer.parseInt(uri.getSchemeSpecificPart());
- }
- }
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new RsBenchView(this);
- setContentView(mView);
- mView.setLoops(iterations);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity loses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity loses focus
- super.onPause();
- mView.pause();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.loader_menu, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
- case R.id.benchmark_all:
- mView.setBenchmarkMode(-1);
- mView.suspendRendering(false);
- return true;
- case R.id.benchmark_one:
- mView.suspendRendering(true);
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Pick a Test");
- builder.setItems(mView.getTestNames(),
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int item) {
- Toast.makeText(getApplicationContext(),
- "Starting to benchmark: " + mView.getTestNames()[item],
- Toast.LENGTH_SHORT).show();
- mView.setBenchmarkMode(item);
- mView.suspendRendering(false);
- }
- });
- builder.show();
- return true;
- case R.id.debug_mode:
- mView.suspendRendering(true);
- AlertDialog.Builder debugBuilder = new AlertDialog.Builder(this);
- debugBuilder.setTitle("Pick a Test");
- debugBuilder.setItems(mView.getTestNames(),
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int item) {
- Toast.makeText(getApplicationContext(),
- "Switching to: " + mView.getTestNames()[item],
- Toast.LENGTH_SHORT).show();
- mView.setDebugMode(item);
- mView.suspendRendering(false);
- }
- });
- debugBuilder.show();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchRS.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchRS.java
deleted file mode 100644
index 4ac7dd5..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchRS.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2010-2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import java.io.Writer;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-
-import android.os.Environment;
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.Element.DataKind;
-import android.renderscript.Element.DataType;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Program.TextureType;
-import android.renderscript.RenderScript.RSMessageHandler;
-import android.renderscript.Sampler.Value;
-import android.renderscript.Mesh.Primitive;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramVertexFixedFunction;
-
-import android.util.Log;
-
-
-public class RsBenchRS {
-
- private static final String TAG = "RsBenchRS";
- int mWidth;
- int mHeight;
- int mLoops;
- int mCurrentLoop;
-
- int mBenchmarkDimX;
- int mBenchmarkDimY;
-
- public RsBenchRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res, int width, int height, int loops) {
- mRS = rs;
- mRes = res;
- mWidth = width;
- mHeight = height;
- mMode = 0;
- mLoops = loops;
- mCurrentLoop = 0;
- mBenchmarkDimX = 1280;
- mBenchmarkDimY = 720;
- initRS();
- }
-
- private boolean stopTest = false;
-
- private Resources mRes;
- private RenderScriptGL mRS;
-
- private ProgramStore mProgStoreBlendNone;
- private ProgramStore mProgStoreBlendAlpha;
-
- private ProgramFragment mProgFragmentTexture;
- private ProgramFragment mProgFragmentColor;
-
- private ProgramVertex mProgVertex;
- private ProgramVertexFixedFunction.Constants mPVA;
- private ProgramVertexFixedFunction.Constants mPvProjectionAlloc;
-
- private ScriptC_rsbench mScript;
-
- ScriptField_TestScripts_s.Item[] mIndividualTests;
-
- int mMode;
-
- String[] mTestNames;
- float[] mLocalTestResults;
-
- static Allocation createZeroTerminatedAlloc(RenderScript rs,
- String str,
- int usage) {
- byte[] allocArray = null;
- try {
- allocArray = str.getBytes("UTF-8");
- byte[] allocArrayZero = new byte[allocArray.length + 1];
- System.arraycopy(allocArray, 0, allocArrayZero, 0, allocArray.length);
- allocArrayZero[allocArrayZero.length - 1] = '\0';
- Allocation alloc = Allocation.createSized(rs, Element.U8(rs),
- allocArrayZero.length, usage);
- alloc.copyFrom(allocArrayZero);
- return alloc;
- }
- catch (Exception e) {
- throw new RSRuntimeException("Could not convert string to utf-8.");
- }
-
- }
-
- void appendTests(RsBenchBaseTest testSet) {
- ScriptField_TestScripts_s.Item[] newTests = testSet.getTests();
- if (mIndividualTests != null) {
- ScriptField_TestScripts_s.Item[] combined;
- combined = new ScriptField_TestScripts_s.Item[newTests.length + mIndividualTests.length];
- System.arraycopy(mIndividualTests, 0, combined, 0, mIndividualTests.length);
- System.arraycopy(newTests, 0, combined, mIndividualTests.length, newTests.length);
- mIndividualTests = combined;
- } else {
- mIndividualTests = newTests;
- }
-
- String[] newNames = testSet.getTestNames();
- if (mTestNames != null) {
- String[] combinedNames;
- combinedNames = new String[newNames.length + mTestNames.length];
- System.arraycopy(mTestNames, 0, combinedNames, 0, mTestNames.length);
- System.arraycopy(newNames, 0, combinedNames, mTestNames.length, newNames.length);
- mTestNames = combinedNames;
- } else {
- mTestNames = newNames;
- }
- }
-
- void createTestAllocation() {
- int numTests = mIndividualTests.length;
- mLocalTestResults = new float[numTests];
- ScriptField_TestScripts_s allTests;
- allTests = new ScriptField_TestScripts_s(mRS, numTests);
- for (int i = 0; i < numTests; i ++) {
- allTests.set(mIndividualTests[i], i, false);
- }
- allTests.copyAll();
- mScript.bind_gTestScripts(allTests);
- }
-
- private void saveTestResults() {
- String state = Environment.getExternalStorageState();
- if (!Environment.MEDIA_MOUNTED.equals(state)) {
- Log.v(TAG, "sdcard is read only");
- return;
- }
- File sdCard = Environment.getExternalStorageDirectory();
- if (!sdCard.canWrite()) {
- Log.v(TAG, "ssdcard is read only");
- return;
- }
-
- File resultFile = new File(sdCard, "rsbench_result" + mCurrentLoop + ".csv");
- resultFile.setWritable(true, false);
-
- try {
- BufferedWriter results = new BufferedWriter(new FileWriter(resultFile));
- for (int i = 0; i < mLocalTestResults.length; i ++) {
- results.write(mTestNames[i] + ", " + mLocalTestResults[i] + ",\n");
- }
- results.close();
- Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath());
- } catch (IOException e) {
- Log.v(TAG, "Unable to write result file " + e.getMessage());
- }
- }
-
- /**
- * Create a message handler to handle message sent from the script
- */
- protected RSMessageHandler mRsMessage = new RSMessageHandler() {
- public void run() {
- if (mID == mScript.get_RS_MSG_RESULTS_READY()) {
- for (int i = 0; i < mLocalTestResults.length; i ++) {
- mLocalTestResults[i] = Float.intBitsToFloat(mData[i]);
- }
- saveTestResults();
- if (mLoops > 0) {
- mCurrentLoop ++;
- mCurrentLoop = mCurrentLoop % mLoops;
- }
- return;
-
- } else if (mID == mScript.get_RS_MSG_TEST_DONE()) {
- synchronized(this) {
- stopTest = true;
- this.notifyAll();
- }
- return;
- } else {
- Log.v(TAG, "Perf test got unexpected message");
- return;
- }
- }
- };
-
- /**
- * Wait for message from the script
- */
- public boolean testIsFinished() {
- synchronized(this) {
- while (true) {
- if (stopTest) {
- return true;
- } else {
- try {
- this.wait(60*1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
-
- private void initProgramFragment() {
-
- ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mProgFragmentTexture = texBuilder.create();
- mProgFragmentTexture.bindSampler(Sampler.CLAMP_LINEAR(mRS), 0);
-
- ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- colBuilder.setVaryingColor(false);
- mProgFragmentColor = colBuilder.create();
-
- mScript.set_gProgFragmentTexture(mProgFragmentTexture);
- }
-
- private void initProgramVertex() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mProgVertex = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mProgVertex).bindConstants(mPVA);
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(mBenchmarkDimX, mBenchmarkDimY);
- mPVA.setProjection(proj);
-
- mScript.set_gProgVertex(mProgVertex);
- }
-
- private int strlen(byte[] array) {
- int count = 0;
- while(count < array.length && array[count] != 0) {
- count ++;
- }
- return count;
- }
-
- public void setDebugMode(int num) {
- mScript.invoke_setDebugMode(num);
- }
-
- public void setBenchmarkMode(int benchNum) {
- mScript.invoke_setBenchmarkMode(benchNum);
- }
-
- public void pause(boolean pause) {
- mScript.set_gPauseRendering(pause);
- }
-
- private void initRS() {
-
- mScript = new ScriptC_rsbench(mRS, mRes, R.raw.rsbench);
- mRS.bindRootScript(mScript);
-
- mRS.setMessageHandler(mRsMessage);
-
- mScript.set_gMaxLoops(mLoops);
-
- initProgramVertex();
- initProgramFragment();
- mScript.set_gFontSerif(Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8));
-
- Type.Builder b = new Type.Builder(mRS, Element.RGBA_8888(mRS));
- b.setX(mBenchmarkDimX).setY(mBenchmarkDimY);
- Allocation offscreen = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_GRAPHICS_TEXTURE |
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gRenderBufferColor(offscreen);
-
- b = new Type.Builder(mRS,
- Element.createPixel(mRS, DataType.UNSIGNED_16,
- DataKind.PIXEL_DEPTH));
- b.setX(mBenchmarkDimX).setY(mBenchmarkDimY);
- offscreen = Allocation.createTyped(mRS,
- b.create(),
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gRenderBufferDepth(offscreen);
- mScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
-
- RsBenchBaseTest test = new TextTest();
- if (test.init(mRS, mRes)) {
- appendTests(test);
- }
- test = new FillTest();
- if (test.init(mRS, mRes)) {
- appendTests(test);
- }
- test = new MeshTest();
- if (test.init(mRS, mRes)) {
- appendTests(test);
- }
- test = new TorusTest();
- if (test.init(mRS, mRes)) {
- appendTests(test);
- }
- test = new UiTest();
- if (test.init(mRS, mRes)) {
- appendTests(test);
- }
- createTestAllocation();
-
- mScript.set_gLoadComplete(true);
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchTest.java
deleted file mode 100644
index 199200b..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import android.app.Instrumentation;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.TouchUtils;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-
-/**
- * To run the test, please use command
- *
- * adb shell am instrument -w com.android.perftest/.RsPerfTestRunner
- *
- */
-public class RsBenchTest extends ActivityInstrumentationTestCase2<RsBench> {
- private String TAG = "RsBenchTest";
- private int iterations = 0;
- private RsBench mAct;
-
- public RsBenchTest() {
- super(RsBench.class);
- }
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- Instrumentation mInst = getInstrumentation();
- RsPerfTestRunner mRunner = (RsPerfTestRunner) getInstrumentation();
- iterations = mRunner.iterations;
- Log.v(TAG, "Run benchmark for " + iterations + " iterations.");
-
- Uri data = Uri.fromParts("iterations", Integer.toString(iterations), null);
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setClassName("com.android.perftest", "com.android.perftest.RsBench");
- intent.setData(data);
- mAct = (RsBench) mInst.startActivitySync(intent);
- mInst.waitForIdleSync();
-
- }
-
- @Override
- public void tearDown() throws Exception {
- mAct.finish();
- super.tearDown();
- }
-
- /**
- * Run tests and wait until the test has been run for iterations.
- */
- @LargeTest
- public void testRsBench() {
- if (mAct.mView.testIsFinished()) {
- return;
- } else {
- fail("test didn't stop correctly");
- }
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchView.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchView.java
deleted file mode 100644
index 124071e..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchView.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2008 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.perftest;
-
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-import android.renderscript.RenderScript.RSMessageHandler;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-public class RsBenchView extends RSSurfaceView {
-
- public RsBenchView(Context context) {
- super(context);
- }
-
- private RenderScriptGL mRS;
- private RsBenchRS mRender;
- private int mLoops = 0;
-
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRS.setSurface(holder, w, h);
- mRender = new RsBenchRS();
- Log.v("RsBenchView", "mLoops = " + mLoops);
- mRender.init(mRS, getResources(), w, h, mLoops);
- }
- }
-
- @Override
- protected void onDetachedFromWindow() {
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- /**
- * Set the total number of loops the benchmark tests will run
- * before the test results are collected.
- */
- public void setLoops(int iterations) {
- if (iterations > 0) {
- mLoops = iterations;
- }
- }
-
- /**
- * Wait for message from the script
- */
- public boolean testIsFinished() {
- return mRender.testIsFinished();
- }
-
- void setBenchmarkMode(int benchNum) {
- mRender.setBenchmarkMode(benchNum);
- }
-
- void suspendRendering(boolean pause) {
- mRender.pause(pause);
- }
-
- void setDebugMode(int num) {
- mRender.setDebugMode(num);
- }
-
- String[] getTestNames() {
- return mRender.mTestNames;
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsPerfTestRunner.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsPerfTestRunner.java
deleted file mode 100644
index 031af6a..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsPerfTestRunner.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-//import com.android.perftest.RsBenchTest;
-
-import android.os.Bundle;
-import android.test.InstrumentationTestRunner;
-import android.test.InstrumentationTestSuite;
-
-import junit.framework.TestSuite;
-
-/**
- * Run the RenderScript Performance Test
- * adb shell am instrument -w com.android.perftest/.RsPerfTestRunner
- *
- * with specified iterations:
- * adb shell am instrument -e iterations <n> -w com.android.perftest/.RsPerfTestRunner
- *
- */
-public class RsPerfTestRunner extends InstrumentationTestRunner {
- public int iterations = 10;
-
- @Override
- public TestSuite getAllTests() {
- TestSuite suite = new InstrumentationTestSuite(this);
- suite.addTestSuite(RsBenchTest.class);
- return suite;
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- String strValue = (String)icicle.get("iterations");
- if (strValue != null) {
- int intValue = Integer.parseInt(strValue);
- if (iterations > 0) {
- iterations = intValue;
- }
- }
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TextTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TextTest.java
deleted file mode 100644
index 3ca2792..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TextTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import android.os.Environment;
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.DisplayMetrics;
-
-import android.util.Log;
-
-
-public class TextTest implements RsBenchBaseTest{
-
- private static final String TAG = "TextTest";
- private RenderScriptGL mRS;
- private Resources mRes;
-
- private ScriptC_text_test mTextScript;
- ScriptField_TestScripts_s.Item[] mTests;
-
- private final String[] mNames = {
- "Fill screen with text 1 time",
- "Fill screen with text 3 times",
- "Fill screen with text 5 times"
- };
-
- public TextTest() {
- }
-
- void addTest(int index, int fillNum) {
- mTests[index] = new ScriptField_TestScripts_s.Item();
- mTests[index].testScript = mTextScript;
- mTests[index].testName = Allocation.createFromString(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
- mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
-
- ScriptField_TextTestData_s.Item dataItem = new ScriptField_TextTestData_s.Item();
- dataItem.fillNum = fillNum;
- ScriptField_TextTestData_s testData = new ScriptField_TextTestData_s(mRS, 1);
- testData.set(dataItem, 0, true);
- mTests[index].testData = testData.getAllocation();
- }
-
- public boolean init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initTextScript();
- mTests = new ScriptField_TestScripts_s.Item[mNames.length];
-
- int index = 0;
- addTest(index++, 1 /*fillNum*/);
- addTest(index++, 3 /*fillNum*/);
- addTest(index++, 5 /*fillNum*/);
-
- return true;
- }
-
- public ScriptField_TestScripts_s.Item[] getTests() {
- return mTests;
- }
-
- public String[] getTestNames() {
- return mNames;
- }
-
- void initTextScript() {
- DisplayMetrics metrics = mRes.getDisplayMetrics();
-
- mTextScript = new ScriptC_text_test(mRS, mRes, R.raw.text_test);
- mTextScript.set_gFontSans(Font.create(mRS, mRes, "sans-serif",
- Font.Style.NORMAL, 8.0f / metrics.density));
- mTextScript.set_gFontSerif(Font.create(mRS, mRes, "serif",
- Font.Style.NORMAL, 8.0f / metrics.density));
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TorusTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TorusTest.java
deleted file mode 100644
index 5c9ecd5..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/TorusTest.java
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import android.os.Environment;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.renderscript.*;
-import android.renderscript.Element.DataKind;
-import android.renderscript.Element.DataType;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Program.TextureType;
-import android.renderscript.RenderScript.RSMessageHandler;
-import android.renderscript.Mesh.Primitive;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramVertexFixedFunction;
-
-import android.util.Log;
-
-
-public class TorusTest implements RsBenchBaseTest{
-
- private static final String TAG = "TorusTest";
- private RenderScriptGL mRS;
- private Resources mRes;
-
- private ProgramStore mProgStoreBlendNoneDepth;
- private ProgramStore mProgStoreBlendNone;
- private ProgramStore mProgStoreBlendAlpha;
-
- private ProgramFragment mProgFragmentTexture;
- private ProgramFragment mProgFragmentColor;
-
- private ProgramVertex mProgVertex;
- private ProgramVertexFixedFunction.Constants mPVA;
- private ProgramVertexFixedFunction.Constants mPvProjectionAlloc;
-
- // Custom shaders
- private ProgramVertex mProgVertexCustom;
- private ProgramFragment mProgFragmentCustom;
- private ProgramFragment mProgFragmentMultitex;
- private ProgramVertex mProgVertexPixelLight;
- private ProgramVertex mProgVertexPixelLightMove;
- private ProgramFragment mProgFragmentPixelLight;
- private ScriptField_VertexShaderConstants_s mVSConst;
- private ScriptField_FragentShaderConstants_s mFSConst;
- private ScriptField_VertexShaderConstants3_s mVSConstPixel;
- private ScriptField_FragentShaderConstants3_s mFSConstPixel;
-
- private Allocation mTexTorus;
- private Mesh mTorus;
-
- private ScriptC_torus_test mTorusScript;
-
- private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
-
- ScriptField_TestScripts_s.Item[] mTests;
-
- private final String[] mNames = {
- "Geo test 25.6k flat color",
- "Geo test 51.2k flat color",
- "Geo test 204.8k small tries flat color",
- "Geo test 25.6k single texture",
- "Geo test 51.2k single texture",
- "Geo test 204.8k small tries single texture",
- "Geo test 25.6k geo heavy vertex",
- "Geo test 51.2k geo heavy vertex",
- "Geo test 204.8k geo raster load heavy vertex",
- "Geo test 25.6k heavy fragment",
- "Geo test 51.2k heavy fragment",
- "Geo test 204.8k small tries heavy fragment",
- "Geo test 25.6k heavy fragment heavy vertex",
- "Geo test 51.2k heavy fragment heavy vertex",
- "Geo test 204.8k small tries heavy fragment heavy vertex"
- };
-
- public TorusTest() {
- }
-
- void addTest(int index, int testId, int user1, int user2) {
- mTests[index] = new ScriptField_TestScripts_s.Item();
- mTests[index].testScript = mTorusScript;
- mTests[index].testName = Allocation.createFromString(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
- mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
-
- ScriptField_TorusTestData_s.Item dataItem = new ScriptField_TorusTestData_s.Item();
- dataItem.testId = testId;
- dataItem.user1 = user1;
- dataItem.user2 = user2;
- ScriptField_TorusTestData_s testData = new ScriptField_TorusTestData_s(mRS, 1);
- testData.set(dataItem, 0, true);
- mTests[index].testData = testData.getAllocation();
- }
-
- public boolean init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initCustomShaders();
- loadImages();
- initMesh();
- initTorusScript();
- mTests = new ScriptField_TestScripts_s.Item[mNames.length];
-
- int index = 0;
- addTest(index++, 0, 0 /*useTexture*/, 1 /*numMeshes*/);
- addTest(index++, 0, 0 /*useTexture*/, 2 /*numMeshes*/);
- addTest(index++, 0, 0 /*useTexture*/, 8 /*numMeshes*/);
- addTest(index++, 0, 1 /*useTexture*/, 1 /*numMeshes*/);
- addTest(index++, 0, 1 /*useTexture*/, 2 /*numMeshes*/);
- addTest(index++, 0, 1 /*useTexture*/, 8 /*numMeshes*/);
-
- // Secont test
- addTest(index++, 1, 1 /*numMeshes*/, 0 /*unused*/);
- addTest(index++, 1, 2 /*numMeshes*/, 0 /*unused*/);
- addTest(index++, 1, 8 /*numMeshes*/, 0 /*unused*/);
-
- // Third test
- addTest(index++, 2, 1 /*numMeshes*/, 0 /*heavyVertex*/);
- addTest(index++, 2, 2 /*numMeshes*/, 0 /*heavyVertex*/);
- addTest(index++, 2, 8 /*numMeshes*/, 0 /*heavyVertex*/);
- addTest(index++, 2, 1 /*numMeshes*/, 1 /*heavyVertex*/);
- addTest(index++, 2, 2 /*numMeshes*/, 1 /*heavyVertex*/);
- addTest(index++, 2, 8 /*numMeshes*/, 1 /*heavyVertex*/);
-
- return true;
- }
-
- public ScriptField_TestScripts_s.Item[] getTests() {
- return mTests;
- }
-
- public String[] getTestNames() {
- return mNames;
- }
-
- private void initCustomShaders() {
- mVSConst = new ScriptField_VertexShaderConstants_s(mRS, 1);
- mFSConst = new ScriptField_FragentShaderConstants_s(mRS, 1);
-
- mVSConstPixel = new ScriptField_VertexShaderConstants3_s(mRS, 1);
- mFSConstPixel = new ScriptField_FragentShaderConstants3_s(mRS, 1);
-
- // Initialize the shader builder
- ProgramVertex.Builder pvbCustom = new ProgramVertex.Builder(mRS);
- // Specify the resource that contains the shader string
- pvbCustom.setShader(mRes, R.raw.shaderv);
- // Use a script field to specify the input layout
- pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
- // Define the constant input layout
- pvbCustom.addConstant(mVSConst.getAllocation().getType());
- mProgVertexCustom = pvbCustom.create();
- // Bind the source of constant data
- mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0);
-
- ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS);
- // Specify the resource that contains the shader string
- pfbCustom.setShader(mRes, R.raw.shaderf);
- // Tell the builder how many textures we have
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- // Define the constant input layout
- pfbCustom.addConstant(mFSConst.getAllocation().getType());
- mProgFragmentCustom = pfbCustom.create();
- // Bind the source of constant data
- mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0);
-
- pvbCustom = new ProgramVertex.Builder(mRS);
- pvbCustom.setShader(mRes, R.raw.shader2v);
- pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
- pvbCustom.addConstant(mVSConstPixel.getAllocation().getType());
- mProgVertexPixelLight = pvbCustom.create();
- mProgVertexPixelLight.bindConstants(mVSConstPixel.getAllocation(), 0);
-
- pvbCustom = new ProgramVertex.Builder(mRS);
- pvbCustom.setShader(mRes, R.raw.shader2movev);
- pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
- pvbCustom.addConstant(mVSConstPixel.getAllocation().getType());
- mProgVertexPixelLightMove = pvbCustom.create();
- mProgVertexPixelLightMove.bindConstants(mVSConstPixel.getAllocation(), 0);
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.shader2f);
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- pfbCustom.addConstant(mFSConstPixel.getAllocation().getType());
- mProgFragmentPixelLight = pfbCustom.create();
- mProgFragmentPixelLight.bindConstants(mFSConstPixel.getAllocation(), 0);
-
- pfbCustom = new ProgramFragment.Builder(mRS);
- pfbCustom.setShader(mRes, R.raw.multitexf);
- for (int texCount = 0; texCount < 3; texCount ++) {
- pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
- }
- mProgFragmentMultitex = pfbCustom.create();
-
- ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- colBuilder.setVaryingColor(false);
- mProgFragmentColor = colBuilder.create();
-
- ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mProgFragmentTexture = texBuilder.create();
-
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mProgVertex = pvb.create();
- ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)mProgVertex).bindConstants(PVA);
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(1280, 720);
- PVA.setProjection(proj);
- }
-
- private Allocation loadTextureRGB(int id) {
- return Allocation.createFromBitmapResource(mRS, mRes, id,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private void loadImages() {
- mTexTorus = loadTextureRGB(R.drawable.torusmap);
- }
-
- private void initMesh() {
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.torus);
- FileA3D.IndexEntry entry = model.getIndexEntry(0);
- if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) {
- Log.e("rs", "could not load model");
- } else {
- mTorus = (Mesh)entry.getObject();
- }
- }
-
- void initTorusScript() {
- mTorusScript = new ScriptC_torus_test(mRS, mRes, R.raw.torus_test);
- mTorusScript.set_gCullFront(ProgramRaster.CULL_FRONT(mRS));
- mTorusScript.set_gCullBack(ProgramRaster.CULL_BACK(mRS));
- mTorusScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
- mTorusScript.set_gTorusMesh(mTorus);
- mTorusScript.set_gTexTorus(mTexTorus);
- mTorusScript.set_gProgVertexCustom(mProgVertexCustom);
- mTorusScript.set_gProgFragmentCustom(mProgFragmentCustom);
- mTorusScript.set_gProgVertexPixelLight(mProgVertexPixelLight);
- mTorusScript.set_gProgVertexPixelLightMove(mProgVertexPixelLightMove);
- mTorusScript.set_gProgFragmentPixelLight(mProgFragmentPixelLight);
- mTorusScript.bind_gVSConstPixel(mVSConstPixel);
- mTorusScript.bind_gFSConstPixel(mFSConstPixel);
- mTorusScript.bind_gVSConstants(mVSConst);
- mTorusScript.bind_gFSConstants(mFSConst);
- mTorusScript.set_gProgVertex(mProgVertex);
- mTorusScript.set_gProgFragmentTexture(mProgFragmentTexture);
- mTorusScript.set_gProgFragmentColor(mProgFragmentColor);
- mTorusScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth);
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/UiTest.java b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/UiTest.java
deleted file mode 100644
index c8b58b2..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/UiTest.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.perftest;
-
-import android.os.Environment;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.renderscript.*;
-import android.renderscript.Element.DataKind;
-import android.renderscript.Element.DataType;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.renderscript.ProgramStore.BlendSrcFunc;
-import android.renderscript.ProgramStore.BlendDstFunc;
-import android.renderscript.RenderScript.RSMessageHandler;
-import android.renderscript.Mesh.Primitive;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramVertexFixedFunction;
-
-import android.util.Log;
-
-
-public class UiTest implements RsBenchBaseTest{
-
- private static final String TAG = "UiTest";
- private static final String SAMPLE_TEXT = "Bench Test";
- private static final String LIST_TEXT =
- "This is a sample list of text to show in the list view";
- private static int PARTICLES_COUNT = 12000;
-
- private RenderScriptGL mRS;
- private Resources mRes;
-
- Font mFontSans;
-
- private ScriptField_ListAllocs_s mTextureAllocs;
- private ScriptField_ListAllocs_s mSampleTextAllocs;
- private ScriptField_ListAllocs_s mSampleListViewAllocs;
- private ScriptField_VpConsts mPvStarAlloc;
- private ProgramVertexFixedFunction.Constants mPvProjectionAlloc;
-
- private Mesh mSingleMesh;
- private Mesh mParticlesMesh;
-
- private ScriptC_ui_test mUiScript;
-
- private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
-
- ScriptField_TestScripts_s.Item[] mTests;
-
- private final String[] mNames = {
- "UI test with icon display 10 by 10",
- "UI test with icon display 100 by 100",
- "UI test with image and text display 3 pages",
- "UI test with image and text display 5 pages",
- "UI test with list view",
- "UI test with live wallpaper"
- };
-
- public UiTest() {
- }
-
- void addTest(int index, int testId, int user1, int user2, int user3) {
- mTests[index] = new ScriptField_TestScripts_s.Item();
- mTests[index].testScript = mUiScript;
- mTests[index].testName = Allocation.createFromString(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
- mTests[index].debugName = RsBenchRS.createZeroTerminatedAlloc(mRS,
- mNames[index],
- Allocation.USAGE_SCRIPT);
-
- ScriptField_UiTestData_s.Item dataItem = new ScriptField_UiTestData_s.Item();
- dataItem.testId = testId;
- dataItem.user1 = user1;
- dataItem.user2 = user2;
- dataItem.user3 = user3;
- ScriptField_UiTestData_s testData = new ScriptField_UiTestData_s(mRS, 1);
- testData.set(dataItem, 0, true);
- mTests[index].testData = testData.getAllocation();
- }
-
- public boolean init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- mFontSans = Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8);
- mSingleMesh = getSingleMesh(1, 1); // a unit size mesh
-
- initUiScript();
- mTests = new ScriptField_TestScripts_s.Item[mNames.length];
-
- int index = 0;
-
- addTest(index++, 0, 0 /*meshMode*/, 0 /*unused*/, 0 /*unused*/);
- addTest(index++, 0, 1 /*meshMode*/, 0 /*unused*/, 0 /*unused*/);
- addTest(index++, 1, 7 /*wResolution*/, 5 /*hResolution*/, 0 /*meshMode*/);
- addTest(index++, 1, 7 /*wResolution*/, 5 /*hResolution*/, 1 /*meshMode*/);
- addTest(index++, 2, 0 /*unused*/, 0 /*unused*/, 0 /*unused*/);
- addTest(index++, 3, 7 /*wResolution*/, 5 /*hResolution*/, 0 /*unused*/);
-
- return true;
- }
-
- public ScriptField_TestScripts_s.Item[] getTests() {
- return mTests;
- }
-
- public String[] getTestNames() {
- return mNames;
- }
-
- private Allocation loadTextureRGB(int id) {
- return Allocation.createFromBitmapResource(mRS, mRes, id,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private Allocation loadTextureARGB(int id) {
- Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB);
- return Allocation.createFromBitmap(mRS, b,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private void createParticlesMesh() {
- ScriptField_Particle p = new ScriptField_Particle(mRS, PARTICLES_COUNT);
-
- final Mesh.AllocationBuilder meshBuilder = new Mesh.AllocationBuilder(mRS);
- meshBuilder.addVertexAllocation(p.getAllocation());
- final int vertexSlot = meshBuilder.getCurrentVertexTypeIndex();
- meshBuilder.addIndexSetType(Primitive.POINT);
- mParticlesMesh = meshBuilder.create();
-
- mUiScript.set_gParticlesMesh(mParticlesMesh);
- mUiScript.bind_Particles(p);
- }
-
- /**
- * Create a mesh with a single quad for the given width and height.
- */
- private Mesh getSingleMesh(float width, float height) {
- Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS,
- 2, Mesh.TriangleMeshBuilder.TEXTURE_0);
- float xOffset = width/2;
- float yOffset = height/2;
- tmb.setTexture(0, 0);
- tmb.addVertex(-1.0f * xOffset, -1.0f * yOffset);
- tmb.setTexture(1, 0);
- tmb.addVertex(xOffset, -1.0f * yOffset);
- tmb.setTexture(1, 1);
- tmb.addVertex(xOffset, yOffset);
- tmb.setTexture(0, 1);
- tmb.addVertex(-1.0f * xOffset, yOffset);
- tmb.addTriangle(0, 3, 1);
- tmb.addTriangle(1, 3, 2);
- return tmb.create(true);
- }
-
- private Matrix4f getProjectionNormalized(int w, int h) {
- // range -1,1 in the narrow axis at z = 0.
- Matrix4f m1 = new Matrix4f();
- Matrix4f m2 = new Matrix4f();
-
- if(w > h) {
- float aspect = ((float)w) / h;
- m1.loadFrustum(-aspect,aspect, -1,1, 1,100);
- } else {
- float aspect = ((float)h) / w;
- m1.loadFrustum(-1,1, -aspect,aspect, 1,100);
- }
-
- m2.loadRotate(180, 0, 1, 0);
- m1.loadMultiply(m1, m2);
-
- m2.loadScale(-2, 2, 1);
- m1.loadMultiply(m1, m2);
-
- m2.loadTranslate(0, 0, 2);
- m1.loadMultiply(m1, m2);
- return m1;
- }
-
- private void updateProjectionMatrices() {
- Matrix4f projNorm = getProjectionNormalized(1280, 720);
- ScriptField_VpConsts.Item i = new ScriptField_VpConsts.Item();
- i.Proj = projNorm;
- i.MVP = projNorm;
- mPvStarAlloc.set(i, 0, true);
- mPvProjectionAlloc.setProjection(projNorm);
- }
-
- void initUiScript() {
- mUiScript = new ScriptC_ui_test(mRS, mRes, R.raw.ui_test);
-
- ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- colBuilder.setVaryingColor(false);
- ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
- texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
-
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertexFixedFunction progVertex = pvb.create();
- ProgramVertexFixedFunction.Constants PVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)progVertex).bindConstants(PVA);
- Matrix4f proj = new Matrix4f();
- proj.loadOrthoWindow(1280, 720);
- PVA.setProjection(proj);
-
- mUiScript.set_gProgVertex(progVertex);
- mUiScript.set_gProgFragmentColor(colBuilder.create());
- mUiScript.set_gProgFragmentTexture(texBuilder.create());
- mUiScript.set_gProgStoreBlendAlpha(ProgramStore.BLEND_ALPHA_DEPTH_NONE(mRS));
-
- mUiScript.set_gLinearClamp(Sampler.CLAMP_LINEAR(mRS));
-
- mUiScript.set_gTexTorus(loadTextureRGB(R.drawable.torusmap));
- mUiScript.set_gTexOpaque(loadTextureRGB(R.drawable.data));
- mUiScript.set_gTexGlobe(loadTextureRGB(R.drawable.globe));
- mUiScript.set_gSingleMesh(mSingleMesh);
-
- // For GALAXY
- ProgramStore.Builder psb = new ProgramStore.Builder(mRS);
- psb.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ZERO);
- mRS.bindProgramStore(psb.create());
-
- psb.setBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE);
- mUiScript.set_gPSLights(psb.create());
-
- // For Galaxy live wallpaper drawing
- ProgramFragmentFixedFunction.Builder builder = new ProgramFragmentFixedFunction.Builder(mRS);
- builder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGB, 0);
- ProgramFragment pfb = builder.create();
- pfb.bindSampler(Sampler.WRAP_NEAREST(mRS), 0);
- mUiScript.set_gPFBackground(pfb);
-
- builder = new ProgramFragmentFixedFunction.Builder(mRS);
- builder.setPointSpriteTexCoordinateReplacement(true);
- builder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.MODULATE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- builder.setVaryingColor(true);
- ProgramFragment pfs = builder.create();
- pfs.bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS), 0);
- mUiScript.set_gPFStars(pfs);
-
- mTextureAllocs = new ScriptField_ListAllocs_s(mRS, 100);
- for (int i = 0; i < 100; i++) {
- ScriptField_ListAllocs_s.Item texElem = new ScriptField_ListAllocs_s.Item();
- texElem.item = loadTextureRGB(R.drawable.globe);
- mTextureAllocs.set(texElem, i, false);
- }
- mTextureAllocs.copyAll();
- mUiScript.bind_gTexList100(mTextureAllocs);
-
- mSampleTextAllocs = new ScriptField_ListAllocs_s(mRS, 100);
- for (int i = 0; i < 100; i++) {
- ScriptField_ListAllocs_s.Item textElem = new ScriptField_ListAllocs_s.Item();
- textElem.item = Allocation.createFromString(mRS, SAMPLE_TEXT, Allocation.USAGE_SCRIPT);
- mSampleTextAllocs.set(textElem, i, false);
- }
- mSampleTextAllocs.copyAll();
- mUiScript.bind_gSampleTextList100(mSampleTextAllocs);
-
- mSampleListViewAllocs = new ScriptField_ListAllocs_s(mRS, 1000);
- for (int i = 0; i < 1000; i++) {
- ScriptField_ListAllocs_s.Item textElem = new ScriptField_ListAllocs_s.Item();
- textElem.item = Allocation.createFromString(mRS, LIST_TEXT, Allocation.USAGE_SCRIPT);
- mSampleListViewAllocs.set(textElem, i, false);
- }
- mSampleListViewAllocs.copyAll();
- mUiScript.bind_gListViewText(mSampleListViewAllocs);
-
- // For galaxy live wallpaper
- mPvStarAlloc = new ScriptField_VpConsts(mRS, 1);
- mUiScript.bind_vpConstants(mPvStarAlloc);
- mPvProjectionAlloc = new ProgramVertexFixedFunction.Constants(mRS);
- updateProjectionMatrices();
-
- pvb = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertex pvbp = pvb.create();
- ((ProgramVertexFixedFunction)pvbp).bindConstants(mPvProjectionAlloc);
- mUiScript.set_gPVBkProj(pvbp);
-
- createParticlesMesh();
-
- ProgramVertex.Builder sb = new ProgramVertex.Builder(mRS);
- String t = "varying vec4 varColor;\n" +
- "varying vec2 varTex0;\n" +
- "void main() {\n" +
- " float dist = ATTRIB_position.y;\n" +
- " float angle = ATTRIB_position.x;\n" +
- " float x = dist * sin(angle);\n" +
- " float y = dist * cos(angle) * 0.892;\n" +
- " float p = dist * 5.5;\n" +
- " float s = cos(p);\n" +
- " float t = sin(p);\n" +
- " vec4 pos;\n" +
- " pos.x = t * x + s * y;\n" +
- " pos.y = s * x - t * y;\n" +
- " pos.z = ATTRIB_position.z;\n" +
- " pos.w = 1.0;\n" +
- " gl_Position = UNI_MVP * pos;\n" +
- " gl_PointSize = ATTRIB_color.a * 10.0;\n" +
- " varColor.rgb = ATTRIB_color.rgb;\n" +
- " varColor.a = 1.0;\n" +
- "}\n";
- sb.setShader(t);
- sb.addInput(mParticlesMesh.getVertexAllocation(0).getType().getElement());
- sb.addConstant(mPvStarAlloc.getType());
- ProgramVertex pvs = sb.create();
- pvs.bindConstants(mPvStarAlloc.getAllocation(), 0);
- mUiScript.set_gPVStars(pvs);
-
- // For Galaxy live wallpaper
- mUiScript.set_gTSpace(loadTextureRGB(R.drawable.space));
- mUiScript.set_gTLight1(loadTextureRGB(R.drawable.light1));
- mUiScript.set_gTFlares(loadTextureARGB(R.drawable.flares));
-
- mUiScript.set_gFontSans(mFontSans);
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/fill_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/fill_test.rs
deleted file mode 100644
index 281f830..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/fill_test.rs
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-#include "rs_graphics.rsh"
-#include "subtest_def.rsh"
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentTexture;
-rs_program_fragment gProgFragmentTextureModulate;
-rs_program_fragment gProgFragmentMultitex;
-
-rs_program_store gProgStoreBlendNone;
-rs_program_store gProgStoreBlendAlpha;
-
-rs_allocation gTexOpaque;
-rs_allocation gTexTorus;
-rs_allocation gTexTransparent;
-rs_allocation gTexChecker;
-
-rs_sampler gLinearClamp;
-rs_sampler gLinearWrap;
-
-typedef struct FillTestData_s {
- int testId;
- int blend;
- int quadCount;
-} FillTestData;
-FillTestData *gData;
-
-typedef struct FillTestFragData_s {
- float4 modulate;
-} FillTestFragData;
-FillTestFragData *gFragData;
-
-static float gDt = 0.0f;
-
-void init() {
-}
-
-static int gRenderSurfaceW = 1280;
-static int gRenderSurfaceH = 720;
-
-static void bindProgramVertexOrtho() {
- // Default vertex shader
- rsgBindProgramVertex(gProgVertex);
- // Setup the projection matrix
- rs_matrix4x4 proj;
- rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-}
-
-static void displaySingletexFill(bool blend, int quadCount, bool modulate) {
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- if (!blend) {
- rsgBindProgramStore(gProgStoreBlendNone);
- } else {
- rsgBindProgramStore(gProgStoreBlendAlpha);
- }
- if (modulate) {
- rsgBindProgramFragment(gProgFragmentTextureModulate);
- rsgBindSampler(gProgFragmentTextureModulate, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTextureModulate, 0, gTexOpaque);
-
- gFragData->modulate.r = 0.8f;
- gFragData->modulate.g = 0.7f;
- gFragData->modulate.b = 0.8f;
- gFragData->modulate.a = 0.5f;
- rsgAllocationSyncAll(rsGetAllocation(gFragData));
- } else {
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
- }
-
- for (int i = 0; i < quadCount; i ++) {
- float startX = 5 * i, startY = 5 * i;
- float width = gRenderSurfaceW - startX, height = gRenderSurfaceH - startY;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1,
- startX + width, startY + height, 0, 1, 1,
- startX + width, startY, 0, 1, 0);
- }
-}
-
-static void displayMultitextureSample(bool blend, int quadCount) {
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- if (!blend) {
- rsgBindProgramStore(gProgStoreBlendNone);
- } else {
- rsgBindProgramStore(gProgStoreBlendAlpha);
- }
- rsgBindProgramFragment(gProgFragmentMultitex);
- rsgBindSampler(gProgFragmentMultitex, 0, gLinearClamp);
- rsgBindSampler(gProgFragmentMultitex, 1, gLinearWrap);
- rsgBindSampler(gProgFragmentMultitex, 2, gLinearClamp);
- rsgBindTexture(gProgFragmentMultitex, 0, gTexChecker);
- rsgBindTexture(gProgFragmentMultitex, 1, gTexTorus);
- rsgBindTexture(gProgFragmentMultitex, 2, gTexTransparent);
-
- for (int i = 0; i < quadCount; i ++) {
- float startX = 10 * i, startY = 10 * i;
- float width = gRenderSurfaceW - startX, height = gRenderSurfaceH - startY;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
- startX, startY + height, 0, 0, 1,
- startX + width, startY + height, 0, 1, 1,
- startX + width, startY, 0, 1, 0);
- }
-}
-
-
-void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
- TestData *testData = (TestData*)usrData;
- gRenderSurfaceW = testData->renderSurfaceW;
- gRenderSurfaceH = testData->renderSurfaceH;
- gDt = testData->dt;
-
- gData = (FillTestData*)v_in;
-
- switch(gData->testId) {
- case 0:
- displayMultitextureSample(gData->blend == 1 ? true : false, gData->quadCount);
- break;
- case 1:
- displaySingletexFill(gData->blend == 1 ? true : false, gData->quadCount, false);
- break;
- case 2:
- displaySingletexFill(gData->blend == 1 ? true : false, gData->quadCount, true);
- break;
- default:
- rsDebug("Wrong test number", 0);
- break;
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/mesh_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/mesh_test.rs
deleted file mode 100644
index d7e4857..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/mesh_test.rs
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-#include "rs_graphics.rsh"
-#include "shader_def.rsh"
-#include "subtest_def.rsh"
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentTexture;
-
-rs_program_store gProgStoreBlendNone;
-
-rs_allocation gTexOpaque;
-
-rs_mesh g10by10Mesh;
-rs_mesh g100by100Mesh;
-rs_mesh gWbyHMesh;
-
-rs_sampler gLinearClamp;
-static int gRenderSurfaceW;
-static int gRenderSurfaceH;
-
-static float gDt = 0;
-
-typedef struct MeshTestData_s {
- int meshNum;
-} MeshTestData;
-MeshTestData *gData;
-
-void init() {
-}
-
-static void bindProgramVertexOrtho() {
- // Default vertex shader
- rsgBindProgramVertex(gProgVertex);
- // Setup the projection matrix
- rs_matrix4x4 proj;
- rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-}
-
-static void displayMeshSamples(int meshNum) {
-
- bindProgramVertexOrtho();
- rs_matrix4x4 matrix;
- rsMatrixLoadTranslate(&matrix, gRenderSurfaceW/2, gRenderSurfaceH/2, 0);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNone);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-
- rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
- if (meshNum == 0) {
- rsgDrawMesh(g10by10Mesh);
- } else if (meshNum == 1) {
- rsgDrawMesh(g100by100Mesh);
- } else if (meshNum == 2) {
- rsgDrawMesh(gWbyHMesh);
- }
-}
-
-void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
- TestData *testData = (TestData*)usrData;
- gRenderSurfaceW = testData->renderSurfaceW;
- gRenderSurfaceH = testData->renderSurfaceH;
- gDt = testData->dt;
-
- gData = (MeshTestData*)v_in;
-
- displayMeshSamples(gData->meshNum);
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/rsbench.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/rsbench.rs
deleted file mode 100644
index 43cf4e0..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/rsbench.rs
+++ /dev/null
@@ -1,270 +0,0 @@
-// Copyright (C) 2010-2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-#include "rs_graphics.rsh"
-#include "shader_def.rsh"
-#include "subtest_def.rsh"
-
-/* Message sent from script to renderscript */
-const int RS_MSG_TEST_DONE = 100;
-const int RS_MSG_RESULTS_READY = 101;
-
-static const int gMaxModes = 64;
-int gMaxLoops = 1;
-int gDisplayMode = 1;
-
-// Allocation to write the results into
-static float gResultBuffer[gMaxModes];
-
-rs_font gFontSerif;
-rs_sampler gLinearClamp;
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentTexture;
-
-rs_allocation gRenderBufferColor;
-rs_allocation gRenderBufferDepth;
-
-VertexShaderInputs *gVSInputs;
-
-typedef struct TestScripts_s {
- rs_allocation testData;
- rs_allocation testName;
- rs_allocation debugName;
- rs_script testScript;
-} TestScripts;
-TestScripts *gTestScripts;
-
-bool gLoadComplete = false;
-bool gPauseRendering = false;
-
-static float gDt = 0;
-
-void init() {
-}
-
-static int gRenderSurfaceW;
-static int gRenderSurfaceH;
-
-static void fillSurfaceParams(TestData *testData) {
- testData->renderSurfaceW = gRenderSurfaceW;
- testData->renderSurfaceH = gRenderSurfaceH;
- testData->dt = gDt;
-}
-
-static void setupOffscreenTarget() {
- rsgBindColorTarget(gRenderBufferColor, 0);
- rsgBindDepthTarget(gRenderBufferDepth);
-}
-
-static void bindProgramVertexOrtho() {
- // Default vertex shader
- rsgBindProgramVertex(gProgVertex);
- // Setup the projection matrix
- rs_matrix4x4 proj;
- rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-}
-
-static void runSubTest(int index) {
- TestData testData;
- fillSurfaceParams(&testData);
-
- rs_allocation null_alloc = {0};
- rsForEach(gTestScripts[index].testScript,
- gTestScripts[index].testData,
- null_alloc,
- &testData,
- sizeof(testData));
-}
-
-
-static bool checkInit() {
-
- static int countdown = 3;
-
- // Perform all the uploads so we only measure rendered time
- if(countdown > 1) {
- int testCount = rsAllocationGetDimX(rsGetAllocation(gTestScripts));
- for(int i = 0; i < testCount; i ++) {
- rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f);
- runSubTest(i);
- rsgFinish();
- }
- countdown --;
- rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f);
-
- rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f);
- rsgBindFont(gFontSerif);
- if (countdown == 1) {
- rsgDrawText("Rendering", 50, 50);
- } else {
- rsgDrawText("Initializing", 50, 50);
- }
-
- return false;
- }
-
- return true;
-}
-
-static int benchMode = 0;
-static bool benchmarkSingleTest = false;
-static int runningLoops = 0;
-static bool sendMsgFlag = false;
-
-static bool gIsDebugMode = false;
-void setDebugMode(int testNumber) {
- gIsDebugMode = true;
- benchMode = testNumber;
- rsgClearAllRenderTargets();
-}
-
-void setBenchmarkMode(int testNumber) {
- gIsDebugMode = false;
- if (testNumber == -1) {
- benchmarkSingleTest = false;
- benchMode = 0;
- } else {
- benchmarkSingleTest = true;
- benchMode = testNumber;
- }
-
- runningLoops = 0;
-}
-
-static void drawOffscreenResult(int posX, int posY, int width, int height) {
- bindProgramVertexOrtho();
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- rsgBindProgramFragment(gProgFragmentTexture);
-
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gRenderBufferColor);
-
- float startX = posX, startY = posY;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 1,
- startX, startY + height, 0, 0, 0,
- startX + width, startY + height, 0, 1, 0,
- startX + width, startY, 0, 1, 1);
-}
-
-static void benchmark() {
-
- gDt = 1.0f / 60.0f;
-
- rsgFinish();
- int64_t start = rsUptimeMillis();
-
- int drawPos = 0;
- int frameCount = 100;
- for(int i = 0; i < frameCount; i ++) {
- setupOffscreenTarget();
- gRenderSurfaceW = rsAllocationGetDimX(gRenderBufferColor);
- gRenderSurfaceH = rsAllocationGetDimY(gRenderBufferColor);
- rsgClearColor(0.1f, 0.1f, 0.1f, 1.0f);
- rsgClearDepth(1.0f);
-
- runSubTest(benchMode);
- rsgClearAllRenderTargets();
- gRenderSurfaceW = rsgGetWidth();
- gRenderSurfaceH = rsgGetHeight();
- int size = 8;
- // draw each frame at (8, 3/4 gRenderSurfaceH) with size
- drawOffscreenResult((drawPos+=size)%gRenderSurfaceW, (gRenderSurfaceH * 3) / 4, size, size);
- }
-
- rsgFinish();
-
- int64_t end = rsUptimeMillis();
- float fps = (float)(frameCount) / ((float)(end - start)*0.001f);
- const char *testName = rsGetElementAt(gTestScripts[benchMode].debugName, 0);
- rsDebug(testName, fps);
-
- gResultBuffer[benchMode] = fps;
- int bufferW = rsAllocationGetDimX(gRenderBufferColor);
- int bufferH = rsAllocationGetDimY(gRenderBufferColor);
-
- int quadW = gRenderSurfaceW / 2;
- int quadH = (quadW * bufferH) / bufferW;
- drawOffscreenResult(0, 0, quadW, quadH);
-
- int left = 0, right = 0, top = 0, bottom = 0;
- uint height = rsgGetHeight();
- rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f);
- rsgBindFont(gFontSerif);
- rsgMeasureText(gTestScripts[benchMode].testName, &left, &right, &top, &bottom);
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgDrawText(gTestScripts[benchMode].testName, 2 -left, height - 2 + bottom);
-
- if (benchmarkSingleTest) {
- return;
- }
-
- benchMode ++;
- int testCount = rsAllocationGetDimX(rsGetAllocation(gTestScripts));
- if (benchMode == testCount) {
- rsSendToClientBlocking(RS_MSG_RESULTS_READY, gResultBuffer, testCount*sizeof(float));
- benchMode = 0;
- runningLoops++;
- if ((gMaxLoops > 0) && (runningLoops > gMaxLoops) && !sendMsgFlag) {
- //Notifiy the test to stop and get results
- rsDebug("gMaxLoops and runningLoops: ", gMaxLoops, runningLoops);
- rsSendToClientBlocking(RS_MSG_TEST_DONE);
- sendMsgFlag = true;
- }
- }
-}
-
-static void debug() {
- gDt = rsGetDt();
- runSubTest(benchMode);
-}
-
-int root(void) {
- gRenderSurfaceW = rsgGetWidth();
- gRenderSurfaceH = rsgGetHeight();
- rsgClearColor(0.2f, 0.2f, 0.2f, 1.0f);
- rsgClearDepth(1.0f);
-
- if (!gLoadComplete) {
- rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f);
- rsgBindFont(gFontSerif);
- rsgDrawText("Loading", 50, 50);
- return 0;
- }
-
- if(!checkInit()) {
- return 1;
- }
-
- if (gPauseRendering) {
- rsgDrawText("Paused", 50, 50);
- return 30;
- }
- if (gIsDebugMode) {
- debug();
- } else {
- benchmark();
- }
-
- return 1;
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/shader_def.rsh b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/shader_def.rsh
deleted file mode 100644
index 648359c..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/shader_def.rsh
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (C) 2009 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.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-typedef struct VertexShaderConstants_s {
- rs_matrix4x4 model;
- rs_matrix4x4 proj;
- float4 light0_Posision;
- float light0_Diffuse;
- float light0_Specular;
- float light0_CosinePower;
-
- float4 light1_Posision;
- float light1_Diffuse;
- float light1_Specular;
- float light1_CosinePower;
-} VertexShaderConstants;
-
-typedef struct VertexShaderConstants3_s {
- rs_matrix4x4 model;
- rs_matrix4x4 proj;
- float time;
-} VertexShaderConstants3;
-
-
-typedef struct FragentShaderConstants_s {
- float4 light0_DiffuseColor;
- float4 light0_SpecularColor;
-
- float4 light1_DiffuseColor;
- float4 light1_SpecularColor;
-} FragentShaderConstants;
-
-typedef struct FragentShaderConstants2_s {
- float4 light_DiffuseColor[2];
- float4 light_SpecularColor[2];
-} FragentShaderConstants2;
-
-typedef struct FragentShaderConstants3_s {
- float4 light0_DiffuseColor;
- float4 light0_SpecularColor;
- float4 light0_Posision;
- float light0_Diffuse;
- float light0_Specular;
- float light0_CosinePower;
-
- float4 light1_DiffuseColor;
- float4 light1_SpecularColor;
- float4 light1_Posision;
- float light1_Diffuse;
- float light1_Specular;
- float light1_CosinePower;
-} FragentShaderConstants3;
-
-typedef struct VertexShaderInputs_s {
- float4 position;
- float3 normal;
- float2 texture0;
-} VertexShaderInputs;
-
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/subtest_def.rsh b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/subtest_def.rsh
deleted file mode 100644
index 43658b1..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/subtest_def.rsh
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-typedef struct TestData_s {
- int renderSurfaceW;
- int renderSurfaceH;
- float dt;
-} TestData;
-
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/text_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/text_test.rs
deleted file mode 100644
index 0f50828..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/text_test.rs
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-#include "rs_graphics.rsh"
-#include "subtest_def.rsh"
-
-rs_font gFontSans;
-rs_font gFontSerif;
-
-typedef struct TextTestData_s {
- int fillNum;
-} TextTestData;
-TextTestData *gData;
-
-void init() {
-}
-
-static int gRenderSurfaceW = 1280;
-static int gRenderSurfaceH = 720;
-
-static const char *sampleText = "This is a sample of small text for performace";
-// Offsets for multiple layer of text
-static int textOffsets[] = { 0, 0, -5, -5, 5, 5, -8, -8, 8, 8};
-static float textColors[] = {1.0f, 1.0f, 1.0f, 1.0f,
- 0.5f, 0.7f, 0.5f, 1.0f,
- 0.7f, 0.5f, 0.5f, 1.0f,
- 0.5f, 0.5f, 0.7f, 1.0f,
- 0.5f, 0.6f, 0.7f, 1.0f,
-};
-
-static void displayFontSamples(int fillNum) {
-
- rs_font fonts[5];
- fonts[0] = gFontSans;
- fonts[1] = gFontSerif;
- fonts[2] = gFontSans;
- fonts[3] = gFontSerif;
- fonts[4] = gFontSans;
-
- uint height = gRenderSurfaceH;
- int left = 0, right = 0, top = 0, bottom = 0;
- rsgMeasureText(sampleText, &left, &right, &top, &bottom);
-
- int textHeight = top - bottom;
- int textWidth = right - left;
- int numVerticalLines = height / textHeight;
- int yPos = top;
-
- int xOffset = 0, yOffset = 0;
- for(int fillI = 0; fillI < fillNum; fillI ++) {
- rsgBindFont(fonts[fillI]);
- xOffset = textOffsets[fillI * 2];
- yOffset = textOffsets[fillI * 2 + 1];
- float *colPtr = textColors + fillI * 4;
- rsgFontColor(colPtr[0], colPtr[1], colPtr[2], colPtr[3]);
- for (int h = 0; h < 4; h ++) {
- yPos = top + yOffset;
- for (int v = 0; v < numVerticalLines; v ++) {
- rsgDrawText(sampleText, xOffset + textWidth * h, yPos);
- yPos += textHeight;
- }
- }
- }
-}
-
-void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
- TestData *testData = (TestData*)usrData;
- gRenderSurfaceW = testData->renderSurfaceW;
- gRenderSurfaceH = testData->renderSurfaceH;
-
- gData = (TextTestData*)v_in;
-
- displayFontSamples(gData->fillNum);
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/torus_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/torus_test.rs
deleted file mode 100644
index 853a05d..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/torus_test.rs
+++ /dev/null
@@ -1,295 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-#include "rs_graphics.rsh"
-#include "subtest_def.rsh"
-#include "shader_def.rsh"
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentColor;
-rs_program_fragment gProgFragmentTexture;
-
-rs_program_store gProgStoreBlendNoneDepth;
-rs_mesh gTorusMesh;
-
-rs_program_raster gCullBack;
-rs_program_raster gCullFront;
-
-// Custom vertex shader compunents
-VertexShaderConstants *gVSConstants;
-FragentShaderConstants *gFSConstants;
-VertexShaderConstants3 *gVSConstPixel;
-FragentShaderConstants3 *gFSConstPixel;
-
-// Custom shaders we use for lighting
-rs_program_vertex gProgVertexCustom;
-rs_program_fragment gProgFragmentCustom;
-
-rs_sampler gLinearClamp;
-rs_allocation gTexTorus;
-
-rs_program_vertex gProgVertexPixelLight;
-rs_program_vertex gProgVertexPixelLightMove;
-rs_program_fragment gProgFragmentPixelLight;
-
-typedef struct TorusTestData_s {
- int testId;
- int user1;
- int user2;
-} TorusTestData;
-TorusTestData *gData;
-
-static float gDt = 0.0f;
-
-static int gRenderSurfaceW;
-static int gRenderSurfaceH;
-
-
-static float gTorusRotation = 0;
-static void updateModelMatrix(rs_matrix4x4 *matrix, void *buffer) {
- if (buffer == 0) {
- rsgProgramVertexLoadModelMatrix(matrix);
- } else {
- rsgAllocationSyncAll(rsGetAllocation(buffer));
- }
-}
-
-static void drawToruses(int numMeshes, rs_matrix4x4 *matrix, void *buffer) {
-
- if (numMeshes == 1) {
- rsMatrixLoadTranslate(matrix, 0.0f, 0.0f, -7.5f);
- rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
- updateModelMatrix(matrix, buffer);
- rsgDrawMesh(gTorusMesh);
- return;
- }
-
- if (numMeshes == 2) {
- rsMatrixLoadTranslate(matrix, -1.6f, 0.0f, -7.5f);
- rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
- updateModelMatrix(matrix, buffer);
- rsgDrawMesh(gTorusMesh);
-
- rsMatrixLoadTranslate(matrix, 1.6f, 0.0f, -7.5f);
- rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
- updateModelMatrix(matrix, buffer);
- rsgDrawMesh(gTorusMesh);
- return;
- }
-
- float startX = -5.0f;
- float startY = -1.5f;
- float startZ = -15.0f;
- float dist = 3.2f;
-
- for (int h = 0; h < 4; h ++) {
- for (int v = 0; v < 2; v ++) {
- // Position our model on the screen
- rsMatrixLoadTranslate(matrix, startX + dist * h, startY + dist * v, startZ);
- rsMatrixRotate(matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
- updateModelMatrix(matrix, buffer);
- rsgDrawMesh(gTorusMesh);
- }
- }
-}
-
-
-// Quick hack to get some geometry numbers
-static void displaySimpleGeoSamples(bool useTexture, int numMeshes) {
- rsgBindProgramVertex(gProgVertex);
- rsgBindProgramRaster(gCullBack);
- // Setup the projection matrix with 30 degree field of view
- rs_matrix4x4 proj;
- float aspect = (float)gRenderSurfaceW / (float)gRenderSurfaceH;
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- if (useTexture) {
- rsgBindProgramFragment(gProgFragmentTexture);
- } else {
- rsgBindProgramFragment(gProgFragmentColor);
- rsgProgramFragmentConstantColor(gProgFragmentColor, 0.1, 0.7, 0.1, 1);
- }
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gTexTorus);
-
- // Apply a rotation to our mesh
- gTorusRotation += 50.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- rs_matrix4x4 matrix;
- drawToruses(numMeshes, &matrix, 0);
-}
-
-float gLight0Rotation = 0;
-float gLight1Rotation = 0;
-
-static void setupCustomShaderLights() {
- float4 light0Pos = {-5.0f, 5.0f, -10.0f, 1.0f};
- float4 light1Pos = {2.0f, 5.0f, 15.0f, 1.0f};
- float4 light0DiffCol = {0.9f, 0.7f, 0.7f, 1.0f};
- float4 light0SpecCol = {0.9f, 0.6f, 0.6f, 1.0f};
- float4 light1DiffCol = {0.5f, 0.5f, 0.9f, 1.0f};
- float4 light1SpecCol = {0.5f, 0.5f, 0.9f, 1.0f};
-
- gLight0Rotation += 50.0f * gDt;
- if (gLight0Rotation > 360.0f) {
- gLight0Rotation -= 360.0f;
- }
- gLight1Rotation -= 50.0f * gDt;
- if (gLight1Rotation > 360.0f) {
- gLight1Rotation -= 360.0f;
- }
-
- rs_matrix4x4 l0Mat;
- rsMatrixLoadRotate(&l0Mat, gLight0Rotation, 1.0f, 0.0f, 0.0f);
- light0Pos = rsMatrixMultiply(&l0Mat, light0Pos);
- rs_matrix4x4 l1Mat;
- rsMatrixLoadRotate(&l1Mat, gLight1Rotation, 0.0f, 0.0f, 1.0f);
- light1Pos = rsMatrixMultiply(&l1Mat, light1Pos);
-
- // Set light 0 properties
- gVSConstants->light0_Posision = light0Pos;
- gVSConstants->light0_Diffuse = 1.0f;
- gVSConstants->light0_Specular = 0.5f;
- gVSConstants->light0_CosinePower = 10.0f;
- // Set light 1 properties
- gVSConstants->light1_Posision = light1Pos;
- gVSConstants->light1_Diffuse = 1.0f;
- gVSConstants->light1_Specular = 0.7f;
- gVSConstants->light1_CosinePower = 25.0f;
- rsgAllocationSyncAll(rsGetAllocation(gVSConstants));
-
- // Update fragment shader constants
- // Set light 0 colors
- gFSConstants->light0_DiffuseColor = light0DiffCol;
- gFSConstants->light0_SpecularColor = light0SpecCol;
- // Set light 1 colors
- gFSConstants->light1_DiffuseColor = light1DiffCol;
- gFSConstants->light1_SpecularColor = light1SpecCol;
- rsgAllocationSyncAll(rsGetAllocation(gFSConstants));
-
- // Set light 0 properties for per pixel lighting
- gFSConstPixel->light0_Posision = light0Pos;
- gFSConstPixel->light0_Diffuse = 1.0f;
- gFSConstPixel->light0_Specular = 0.5f;
- gFSConstPixel->light0_CosinePower = 10.0f;
- gFSConstPixel->light0_DiffuseColor = light0DiffCol;
- gFSConstPixel->light0_SpecularColor = light0SpecCol;
- // Set light 1 properties
- gFSConstPixel->light1_Posision = light1Pos;
- gFSConstPixel->light1_Diffuse = 1.0f;
- gFSConstPixel->light1_Specular = 0.7f;
- gFSConstPixel->light1_CosinePower = 25.0f;
- gFSConstPixel->light1_DiffuseColor = light1DiffCol;
- gFSConstPixel->light1_SpecularColor = light1SpecCol;
- rsgAllocationSyncAll(rsGetAllocation(gFSConstPixel));
-}
-
-static void displayCustomShaderSamples(int numMeshes) {
-
- // Update vertex shader constants
- // Load model matrix
- // Apply a rotation to our mesh
- gTorusRotation += 50.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- // Setup the projection matrix
- float aspect = (float)gRenderSurfaceW / (float)gRenderSurfaceH;
- rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f);
- setupCustomShaderLights();
-
- rsgBindProgramVertex(gProgVertexCustom);
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- rsgBindProgramFragment(gProgFragmentCustom);
- rsgBindSampler(gProgFragmentCustom, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentCustom, 0, gTexTorus);
-
- // Use back face culling
- rsgBindProgramRaster(gCullBack);
-
- drawToruses(numMeshes, &gVSConstants->model, gVSConstants);
-}
-
-static void displayPixelLightSamples(int numMeshes, bool heavyVertex) {
-
- // Update vertex shader constants
- // Load model matrix
- // Apply a rotation to our mesh
- gTorusRotation += 30.0f * gDt;
- if (gTorusRotation > 360.0f) {
- gTorusRotation -= 360.0f;
- }
-
- gVSConstPixel->time = rsUptimeMillis()*0.005;
-
- // Setup the projection matrix
- float aspect = (float)gRenderSurfaceW / (float)gRenderSurfaceH;
- rsMatrixLoadPerspective(&gVSConstPixel->proj, 30.0f, aspect, 0.1f, 100.0f);
- setupCustomShaderLights();
-
- if (heavyVertex) {
- rsgBindProgramVertex(gProgVertexPixelLightMove);
- } else {
- rsgBindProgramVertex(gProgVertexPixelLight);
- }
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendNoneDepth);
- rsgBindProgramFragment(gProgFragmentPixelLight);
- rsgBindSampler(gProgFragmentPixelLight, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentPixelLight, 0, gTexTorus);
-
- // Use back face culling
- rsgBindProgramRaster(gCullBack);
-
- drawToruses(numMeshes, &gVSConstPixel->model, gVSConstPixel);
-}
-
-
-void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
- TestData *testData = (TestData*)usrData;
- gRenderSurfaceW = testData->renderSurfaceW;
- gRenderSurfaceH = testData->renderSurfaceH;
- gDt = testData->dt;
-
- gData = (TorusTestData*)v_in;
-
- switch(gData->testId) {
- case 0:
- displaySimpleGeoSamples(gData->user1 == 1 ? true : false, gData->user2);
- break;
- case 1:
- displayCustomShaderSamples(gData->user1);
- break;
- case 2:
- displayPixelLightSamples(gData->user1, gData->user2 == 1 ? true : false);
- break;
- default:
- rsDebug("Wrong test number", gData->testId);
- break;
- }
-}
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/ui_test.rs b/tests/RenderScriptTests/PerfTest/src/com/android/perftest/ui_test.rs
deleted file mode 100644
index e87db39..0000000
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/ui_test.rs
+++ /dev/null
@@ -1,442 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.perftest)
-
-#include "rs_graphics.rsh"
-#include "shader_def.rsh"
-#include "subtest_def.rsh"
-
-// Parameters for galaxy live wallpaper
-rs_allocation gTSpace;
-rs_allocation gTLight1;
-rs_allocation gTFlares;
-rs_mesh gParticlesMesh;
-
-rs_program_fragment gPFBackground;
-rs_program_fragment gPFStars;
-rs_program_vertex gPVStars;
-rs_program_vertex gPVBkProj;
-rs_program_store gPSLights;
-
-float gXOffset = 0.5f;
-
-#define ELLIPSE_RATIO 0.892f
-#define PI 3.1415f
-#define TWO_PI 6.283f
-#define ELLIPSE_TWIST 0.023333333f
-
-static float angle = 50.f;
-static int gOldWidth;
-static int gOldHeight;
-static int gWidth;
-static int gHeight;
-static float gSpeed[12000];
-static int gGalaxyRadius = 300;
-static rs_allocation gParticlesBuffer;
-
-typedef struct __attribute__((packed, aligned(4))) Particle {
- uchar4 color;
- float3 position;
-} Particle_t;
-Particle_t *Particles;
-
-typedef struct VpConsts {
- rs_matrix4x4 Proj;
- rs_matrix4x4 MVP;
-} VpConsts_t;
-VpConsts_t *vpConstants;
-// End of parameters for galaxy live wallpaper
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentColor;
-rs_program_fragment gProgFragmentTexture;
-
-rs_program_store gProgStoreBlendAlpha;
-
-rs_allocation gTexOpaque;
-rs_allocation gTexTorus;
-rs_allocation gTexGlobe;
-
-typedef struct ListAllocs_s {
- rs_allocation item;
-} ListAllocs;
-
-ListAllocs *gTexList100;
-ListAllocs *gSampleTextList100;
-ListAllocs *gListViewText;
-
-rs_mesh gSingleMesh;
-
-rs_font gFontSans;
-
-rs_sampler gLinearClamp;
-
-typedef struct UiTestData_s {
- int testId;
- int user1;
- int user2;
- int user3;
-} UiTestData;
-UiTestData *gData;
-
-static float gDt = 0;
-
-
-void init() {
-}
-
-static int gRenderSurfaceW;
-static int gRenderSurfaceH;
-
-static void bindProgramVertexOrtho() {
- // Default vertex shader
- rsgBindProgramVertex(gProgVertex);
- // Setup the projection matrix
- rs_matrix4x4 proj;
- rsMatrixLoadOrtho(&proj, 0, gRenderSurfaceW, gRenderSurfaceH, 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-}
-
-/**
- * Methods to draw the galaxy live wall paper
- */
-static float mapf(float minStart, float minStop, float maxStart, float maxStop, float value) {
- return maxStart + (maxStart - maxStop) * ((value - minStart) / (minStop - minStart));
-}
-
-/**
- * Helper function to generate the stars.
- */
-static float randomGauss() {
- float x1;
- float x2;
- float w = 2.f;
-
- while (w >= 1.0f) {
- x1 = rsRand(2.0f) - 1.0f;
- x2 = rsRand(2.0f) - 1.0f;
- w = x1 * x1 + x2 * x2;
- }
-
- w = sqrt(-2.0f * log(w) / w);
- return x1 * w;
-}
-
-/**
- * Generates the properties for a given star.
- */
-static void createParticle(Particle_t *part, int idx, float scale) {
- float d = fabs(randomGauss()) * gGalaxyRadius * 0.5f + rsRand(64.0f);
- float id = d / gGalaxyRadius;
- float z = randomGauss() * 0.4f * (1.0f - id);
-
- if (d < gGalaxyRadius * 0.33f) {
- part->color.x = (uchar) (220 + id * 35);
- part->color.y = 220;
- part->color.z = 220;
- } else {
- part->color.x = 180;
- part->color.y = 180;
- part->color.z = (uchar) clamp(140.f + id * 115.f, 140.f, 255.f);
- }
- // Stash point size * 10 in Alpha
- part->color.w = (uchar) (rsRand(1.2f, 2.1f) * 60);
-
- if (d > gGalaxyRadius * 0.15f) {
- z *= 0.6f * (1.0f - id);
- } else {
- z *= 0.72f;
- }
-
- // Map to the projection coordinates (viewport.x = -1.0 -> 1.0)
- d = mapf(-4.0f, gGalaxyRadius + 4.0f, 0.0f, scale, d);
-
- part->position.x = rsRand(TWO_PI);
- part->position.y = d;
- gSpeed[idx] = rsRand(0.0015f, 0.0025f) * (0.5f + (scale / d)) * 0.8f;
-
- part->position.z = z / 5.0f;
-}
-
-/**
- * Initialize all the starts, called from Java
- */
-void initParticles() {
- Particle_t *part = Particles;
- float scale = gGalaxyRadius / (gWidth * 0.5f);
- int count = rsAllocationGetDimX(gParticlesBuffer);
- for (int i = 0; i < count; i ++) {
- createParticle(part, i, scale);
- part++;
- }
-}
-
-static void drawSpace() {
- rsgBindProgramFragment(gPFBackground);
- rsgBindTexture(gPFBackground, 0, gTSpace);
- rsgDrawQuadTexCoords(
- 0.0f, 0.0f, 0.0f, 0.0f, 1.0f,
- gWidth, 0.0f, 0.0f, 2.0f, 1.0f,
- gWidth, gHeight, 0.0f, 2.0f, 0.0f,
- 0.0f, gHeight, 0.0f, 0.0f, 0.0f);
-}
-
-static void drawLights() {
- rsgBindProgramVertex(gPVBkProj);
- rsgBindProgramFragment(gPFBackground);
- rsgBindTexture(gPFBackground, 0, gTLight1);
-
- float scale = 512.0f / gWidth;
- float x = -scale - scale * 0.05f;
- float y = -scale;
-
- scale *= 2.0f;
-
- rsgDrawQuad(x, y, 0.0f,
- x + scale * 1.1f, y, 0.0f,
- x + scale * 1.1f, y + scale, 0.0f,
- x, y + scale, 0.0f);
-}
-
-static void drawParticles(float offset) {
- float a = offset * angle;
- float absoluteAngle = fabs(a);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadTranslate(&matrix, 0.0f, 0.0f, 10.0f - 6.0f * absoluteAngle / 50.0f);
- if (gHeight > gWidth) {
- rsMatrixScale(&matrix, 6.6f, 6.0f, 1.0f);
- } else {
- rsMatrixScale(&matrix, 12.6f, 12.0f, 1.0f);
- }
- rsMatrixRotate(&matrix, absoluteAngle, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, a, 0.0f, 0.4f, 0.1f);
- rsMatrixLoad(&vpConstants->MVP, &vpConstants->Proj);
- rsMatrixMultiply(&vpConstants->MVP, &matrix);
- rsgAllocationSyncAll(rsGetAllocation(vpConstants));
-
- rsgBindProgramVertex(gPVStars);
- rsgBindProgramFragment(gPFStars);
- rsgBindProgramStore(gPSLights);
- rsgBindTexture(gPFStars, 0, gTFlares);
-
- Particle_t *vtx = Particles;
- int count = rsAllocationGetDimX(gParticlesBuffer);
- for (int i = 0; i < count; i++) {
- vtx->position.x = vtx->position.x + gSpeed[i];
- vtx++;
- }
-
- rsgDrawMesh(gParticlesMesh);
-}
-/* end of methods for drawing galaxy */
-
-// Display sample images in a mesh with different texture
-static void displayIcons(int meshMode) {
- bindProgramVertexOrtho();
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendAlpha);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
- rsgBindTexture(gProgFragmentTexture, 0, gTexTorus);
- rsgDrawQuadTexCoords(
- 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, gRenderSurfaceH, 0.0f, 0.0f, 1.0f,
- gRenderSurfaceW, gRenderSurfaceH, 0.0f, 1.0f, 1.0f,
- gRenderSurfaceW, 0.0f, 0.0f, 1.0f, 0.0f);
-
- int meshCount = (int)pow(10.0f, (float)(meshMode + 1));
-
- float wSize = gRenderSurfaceW/(float)meshCount;
- float hSize = gRenderSurfaceH/(float)meshCount;
- rs_matrix4x4 matrix;
- rsMatrixLoadScale(&matrix, wSize, hSize, 1.0);
-
- float yPos = 0;
- float yPad = hSize / 2;
- float xPad = wSize / 2;
- for (int y = 0; y < meshCount; y++) {
- yPos = y * hSize + yPad;
- float xPos = 0;
- for (int x = 0; x < meshCount; x++) {
- xPos = x * wSize + xPad;
- rs_matrix4x4 transMatrix;
- rsMatrixLoadTranslate(&transMatrix, xPos, yPos, 0);
- rsMatrixMultiply(&transMatrix, &matrix);
- rsgProgramVertexLoadModelMatrix(&transMatrix);
- int i = (x + y * meshCount) % 100;
- rsgBindTexture(gProgFragmentTexture, 0, gTexList100[i].item);
- rsgDrawMesh(gSingleMesh);
- }
- }
-}
-
-// Draw meshes in a single page with top left corner coordinates (xStart, yStart)
-static void drawMeshInPage(float xStart, float yStart, int wResolution, int hResolution) {
- // Draw wResolution * hResolution meshes in one page
- float wMargin = 100.0f;
- float hMargin = 100.0f;
- float xPad = 50.0f;
- float yPad = 20.0f;
- float size = 100.0f; // size of images
-
- // font info
- rs_font font = gFontSans;
- rsgBindFont(font);
- rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-
- // Measure text size
- int left = 0, right = 0, top = 0, bottom = 0;
- rsgMeasureText(gSampleTextList100[0].item, &left, &right, &top, &bottom);
- float textHeight = (float)(top - bottom);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadScale(&matrix, size, size, 1.0);
-
- for (int y = 0; y < hResolution; y++) {
- float yPos = yStart + hMargin + y * size + y * yPad;
- for (int x = 0; x < wResolution; x++) {
- float xPos = xStart + wMargin + x * size + x * xPad;
-
- rs_matrix4x4 transMatrix;
- rsMatrixLoadTranslate(&transMatrix, xPos + size/2, yPos + size/2, 0);
- rsMatrixMultiply(&transMatrix, &matrix); // scale the mesh
- rsgProgramVertexLoadModelMatrix(&transMatrix);
-
- int i = (y * wResolution + x) % 100;
- rsgBindTexture(gProgFragmentTexture, 0, gTexList100[i].item);
- rsgDrawMesh(gSingleMesh);
- rsgDrawText(gSampleTextList100[i].item, xPos, yPos + size + yPad/2 + textHeight);
- }
- }
-}
-
-// Display both images and text as shown in launcher and homepage
-// meshMode will decide how many pages we draw
-// meshMode = 0: draw 3 pages of meshes
-// meshMode = 1: draw 5 pages of meshes
-static void displayImageWithText(int wResolution, int hResolution, int meshMode) {
- bindProgramVertexOrtho();
-
- // Fragment shader with texture
- rsgBindProgramStore(gProgStoreBlendAlpha);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-
- drawMeshInPage(0, 0, wResolution, hResolution);
- drawMeshInPage(-1.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- drawMeshInPage(1.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- if (meshMode == 1) {
- // draw another two pages of meshes
- drawMeshInPage(-2.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- drawMeshInPage(2.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- }
-}
-
-// Display a list of text as the list view
-static void displayListView() {
- // set text color
- rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f);
- rsgBindFont(gFontSans);
-
- // get the size of the list
- rs_allocation textAlloc;
- textAlloc = rsGetAllocation(gListViewText);
- int allocSize = rsAllocationGetDimX(textAlloc);
-
- int listItemHeight = 80;
- int yOffset = listItemHeight;
-
- // set the color for the list divider
- rsgBindProgramFragment(gProgFragmentColor);
- rsgProgramFragmentConstantColor(gProgFragmentColor, 1.0, 1.0, 1.0, 1);
-
- // draw the list with divider
- for (int i = 0; i < allocSize; i++) {
- if (yOffset - listItemHeight > gRenderSurfaceH) {
- break;
- }
- rsgDrawRect(0, yOffset - 1, gRenderSurfaceW, yOffset, 0);
- rsgDrawText(gListViewText[i].item, 20, yOffset - 10);
- yOffset += listItemHeight;
- }
-}
-
-static void drawGalaxy() {
- rsgClearColor(0.f, 0.f, 0.f, 1.f);
- gParticlesBuffer = rsGetAllocation(Particles);
- rsgBindProgramFragment(gPFBackground);
-
- gWidth = rsgGetWidth();
- gHeight = rsgGetHeight();
- if ((gWidth != gOldWidth) || (gHeight != gOldHeight)) {
- initParticles();
- gOldWidth = gWidth;
- gOldHeight = gHeight;
- }
-
- float offset = mix(-1.0f, 1.0f, gXOffset);
- drawSpace();
- drawParticles(offset);
- drawLights();
-}
-
-// Display images and text with live wallpaper in the background
-static void displayLiveWallPaper(int wResolution, int hResolution) {
- bindProgramVertexOrtho();
-
- drawGalaxy();
-
- rsgBindProgramVertex(gProgVertex);
- rsgBindProgramStore(gProgStoreBlendAlpha);
- rsgBindProgramFragment(gProgFragmentTexture);
- rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-
- drawMeshInPage(0, 0, wResolution, hResolution);
- drawMeshInPage(-1.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- drawMeshInPage(1.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- drawMeshInPage(-2.0f*gRenderSurfaceW, 0, wResolution, hResolution);
- drawMeshInPage(2.0f*gRenderSurfaceW, 0, wResolution, hResolution);
-}
-
-void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) {
- TestData *testData = (TestData*)usrData;
- gRenderSurfaceW = testData->renderSurfaceW;
- gRenderSurfaceH = testData->renderSurfaceH;
- gDt = testData->dt;
-
- gData = (UiTestData*)v_in;
-
- switch(gData->testId) {
- case 0:
- displayIcons(gData->user1);
- break;
- case 1:
- displayImageWithText(gData->user1, gData->user2, gData->user3);
- break;
- case 2:
- displayListView();
- break;
- case 3:
- displayLiveWallPaper(gData->user1, gData->user2);
- break;
- default:
- rsDebug("Wrong test number", 0);
- break;
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/Android.mk b/tests/RenderScriptTests/SceneGraph/Android.mk
deleted file mode 100644
index 6047305..0000000
--- a/tests/RenderScriptTests/SceneGraph/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_SDK_VERSION := 17
-
-LOCAL_PACKAGE_NAME := SceneGraphTest
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/SceneGraph/AndroidManifest.xml b/tests/RenderScriptTests/SceneGraph/AndroidManifest.xml
deleted file mode 100644
index 67af0fa..0000000
--- a/tests/RenderScriptTests/SceneGraph/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.testapp">
- <uses-permission
- android:name="android.permission.INTERNET" />
- <application android:label="SceneGraphTest">
- <activity android:name="TestApp"
- android:label="SceneGraphTest">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="SimpleApp"
- android:label="SimpleSceneGraph">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="FileSelector"
- android:label="FileSelector"
- android:hardwareAccelerated="true">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/tests/RenderScriptTests/SceneGraph/assets/blue.jpg b/tests/RenderScriptTests/SceneGraph/assets/blue.jpg
deleted file mode 100644
index 494e77a..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/blue.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/carbonfiber.jpg b/tests/RenderScriptTests/SceneGraph/assets/carbonfiber.jpg
deleted file mode 100644
index 2fcecb0..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/carbonfiber.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/green.jpg b/tests/RenderScriptTests/SceneGraph/assets/green.jpg
deleted file mode 100644
index a86a754..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/green.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/grey.jpg b/tests/RenderScriptTests/SceneGraph/assets/grey.jpg
deleted file mode 100644
index 5870b1a..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/grey.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/orange.jpg b/tests/RenderScriptTests/SceneGraph/assets/orange.jpg
deleted file mode 100644
index 7dbe942..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/orange.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.a3d b/tests/RenderScriptTests/SceneGraph/assets/orientation_test.a3d
deleted file mode 100644
index 07318ae..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.dae b/tests/RenderScriptTests/SceneGraph/assets/orientation_test.dae
deleted file mode 100644
index 7eef443..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/orientation_test.dae
+++ /dev/null
@@ -1,1102 +0,0 @@
-<?xml version="1.0" ?>
-<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
- <asset>
- <contributor>
- <author>alexst</author>
- <authoring_tool>OpenCOLLADA2010</authoring_tool>
- <comments>ColladaMaya export options: bakeTransforms=0;relativePaths=0;copyTextures=0;exportTriangles=1;exportCgfxFileReferences=0; isSampling=0;curveConstrainSampling=0;removeStaticCurves=1;exportPolygonMeshes=1;exportLights=1; exportCameras=1;exportJointsAndSkin=1;exportAnimations=0;exportInvisibleNodes=0;exportDefaultCameras=0; exportTexCoords=1;exportNormals=1;exportNormalsPerVertex=1;exportVertexColors=0;exportVertexColorsPerVertex=0; exportTexTangents=0;exportTangents=0;exportReferencedMaterials=1;exportMaterialsOnly=0; exportXRefs=1;dereferenceXRefs=1;exportCameraAsLookat=0;cameraXFov=0;cameraYFov=1;doublePrecision=0</comments>
- <source_data>file:///Volumes/Android/art/orientation_test.mb</source_data>
- </contributor>
- <created>2011-09-30T15:31:38</created>
- <modified>2011-09-30T15:31:38</modified>
- <unit meter="0.01" name="centimeter" />
- <up_axis>Y_UP</up_axis>
- </asset>
- <library_cameras>
- <camera id="cameraShape1" name="cameraShape1">
- <optics>
- <technique_common>
- <perspective>
- <yfov>37.8493</yfov>
- <aspect_ratio>1.5</aspect_ratio>
- <znear>1</znear>
- <zfar>400</zfar>
- </perspective>
- </technique_common>
- </optics>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <film_fit>0</film_fit>
- <film_fit_offset>0</film_fit_offset>
- <film_offsetX>0</film_offsetX>
- <film_offsetY>0</film_offsetY>
- <horizontal_aperture>3.599993</horizontal_aperture>
- <lens_squeeze>1</lens_squeeze>
- <originalMayaNodeId>cameraShape1</originalMayaNodeId>
- <vertical_aperture>2.399995</vertical_aperture>
- </technique>
- </extra>
- </camera>
- <camera id="CameraDistShape" name="CameraDistShape">
- <optics>
- <technique_common>
- <perspective>
- <yfov>37.8493</yfov>
- <aspect_ratio>1.5</aspect_ratio>
- <znear>1</znear>
- <zfar>1000</zfar>
- </perspective>
- </technique_common>
- </optics>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <film_fit>0</film_fit>
- <film_fit_offset>0</film_fit_offset>
- <film_offsetX>0</film_offsetX>
- <film_offsetY>0</film_offsetY>
- <horizontal_aperture>3.599993</horizontal_aperture>
- <lens_squeeze>1</lens_squeeze>
- <originalMayaNodeId>CameraDistShape</originalMayaNodeId>
- <vertical_aperture>2.399995</vertical_aperture>
- </technique>
- </extra>
- </camera>
- </library_cameras>
- <library_materials>
- <material id="Paint1" name="Paint1">
- <instance_effect url="#Paint1-fx" />
- </material>
- <material id="lambert2" name="lambert2">
- <instance_effect url="#lambert2-fx" />
- </material>
- <material id="Plastic" name="Plastic">
- <instance_effect url="#Plastic-fx" />
- </material>
- <material id="Metal" name="Metal">
- <instance_effect url="#Metal-fx" />
- </material>
- <material id="PlasticCenter" name="PlasticCenter">
- <instance_effect url="#PlasticCenter-fx" />
- </material>
- <material id="PlasticRed" name="PlasticRed">
- <instance_effect url="#PlasticRed-fx" />
- </material>
- <material id="lambert10" name="lambert10">
- <instance_effect url="#lambert10-fx" />
- </material>
- <material id="lambert11" name="lambert11">
- <instance_effect url="#lambert11-fx" />
- </material>
- </library_materials>
- <library_effects>
- <effect id="Metal-fx">
- <profile_COMMON>
- <newparam sid="file23-surface">
- <surface type="2D">
- <init_from>file23</init_from>
- </surface>
- </newparam>
- <newparam sid="file23-sampler">
- <sampler2D>
- <source>file23-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file23-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="Paint1-fx">
- <profile_COMMON>
- <newparam sid="file25-surface">
- <surface type="2D">
- <init_from>file25</init_from>
- </surface>
- </newparam>
- <newparam sid="file25-sampler">
- <sampler2D>
- <source>file25-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file25-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="Plastic-fx">
- <profile_COMMON>
- <newparam sid="file24-surface">
- <surface type="2D">
- <init_from>file24</init_from>
- </surface>
- </newparam>
- <newparam sid="file24-sampler">
- <sampler2D>
- <source>file24-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file24-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="PlasticCenter-fx">
- <profile_COMMON>
- <newparam sid="file24-surface">
- <surface type="2D">
- <init_from>file24</init_from>
- </surface>
- </newparam>
- <newparam sid="file24-sampler">
- <sampler2D>
- <source>file24-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file24-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="PlasticRed-fx">
- <profile_COMMON>
- <newparam sid="file23-surface">
- <surface type="2D">
- <init_from>file23</init_from>
- </surface>
- </newparam>
- <newparam sid="file23-sampler">
- <sampler2D>
- <source>file23-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file23-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="lambert10-fx">
- <profile_COMMON>
- <newparam sid="file28-surface">
- <surface type="2D">
- <init_from>file28</init_from>
- </surface>
- </newparam>
- <newparam sid="file28-sampler">
- <sampler2D>
- <source>file28-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file28-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="lambert11-fx">
- <profile_COMMON>
- <newparam sid="file29-surface">
- <surface type="2D">
- <init_from>file29</init_from>
- </surface>
- </newparam>
- <newparam sid="file29-sampler">
- <sampler2D>
- <source>file29-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file29-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- <effect id="lambert2-fx">
- <profile_COMMON>
- <newparam sid="file22-surface">
- <surface type="2D">
- <init_from>file22</init_from>
- </surface>
- </newparam>
- <newparam sid="file22-sampler">
- <sampler2D>
- <source>file22-surface</source>
- </sampler2D>
- </newparam>
- <technique sid="common">
- <lambert>
- <emission>
- <color>0 0 0 1</color>
- </emission>
- <ambient>
- <color>0 0 0 1</color>
- </ambient>
- <diffuse>
- <texture texture="file22-sampler" texcoord="TEX0">
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <blend_mode>NONE</blend_mode>
- <coverageU>1</coverageU>
- <coverageV>1</coverageV>
- <fast>0</fast>
- <mirrorU>0</mirrorU>
- <mirrorV>0</mirrorV>
- <noiseU>0</noiseU>
- <noiseV>0</noiseV>
- <offsetU>0</offsetU>
- <offsetV>0</offsetV>
- <repeatU>1</repeatU>
- <repeatV>1</repeatV>
- <rotateFrame>0</rotateFrame>
- <rotateUV>0</rotateUV>
- <stagger>0</stagger>
- <translateFrameU>0</translateFrameU>
- <translateFrameV>0</translateFrameV>
- <wrapU>1</wrapU>
- <wrapV>1</wrapV>
- </technique>
- </extra>
- </texture>
- </diffuse>
- <transparent opaque="RGB_ZERO">
- <color>0 0 0 1</color>
- </transparent>
- <transparency>
- <float>1</float>
- </transparency>
- </lambert>
- </technique>
- </profile_COMMON>
- </effect>
- </library_effects>
- <library_images>
- <image id="file29" name="file29" height="0" width="0">
- <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/blue.jpg</init_from>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <dgnode_type>kFile</dgnode_type>
- <image_sequence>0</image_sequence>
- <originalMayaNodeId>file29</originalMayaNodeId>
- </technique>
- </extra>
- </image>
- <image id="file25" name="file25" height="0" width="0">
- <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/carbonfiber.jpg</init_from>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <dgnode_type>kFile</dgnode_type>
- <image_sequence>0</image_sequence>
- <originalMayaNodeId>file25</originalMayaNodeId>
- </technique>
- </extra>
- </image>
- <image id="file28" name="file28" height="0" width="0">
- <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/green.jpg</init_from>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <dgnode_type>kFile</dgnode_type>
- <image_sequence>0</image_sequence>
- <originalMayaNodeId>file28</originalMayaNodeId>
- </technique>
- </extra>
- </image>
- <image id="file22" name="file22" height="0" width="0">
- <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/grey.jpg</init_from>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <dgnode_type>kFile</dgnode_type>
- <image_sequence>0</image_sequence>
- <originalMayaNodeId>file22</originalMayaNodeId>
- </technique>
- </extra>
- </image>
- <image id="file24" name="file24" height="0" width="0">
- <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/orange.jpg</init_from>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <dgnode_type>kFile</dgnode_type>
- <image_sequence>0</image_sequence>
- <originalMayaNodeId>file24</originalMayaNodeId>
- </technique>
- </extra>
- </image>
- <image id="file23" name="file23" height="0" width="0">
- <init_from>file:///Volumes/Android/Sanity/SceneGraph/assets/red.jpg</init_from>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <dgnode_type>kFile</dgnode_type>
- <image_sequence>0</image_sequence>
- <originalMayaNodeId>file23</originalMayaNodeId>
- </technique>
- </extra>
- </image>
- </library_images>
- <library_visual_scenes>
- <visual_scene id="VisualSceneNode" name="orientation_test">
- <node id="camera1" name="camera1">
- <translate sid="translate">24.5791 14.1321 31.4654</translate>
- <rotate sid="rotateZ">0 0 1 0</rotate>
- <rotate sid="rotateY">0 1 0 42</rotate>
- <rotate sid="rotateX">1 0 0 -16.2</rotate>
- <scale sid="scale">1 1 1</scale>
- <instance_camera url="#cameraShape1" />
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>camera1</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="CameraAim" name="CameraAim">
- <translate sid="translate">0.0209301 3.68542 2.06912</translate>
- <rotate sid="rotateY">0 1 0 43.2561</rotate>
- <rotate sid="rotateX">1 0 0 -20</rotate>
- <scale sid="scale">1 1 1</scale>
- <node id="CameraDist" name="CameraDist">
- <translate sid="translate">0 0 45</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_camera url="#CameraDistShape" />
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>CameraDist</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>CameraAim</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere4" name="pSphere4">
- <translate sid="translate">-9.69237 0 7.70498</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape4">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert7SG" target="#Paint1">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere4</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere1" name="pSphere1">
- <translate sid="translate">13.0966 0 5.76254</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape1">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert7SG" target="#Paint1">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere1</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere2" name="pSphere2">
- <translate sid="translate">21.7661 0 -13.6375</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape2">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert7SG" target="#Paint1">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere2</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere3" name="pSphere3">
- <translate sid="translate">-13.862 0 -13.6154</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape3">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert7SG" target="#Paint1">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere3</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere5" name="pSphere5">
- <translate sid="translate">31.0862 0 18.5992</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape5">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert7SG" target="#Paint1">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere5</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pCube1" name="pCube1">
- <translate sid="translate">0 0 0</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pCubeShape1">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert4SG" target="#lambert2">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pCube1</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="group1" name="group1">
- <translate sid="translate">0 0 0</translate>
- <rotate sid="rotateZ">0 0 1 -162.693</rotate>
- <rotate sid="rotateY">0 1 0 21.3345</rotate>
- <rotate sid="rotateX">1 0 0 -100.567</rotate>
- <scale sid="scale">1 1 1</scale>
- <node id="pSphere6" name="pSphere6">
- <translate sid="translate">-13.862 0 -13.6154</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape6">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert6SG" target="#Plastic">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere6</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere7" name="pSphere7">
- <translate sid="translate">-9.69237 0 7.70498</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape7">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert6SG" target="#Plastic">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere7</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere8" name="pSphere8">
- <translate sid="translate">21.7661 0 -13.6375</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape8">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert6SG" target="#Plastic">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere8</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere9" name="pSphere9">
- <translate sid="translate">13.0966 0 5.76254</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape9">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert6SG" target="#Plastic">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere9</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>group1</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="group2" name="group2">
- <translate sid="translate">0 0 0</translate>
- <rotate sid="rotateZ">0 0 1 45.4017</rotate>
- <rotate sid="rotateY">0 1 0 79.393</rotate>
- <rotate sid="rotateX">1 0 0 5.10889</rotate>
- <scale sid="scale">1 1 1</scale>
- <node id="pSphere10" name="pSphere10">
- <translate sid="translate">31.0862 0 18.5992</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape10">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere10</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere11" name="pSphere11">
- <translate sid="translate">13.0966 0 5.76254</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape11">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere11</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere12" name="pSphere12">
- <translate sid="translate">7.4784 16.3496 7.36882</translate>
- <rotate sid="rotateZ">0 0 1 17.3073</rotate>
- <rotate sid="rotateY">0 1 0 158.666</rotate>
- <rotate sid="rotateX">1 0 0 79.4335</rotate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape12">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere12</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere13" name="pSphere13">
- <translate sid="translate">-9.69237 0 7.70498</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape13">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere13</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere14" name="pSphere14">
- <translate sid="translate">11.3635 -4.3926 2.21012</translate>
- <rotate sid="rotateZ">0 0 1 17.3073</rotate>
- <rotate sid="rotateY">0 1 0 158.666</rotate>
- <rotate sid="rotateX">1 0 0 79.4335</rotate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape14">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere14</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere15" name="pSphere15">
- <translate sid="translate">21.7661 0 -13.6375</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape15">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere15</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere16" name="pSphere16">
- <translate sid="translate">-9.5945 -8.92317 -5.74901</translate>
- <rotate sid="rotateZ">0 0 1 17.3073</rotate>
- <rotate sid="rotateY">0 1 0 158.666</rotate>
- <rotate sid="rotateX">1 0 0 79.4335</rotate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape16">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere16</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere17" name="pSphere17">
- <translate sid="translate">-13.862 0 -13.6154</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape17">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere17</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pSphere18" name="pSphere18">
- <translate sid="translate">-24.2135 6.497 -5.58935</translate>
- <rotate sid="rotateZ">0 0 1 17.3073</rotate>
- <rotate sid="rotateY">0 1 0 158.666</rotate>
- <rotate sid="rotateX">1 0 0 79.4335</rotate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pSphereShape18">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert5SG" target="#Metal">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pSphere18</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>group2</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pCube2" name="pCube2">
- <translate sid="translate">0 0 0</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pCubeShape2">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert8SG" target="#PlasticCenter">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pCube2</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pCube3" name="pCube3">
- <translate sid="translate">15 0 0</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pCubeShape3">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert9SG" target="#PlasticRed">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pCube3</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pCube4" name="pCube4">
- <translate sid="translate">0 15 0</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pCubeShape4">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert10SG" target="#lambert10">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pCube4</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- <node id="pCube5" name="pCube5">
- <translate sid="translate">0 0 15</translate>
- <scale sid="scale">1 1 1</scale>
- <instance_geometry url="#pCubeShape5">
- <bind_material>
- <technique_common>
- <instance_material symbol="lambert11SG" target="#lambert11">
- <bind_vertex_input semantic="TEX0" input_semantic="TEXCOORD" input_set="0" />
- </instance_material>
- </technique_common>
- </bind_material>
- </instance_geometry>
- <extra>
- <technique profile="OpenCOLLADAMaya">
- <originalMayaNodeId>pCube5</originalMayaNodeId>
- </technique>
- </extra>
- </node>
- </visual_scene>
- </library_visual_scenes>
- <scene>
- <instance_visual_scene url="#VisualSceneNode" />
- </scene>
-</COLLADA>
diff --git a/tests/RenderScriptTests/SceneGraph/assets/paint.jpg b/tests/RenderScriptTests/SceneGraph/assets/paint.jpg
deleted file mode 100644
index 0791045..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/paint.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/assets/red.jpg b/tests/RenderScriptTests/SceneGraph/assets/red.jpg
deleted file mode 100644
index 320a2a6..0000000
--- a/tests/RenderScriptTests/SceneGraph/assets/red.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png b/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png
deleted file mode 100644
index ff34a7f..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/robot.png
deleted file mode 100644
index f7353fd..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/drawable-nodpi/robot.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/res/menu/loader_menu.xml b/tests/RenderScriptTests/SceneGraph/res/menu/loader_menu.xml
deleted file mode 100644
index 9ea30107..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/menu/loader_menu.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@+id/load_model"
- android:title="@string/load_model" />
- <item android:id="@+id/use_blur"
- android:title="@string/use_blur" />
-</menu>
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/blur_h.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/blur_h.glsl
deleted file mode 100644
index c34adc9..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/blur_h.glsl
+++ /dev/null
@@ -1,15 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- vec2 blurCoord = varTex0;
- blurCoord.x = varTex0.x + UNI_blurOffset0;
- vec3 col = texture2D(UNI_color, blurCoord).rgb;
- blurCoord.x = varTex0.x + UNI_blurOffset1;
- col += texture2D(UNI_color, blurCoord).rgb;
- blurCoord.x = varTex0.x + UNI_blurOffset2;
- col += texture2D(UNI_color, blurCoord).rgb;
- blurCoord.x = varTex0.x + UNI_blurOffset3;
- col += texture2D(UNI_color, blurCoord).rgb;
-
- gl_FragColor = vec4(col * 0.25, 0.0);
-}
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/blur_v.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/blur_v.glsl
deleted file mode 100644
index ade05a2..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/blur_v.glsl
+++ /dev/null
@@ -1,17 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- vec2 blurCoord = varTex0;
- blurCoord.y = varTex0.y + UNI_blurOffset0;
- vec3 col = texture2D(UNI_color, blurCoord).rgb;
- blurCoord.y = varTex0.y + UNI_blurOffset1;
- col += texture2D(UNI_color, blurCoord).rgb;
- blurCoord.y = varTex0.y + UNI_blurOffset2;
- col += texture2D(UNI_color, blurCoord).rgb;
- blurCoord.y = varTex0.y + UNI_blurOffset3;
- col += texture2D(UNI_color, blurCoord).rgb;
-
- col = col * 0.25;
-
- gl_FragColor = vec4(col, 0.0);
-}
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/blur_vertex.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/blur_vertex.glsl
deleted file mode 100644
index bc824b6..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/blur_vertex.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- gl_Position = ATTRIB_position;
- varTex0 = ATTRIB_texture0;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/diffuse.glsl
deleted file mode 100644
index 2eb1028..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse.glsl
+++ /dev/null
@@ -1,19 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz);
- vec3 worldNorm = (varWorldNormal);
-
- vec3 light0Vec = V;
- vec3 light0R = reflect(light0Vec, worldNorm);
- float light0_Diffuse = dot(worldNorm, light0Vec);
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_diffuse, t0).rgba;
- col.xyz = col.xyz * light0_Diffuse * 1.2;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse_lights.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/diffuse_lights.glsl
deleted file mode 100644
index ef93e1c..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/diffuse_lights.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = normalize(UNI_lightPos_0.xyz - varWorldPos.xyz);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0);
-
- vec3 light1Vec = normalize(UNI_lightPos_1.xyz - varWorldPos.xyz);
- float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0);
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = UNI_diffuse;
- col.xyz = col.xyz * (light0_Diffuse * UNI_lightColor_0.xyz +
- light1_Diffuse * UNI_lightColor_1.xyz);
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/metal.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/metal.glsl
deleted file mode 100644
index b90a7b2..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/metal.glsl
+++ /dev/null
@@ -1,23 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = V;
- vec3 light0R = reflect(light0Vec, worldNorm);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0);
- float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0);
- float light0_Specular = pow(light0Spec, 15.0) * 0.5;
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_diffuse, t0).rgba;
- col.xyz = col.xyz * (textureCube(UNI_reflection, worldNorm).rgb * 0.5 + vec3(light0_Diffuse));
- col.xyz += light0_Specular * vec3(0.8, 0.8, 1.0);
-
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/paintf.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/paintf.glsl
deleted file mode 100644
index f3b89ed..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/paintf.glsl
+++ /dev/null
@@ -1,26 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = V;
- vec3 light0R = reflect(light0Vec, worldNorm);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.01, 0.99);
- float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0);
- float light0_Specular = pow(light0Spec, 150.0) * 0.5;
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_diffuse, t0).rgba;
- col.xyz = col.xyz * light0_Diffuse * 1.1;
- col.xyz += light0_Specular * vec3(0.8, 0.8, 1.0);
-
- float fresnel = mix(pow(1.0 - light0_Diffuse, 15.0), 1.0, 0.1);
- col.xyz = mix(col.xyz, textureCube(UNI_reflection, -light0R).rgb * 2.4, fresnel);
- col.w = 0.8;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/plastic.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/plastic.glsl
deleted file mode 100644
index 56f7151f..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/plastic.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = V;
- vec3 light0R = reflect(light0Vec, worldNorm);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0);
- float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0);
- float light0_Specular = pow(light0Spec, 10.0) * 0.5;
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = texture2D(UNI_diffuse, t0).rgba;
- col.xyz = col.xyz * light0_Diffuse * 1.2;
- col.xyz += light0_Specular * vec3(0.8, 0.8, 1.0);
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/plastic_lights.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/plastic_lights.glsl
deleted file mode 100644
index b253622..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/plastic_lights.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
- vec3 V = normalize(UNI_cameraPos.xyz - varWorldPos.xyz);
- vec3 worldNorm = normalize(varWorldNormal);
-
- vec3 light0Vec = normalize(UNI_lightPos_0.xyz - varWorldPos.xyz);
- vec3 light0R = reflect(light0Vec, worldNorm);
- float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0);
- float light0Spec = clamp(dot(-light0R, V), 0.001, 1.0);
- float light0_Specular = pow(light0Spec, 10.0) * 0.7;
-
- vec3 light1Vec = normalize(UNI_lightPos_1.xyz - varWorldPos.xyz);
- vec3 light1R = reflect(light1Vec, worldNorm);
- float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0);
- float light1Spec = clamp(dot(-light1R, V), 0.001, 1.0);
- float light1_Specular = pow(light1Spec, 10.0) * 0.7;
-
- vec2 t0 = varTex0.xy;
- lowp vec4 col = UNI_diffuse;
- col.xyz = col.xyz * (light0_Diffuse * UNI_lightColor_0.xyz +
- light1_Diffuse * UNI_lightColor_1.xyz);
- col.xyz += (light0_Specular + light1_Specular);
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/robot.a3d b/tests/RenderScriptTests/SceneGraph/res/raw/robot.a3d
deleted file mode 100644
index f48895c..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/robot.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/select_color.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/select_color.glsl
deleted file mode 100644
index 1a927ca..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/select_color.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- vec3 col = texture2D(UNI_color, varTex0).rgb;
-
- vec3 desat = vec3(0.299, 0.587, 0.114);
- float lum = dot(desat, col);
- float stepVal = step(lum, 0.8);
- col = mix(col, vec3(0.0), stepVal)*0.5;
-
- gl_FragColor = vec4(col, 0.0);
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/shader2v.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/shader2v.glsl
deleted file mode 100644
index 7910a54..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/shader2v.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- rs_matrix4x4 model;
- rs_matrix4x4 viewProj;
-*/
-
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
- vec4 objPos = ATTRIB_position;
- vec4 worldPos = UNI_model * objPos;
- gl_Position = UNI_viewProj * worldPos;
-
- mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
- vec3 worldNorm = model3 * ATTRIB_normal;
-
- varWorldPos = worldPos.xyz;
- varWorldNormal = worldNorm;
- varTex0 = ATTRIB_texture0;
-}
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/texture.glsl b/tests/RenderScriptTests/SceneGraph/res/raw/texture.glsl
deleted file mode 100644
index 662ecd8..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/texture.glsl
+++ /dev/null
@@ -1,7 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
- lowp vec4 col = texture2D(UNI_color, varTex0).rgba;
- gl_FragColor = col;
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/res/raw/unit_obj.a3d b/tests/RenderScriptTests/SceneGraph/res/raw/unit_obj.a3d
deleted file mode 100644
index 56eff04..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/raw/unit_obj.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/SceneGraph/res/values/strings.xml b/tests/RenderScriptTests/SceneGraph/res/values/strings.xml
deleted file mode 100644
index c916d79..0000000
--- a/tests/RenderScriptTests/SceneGraph/res/values/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <skip />
- <string name="load_model">Load Model</string>
- <string name="use_blur">Use Blur</string>
-</resources>
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Camera.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Camera.java
deleted file mode 100644
index 42f2be5..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Camera.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import com.android.scenegraph.SceneManager;
-
-import android.renderscript.*;
-import android.renderscript.Matrix4f;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class Camera extends SceneGraphBase {
-
- Transform mTransform;
-
- ScriptField_Camera_s.Item mData;
- ScriptField_Camera_s mField;
-
- public Camera() {
- mData = new ScriptField_Camera_s.Item();
- mData.near = 0.1f;
- mData.far = 1000.0f;
- mData.horizontalFOV = 60.0f;
- mData.aspect = 0;
- }
-
- public void setTransform(Transform t) {
- mTransform = t;
- if (mField != null) {
- mField.set_transformMatrix(0, mTransform.getRSData().getAllocation(), true);
- mField.set_isDirty(0, 1, true);
- }
- }
- public void setFOV(float fov) {
- mData.horizontalFOV = fov;
- if (mField != null) {
- mField.set_horizontalFOV(0, fov, true);
- mField.set_isDirty(0, 1, true);
- }
- }
-
- public void setNear(float n) {
- mData.near = n;
- if (mField != null) {
- mField.set_near(0, n, true);
- mField.set_isDirty(0, 1, true);
- }
- }
-
- public void setFar(float f) {
- mData.far = f;
- if (mField != null) {
- mField.set_far(0, f, true);
- mField.set_isDirty(0, 1, true);
- }
- }
-
- public void setName(String n) {
- super.setName(n);
- if (mField != null) {
- RenderScriptGL rs = SceneManager.getRS();
- mData.name = getNameAlloc(rs);
- mField.set_name(0, mData.name, true);
- mField.set_isDirty(0, 1, true);
- }
- }
-
- ScriptField_Camera_s getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- if (rs == null) {
- return null;
- }
-
- if (mTransform == null) {
- throw new RuntimeException("Cameras without transforms are invalid");
- }
-
- mField = new ScriptField_Camera_s(rs, 1);
-
- mData.transformMatrix = mTransform.getRSData().getAllocation();
- mData.transformTimestamp = 1;
- mData.timestamp = 1;
- mData.isDirty = 1;
- mData.name = getNameAlloc(rs);
- mField.set(mData, 0, true);
-
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaParser.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaParser.java
deleted file mode 100644
index b4b6fb9..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaParser.java
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-import com.android.scenegraph.CompoundTransform.TranslateComponent;
-import com.android.scenegraph.CompoundTransform.RotateComponent;
-import com.android.scenegraph.CompoundTransform.ScaleComponent;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.HashMap;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-import android.renderscript.*;
-import android.util.Log;
-
-public class ColladaParser {
- static final String TAG = "ColladaParser";
- Document mDom;
-
- HashMap<String, LightBase> mLights;
- HashMap<String, Camera> mCameras;
- HashMap<String, ArrayList<ShaderParam> > mEffectsParams;
- HashMap<String, Texture2D> mImages;
- HashMap<String, Texture2D> mSamplerImageMap;
- HashMap<String, String> mMeshIdNameMap;
- Scene mScene;
-
- String mRootDir;
-
- String toString(Float3 v) {
- String valueStr = v.x + " " + v.y + " " + v.z;
- return valueStr;
- }
-
- String toString(Float4 v) {
- String valueStr = v.x + " " + v.y + " " + v.z + " " + v.w;
- return valueStr;
- }
-
- public ColladaParser(){
- mLights = new HashMap<String, LightBase>();
- mCameras = new HashMap<String, Camera>();
- mEffectsParams = new HashMap<String, ArrayList<ShaderParam> >();
- mImages = new HashMap<String, Texture2D>();
- mMeshIdNameMap = new HashMap<String, String>();
- }
-
- public void init(InputStream is, String rootDir) {
- mLights.clear();
- mCameras.clear();
- mEffectsParams.clear();
-
- mRootDir = rootDir;
-
- long start = System.currentTimeMillis();
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder db = dbf.newDocumentBuilder();
- mDom = db.parse(is);
- } catch(ParserConfigurationException e) {
- e.printStackTrace();
- } catch(SAXException e) {
- e.printStackTrace();
- } catch(IOException e) {
- e.printStackTrace();
- }
- long end = System.currentTimeMillis();
- Log.v("TIMER", " Parse time: " + (end - start));
- exportSceneData();
- }
-
- Scene getScene() {
- return mScene;
- }
-
- private void exportSceneData(){
- mScene = new Scene();
-
- Element docEle = mDom.getDocumentElement();
- NodeList nl = docEle.getElementsByTagName("light");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element l = (Element)nl.item(i);
- convertLight(l);
- }
- }
-
- nl = docEle.getElementsByTagName("camera");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element c = (Element)nl.item(i);
- convertCamera(c);
- }
- }
-
- nl = docEle.getElementsByTagName("image");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element img = (Element)nl.item(i);
- convertImage(img);
- }
- }
-
- nl = docEle.getElementsByTagName("effect");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element e = (Element)nl.item(i);
- convertEffects(e);
- }
- }
-
- // Material is just a link to the effect
- nl = docEle.getElementsByTagName("material");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element m = (Element)nl.item(i);
- convertMaterials(m);
- }
- }
-
- // Look through the geometry list and build up a correlation between id's and names
- nl = docEle.getElementsByTagName("geometry");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element m = (Element)nl.item(i);
- convertGeometries(m);
- }
- }
-
-
- nl = docEle.getElementsByTagName("visual_scene");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element s = (Element)nl.item(i);
- getScene(s);
- }
- }
- }
-
- private void getRenderable(Element shape, Transform t) {
- String geoURL = shape.getAttribute("url").substring(1);
- String geoName = mMeshIdNameMap.get(geoURL);
- if (geoName != null) {
- geoURL = geoName;
- }
- //RenderableGroup group = new RenderableGroup();
- //group.setName(geoURL.substring(1));
- //mScene.appendRenderable(group);
- NodeList nl = shape.getElementsByTagName("instance_material");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element materialRef = (Element)nl.item(i);
- String meshIndexName = materialRef.getAttribute("symbol");
- String materialName = materialRef.getAttribute("target");
-
- Renderable d = new Renderable();
- d.setMesh(geoURL, meshIndexName);
- d.setMaterialName(materialName.substring(1));
- d.setName(geoURL);
-
- //Log.v(TAG, "Created drawable geo " + geoURL + " index " + meshIndexName + " material " + materialName);
-
- d.setTransform(t);
- //Log.v(TAG, "Set source param " + t.getName());
-
- // Now find all the parameters that exist on the material
- ArrayList<ShaderParam> materialParams;
- materialParams = mEffectsParams.get(materialName.substring(1));
- for (int pI = 0; pI < materialParams.size(); pI ++) {
- d.appendSourceParams(materialParams.get(pI));
- //Log.v(TAG, "Set source param i: " + pI + " name " + materialParams.get(pI).getParamName());
- }
- mScene.appendRenderable(d);
- //group.appendChildren(d);
- }
- }
- }
-
- private void updateLight(Element shape, Transform t) {
- String lightURL = shape.getAttribute("url");
- // collada uses a uri structure to link things,
- // but we ignore it for now and do a simple search
- LightBase light = mLights.get(lightURL.substring(1));
- if (light != null) {
- light.setTransform(t);
- //Log.v(TAG, "Set Light " + light.getName() + " " + t.getName());
- }
- }
-
- private void updateCamera(Element shape, Transform t) {
- String camURL = shape.getAttribute("url");
- // collada uses a uri structure to link things,
- // but we ignore it for now and do a simple search
- Camera cam = mCameras.get(camURL.substring(1));
- if (cam != null) {
- cam.setTransform(t);
- //Log.v(TAG, "Set Camera " + cam.getName() + " " + t.getName());
- }
- }
-
- private void getNode(Element node, Transform parent, String indent) {
- String name = node.getAttribute("name");
- String id = node.getAttribute("id");
- CompoundTransform current = new CompoundTransform();
- current.setName(name);
- if (parent != null) {
- parent.appendChild(current);
- } else {
- mScene.appendTransform(current);
- }
-
- mScene.addToTransformMap(current);
-
- //Log.v(TAG, indent + "|");
- //Log.v(TAG, indent + "[" + name + "]");
-
- Node childNode = node.getFirstChild();
- while (childNode != null) {
- if (childNode.getNodeType() == Node.ELEMENT_NODE) {
- Element field = (Element)childNode;
- String fieldName = field.getTagName();
- String description = field.getAttribute("sid");
- if (fieldName.equals("translate")) {
- Float3 value = getFloat3(field);
- current.addTranslate(description, value);
- //Log.v(TAG, indent + " translate " + description + toString(value));
- } else if (fieldName.equals("rotate")) {
- Float4 value = getFloat4(field);
- //Log.v(TAG, indent + " rotate " + description + toString(value));
- Float3 axis = new Float3(value.x, value.y, value.z);
- current.addRotate(description, axis, value.w);
- } else if (fieldName.equals("scale")) {
- Float3 value = getFloat3(field);
- //Log.v(TAG, indent + " scale " + description + toString(value));
- current.addScale(description, value);
- } else if (fieldName.equals("instance_geometry")) {
- getRenderable(field, current);
- } else if (fieldName.equals("instance_light")) {
- updateLight(field, current);
- } else if (fieldName.equals("instance_camera")) {
- updateCamera(field, current);
- } else if (fieldName.equals("node")) {
- getNode(field, current, indent + " ");
- }
- }
- childNode = childNode.getNextSibling();
- }
- }
-
- // This will find the actual texture node, which is sometimes hidden behind a sampler
- // and sometimes referenced directly
- Texture2D getTexture(String samplerName) {
- String texName = samplerName;
-
- // Check to see if the image file is hidden by a sampler surface link combo
- Element sampler = mDom.getElementById(samplerName);
- if (sampler != null) {
- NodeList nl = sampler.getElementsByTagName("source");
- if (nl != null && nl.getLength() == 1) {
- Element ref = (Element)nl.item(0);
- String surfaceName = getString(ref);
- if (surfaceName == null) {
- return null;
- }
-
- Element surface = mDom.getElementById(surfaceName);
- if (surface == null) {
- return null;
- }
- nl = surface.getElementsByTagName("init_from");
- if (nl != null && nl.getLength() == 1) {
- ref = (Element)nl.item(0);
- texName = getString(ref);
- }
- }
- }
-
- //Log.v(TAG, "Extracted texture name " + texName);
- return mImages.get(texName);
- }
-
- void extractParams(Element fx, ArrayList<ShaderParam> params) {
- Node paramNode = fx.getFirstChild();
- while (paramNode != null) {
- if (paramNode.getNodeType() == Node.ELEMENT_NODE) {
- String name = paramNode.getNodeName();
- // Now find what type it is
- Node typeNode = paramNode.getFirstChild();
- while (typeNode != null && typeNode.getNodeType() != Node.ELEMENT_NODE) {
- typeNode = typeNode.getNextSibling();
- }
- String paramType = typeNode.getNodeName();
- Element typeElem = (Element)typeNode;
- ShaderParam sceneParam = null;
- if (paramType.equals("color")) {
- Float4Param f4p = new Float4Param(name);
- Float4 value = getFloat4(typeElem);
- f4p.setValue(value);
- sceneParam = f4p;
- //Log.v(TAG, "Extracted " + sceneParam.getParamName() + " value " + toString(value));
- } else if (paramType.equals("float")) {
- Float4Param f4p = new Float4Param(name);
- float value = getFloat(typeElem);
- f4p.setValue(new Float4(value, value, value, value));
- sceneParam = f4p;
- //Log.v(TAG, "Extracted " + sceneParam.getParamName() + " value " + value);
- } else if (paramType.equals("texture")) {
- String samplerName = typeElem.getAttribute("texture");
- Texture2D tex = getTexture(samplerName);
- TextureParam texP = new TextureParam(name);
- texP.setTexture(tex);
- sceneParam = texP;
- //Log.v(TAG, "Extracted texture " + tex);
- }
- if (sceneParam != null) {
- params.add(sceneParam);
- }
- }
- paramNode = paramNode.getNextSibling();
- }
- }
-
- private void convertMaterials(Element mat) {
- String id = mat.getAttribute("id");
- NodeList nl = mat.getElementsByTagName("instance_effect");
- if (nl != null && nl.getLength() == 1) {
- Element ref = (Element)nl.item(0);
- String url = ref.getAttribute("url");
- ArrayList<ShaderParam> params = mEffectsParams.get(url.substring(1));
- mEffectsParams.put(id, params);
- }
- }
-
- private void convertGeometries(Element geo) {
- String id = geo.getAttribute("id");
- String name = geo.getAttribute("name");
- if (!id.equals(name)) {
- mMeshIdNameMap.put(id, name);
- }
- }
-
- private void convertEffects(Element fx) {
- String id = fx.getAttribute("id");
- ArrayList<ShaderParam> params = new ArrayList<ShaderParam>();
-
- NodeList nl = fx.getElementsByTagName("newparam");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- field.setIdAttribute("sid", true);
- }
- }
-
- nl = fx.getElementsByTagName("blinn");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- //Log.v(TAG, "blinn");
- extractParams(field, params);
- }
- }
- nl = fx.getElementsByTagName("lambert");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- //Log.v(TAG, "lambert");
- extractParams(field, params);
- }
- }
- nl = fx.getElementsByTagName("phong");
- if (nl != null) {
- for(int i = 0; i < nl.getLength(); i++) {
- Element field = (Element)nl.item(i);
- //Log.v(TAG, "phong");
- extractParams(field, params);
- }
- }
- mEffectsParams.put(id, params);
- }
-
- private void convertLight(Element light) {
- String name = light.getAttribute("name");
- String id = light.getAttribute("id");
-
- // Determine type
- String[] knownTypes = { "point", "spot", "directional" };
- final int POINT_LIGHT = 0;
- final int SPOT_LIGHT = 1;
- final int DIR_LIGHT = 2;
- int type = -1;
- for (int i = 0; i < knownTypes.length; i ++) {
- NodeList nl = light.getElementsByTagName(knownTypes[i]);
- if (nl != null && nl.getLength() != 0) {
- type = i;
- break;
- }
- }
-
- //Log.v(TAG, "Found Light Type " + type);
-
- LightBase sceneLight = null;
- switch (type) {
- case POINT_LIGHT:
- sceneLight = new PointLight();
- break;
- case SPOT_LIGHT: // TODO: finish light types
- break;
- case DIR_LIGHT: // TODO: finish light types
- break;
- }
-
- if (sceneLight == null) {
- return;
- }
-
- Float3 color = getFloat3(light, "color");
- sceneLight.setColor(color.x, color.y, color.z);
- sceneLight.setName(name);
- mScene.appendLight(sceneLight);
- mLights.put(id, sceneLight);
-
- //Log.v(TAG, "Light " + name + " color " + toString(color));
- }
-
- private void convertCamera(Element camera) {
- String name = camera.getAttribute("name");
- String id = camera.getAttribute("id");
- float fov = 30.0f;
- if (getString(camera, "yfov") != null) {
- fov = getFloat(camera, "yfov");
- } else if(getString(camera, "xfov") != null) {
- float aspect = getFloat(camera, "aspect_ratio");
- fov = getFloat(camera, "xfov") / aspect;
- }
-
- float near = getFloat(camera, "znear");
- float far = getFloat(camera, "zfar");
-
- Camera sceneCamera = new Camera();
- sceneCamera.setFOV(fov);
- sceneCamera.setNear(near);
- sceneCamera.setFar(far);
- sceneCamera.setName(name);
- mScene.appendCamera(sceneCamera);
- mCameras.put(id, sceneCamera);
- }
-
- private void convertImage(Element img) {
- String name = img.getAttribute("name");
- String id = img.getAttribute("id");
- String file = getString(img, "init_from");
-
- Texture2D tex = new Texture2D();
- tex.setFileName(file);
- tex.setFileDir(mRootDir);
- mScene.appendTextures(tex);
- mImages.put(id, tex);
- }
-
- private void getScene(Element scene) {
- String name = scene.getAttribute("name");
- String id = scene.getAttribute("id");
-
- Node childNode = scene.getFirstChild();
- while (childNode != null) {
- if (childNode.getNodeType() == Node.ELEMENT_NODE) {
- String indent = "";
- getNode((Element)childNode, null, indent);
- }
- childNode = childNode.getNextSibling();
- }
- }
-
- private String getString(Element elem, String name) {
- String text = null;
- NodeList nl = elem.getElementsByTagName(name);
- if (nl != null && nl.getLength() != 0) {
- text = ((Element)nl.item(0)).getFirstChild().getNodeValue();
- }
- return text;
- }
-
- private String getString(Element elem) {
- String text = null;
- text = elem.getFirstChild().getNodeValue();
- return text;
- }
-
- private int getInt(Element elem, String name) {
- return Integer.parseInt(getString(elem, name));
- }
-
- private float getFloat(Element elem, String name) {
- return Float.parseFloat(getString(elem, name));
- }
-
- private float getFloat(Element elem) {
- return Float.parseFloat(getString(elem));
- }
-
- private Float3 parseFloat3(String valueString) {
- StringTokenizer st = new StringTokenizer(valueString);
- float x = Float.parseFloat(st.nextToken());
- float y = Float.parseFloat(st.nextToken());
- float z = Float.parseFloat(st.nextToken());
- return new Float3(x, y, z);
- }
-
- private Float4 parseFloat4(String valueString) {
- StringTokenizer st = new StringTokenizer(valueString);
- float x = Float.parseFloat(st.nextToken());
- float y = Float.parseFloat(st.nextToken());
- float z = Float.parseFloat(st.nextToken());
- float w = Float.parseFloat(st.nextToken());
- return new Float4(x, y, z, w);
- }
-
- private Float3 getFloat3(Element elem, String name) {
- String valueString = getString(elem, name);
- return parseFloat3(valueString);
- }
-
- private Float4 getFloat4(Element elem, String name) {
- String valueString = getString(elem, name);
- return parseFloat4(valueString);
- }
-
- private Float3 getFloat3(Element elem) {
- String valueString = getString(elem);
- return parseFloat3(valueString);
- }
-
- private Float4 getFloat4(Element elem) {
- String valueString = getString(elem);
- return parseFloat4(valueString);
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaScene.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaScene.java
deleted file mode 100644
index 301075e..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ColladaScene.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.BufferedInputStream;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Element.Builder;
-import android.renderscript.Font.Style;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-import com.android.scenegraph.SceneManager.SceneLoadedCallback;
-
-
-public class ColladaScene {
-
- private String modelName;
- private static String TAG = "ColladaScene";
- private final int STATE_LAST_FOCUS = 1;
- boolean mLoadFromSD = false;
-
- SceneLoadedCallback mCallback;
-
- public ColladaScene(String name, SceneLoadedCallback cb) {
- modelName = name;
- mCallback = cb;
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
-
- mLoadFromSD = SceneManager.isSDCardPath(modelName);
-
- new ColladaLoaderTask().execute(modelName);
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- Scene mActiveScene;
-
- private class ColladaLoaderTask extends AsyncTask<String, Void, Boolean> {
- ColladaParser sceneSource;
- protected Boolean doInBackground(String... names) {
- String rootDir = names[0].substring(0, names[0].lastIndexOf('/') + 1);
- long start = System.currentTimeMillis();
- sceneSource = new ColladaParser();
- InputStream is = null;
- try {
- if (!mLoadFromSD) {
- is = mRes.getAssets().open(names[0]);
- } else {
- File f = new File(names[0]);
- is = new BufferedInputStream(new FileInputStream(f));
- }
- } catch (IOException e) {
- Log.e(TAG, "Could not open collada file");
- return new Boolean(false);
- }
- long end = System.currentTimeMillis();
- Log.v("TIMER", "Stream load time: " + (end - start));
-
- start = System.currentTimeMillis();
- sceneSource.init(is, rootDir);
- end = System.currentTimeMillis();
- Log.v("TIMER", "Collada parse time: " + (end - start));
- return new Boolean(true);
- }
-
- protected void onPostExecute(Boolean result) {
- mActiveScene = sceneSource.getScene();
- if (mCallback != null) {
- mCallback.mLoadedScene = mActiveScene;
- mCallback.run();
- }
-
- String shortName = modelName.substring(0, modelName.lastIndexOf('.'));
- new A3DLoaderTask().execute(shortName + ".a3d");
- }
- }
-
- private class A3DLoaderTask extends AsyncTask<String, Void, Boolean> {
- protected Boolean doInBackground(String... names) {
- long start = System.currentTimeMillis();
- FileA3D model;
- if (!mLoadFromSD) {
- model = FileA3D.createFromAsset(mRS, mRes.getAssets(), names[0]);
- } else {
- model = FileA3D.createFromFile(mRS, names[0]);
- }
- int numModels = model.getIndexEntryCount();
- for (int i = 0; i < numModels; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- mActiveScene.meshLoaded(entry.getMesh());
- }
- }
- long end = System.currentTimeMillis();
- Log.v("TIMER", "A3D load time: " + (end - start));
- return new Boolean(true);
- }
-
- protected void onPostExecute(Boolean result) {
- }
- }
-
-}
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java
deleted file mode 100644
index 9274b17..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/CompoundTransform.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import com.android.scenegraph.SceneManager;
-
-import android.renderscript.*;
-import android.renderscript.Float3;
-import android.renderscript.Matrix4f;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class CompoundTransform extends Transform {
-
- public static abstract class Component {
- String mName;
- CompoundTransform mParent;
- int mParentIndex;
- protected ScriptField_TransformComponent_s.Item mData;
-
- Component(int type, String name) {
- mData = new ScriptField_TransformComponent_s.Item();
- mData.type = type;
- mName = name;
- }
-
- void setNameAlloc() {
- RenderScriptGL rs = SceneManager.getRS();
- if (mData.name != null) {
- return;
- }
- mData.name = SceneManager.getCachedAlloc(getName());
- if (mData.name == null) {
- mData.name = SceneManager.getStringAsAllocation(rs, getName());
- SceneManager.cacheAlloc(getName(), mData.name);
- }
- }
-
- ScriptField_TransformComponent_s.Item getRSData() {
- setNameAlloc();
- return mData;
- }
-
- protected void update() {
- if (mParent != null) {
- mParent.updateRSComponent(this);
- }
- }
-
- public String getName() {
- return mName;
- }
- }
-
- public static class TranslateComponent extends Component {
- public TranslateComponent(String name, Float3 translate) {
- super(ScriptC_export.const_Transform_TRANSLATE, name);
- setValue(translate);
- }
- public Float3 getValue() {
- return new Float3(mData.value.x, mData.value.y, mData.value.z);
- }
- public void setValue(Float3 val) {
- mData.value.x = val.x;
- mData.value.y = val.y;
- mData.value.z = val.z;
- update();
- }
- }
-
- public static class RotateComponent extends Component {
- public RotateComponent(String name, Float3 axis, float angle) {
- super(ScriptC_export.const_Transform_ROTATE, name);
- setAxis(axis);
- setAngle(angle);
- }
- public Float3 getAxis() {
- return new Float3(mData.value.x, mData.value.y, mData.value.z);
- }
- public float getAngle() {
- return mData.value.w;
- }
- public void setAxis(Float3 val) {
- mData.value.x = val.x;
- mData.value.y = val.y;
- mData.value.z = val.z;
- update();
- }
- public void setAngle(float val) {
- mData.value.w = val;
- update();
- }
- }
-
- public static class ScaleComponent extends Component {
- public ScaleComponent(String name, Float3 scale) {
- super(ScriptC_export.const_Transform_SCALE, name);
- setValue(scale);
- }
- public Float3 getValue() {
- return new Float3(mData.value.x, mData.value.y, mData.value.z);
- }
- public void setValue(Float3 val) {
- mData.value.x = val.x;
- mData.value.y = val.y;
- mData.value.z = val.z;
- update();
- }
- }
-
- ScriptField_TransformComponent_s mComponentField;
- public ArrayList<Component> mTransformComponents;
-
- public CompoundTransform() {
- mTransformComponents = new ArrayList<Component>();
- }
-
- public TranslateComponent addTranslate(String name, Float3 translate) {
- TranslateComponent c = new TranslateComponent(name, translate);
- addComponent(c);
- return c;
- }
-
- public RotateComponent addRotate(String name, Float3 axis, float angle) {
- RotateComponent c = new RotateComponent(name, axis, angle);
- addComponent(c);
- return c;
- }
-
- public ScaleComponent addScale(String name, Float3 scale) {
- ScaleComponent c = new ScaleComponent(name, scale);
- addComponent(c);
- return c;
- }
-
- public void addComponent(Component c) {
- if (c.mParent != null) {
- throw new IllegalArgumentException("Transform components may not be shared");
- }
- c.mParent = this;
- c.mParentIndex = mTransformComponents.size();
- mTransformComponents.add(c);
- updateRSComponentAllocation();
- }
-
- public void setComponent(int index, Component c) {
- if (c.mParent != null) {
- throw new IllegalArgumentException("Transform components may not be shared");
- }
- if (index >= mTransformComponents.size()) {
- throw new IllegalArgumentException("Invalid component index");
- }
- c.mParent = this;
- c.mParentIndex = index;
- mTransformComponents.set(index, c);
- updateRSComponent(c);
- }
-
- void updateRSComponent(Component c) {
- if (mField == null || mComponentField == null) {
- return;
- }
- mComponentField.set(c.getRSData(), c.mParentIndex, true);
- mField.set_isDirty(0, 1, true);
- }
-
- void updateRSComponentAllocation() {
- if (mField == null) {
- return;
- }
- initLocalData();
-
- mField.set_components(0, mTransformData.components, false);
- mField.set_isDirty(0, 1, true);
- }
-
- void initLocalData() {
- RenderScriptGL rs = SceneManager.getRS();
- int numComponenets = mTransformComponents.size();
- if (numComponenets > 0) {
- mComponentField = new ScriptField_TransformComponent_s(rs, numComponenets);
- for (int i = 0; i < numComponenets; i ++) {
- Component ith = mTransformComponents.get(i);
- mComponentField.set(ith.getRSData(), i, false);
- }
- mComponentField.copyAll();
-
- mTransformData.components = mComponentField.getAllocation();
- }
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Float4Param.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Float4Param.java
deleted file mode 100644
index 1502458..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Float4Param.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import com.android.scenegraph.Scene;
-import com.android.scenegraph.SceneManager;
-
-import android.renderscript.Element;
-import android.renderscript.Float4;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class Float4Param extends ShaderParam {
- private static String TAG = "Float4Param";
-
- LightBase mLight;
-
- public Float4Param(String name) {
- super(name);
- }
-
- public Float4Param(String name, float x) {
- super(name);
- set(x, 0, 0, 0);
- }
-
- public Float4Param(String name, float x, float y) {
- super(name);
- set(x, y, 0, 0);
- }
-
- public Float4Param(String name, float x, float y, float z) {
- super(name);
- set(x, y, z, 0);
- }
-
- public Float4Param(String name, float x, float y, float z, float w) {
- super(name);
- set(x, y, z, w);
- }
-
- void set(float x, float y, float z, float w) {
- mData.float_value.x = x;
- mData.float_value.y = y;
- mData.float_value.z = z;
- mData.float_value.w = w;
- if (mField != null) {
- mField.set_float_value(0, mData.float_value, true);
- }
- incTimestamp();
- }
-
- public void setValue(Float4 v) {
- set(v.x, v.y, v.z, v.w);
- }
-
- public Float4 getValue() {
- return mData.float_value;
- }
-
- public void setLight(LightBase l) {
- mLight = l;
- if (mField != null) {
- mData.light = mLight.getRSData().getAllocation();
- mField.set_light(0, mData.light, true);
- }
- incTimestamp();
- }
-
- boolean findLight(String property) {
- String indexStr = mParamName.substring(property.length() + 1);
- if (indexStr == null) {
- Log.e(TAG, "Invalid light index.");
- return false;
- }
- int index = Integer.parseInt(indexStr);
- if (index == -1) {
- return false;
- }
- Scene parentScene = SceneManager.getInstance().getActiveScene();
- ArrayList<LightBase> allLights = parentScene.getLights();
- if (index >= allLights.size()) {
- return false;
- }
- mLight = allLights.get(index);
- if (mLight == null) {
- return false;
- }
- return true;
- }
-
- int getTypeFromName() {
- int paramType = ScriptC_export.const_ShaderParam_FLOAT4_DATA;
- if (mParamName.equalsIgnoreCase(cameraPos)) {
- paramType = ScriptC_export.const_ShaderParam_FLOAT4_CAMERA_POS;
- } else if(mParamName.equalsIgnoreCase(cameraDir)) {
- paramType = ScriptC_export.const_ShaderParam_FLOAT4_CAMERA_DIR;
- } else if(mParamName.startsWith(lightColor) && findLight(lightColor)) {
- paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_COLOR;
- } else if(mParamName.startsWith(lightPos) && findLight(lightPos)) {
- paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_POS;
- } else if(mParamName.startsWith(lightDir) && findLight(lightDir)) {
- paramType = ScriptC_export.const_ShaderParam_FLOAT4_LIGHT_DIR;
- }
- return paramType;
- }
-
- void initLocalData() {
- mData.type = getTypeFromName();
- if (mCamera != null) {
- mData.camera = mCamera.getRSData().getAllocation();
- }
- if (mLight != null) {
- mData.light = mLight.getRSData().getAllocation();
- }
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java
deleted file mode 100644
index 8a468db..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/FragmentShader.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import com.android.scenegraph.TextureBase;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.ProgramFragment.Builder;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class FragmentShader extends Shader {
- ProgramFragment mProgram;
- ScriptField_FragmentShader_s mField;
-
- public static class Builder {
-
- FragmentShader mShader;
- ProgramFragment.Builder mBuilder;
-
- public Builder(RenderScriptGL rs) {
- mShader = new FragmentShader();
- mBuilder = new ProgramFragment.Builder(rs);
- }
-
- public Builder setShader(Resources resources, int resourceID) {
- mBuilder.setShader(resources, resourceID);
- return this;
- }
-
- public Builder setShader(String code) {
- mBuilder.setShader(code);
- return this;
- }
-
- public Builder setObjectConst(Type type) {
- mShader.mPerObjConstants = type;
- return this;
- }
-
- public Builder setShaderConst(Type type) {
- mShader.mPerShaderConstants = type;
- return this;
- }
-
- public Builder addShaderTexture(Program.TextureType texType, String name) {
- mShader.mShaderTextureNames.add(name);
- mShader.mShaderTextureTypes.add(texType);
- return this;
- }
-
- public Builder addTexture(Program.TextureType texType, String name) {
- mShader.mTextureNames.add(name);
- mShader.mTextureTypes.add(texType);
- return this;
- }
-
- public FragmentShader create() {
- if (mShader.mPerShaderConstants != null) {
- mBuilder.addConstant(mShader.mPerShaderConstants);
- }
- if (mShader.mPerObjConstants != null) {
- mBuilder.addConstant(mShader.mPerObjConstants);
- }
- for (int i = 0; i < mShader.mTextureTypes.size(); i ++) {
- mBuilder.addTexture(mShader.mTextureTypes.get(i),
- mShader.mTextureNames.get(i));
- }
- for (int i = 0; i < mShader.mShaderTextureTypes.size(); i ++) {
- mBuilder.addTexture(mShader.mShaderTextureTypes.get(i),
- mShader.mShaderTextureNames.get(i));
- }
-
- mShader.mProgram = mBuilder.create();
- return mShader;
- }
- }
-
- public ProgramFragment getProgram() {
- return mProgram;
- }
-
- ScriptField_ShaderParam_s getTextureParams() {
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (rs == null || res == null) {
- return null;
- }
-
- ArrayList<ScriptField_ShaderParam_s.Item> paramList;
- paramList = new ArrayList<ScriptField_ShaderParam_s.Item>();
-
- int shaderTextureStart = mTextureTypes.size();
- for (int i = 0; i < mShaderTextureNames.size(); i ++) {
- ShaderParam sp = mSourceParams.get(mShaderTextureNames.get(i));
- if (sp != null && sp instanceof TextureParam) {
- TextureParam p = (TextureParam)sp;
- ScriptField_ShaderParam_s.Item paramRS = new ScriptField_ShaderParam_s.Item();
- paramRS.bufferOffset = shaderTextureStart + i;
- paramRS.transformTimestamp = 0;
- paramRS.dataTimestamp = 0;
- paramRS.data = p.getRSData().getAllocation();
- paramList.add(paramRS);
- }
- }
-
- ScriptField_ShaderParam_s rsParams = null;
- int paramCount = paramList.size();
- if (paramCount != 0) {
- rsParams = new ScriptField_ShaderParam_s(rs, paramCount);
- for (int i = 0; i < paramCount; i++) {
- rsParams.set(paramList.get(i), i, false);
- }
- rsParams.copyAll();
- }
- return rsParams;
- }
-
- ScriptField_FragmentShader_s getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (rs == null || res == null) {
- return null;
- }
-
- ScriptField_FragmentShader_s.Item item = new ScriptField_FragmentShader_s.Item();
- item.program = mProgram;
-
- ScriptField_ShaderParam_s texParams = getTextureParams();
- if (texParams != null) {
- item.shaderTextureParams = texParams.getAllocation();
- }
-
- linkConstants(rs);
- if (mPerShaderConstants != null) {
- item.shaderConst = mConstantBuffer;
- item.shaderConstParams = mConstantBufferParams.getAllocation();
- mProgram.bindConstants(item.shaderConst, 0);
- }
-
- item.objectConstIndex = -1;
- if (mPerObjConstants != null) {
- item.objectConstIndex = mPerShaderConstants != null ? 1 : 0;
- }
-
- mField = new ScriptField_FragmentShader_s(rs, 1);
- mField.set(item, 0, true);
- return mField;
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/LightBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/LightBase.java
deleted file mode 100644
index 8f5e2e7..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/LightBase.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.Float3;
-import android.renderscript.Float4;
-import android.renderscript.Matrix4f;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public abstract class LightBase extends SceneGraphBase {
- static final int RS_LIGHT_POINT = 0;
- static final int RS_LIGHT_DIRECTIONAL = 1;
-
- ScriptField_Light_s mField;
- ScriptField_Light_s.Item mFieldData;
- Transform mTransform;
- Float4 mColor;
- float mIntensity;
- public LightBase() {
- mColor = new Float4(0.0f, 0.0f, 0.0f, 0.0f);
- mIntensity = 1.0f;
- }
-
- public void setTransform(Transform t) {
- mTransform = t;
- updateRSData();
- }
-
- public void setColor(float r, float g, float b) {
- mColor.x = r;
- mColor.y = g;
- mColor.z = b;
- updateRSData();
- }
-
- public void setColor(Float3 c) {
- setColor(c.x, c.y, c.z);
- }
-
- public void setIntensity(float i) {
- mIntensity = i;
- updateRSData();
- }
-
- public void setName(String n) {
- super.setName(n);
- updateRSData();
- }
-
- protected void updateRSData() {
- if (mField == null) {
- return;
- }
- RenderScriptGL rs = SceneManager.getRS();
- mFieldData.transformMatrix = mTransform.getRSData().getAllocation();
- mFieldData.name = getNameAlloc(rs);
- mFieldData.color = mColor;
- mFieldData.intensity = mIntensity;
-
- initLocalData();
-
- mField.set(mFieldData, 0, true);
- }
-
- abstract void initLocalData();
-
- ScriptField_Light_s getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- if (rs == null) {
- return null;
- }
- if (mField == null) {
- mField = new ScriptField_Light_s(rs, 1);
- mFieldData = new ScriptField_Light_s.Item();
- }
-
- updateRSData();
-
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/MatrixTransform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/MatrixTransform.java
deleted file mode 100644
index 6d70bc9..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/MatrixTransform.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.Matrix4f;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class MatrixTransform extends Transform {
-
- Matrix4f mLocalMatrix;
- public MatrixTransform() {
- mLocalMatrix = new Matrix4f();
- }
-
- public void setMatrix(Matrix4f matrix) {
- mLocalMatrix = matrix;
- updateRSData();
- }
-
- public Matrix4f getMatrix() {
- return new Matrix4f(mLocalMatrix.getArray());
- }
-
- void initLocalData() {
- mTransformData.localMat = mLocalMatrix;
- }
-
- void updateRSData() {
- if (mField == null) {
- return;
- }
- mField.set_localMat(0, mLocalMatrix, false);
- mField.set_isDirty(0, 1, true);
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/PointLight.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/PointLight.java
deleted file mode 100644
index 574bafc..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/PointLight.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class PointLight extends LightBase {
- public PointLight() {
- }
-
- void initLocalData() {
- mFieldData.type = RS_LIGHT_POINT;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderPass.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderPass.java
deleted file mode 100644
index 02fd69d..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderPass.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.util.Log;
-
-import android.renderscript.*;
-import android.content.res.Resources;
-
-/**
- * @hide
- */
-public class RenderPass extends SceneGraphBase {
-
- TextureRenderTarget mColorTarget;
- Float4 mClearColor;
- boolean mShouldClearColor;
-
- TextureRenderTarget mDepthTarget;
- float mClearDepth;
- boolean mShouldClearDepth;
-
- ArrayList<RenderableBase> mObjectsToDraw;
-
- Camera mCamera;
-
- ScriptField_RenderPass_s.Item mRsField;
-
- public RenderPass() {
- mObjectsToDraw = new ArrayList<RenderableBase>();
- mClearColor = new Float4(0.0f, 0.0f, 0.0f, 0.0f);
- mShouldClearColor = true;
- mClearDepth = 1.0f;
- mShouldClearDepth = true;
- }
-
- public void appendRenderable(Renderable d) {
- mObjectsToDraw.add(d);
- }
-
- public void setCamera(Camera c) {
- mCamera = c;
- }
-
- public void setColorTarget(TextureRenderTarget colorTarget) {
- mColorTarget = colorTarget;
- }
- public void setClearColor(Float4 clearColor) {
- mClearColor = clearColor;
- }
- public void setShouldClearColor(boolean shouldClearColor) {
- mShouldClearColor = shouldClearColor;
- }
-
- public void setDepthTarget(TextureRenderTarget depthTarget) {
- mDepthTarget = depthTarget;
- }
- public void setClearDepth(float clearDepth) {
- mClearDepth = clearDepth;
- }
- public void setShouldClearDepth(boolean shouldClearDepth) {
- mShouldClearDepth = shouldClearDepth;
- }
-
- public ArrayList<RenderableBase> getRenderables() {
- return mObjectsToDraw;
- }
-
- ScriptField_RenderPass_s.Item getRsField(RenderScriptGL rs, Resources res) {
- if (mRsField != null) {
- return mRsField;
- }
-
- mRsField = new ScriptField_RenderPass_s.Item();
- if (mColorTarget != null) {
- mRsField.color_target = mColorTarget.getRsData(true).get_texture(0);
- }
- if (mColorTarget != null) {
- mRsField.depth_target = mDepthTarget.getRsData(true).get_texture(0);
- }
- mRsField.camera = mCamera != null ? mCamera.getRSData().getAllocation() : null;
-
- if (mObjectsToDraw.size() != 0) {
- Allocation drawableData = Allocation.createSized(rs,
- Element.ALLOCATION(rs),
- mObjectsToDraw.size());
- Allocation[] drawableAllocs = new Allocation[mObjectsToDraw.size()];
- for (int i = 0; i < mObjectsToDraw.size(); i ++) {
- Renderable dI = (Renderable)mObjectsToDraw.get(i);
- drawableAllocs[i] = dI.getRsField(rs, res).getAllocation();
- }
- drawableData.copyFrom(drawableAllocs);
- mRsField.objects = drawableData;
- }
-
- mRsField.clear_color = mClearColor;
- mRsField.clear_depth = mClearDepth;
- mRsField.should_clear_color = mShouldClearColor;
- mRsField.should_clear_depth = mShouldClearDepth;
- return mRsField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderState.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderState.java
deleted file mode 100644
index c08a722..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderState.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-import android.content.res.Resources;
-
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramRaster;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.RSRuntimeException;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class RenderState extends SceneGraphBase {
- VertexShader mVertex;
- FragmentShader mFragment;
- ProgramStore mStore;
- ProgramRaster mRaster;
-
- ScriptField_RenderState_s mField;
-
- public RenderState(VertexShader pv,
- FragmentShader pf,
- ProgramStore ps,
- ProgramRaster pr) {
- mVertex = pv;
- mFragment = pf;
- mStore = ps;
- mRaster = pr;
- }
-
- public RenderState(RenderState r) {
- mVertex = r.mVertex;
- mFragment = r.mFragment;
- mStore = r.mStore;
- mRaster = r.mRaster;
- }
-
- public void setProgramVertex(VertexShader pv) {
- mVertex = pv;
- updateRSData();
- }
-
- public void setProgramFragment(FragmentShader pf) {
- mFragment = pf;
- updateRSData();
- }
-
- public void setProgramStore(ProgramStore ps) {
- mStore = ps;
- updateRSData();
- }
-
- public void setProgramRaster(ProgramRaster pr) {
- mRaster = pr;
- updateRSData();
- }
-
- void updateRSData() {
- if (mField == null) {
- return;
- }
- ScriptField_RenderState_s.Item item = new ScriptField_RenderState_s.Item();
- item.pv = mVertex.getRSData().getAllocation();
- item.pf = mFragment.getRSData().getAllocation();
- item.ps = mStore;
- item.pr = mRaster;
-
- mField.set(item, 0, true);
- }
-
- public ScriptField_RenderState_s getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- if (rs == null) {
- return null;
- }
-
- mField = new ScriptField_RenderState_s(rs, 1);
- updateRSData();
-
- return mField;
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java
deleted file mode 100644
index 9266f30..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Renderable.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import com.android.scenegraph.Float4Param;
-import com.android.scenegraph.MatrixTransform;
-import com.android.scenegraph.SceneManager;
-import com.android.scenegraph.ShaderParam;
-import com.android.scenegraph.TransformParam;
-
-import android.content.res.Resources;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.Element.DataType;
-import android.renderscript.Matrix4f;
-import android.renderscript.Mesh;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class Renderable extends RenderableBase {
- HashMap<String, ShaderParam> mSourceParams;
-
- RenderState mRenderState;
- Transform mTransform;
-
- String mMeshName;
- String mMeshIndexName;
-
- public String mMaterialName;
-
- ScriptField_Renderable_s mField;
- ScriptField_Renderable_s.Item mData;
-
- public Renderable() {
- mSourceParams = new HashMap<String, ShaderParam>();
- mData = new ScriptField_Renderable_s.Item();
- }
-
- public void setCullType(int cull) {
- mData.cullType = cull;
- }
-
- public void setRenderState(RenderState renderState) {
- mRenderState = renderState;
- if (mField != null) {
- RenderScriptGL rs = SceneManager.getRS();
- updateFieldItem(rs);
- mField.set(mData, 0, true);
- }
- }
-
- public void setMesh(Mesh mesh) {
- mData.mesh = mesh;
- if (mField != null) {
- mField.set_mesh(0, mData.mesh, true);
- }
- }
-
- public void setMesh(String mesh, String indexName) {
- mMeshName = mesh;
- mMeshIndexName = indexName;
- }
-
- public void setMaterialName(String name) {
- mMaterialName = name;
- }
-
- public Transform getTransform() {
- return mTransform;
- }
-
- public void setTransform(Transform t) {
- mTransform = t;
- if (mField != null) {
- RenderScriptGL rs = SceneManager.getRS();
- updateFieldItem(rs);
- mField.set(mData, 0, true);
- }
- }
-
- public void appendSourceParams(ShaderParam p) {
- mSourceParams.put(p.getParamName(), p);
- // Possibly lift this restriction later
- if (mField != null) {
- throw new RuntimeException("Can't add source params to objects that are rendering");
- }
- }
-
- public void resolveMeshData(Mesh mesh) {
- mData.mesh = mesh;
- if (mData.mesh == null) {
- Log.v("DRAWABLE: ", "*** NO MESH *** " + mMeshName);
- return;
- }
- int subIndexCount = mData.mesh.getPrimitiveCount();
- if (subIndexCount == 1 || mMeshIndexName == null) {
- mData.meshIndex = 0;
- } else {
- for (int i = 0; i < subIndexCount; i ++) {
- if (mData.mesh.getIndexSetAllocation(i).getName().equals(mMeshIndexName)) {
- mData.meshIndex = i;
- break;
- }
- }
- }
- if (mField != null) {
- mField.set(mData, 0, true);
- }
- }
-
- void updateTextures(RenderScriptGL rs) {
- Iterator<ShaderParam> allParamsIter = mSourceParams.values().iterator();
- int paramIndex = 0;
- while (allParamsIter.hasNext()) {
- ShaderParam sp = allParamsIter.next();
- if (sp instanceof TextureParam) {
- TextureParam p = (TextureParam)sp;
- TextureBase tex = p.getTexture();
- if (tex != null) {
- mData.pf_textures[paramIndex++] = tex.getRsData(false).getAllocation();
- }
- }
- }
- ProgramFragment pf = mRenderState.mFragment.mProgram;
- mData.pf_num_textures = pf != null ? Math.min(pf.getTextureCount(), paramIndex) : 0;
- if (mField != null) {
- mField.set_pf_textures(0, mData.pf_textures, true);
- mField.set_pf_num_textures(0, mData.pf_num_textures, true);
- }
- }
-
- public void setVisible(boolean vis) {
- mData.cullType = vis ? 0 : 2;
- if (mField != null) {
- mField.set_cullType(0, mData.cullType, true);
- }
- }
-
- ScriptField_Renderable_s getRsField(RenderScriptGL rs, Resources res) {
- if (mField != null) {
- return mField;
- }
- updateFieldItem(rs);
- updateTextures(rs);
-
- mField = new ScriptField_Renderable_s(rs, 1);
- mField.set(mData, 0, true);
-
- return mField;
- }
-
- void updateVertexConstants(RenderScriptGL rs) {
- Allocation pvParams = null, vertexConstants = null;
- VertexShader pv = mRenderState.mVertex;
- if (pv != null && pv.getObjectConstants() != null) {
- vertexConstants = Allocation.createTyped(rs, pv.getObjectConstants());
- Element vertexConst = vertexConstants.getType().getElement();
- pvParams = ShaderParam.fillInParams(vertexConst, mSourceParams,
- mTransform).getAllocation();
- }
- mData.pv_const = vertexConstants;
- mData.pv_constParams = pvParams;
- }
-
- void updateFragmentConstants(RenderScriptGL rs) {
- Allocation pfParams = null, fragmentConstants = null;
- FragmentShader pf = mRenderState.mFragment;
- if (pf != null && pf.getObjectConstants() != null) {
- fragmentConstants = Allocation.createTyped(rs, pf.getObjectConstants());
- Element fragmentConst = fragmentConstants.getType().getElement();
- pfParams = ShaderParam.fillInParams(fragmentConst, mSourceParams,
- mTransform).getAllocation();
- }
- mData.pf_const = fragmentConstants;
- mData.pf_constParams = pfParams;
- }
-
- void updateFieldItem(RenderScriptGL rs) {
- if (mRenderState == null) {
- mRenderState = SceneManager.getDefaultState();
- }
- if (mTransform == null) {
- mTransform = SceneManager.getDefaultTransform();
- }
- updateVertexConstants(rs);
- updateFragmentConstants(rs);
-
- mData.transformMatrix = mTransform.getRSData().getAllocation();
-
- mData.name = getNameAlloc(rs);
- mData.render_state = mRenderState.getRSData().getAllocation();
- mData.bVolInitialized = 0;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableBase.java
deleted file mode 100644
index 74535dd..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableBase.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class RenderableBase extends SceneGraphBase {
- public RenderableBase() {
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableGroup.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableGroup.java
deleted file mode 100644
index 590bbab..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/RenderableGroup.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class RenderableGroup extends RenderableBase {
-
- ArrayList<RenderableBase> mChildren;
-
- public RenderableGroup() {
- mChildren = new ArrayList<RenderableBase>();
- }
-
- public void appendChildren(RenderableBase d) {
- mChildren.add(d);
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java
deleted file mode 100644
index 27336ab..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Scene.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import com.android.scenegraph.Camera;
-import com.android.scenegraph.CompoundTransform;
-import com.android.scenegraph.RenderPass;
-import com.android.scenegraph.Renderable;
-import com.android.scenegraph.SceneManager;
-import com.android.scenegraph.TextureBase;
-
-import android.content.res.Resources;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Mesh;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class Scene extends SceneGraphBase {
- private static String TIMER_TAG = "TIMER";
-
- CompoundTransform mRootTransforms;
- HashMap<String, Transform> mTransformMap;
- ArrayList<RenderPass> mRenderPasses;
- ArrayList<LightBase> mLights;
- ArrayList<Camera> mCameras;
- ArrayList<FragmentShader> mFragmentShaders;
- ArrayList<VertexShader> mVertexShaders;
- ArrayList<RenderableBase> mRenderables;
- HashMap<String, RenderableBase> mRenderableMap;
- ArrayList<Texture2D> mTextures;
-
- HashMap<String, ArrayList<Renderable> > mRenderableMeshMap;
-
- // RS Specific stuff
- ScriptField_SgTransform mTransformRSData;
-
- RenderScriptGL mRS;
- Resources mRes;
-
- ScriptField_RenderPass_s mRenderPassAlloc;
-
- public Scene() {
- mRenderPasses = new ArrayList<RenderPass>();
- mLights = new ArrayList<LightBase>();
- mCameras = new ArrayList<Camera>();
- mFragmentShaders = new ArrayList<FragmentShader>();
- mVertexShaders = new ArrayList<VertexShader>();
- mRenderables = new ArrayList<RenderableBase>();
- mRenderableMap = new HashMap<String, RenderableBase>();
- mRenderableMeshMap = new HashMap<String, ArrayList<Renderable> >();
- mTextures = new ArrayList<Texture2D>();
- mRootTransforms = new CompoundTransform();
- mRootTransforms.setName("_scene_root_");
- mTransformMap = new HashMap<String, Transform>();
- }
-
- public void appendTransform(Transform t) {
- if (t == null) {
- throw new RuntimeException("Adding null object");
- }
- mRootTransforms.appendChild(t);
- }
-
- public CompoundTransform appendNewCompoundTransform() {
- CompoundTransform t = new CompoundTransform();
- appendTransform(t);
- return t;
- }
-
- public MatrixTransform appendNewMatrixTransform() {
- MatrixTransform t = new MatrixTransform();
- appendTransform(t);
- return t;
- }
-
- // temporary
- public void addToTransformMap(Transform t) {
- mTransformMap.put(t.getName(), t);
- }
-
- public Transform getTransformByName(String name) {
- return mTransformMap.get(name);
- }
-
- public void appendRenderPass(RenderPass p) {
- if (p == null) {
- throw new RuntimeException("Adding null object");
- }
- mRenderPasses.add(p);
- }
-
- public RenderPass appendNewRenderPass() {
- RenderPass p = new RenderPass();
- appendRenderPass(p);
- return p;
- }
-
- public void clearRenderPasses() {
- mRenderPasses.clear();
- }
-
- public void appendLight(LightBase l) {
- if (l == null) {
- throw new RuntimeException("Adding null object");
- }
- mLights.add(l);
- }
-
- public void appendCamera(Camera c) {
- if (c == null) {
- throw new RuntimeException("Adding null object");
- }
- mCameras.add(c);
- }
-
- public Camera appendNewCamera() {
- Camera c = new Camera();
- appendCamera(c);
- return c;
- }
-
- public void appendShader(FragmentShader f) {
- if (f == null) {
- throw new RuntimeException("Adding null object");
- }
- mFragmentShaders.add(f);
- }
-
- public void appendShader(VertexShader v) {
- if (v == null) {
- throw new RuntimeException("Adding null object");
- }
- mVertexShaders.add(v);
- }
-
- public ArrayList<Camera> getCameras() {
- return mCameras;
- }
-
- public ArrayList<LightBase> getLights() {
- return mLights;
- }
-
- public void appendRenderable(RenderableBase d) {
- if (d == null) {
- throw new RuntimeException("Adding null object");
- }
- mRenderables.add(d);
- if (d.getName() != null) {
- mRenderableMap.put(d.getName(), d);
- }
- }
-
- public Renderable appendNewRenderable() {
- Renderable r = new Renderable();
- appendRenderable(r);
- return r;
- }
-
- public ArrayList<RenderableBase> getRenderables() {
- return mRenderables;
- }
-
- public RenderableBase getRenderableByName(String name) {
- return mRenderableMap.get(name);
- }
-
- public void appendTextures(Texture2D tex) {
- if (tex == null) {
- throw new RuntimeException("Adding null object");
- }
- mTextures.add(tex);
- }
-
- public void assignRenderStateToMaterial(RenderState renderState, String regex) {
- Pattern pattern = Pattern.compile(regex);
- int numRenderables = mRenderables.size();
- for (int i = 0; i < numRenderables; i ++) {
- Renderable shape = (Renderable)mRenderables.get(i);
- Matcher m = pattern.matcher(shape.mMaterialName);
- if (m.find()) {
- shape.setRenderState(renderState);
- }
- }
- }
-
- public void assignRenderState(RenderState renderState) {
- int numRenderables = mRenderables.size();
- for (int i = 0; i < numRenderables; i ++) {
- Renderable shape = (Renderable)mRenderables.get(i);
- shape.setRenderState(renderState);
- }
- }
-
- public void meshLoaded(Mesh m) {
- ArrayList<Renderable> entries = mRenderableMeshMap.get(m.getName());
- int numEntries = entries.size();
- for (int i = 0; i < numEntries; i++) {
- Renderable d = entries.get(i);
- d.resolveMeshData(m);
- }
- }
-
- void addToMeshMap(Renderable d) {
- ArrayList<Renderable> entries = mRenderableMeshMap.get(d.mMeshName);
- if (entries == null) {
- entries = new ArrayList<Renderable>();
- mRenderableMeshMap.put(d.mMeshName, entries);
- }
- entries.add(d);
- }
-
- public void destroyRS() {
- SceneManager sceneManager = SceneManager.getInstance();
- mTransformRSData = null;
- sceneManager.mRenderLoop.bind_gRootNode(mTransformRSData);
- sceneManager.mRenderLoop.set_gRenderableObjects(null);
- mRenderPassAlloc = null;
- sceneManager.mRenderLoop.set_gRenderPasses(null);
- sceneManager.mRenderLoop.bind_gFrontToBack(null);
- sceneManager.mRenderLoop.bind_gBackToFront(null);
- sceneManager.mRenderLoop.set_gCameras(null);
-
- mTransformMap = null;
- mRenderPasses = null;
- mLights = null;
- mCameras = null;
- mRenderables = null;
- mRenderableMap = null;
- mTextures = null;
- mRenderableMeshMap = null;
- mRootTransforms = null;
- }
-
- public void initRenderPassRS(RenderScriptGL rs, SceneManager sceneManager) {
- if (mRenderPasses.size() != 0) {
- mRenderPassAlloc = new ScriptField_RenderPass_s(mRS, mRenderPasses.size());
- for (int i = 0; i < mRenderPasses.size(); i ++) {
- mRenderPassAlloc.set(mRenderPasses.get(i).getRsField(mRS, mRes), i, false);
- }
- mRenderPassAlloc.copyAll();
- sceneManager.mRenderLoop.set_gRenderPasses(mRenderPassAlloc.getAllocation());
- }
- }
-
- private void addDrawables(RenderScriptGL rs, Resources res, SceneManager sceneManager) {
- Allocation drawableData = Allocation.createSized(rs,
- Element.ALLOCATION(rs),
- mRenderables.size());
- Allocation[] drawableAllocs = new Allocation[mRenderables.size()];
- for (int i = 0; i < mRenderables.size(); i ++) {
- Renderable dI = (Renderable)mRenderables.get(i);
- addToMeshMap(dI);
- drawableAllocs[i] = dI.getRsField(rs, res).getAllocation();
- }
- drawableData.copyFrom(drawableAllocs);
- sceneManager.mRenderLoop.set_gRenderableObjects(drawableData);
-
- initRenderPassRS(rs, sceneManager);
- }
-
- private void addShaders(RenderScriptGL rs, Resources res, SceneManager sceneManager) {
- if (mVertexShaders.size() > 0) {
- Allocation shaderData = Allocation.createSized(rs, Element.ALLOCATION(rs),
- mVertexShaders.size());
- Allocation[] shaderAllocs = new Allocation[mVertexShaders.size()];
- for (int i = 0; i < mVertexShaders.size(); i ++) {
- VertexShader sI = mVertexShaders.get(i);
- shaderAllocs[i] = sI.getRSData().getAllocation();
- }
- shaderData.copyFrom(shaderAllocs);
- sceneManager.mRenderLoop.set_gVertexShaders(shaderData);
- }
-
- if (mFragmentShaders.size() > 0) {
- Allocation shaderData = Allocation.createSized(rs, Element.ALLOCATION(rs),
- mFragmentShaders.size());
- Allocation[] shaderAllocs = new Allocation[mFragmentShaders.size()];
- for (int i = 0; i < mFragmentShaders.size(); i ++) {
- FragmentShader sI = mFragmentShaders.get(i);
- shaderAllocs[i] = sI.getRSData().getAllocation();
- }
- shaderData.copyFrom(shaderAllocs);
- sceneManager.mRenderLoop.set_gFragmentShaders(shaderData);
- }
- }
-
- public void initRS() {
- SceneManager sceneManager = SceneManager.getInstance();
- mRS = SceneManager.getRS();
- mRes = SceneManager.getRes();
- long start = System.currentTimeMillis();
- mTransformRSData = mRootTransforms.getRSData();
- long end = System.currentTimeMillis();
- Log.v(TIMER_TAG, "Transform init time: " + (end - start));
-
- start = System.currentTimeMillis();
-
- sceneManager.mRenderLoop.bind_gRootNode(mTransformRSData);
- end = System.currentTimeMillis();
- Log.v(TIMER_TAG, "Script init time: " + (end - start));
-
- start = System.currentTimeMillis();
- addDrawables(mRS, mRes, sceneManager);
- end = System.currentTimeMillis();
- Log.v(TIMER_TAG, "Renderable init time: " + (end - start));
-
- addShaders(mRS, mRes, sceneManager);
-
- Allocation opaqueBuffer = null;
- if (mRenderables.size() > 0) {
- opaqueBuffer = Allocation.createSized(mRS, Element.U32(mRS), mRenderables.size());
- }
- Allocation transparentBuffer = null;
- if (mRenderables.size() > 0) {
- transparentBuffer = Allocation.createSized(mRS, Element.U32(mRS), mRenderables.size());
- }
-
- sceneManager.mRenderLoop.bind_gFrontToBack(opaqueBuffer);
- sceneManager.mRenderLoop.bind_gBackToFront(transparentBuffer);
-
- if (mCameras.size() > 0) {
- Allocation cameraData;
- cameraData = Allocation.createSized(mRS, Element.ALLOCATION(mRS), mCameras.size());
- Allocation[] cameraAllocs = new Allocation[mCameras.size()];
- for (int i = 0; i < mCameras.size(); i ++) {
- cameraAllocs[i] = mCameras.get(i).getRSData().getAllocation();
- }
- cameraData.copyFrom(cameraAllocs);
- sceneManager.mRenderLoop.set_gCameras(cameraData);
- }
-
- if (mLights.size() > 0) {
- Allocation lightData = Allocation.createSized(mRS,
- Element.ALLOCATION(mRS),
- mLights.size());
- Allocation[] lightAllocs = new Allocation[mLights.size()];
- for (int i = 0; i < mLights.size(); i ++) {
- lightAllocs[i] = mLights.get(i).getRSData().getAllocation();
- }
- lightData.copyFrom(lightAllocs);
- sceneManager.mRenderLoop.set_gLights(lightData);
- }
- }
-}
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneGraphBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneGraphBase.java
deleted file mode 100644
index 412ffbf..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneGraphBase.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import com.android.scenegraph.SceneManager;
-
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.RSRuntimeException;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public abstract class SceneGraphBase {
- String mName;
- Allocation mNameAlloc;
- public void setName(String n) {
- mName = n;
- mNameAlloc = null;
- }
-
- public String getName() {
- return mName;
- }
-
- Allocation getNameAlloc(RenderScriptGL rs) {
- if (mNameAlloc == null) {
- mNameAlloc = SceneManager.getStringAsAllocation(rs, getName());
- }
- return mNameAlloc;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java
deleted file mode 100644
index 4ff2c8b..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/SceneManager.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Writer;
-import java.lang.Math;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import com.android.scenegraph.Camera;
-import com.android.scenegraph.FragmentShader;
-import com.android.scenegraph.MatrixTransform;
-import com.android.scenegraph.Scene;
-import com.android.scenegraph.VertexShader;
-import com.android.testapp.R;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Mesh;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-import android.view.SurfaceHolder;
-
-/**
- * @hide
- */
-public class SceneManager extends SceneGraphBase {
-
- HashMap<String, Allocation> mAllocationMap;
-
- ScriptC_render mRenderLoop;
- ScriptC mCameraScript;
- ScriptC mLightScript;
- ScriptC mObjectParamsScript;
- ScriptC mFragmentParamsScript;
- ScriptC mVertexParamsScript;
- ScriptC mCullScript;
- ScriptC_transform mTransformScript;
- ScriptC_export mExportScript;
-
- RenderScriptGL mRS;
- Resources mRes;
- Mesh mQuad;
- int mWidth;
- int mHeight;
-
- Scene mActiveScene;
- private static SceneManager sSceneManager;
-
- private Allocation mDefault2D;
- private Allocation mDefaultCube;
-
- private FragmentShader mColor;
- private FragmentShader mTexture;
- private VertexShader mDefaultVertex;
-
- private RenderState mDefaultState;
- private Transform mDefaultTransform;
-
- private static Allocation getDefault(boolean isCube) {
- final int dimension = 4;
- final int bytesPerPixel = 4;
- int arraySize = dimension * dimension * bytesPerPixel;
-
- RenderScriptGL rs = sSceneManager.mRS;
- Type.Builder b = new Type.Builder(rs, Element.RGBA_8888(rs));
- b.setX(dimension).setY(dimension);
- if (isCube) {
- b.setFaces(true);
- arraySize *= 6;
- }
- Type bitmapType = b.create();
-
- Allocation.MipmapControl mip = Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE;
- int usage = Allocation.USAGE_GRAPHICS_TEXTURE;
- Allocation defaultImage = Allocation.createTyped(rs, bitmapType, mip, usage);
-
- byte imageData[] = new byte[arraySize];
- defaultImage.copyFrom(imageData);
- return defaultImage;
- }
-
- static Allocation getDefaultTex2D() {
- if (sSceneManager == null) {
- return null;
- }
- if (sSceneManager.mDefault2D == null) {
- sSceneManager.mDefault2D = getDefault(false);
- }
- return sSceneManager.mDefault2D;
- }
-
- static Allocation getDefaultTexCube() {
- if (sSceneManager == null) {
- return null;
- }
- if (sSceneManager.mDefaultCube == null) {
- sSceneManager.mDefaultCube = getDefault(true);
- }
- return sSceneManager.mDefaultCube;
- }
-
- public static boolean isSDCardPath(String path) {
- int sdCardIndex = path.indexOf("sdcard/");
- // We are looking for /sdcard/ or sdcard/
- if (sdCardIndex == 0 || sdCardIndex == 1) {
- return true;
- }
- sdCardIndex = path.indexOf("mnt/sdcard/");
- if (sdCardIndex == 0 || sdCardIndex == 1) {
- return true;
- }
- return false;
- }
-
- static Bitmap loadBitmap(String name, Resources res) {
- InputStream is = null;
- boolean loadFromSD = isSDCardPath(name);
- try {
- if (!loadFromSD) {
- is = res.getAssets().open(name);
- } else {
- File f = new File(name);
- is = new BufferedInputStream(new FileInputStream(f));
- }
- } catch (IOException e) {
- Log.e("ImageLoaderTask", " Message: " + e.getMessage());
- return null;
- }
-
- Bitmap b = BitmapFactory.decodeStream(is);
- try {
- is.close();
- } catch (IOException e) {
- Log.e("ImageLoaderTask", " Message: " + e.getMessage());
- }
- return b;
- }
-
- static Allocation createFromBitmap(Bitmap b, RenderScriptGL rs, boolean isCube) {
- if (b == null) {
- return null;
- }
- MipmapControl mip = MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE;
- int usage = Allocation.USAGE_GRAPHICS_TEXTURE;
- if (isCube) {
- return Allocation.createCubemapFromBitmap(rs, b, mip, usage);
- }
- return Allocation.createFromBitmap(rs, b, mip, usage);
- }
-
- public static Allocation loadCubemap(String name, RenderScriptGL rs, Resources res) {
- return createFromBitmap(loadBitmap(name, res), rs, true);
- }
-
- public static Allocation loadCubemap(int id, RenderScriptGL rs, Resources res) {
- return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, true);
- }
-
- public static Allocation loadTexture2D(String name, RenderScriptGL rs, Resources res) {
- return createFromBitmap(loadBitmap(name, res), rs, false);
- }
-
- public static Allocation loadTexture2D(int id, RenderScriptGL rs, Resources res) {
- return createFromBitmap(BitmapFactory.decodeResource(res, id), rs, false);
- }
-
- public static ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) {
- ProgramStore.Builder builder = new ProgramStore.Builder(rs);
- builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
- builder.setBlendFunc(ProgramStore.BlendSrcFunc.ONE, ProgramStore.BlendDstFunc.ONE);
- builder.setDitherEnabled(false);
- builder.setDepthMaskEnabled(false);
- return builder.create();
- }
-
- static Allocation getStringAsAllocation(RenderScript rs, String str) {
- if (str == null) {
- return null;
- }
- if (str.length() == 0) {
- return null;
- }
- byte[] allocArray = null;
- byte[] nullChar = new byte[1];
- nullChar[0] = 0;
- try {
- allocArray = str.getBytes("UTF-8");
- Allocation alloc = Allocation.createSized(rs, Element.U8(rs),
- allocArray.length + 1,
- Allocation.USAGE_SCRIPT);
- alloc.copy1DRangeFrom(0, allocArray.length, allocArray);
- alloc.copy1DRangeFrom(allocArray.length, 1, nullChar);
- return alloc;
- }
- catch (Exception e) {
- throw new RSRuntimeException("Could not convert string to utf-8.");
- }
- }
-
- static Allocation getCachedAlloc(String str) {
- if (sSceneManager == null) {
- throw new RuntimeException("Scene manager not initialized");
- }
- return sSceneManager.mAllocationMap.get(str);
- }
-
- static void cacheAlloc(String str, Allocation alloc) {
- if (sSceneManager == null) {
- throw new RuntimeException("Scene manager not initialized");
- }
- sSceneManager.mAllocationMap.put(str, alloc);
- }
-
- public static class SceneLoadedCallback implements Runnable {
- public Scene mLoadedScene;
- public String mName;
- public void run() {
- }
- }
-
- public Scene getActiveScene() {
- return mActiveScene;
- }
-
- public void setActiveScene(Scene s) {
- mActiveScene = s;
-
- if (mActiveScene == null) {
- return;
- }
-
- // Do some sanity checking
- if (mActiveScene.getCameras().size() == 0) {
- Matrix4f camPos = new Matrix4f();
- camPos.translate(0, 0, 10);
- MatrixTransform cameraTransform = new MatrixTransform();
- cameraTransform.setName("_DefaultCameraTransform");
- cameraTransform.setMatrix(camPos);
- mActiveScene.appendTransform(cameraTransform);
- Camera cam = new Camera();
- cam.setName("_DefaultCamera");
- cam.setTransform(cameraTransform);
- mActiveScene.appendCamera(cam);
- }
-
- mActiveScene.appendShader(getDefaultVS());
- mActiveScene.appendTransform(getDefaultTransform());
- }
-
- static RenderScriptGL getRS() {
- if (sSceneManager == null) {
- return null;
- }
- return sSceneManager.mRS;
- }
-
- static Resources getRes() {
- if (sSceneManager == null) {
- return null;
- }
- return sSceneManager.mRes;
- }
-
- // Provides the folowing inputs to fragment shader
- // Assigned by default if nothing is present
- // vec3 varWorldPos;
- // vec3 varWorldNormal;
- // vec2 varTex0;
- public static VertexShader getDefaultVS() {
- if (sSceneManager == null) {
- return null;
- }
-
- if (sSceneManager.mDefaultVertex == null) {
- RenderScriptGL rs = getRS();
- Element.Builder b = new Element.Builder(rs);
- b.add(Element.MATRIX_4X4(rs), "model");
- Type.Builder objConstBuilder = new Type.Builder(rs, b.create());
-
- b = new Element.Builder(rs);
- b.add(Element.MATRIX_4X4(rs), "viewProj");
- Type.Builder shaderConstBuilder = new Type.Builder(rs, b.create());
-
- b = new Element.Builder(rs);
- b.add(Element.F32_4(rs), "position");
- b.add(Element.F32_2(rs), "texture0");
- b.add(Element.F32_3(rs), "normal");
- Element defaultIn = b.create();
-
- final String code = "\n" +
- "varying vec3 varWorldPos;\n" +
- "varying vec3 varWorldNormal;\n" +
- "varying vec2 varTex0;\n" +
- "void main() {" +
- " vec4 objPos = ATTRIB_position;\n" +
- " vec4 worldPos = UNI_model * objPos;\n" +
- " gl_Position = UNI_viewProj * worldPos;\n" +
- " mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);\n" +
- " vec3 worldNorm = model3 * ATTRIB_normal;\n" +
- " varWorldPos = worldPos.xyz;\n" +
- " varWorldNormal = worldNorm;\n" +
- " varTex0 = ATTRIB_texture0;\n" +
- "}\n";
-
- VertexShader.Builder sb = new VertexShader.Builder(rs);
- sb.addInput(defaultIn);
- sb.setObjectConst(objConstBuilder.setX(1).create());
- sb.setShaderConst(shaderConstBuilder.setX(1).create());
- sb.setShader(code);
- sSceneManager.mDefaultVertex = sb.create();
- }
-
- return sSceneManager.mDefaultVertex;
- }
-
- public static FragmentShader getColorFS() {
- if (sSceneManager == null) {
- return null;
- }
- if (sSceneManager.mColor == null) {
- RenderScriptGL rs = getRS();
- Element.Builder b = new Element.Builder(rs);
- b.add(Element.F32_4(rs), "color");
- Type.Builder objConstBuilder = new Type.Builder(rs, b.create());
-
- final String code = "\n" +
- "varying vec2 varTex0;\n" +
- "void main() {\n" +
- " lowp vec4 col = UNI_color;\n" +
- " gl_FragColor = col;\n" +
- "}\n";
- FragmentShader.Builder fb = new FragmentShader.Builder(rs);
- fb.setShader(code);
- fb.setObjectConst(objConstBuilder.create());
- sSceneManager.mColor = fb.create();
- }
-
- return sSceneManager.mColor;
- }
-
- public static FragmentShader getTextureFS() {
- if (sSceneManager == null) {
- return null;
- }
- if (sSceneManager.mTexture == null) {
- RenderScriptGL rs = getRS();
-
- final String code = "\n" +
- "varying vec2 varTex0;\n" +
- "void main() {\n" +
- " lowp vec4 col = texture2D(UNI_color, varTex0).rgba;\n" +
- " gl_FragColor = col;\n" +
- "}\n";
-
- FragmentShader.Builder fb = new FragmentShader.Builder(rs);
- fb.setShader(code);
- fb.addTexture(Program.TextureType.TEXTURE_2D, "color");
- sSceneManager.mTexture = fb.create();
- sSceneManager.mTexture.mProgram.bindSampler(Sampler.CLAMP_LINEAR_MIP_LINEAR(rs), 0);
- }
-
- return sSceneManager.mTexture;
- }
-
- static RenderState getDefaultState() {
- if (sSceneManager == null) {
- return null;
- }
- if (sSceneManager.mDefaultState == null) {
- sSceneManager.mDefaultState = new RenderState(getDefaultVS(), getColorFS(), null, null);
- sSceneManager.mDefaultState.setName("__DefaultState");
- }
- return sSceneManager.mDefaultState;
- }
-
- static Transform getDefaultTransform() {
- if (sSceneManager == null) {
- return null;
- }
- if (sSceneManager.mDefaultTransform == null) {
- sSceneManager.mDefaultTransform = new MatrixTransform();
- sSceneManager.mDefaultTransform.setName("__DefaultTransform");
- }
- return sSceneManager.mDefaultTransform;
- }
-
- public static SceneManager getInstance() {
- if (sSceneManager == null) {
- sSceneManager = new SceneManager();
- }
- return sSceneManager;
- }
-
- protected SceneManager() {
- }
-
- public void loadModel(String name, SceneLoadedCallback cb) {
- ColladaScene scene = new ColladaScene(name, cb);
- scene.init(mRS, mRes);
- }
-
- public Mesh getScreenAlignedQuad() {
- if (mQuad != null) {
- return mQuad;
- }
-
- Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS,
- 3, Mesh.TriangleMeshBuilder.TEXTURE_0);
-
- tmb.setTexture(0.0f, 1.0f).addVertex(-1.0f, 1.0f, 1.0f);
- tmb.setTexture(0.0f, 0.0f).addVertex(-1.0f, -1.0f, 1.0f);
- tmb.setTexture(1.0f, 0.0f).addVertex(1.0f, -1.0f, 1.0f);
- tmb.setTexture(1.0f, 1.0f).addVertex(1.0f, 1.0f, 1.0f);
-
- tmb.addTriangle(0, 1, 2);
- tmb.addTriangle(2, 3, 0);
-
- mQuad = tmb.create(true);
- return mQuad;
- }
-
- public Renderable getRenderableQuad(String name, RenderState state) {
- Renderable quad = new Renderable();
- quad.setTransform(new MatrixTransform());
- quad.setMesh(getScreenAlignedQuad());
- quad.setName(name);
- quad.setRenderState(state);
- quad.setCullType(1);
- return quad;
- }
-
- public void initRS(RenderScriptGL rs, Resources res, int w, int h) {
- mRS = rs;
- mRes = res;
- mAllocationMap = new HashMap<String, Allocation>();
-
- mQuad = null;
- mDefault2D = null;
- mDefaultCube = null;
- mDefaultVertex = null;
- mColor = null;
- mTexture = null;
- mDefaultState = null;
- mDefaultTransform = null;
-
- mExportScript = new ScriptC_export(rs, res, R.raw.export);
-
- mTransformScript = new ScriptC_transform(rs, res, R.raw.transform);
- mTransformScript.set_gTransformScript(mTransformScript);
-
- mCameraScript = new ScriptC_camera(rs, res, R.raw.camera);
- mLightScript = new ScriptC_light(rs, res, R.raw.light);
- mObjectParamsScript = new ScriptC_object_params(rs, res, R.raw.object_params);
- mFragmentParamsScript = new ScriptC_object_params(rs, res, R.raw.fragment_params);
- mVertexParamsScript = new ScriptC_object_params(rs, res, R.raw.vertex_params);
- mCullScript = new ScriptC_cull(rs, res, R.raw.cull);
-
- mRenderLoop = new ScriptC_render(rs, res, R.raw.render);
- mRenderLoop.set_gTransformScript(mTransformScript);
- mRenderLoop.set_gCameraScript(mCameraScript);
- mRenderLoop.set_gLightScript(mLightScript);
- mRenderLoop.set_gObjectParamsScript(mObjectParamsScript);
- mRenderLoop.set_gFragmentParamsScript(mFragmentParamsScript);
- mRenderLoop.set_gVertexParamsScript(mVertexParamsScript);
- mRenderLoop.set_gCullScript(mCullScript);
-
- mRenderLoop.set_gPFSBackground(ProgramStore.BLEND_NONE_DEPTH_TEST(mRS));
- }
-
- public ScriptC getRenderLoop() {
- return mRenderLoop;
- }
-}
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Shader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Shader.java
deleted file mode 100644
index 4975114..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Shader.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import com.android.scenegraph.SceneGraphBase;
-import com.android.scenegraph.ShaderParam;
-
-import android.renderscript.*;
-import android.renderscript.ProgramFragment.Builder;
-import android.util.Log;
-
-/**
- * @hide
- */
-public abstract class Shader extends SceneGraphBase {
- protected Type mPerObjConstants;
- protected Type mPerShaderConstants;
-
- protected HashMap<String, ShaderParam> mSourceParams;
- protected ArrayList<String> mShaderTextureNames;
- protected ArrayList<Program.TextureType > mShaderTextureTypes;
- protected ArrayList<String> mTextureNames;
- protected ArrayList<Program.TextureType > mTextureTypes;
-
- protected Allocation mConstantBuffer;
- protected ScriptField_ShaderParam_s mConstantBufferParams;
-
- public Shader() {
- mSourceParams = new HashMap<String, ShaderParam>();
- mShaderTextureNames = new ArrayList<String>();
- mShaderTextureTypes = new ArrayList<Program.TextureType>();
- mTextureNames = new ArrayList<String>();
- mTextureTypes = new ArrayList<Program.TextureType>();
- }
-
- public void appendSourceParams(ShaderParam p) {
- mSourceParams.put(p.getParamName(), p);
- }
-
- public Type getObjectConstants() {
- return mPerObjConstants;
- }
-
- public Type getShaderConstants() {
- return mPerObjConstants;
- }
-
- void linkConstants(RenderScriptGL rs) {
- if (mPerShaderConstants == null) {
- return;
- }
-
- Element constElem = mPerShaderConstants.getElement();
- mConstantBufferParams = ShaderParam.fillInParams(constElem, mSourceParams, null);
-
- mConstantBuffer = Allocation.createTyped(rs, mPerShaderConstants);
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ShaderParam.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ShaderParam.java
deleted file mode 100644
index 3dd41ca..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/ShaderParam.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import com.android.scenegraph.SceneManager;
-import com.android.scenegraph.Transform;
-
-import android.renderscript.Element;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.RenderScriptGL;
-import android.util.Log;
-
-/**
- * @hide
- */
-public abstract class ShaderParam extends SceneGraphBase {
-
- static final String cameraPos = "cameraPos";
- static final String cameraDir = "cameraDir";
-
- static final String lightColor = "lightColor";
- static final String lightPos = "lightPos";
- static final String lightDir = "lightDir";
-
- static final String view = "view";
- static final String proj = "proj";
- static final String viewProj = "viewProj";
- static final String model = "model";
- static final String modelView = "modelView";
- static final String modelViewProj = "modelViewProj";
-
- static final long sMaxTimeStamp = 0xffffffffL;
-
- ScriptField_ShaderParamData_s.Item mData;
- ScriptField_ShaderParamData_s mField;
-
- String mParamName;
- Camera mCamera;
-
- static ScriptField_ShaderParam_s fillInParams(Element constantElem,
- HashMap<String, ShaderParam> sourceParams,
- Transform transform) {
- RenderScriptGL rs = SceneManager.getRS();
- ArrayList<ScriptField_ShaderParam_s.Item> paramList;
- paramList = new ArrayList<ScriptField_ShaderParam_s.Item>();
-
- int subElemCount = constantElem.getSubElementCount();
- for (int i = 0; i < subElemCount; i ++) {
- String inputName = constantElem.getSubElementName(i);
- int offset = constantElem.getSubElementOffsetBytes(i);
-
- ShaderParam matchingParam = sourceParams.get(inputName);
- Element subElem = constantElem.getSubElement(i);
- // Make one if it's not there
- if (matchingParam == null) {
- if (subElem.getDataType() == Element.DataType.FLOAT_32) {
- matchingParam = new Float4Param(inputName, 0.5f, 0.5f, 0.5f, 0.5f);
- } else if (subElem.getDataType() == Element.DataType.MATRIX_4X4) {
- TransformParam trParam = new TransformParam(inputName);
- trParam.setTransform(transform);
- matchingParam = trParam;
- }
- }
- ScriptField_ShaderParam_s.Item paramRS = new ScriptField_ShaderParam_s.Item();
- paramRS.bufferOffset = offset;
- paramRS.transformTimestamp = 0;
- paramRS.dataTimestamp = 0;
- paramRS.data = matchingParam.getRSData().getAllocation();
- if (subElem.getDataType() == Element.DataType.FLOAT_32) {
- paramRS.float_vecSize = subElem.getVectorSize();
- }
-
- paramList.add(paramRS);
- }
-
- ScriptField_ShaderParam_s rsParams = null;
- int paramCount = paramList.size();
- if (paramCount != 0) {
- rsParams = new ScriptField_ShaderParam_s(rs, paramCount);
- for (int i = 0; i < paramCount; i++) {
- rsParams.set(paramList.get(i), i, false);
- }
- rsParams.copyAll();
- }
- return rsParams;
- }
-
- public ShaderParam(String name) {
- mParamName = name;
- mData = new ScriptField_ShaderParamData_s.Item();
- }
-
- public String getParamName() {
- return mParamName;
- }
-
- public void setCamera(Camera c) {
- mCamera = c;
- if (mField != null) {
- mData.camera = mCamera.getRSData().getAllocation();
- mField.set_camera(0, mData.camera, true);
- }
- }
-
- protected void incTimestamp() {
- if (mField != null) {
- mData.timestamp ++;
- mData.timestamp %= sMaxTimeStamp;
- mField.set_timestamp(0, mData.timestamp, true);
- }
- }
-
- abstract void initLocalData();
-
- public ScriptField_ShaderParamData_s getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- mField = new ScriptField_ShaderParamData_s(rs, 1);
-
- if (mParamName != null) {
- mData.paramName = SceneManager.getCachedAlloc(mParamName);
- if (mData.paramName == null) {
- mData.paramName = SceneManager.getStringAsAllocation(rs, mParamName);
- SceneManager.cacheAlloc(mParamName, mData.paramName);
- }
- }
- initLocalData();
- mData.timestamp = 1;
-
- mField.set(mData, 0, true);
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java
deleted file mode 100644
index b53ab88..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Texture2D.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-
-import com.android.scenegraph.SceneManager;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class Texture2D extends TextureBase {
- String mFileName;
- String mFileDir;
- int mResourceID;
-
- public Texture2D() {
- super(ScriptC_export.const_TextureType_TEXTURE_2D);
- }
-
- public Texture2D(Allocation tex) {
- super(ScriptC_export.const_TextureType_TEXTURE_2D);
- setTexture(tex);
- }
-
- public Texture2D(String dir, String file) {
- super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
- setFileDir(dir);
- setFileName(file);
- }
-
- public Texture2D(int resourceID) {
- super(ScriptC_export.const_TextureType_TEXTURE_2D);
- mResourceID = resourceID;
- }
-
- public void setFileDir(String dir) {
- mFileDir = dir;
- }
-
- public void setFileName(String file) {
- mFileName = file;
- }
-
- public String getFileName() {
- return mFileName;
- }
-
- public void setTexture(Allocation tex) {
- mData.texture = tex != null ? tex : SceneManager.getDefaultTex2D();
- if (mField != null) {
- mField.set_texture(0, mData.texture, true);
- }
- }
-
- void load() {
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (mFileName != null && mFileName.length() > 0) {
- String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1);
- setTexture(SceneManager.loadTexture2D(mFileDir + shortName, rs, res));
- } else if (mResourceID != 0) {
- setTexture(SceneManager.loadTexture2D(mResourceID, rs, res));
- }
- }
-
- ScriptField_Texture_s getRsData(boolean loadNow) {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (rs == null || res == null) {
- return null;
- }
-
- mField = new ScriptField_Texture_s(rs, 1);
-
- if (loadNow) {
- load();
- } else {
- mData.texture = SceneManager.getDefaultTex2D();
- new SingleImageLoaderTask().execute(this);
- }
-
- mField.set(mData, 0, true);
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureBase.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureBase.java
deleted file mode 100644
index ba49d4e..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureBase.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-
-import com.android.scenegraph.SceneManager;
-import android.os.AsyncTask;
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-/**
- * @hide
- */
-public abstract class TextureBase extends SceneGraphBase {
-
- class SingleImageLoaderTask extends AsyncTask<TextureBase, Void, Boolean> {
- protected Boolean doInBackground(TextureBase... objects) {
- TextureBase tex = objects[0];
- tex.load();
- return new Boolean(true);
- }
- protected void onPostExecute(Boolean result) {
- }
- }
-
- ScriptField_Texture_s.Item mData;
- ScriptField_Texture_s mField;
- TextureBase(int type) {
- mData = new ScriptField_Texture_s.Item();
- mData.type = type;
- }
-
- protected Allocation mRsTexture;
- abstract ScriptField_Texture_s getRsData(boolean loadNow);
- abstract void load();
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureCube.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureCube.java
deleted file mode 100644
index 1269e3c..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureCube.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-
-import com.android.scenegraph.SceneManager;
-import com.android.scenegraph.TextureBase;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class TextureCube extends TextureBase {
- String mFileName;
- String mFileDir;
- int mResourceID;
-
- public TextureCube() {
- super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
- }
-
- public TextureCube(Allocation tex) {
- super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
- setTexture(tex);
- }
-
- public TextureCube(String dir, String file) {
- super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
- setFileDir(dir);
- setFileName(file);
- }
-
- public TextureCube(int resourceID) {
- super(ScriptC_export.const_TextureType_TEXTURE_2D);
- mResourceID = resourceID;
- }
-
- public void setFileDir(String dir) {
- mFileDir = dir;
- }
-
- public void setFileName(String file) {
- mFileName = file;
- }
-
- public String getFileName() {
- return mFileName;
- }
-
- public void setTexture(Allocation tex) {
- mData.texture = tex != null ? tex : SceneManager.getDefaultTexCube();
- if (mField != null) {
- mField.set_texture(0, mData.texture, true);
- }
- }
-
- void load() {
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (mFileName != null && mFileName.length() > 0) {
- String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1);
- setTexture(SceneManager.loadCubemap(mFileDir + shortName, rs, res));
- } else if (mResourceID != 0) {
- setTexture(SceneManager.loadCubemap(mResourceID , rs, res));
- }
- }
-
- ScriptField_Texture_s getRsData(boolean loadNow) {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (rs == null || res == null) {
- return null;
- }
-
- mField = new ScriptField_Texture_s(rs, 1);
-
- if (loadNow) {
- load();
- } else {
- mData.texture = SceneManager.getDefaultTexCube();
- new SingleImageLoaderTask().execute(this);
- }
-
- mField.set(mData, 0, true);
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureParam.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureParam.java
deleted file mode 100644
index e656ed2..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureParam.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.graphics.Camera;
-import android.renderscript.RenderScriptGL;
-import android.renderscript.Float4;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.Element;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class TextureParam extends ShaderParam {
-
- TextureBase mTexture;
-
- public TextureParam(String name) {
- super(name);
- }
-
- public TextureParam(String name, TextureBase t) {
- super(name);
- setTexture(t);
- }
-
- public void setTexture(TextureBase t) {
- mTexture = t;
- }
-
- public TextureBase getTexture() {
- return mTexture;
- }
-
- void initLocalData() {
- mData.type = ScriptC_export.const_ShaderParam_TEXTURE;
- if (mTexture != null) {
- mData.texture = mTexture.getRsData(false).getAllocation();
- }
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureRenderTarget.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureRenderTarget.java
deleted file mode 100644
index 6aa29a5..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TextureRenderTarget.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-
-import com.android.scenegraph.SceneManager;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class TextureRenderTarget extends TextureBase {
- public TextureRenderTarget() {
- super(ScriptC_export.const_TextureType_TEXTURE_RENDER_TARGET);
- }
-
- public TextureRenderTarget(Allocation tex) {
- super(ScriptC_export.const_TextureType_TEXTURE_RENDER_TARGET);
- setTexture(tex);
- }
-
- public void setTexture(Allocation tex) {
- mData.texture = tex;
- if (mField != null) {
- mField.set_texture(0, mData.texture, true);
- }
- }
-
- void load() {
- }
-
- ScriptField_Texture_s getRsData(boolean loadNow) {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- if (rs == null) {
- return null;
- }
-
- mField = new ScriptField_Texture_s(rs, 1);
- mField.set(mData, 0, true);
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java
deleted file mode 100644
index 8180bd0..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/Transform.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.*;
-import android.renderscript.Matrix4f;
-import android.util.Log;
-
-/**
- * @hide
- */
-public abstract class Transform extends SceneGraphBase {
- Transform mParent;
- ArrayList<Transform> mChildren;
-
- ScriptField_SgTransform mField;
- ScriptField_SgTransform.Item mTransformData;
-
- public Transform() {
- mChildren = new ArrayList<Transform>();
- mParent = null;
- }
-
- public void appendChild(Transform t) {
- mChildren.add(t);
- t.mParent = this;
- updateRSChildData(true);
- }
-
- abstract void initLocalData();
-
- void updateRSChildData(boolean copyData) {
- if (mField == null) {
- return;
- }
- RenderScriptGL rs = SceneManager.getRS();
- if (mChildren.size() != 0) {
- Allocation childRSData = Allocation.createSized(rs, Element.ALLOCATION(rs),
- mChildren.size());
- mTransformData.children = childRSData;
-
- Allocation[] childrenAllocs = new Allocation[mChildren.size()];
- for (int i = 0; i < mChildren.size(); i ++) {
- Transform child = mChildren.get(i);
- childrenAllocs[i] = child.getRSData().getAllocation();
- }
- childRSData.copyFrom(childrenAllocs);
- }
- if (copyData) {
- mField.set(mTransformData, 0, true);
- }
- }
-
- ScriptField_SgTransform getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- if (rs == null) {
- return null;
- }
- mField = new ScriptField_SgTransform(rs, 1);
-
- mTransformData = new ScriptField_SgTransform.Item();
- mTransformData.name = getNameAlloc(rs);
- mTransformData.isDirty = 1;
- mTransformData.timestamp = 1;
-
- initLocalData();
- updateRSChildData(false);
-
- mField.set(mTransformData, 0, true);
- return mField;
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TransformParam.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TransformParam.java
deleted file mode 100644
index d120d5d..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/TransformParam.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.renderscript.RenderScriptGL;
-import android.renderscript.Matrix4f;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramVertex;
-import android.renderscript.Element;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class TransformParam extends ShaderParam {
-
- Transform mTransform;
- LightBase mLight;
-
- public TransformParam(String name) {
- super(name);
- }
-
- public void setTransform(Transform t) {
- mTransform = t;
- if (mField != null && mTransform != null) {
- mData.transform = mTransform.getRSData().getAllocation();
- }
- incTimestamp();
- }
-
- int getTypeFromName() {
- int paramType = ScriptC_export.const_ShaderParam_TRANSFORM_DATA;
- if (mParamName.equalsIgnoreCase(view)) {
- paramType = ScriptC_export.const_ShaderParam_TRANSFORM_VIEW;
- } else if(mParamName.equalsIgnoreCase(proj)) {
- paramType = ScriptC_export.const_ShaderParam_TRANSFORM_PROJ;
- } else if(mParamName.equalsIgnoreCase(viewProj)) {
- paramType = ScriptC_export.const_ShaderParam_TRANSFORM_VIEW_PROJ;
- } else if(mParamName.equalsIgnoreCase(model)) {
- paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL;
- } else if(mParamName.equalsIgnoreCase(modelView)) {
- paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL_VIEW;
- } else if(mParamName.equalsIgnoreCase(modelViewProj)) {
- paramType = ScriptC_export.const_ShaderParam_TRANSFORM_MODEL_VIEW_PROJ;
- }
- return paramType;
- }
-
- void initLocalData() {
- mData.type = getTypeFromName();
- if (mTransform != null) {
- mData.transform = mTransform.getRSData().getAllocation();
- }
- if (mCamera != null) {
- mData.camera = mCamera.getRSData().getAllocation();
- }
- if (mLight != null) {
- mData.light = mLight.getRSData().getAllocation();
- }
- }
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java
deleted file mode 100644
index 4efaff7..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/VertexShader.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.scenegraph;
-
-import java.lang.Math;
-import java.util.ArrayList;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-/**
- * @hide
- */
-public class VertexShader extends Shader {
- ProgramVertex mProgram;
- ScriptField_VertexShader_s mField;
-
- public static class Builder {
- VertexShader mShader;
- ProgramVertex.Builder mBuilder;
-
- public Builder(RenderScriptGL rs) {
- mShader = new VertexShader();
- mBuilder = new ProgramVertex.Builder(rs);
- }
-
- public Builder setShader(Resources resources, int resourceID) {
- mBuilder.setShader(resources, resourceID);
- return this;
- }
-
- public Builder setShader(String code) {
- mBuilder.setShader(code);
- return this;
- }
-
- public Builder setObjectConst(Type type) {
- mShader.mPerObjConstants = type;
- return this;
- }
-
- public Builder setShaderConst(Type type) {
- mShader.mPerShaderConstants = type;
- return this;
- }
-
- public Builder addInput(Element e) {
- mBuilder.addInput(e);
- return this;
- }
-
- public VertexShader create() {
- if (mShader.mPerShaderConstants != null) {
- mBuilder.addConstant(mShader.mPerShaderConstants);
- }
- if (mShader.mPerObjConstants != null) {
- mBuilder.addConstant(mShader.mPerObjConstants);
- }
- mShader.mProgram = mBuilder.create();
- return mShader;
- }
- }
-
- public ProgramVertex getProgram() {
- return mProgram;
- }
-
- ScriptField_VertexShader_s getRSData() {
- if (mField != null) {
- return mField;
- }
-
- RenderScriptGL rs = SceneManager.getRS();
- Resources res = SceneManager.getRes();
- if (rs == null || res == null) {
- return null;
- }
-
- ScriptField_VertexShader_s.Item item = new ScriptField_VertexShader_s.Item();
- item.program = mProgram;
-
- linkConstants(rs);
- if (mPerShaderConstants != null) {
- item.shaderConst = mConstantBuffer;
- item.shaderConstParams = mConstantBufferParams.getAllocation();
- mProgram.bindConstants(item.shaderConst, 0);
- }
-
- item.objectConstIndex = -1;
- if (mPerObjConstants != null) {
- item.objectConstIndex = mPerShaderConstants != null ? 1 : 0;
- }
-
- mField = new ScriptField_VertexShader_s(rs, 1);
- mField.set(item, 0, true);
- return mField;
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/camera.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/camera.rs
deleted file mode 100644
index dc0a885..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/camera.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-//#define DEBUG_CAMERA
-#include "scenegraph_objects.rsh"
-
-void root(const rs_allocation *v_in, rs_allocation *v_out, const float *usrData) {
-
- SgCamera *cam = (SgCamera *)rsGetElementAt(*v_in, 0);
- float aspect = *usrData;
- if (cam->aspect != aspect) {
- cam->isDirty = 1;
- cam->aspect = aspect;
- }
- if (cam->isDirty) {
- rsMatrixLoadPerspective(&cam->proj, cam->horizontalFOV, cam->aspect, cam->near, cam->far);
- }
-
- const SgTransform *camTransform = (const SgTransform *)rsGetElementAt(cam->transformMatrix, 0);
- //rsDebug("Camera stamp", cam->transformTimestamp);
- //rsDebug("Transform stamp", camTransform->timestamp);
- if (camTransform->timestamp != cam->transformTimestamp || cam->isDirty) {
- cam->isDirty = 1;
- rs_matrix4x4 camPosMatrix;
- rsMatrixLoad(&camPosMatrix, &camTransform->globalMat);
- float4 zero = {0.0f, 0.0f, 0.0f, 1.0f};
- cam->position = rsMatrixMultiply(&camPosMatrix, zero);
-
- rsMatrixInverse(&camPosMatrix);
- rsMatrixLoad(&cam->view, &camPosMatrix);
-
- rsMatrixLoad(&cam->viewProj, &cam->proj);
- rsMatrixMultiply(&cam->viewProj, &cam->view);
-
- rsExtractFrustumPlanes(&cam->viewProj,
- &cam->frustumPlanes[0], &cam->frustumPlanes[1],
- &cam->frustumPlanes[2], &cam->frustumPlanes[3],
- &cam->frustumPlanes[3], &cam->frustumPlanes[4]);
- }
-
- if (cam->isDirty) {
- cam->timestamp ++;
- }
-
- cam->isDirty = 0;
- cam->transformTimestamp = camTransform->timestamp;
-
-#ifdef DEBUG_CAMERA
- printCameraInfo(cam);
-#endif //DEBUG_CAMERA
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/cull.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/cull.rs
deleted file mode 100644
index 024e026..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/cull.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#include "scenegraph_objects.rsh"
-
-static void getTransformedSphere(SgRenderable *obj) {
- obj->worldBoundingSphere = obj->boundingSphere;
- obj->worldBoundingSphere.w = 1.0f;
- const SgTransform *objTransform = (const SgTransform *)rsGetElementAt(obj->transformMatrix, 0);
- obj->worldBoundingSphere = rsMatrixMultiply(&objTransform->globalMat, obj->worldBoundingSphere);
-
- const float4 unitVec = {0.57735f, 0.57735f, 0.57735f, 0.0f};
- float4 scaledVec = rsMatrixMultiply(&objTransform->globalMat, unitVec);
- scaledVec.w = 0.0f;
- obj->worldBoundingSphere.w = obj->boundingSphere.w * length(scaledVec);
-}
-
-static bool frustumCulled(SgRenderable *obj, SgCamera *cam) {
- if (!obj->bVolInitialized) {
- float minX, minY, minZ, maxX, maxY, maxZ;
- rsgMeshComputeBoundingBox(obj->mesh,
- &minX, &minY, &minZ,
- &maxX, &maxY, &maxZ);
- //rsDebug("min", minX, minY, minZ);
- //rsDebug("max", maxX, maxY, maxZ);
- float4 sphere;
- sphere.x = (maxX + minX) * 0.5f;
- sphere.y = (maxY + minY) * 0.5f;
- sphere.z = (maxZ + minZ) * 0.5f;
- float3 radius;
- radius.x = (maxX - sphere.x);
- radius.y = (maxY - sphere.y);
- radius.z = (maxZ - sphere.z);
-
- sphere.w = length(radius);
- obj->boundingSphere = sphere;
- obj->bVolInitialized = 1;
- //rsDebug("Sphere", sphere);
- }
-
- getTransformedSphere(obj);
-
- return !rsIsSphereInFrustum(&obj->worldBoundingSphere,
- &cam->frustumPlanes[0], &cam->frustumPlanes[1],
- &cam->frustumPlanes[2], &cam->frustumPlanes[3],
- &cam->frustumPlanes[4], &cam->frustumPlanes[5]);
-}
-
-
-void root(rs_allocation *v_out, const void *usrData) {
-
- SgRenderable *drawable = (SgRenderable *)rsGetElementAt(*v_out, 0);
- const SgCamera *camera = (const SgCamera*)usrData;
-
- drawable->isVisible = 0;
- // Not loaded yet
- if (!rsIsObject(drawable->mesh) || drawable->cullType == CULL_ALWAYS) {
- return;
- }
-
- // check to see if we are culling this object and if it's
- // outside the frustum
- if (drawable->cullType == CULL_FRUSTUM && frustumCulled(drawable, (SgCamera*)camera)) {
-#ifdef DEBUG_RENDERABLES
- rsDebug("Culled", drawable);
- printName(drawable->name);
-#endif // DEBUG_RENDERABLES
- return;
- }
- drawable->isVisible = 1;
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/export.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/export.rs
deleted file mode 100644
index b438a43..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/export.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-// The sole purpose of this script is to have various structs exposed
-// so that java reflected classes are generated
-#include "scenegraph_objects.rsh"
-
-// Export our native constants to java so that we don't have parallel definitions
-const int ShaderParam_FLOAT4_DATA = SHADER_PARAM_FLOAT4_DATA;
-const int ShaderParam_TRANSFORM_DATA = SHADER_PARAM_TRANSFORM_DATA;
-const int ShaderParam_TRANSFORM_MODEL = SHADER_PARAM_TRANSFORM_MODEL;
-
-const int ShaderParam_FLOAT4_CAMERA_POS = SHADER_PARAM_FLOAT4_CAMERA_POS;
-const int ShaderParam_FLOAT4_CAMERA_DIR = SHADER_PARAM_FLOAT4_CAMERA_DIR;
-const int ShaderParam_TRANSFORM_VIEW = SHADER_PARAM_TRANSFORM_VIEW;
-const int ShaderParam_TRANSFORM_PROJ = SHADER_PARAM_TRANSFORM_PROJ;
-const int ShaderParam_TRANSFORM_VIEW_PROJ = SHADER_PARAM_TRANSFORM_VIEW_PROJ;
-const int ShaderParam_TRANSFORM_MODEL_VIEW = SHADER_PARAM_TRANSFORM_MODEL_VIEW;
-const int ShaderParam_TRANSFORM_MODEL_VIEW_PROJ = SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ;
-
-const int ShaderParam_FLOAT4_LIGHT_COLOR = SHADER_PARAM_FLOAT4_LIGHT_COLOR;
-const int ShaderParam_FLOAT4_LIGHT_POS = SHADER_PARAM_FLOAT4_LIGHT_POS;
-const int ShaderParam_FLOAT4_LIGHT_DIR = SHADER_PARAM_FLOAT4_LIGHT_DIR;
-
-const int ShaderParam_TEXTURE = SHADER_PARAM_TEXTURE;
-
-const int Transform_TRANSLATE = TRANSFORM_TRANSLATE;
-const int Transform_ROTATE = TRANSFORM_ROTATE;
-const int Transform_SCALE = TRANSFORM_SCALE;
-
-const int TextureType_TEXTURE_2D = TEXTURE_2D;
-const int TextureType_TEXTURE_CUBE = TEXTURE_CUBE;
-const int TextureType_TEXTURE_RENDER_TARGET = TEXTURE_RENDER_TARGET;
-
-SgTransform *exportPtr;
-SgTransformComponent *componentPtr;
-SgRenderState *sExport;
-SgRenderable *drExport;
-SgRenderPass *pExport;
-SgCamera *exportPtrCam;
-SgLight *exportPtrLight;
-SgShaderParam *spExport;
-SgShaderParamData *spDataExport;
-SgVertexShader *pvExport;
-SgFragmentShader *pfExport;
-SgTexture *texExport;
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/fragment_params.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/fragment_params.rs
deleted file mode 100644
index 7202285..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/fragment_params.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#include "scenegraph_objects.rsh"
-
-//#define DEBUG_PARAMS
-
-#include "params.rsh"
-
-void root(rs_allocation *v_out, const void *usrData) {
- SgFragmentShader *shader = (SgFragmentShader *)rsGetElementAt(*v_out, 0);
- const SgCamera *camera = (const SgCamera*)usrData;
- processAllParams(shader->shaderConst, shader->shaderConstParams, camera);
- processTextureParams(shader);
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/light.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/light.rs
deleted file mode 100644
index e11979f..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/light.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-//#define DEBUG_LIGHT
-#include "scenegraph_objects.rsh"
-
-void root(const rs_allocation *v_in, rs_allocation *v_out) {
-
- SgLight *light = (SgLight *)rsGetElementAt(*v_in, 0);
- const SgTransform *lTransform = (const SgTransform *)rsGetElementAt(light->transformMatrix, 0);
-
- float4 zero = {0.0f, 0.0f, 0.0f, 1.0f};
- light->position = rsMatrixMultiply(&lTransform->globalMat, zero);
-
-#ifdef DEBUG_LIGHT
- printLightInfo(light);
-#endif //DEBUG_LIGHT
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/object_params.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/object_params.rs
deleted file mode 100644
index 0d524a6..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/object_params.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#include "scenegraph_objects.rsh"
-
-//#define DEBUG_PARAMS
-
-#include "params.rsh"
-
-void root(rs_allocation *v_out, const void *usrData) {
-
- SgRenderable *drawable = (SgRenderable *)rsGetElementAt(*v_out, 0);
- // Visibility flag was set earlier in the cull stage
- if (!drawable->isVisible) {
- return;
- }
-
- const SgCamera *camera = (const SgCamera*)usrData;
- processAllParams(drawable->pf_const, drawable->pf_constParams, camera);
- processAllParams(drawable->pv_const, drawable->pv_constParams, camera);
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/params.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/params.rsh
deleted file mode 100644
index 00793c0..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/params.rsh
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#include "scenegraph_objects.rsh"
-
-//#define DEBUG_PARAMS
-static inline void debugParam(SgShaderParam *p, SgShaderParamData *pData) {
- rsDebug("____________ Param ____________", p);
- printName(pData->paramName);
- rsDebug("bufferOffset", p->bufferOffset);
- rsDebug("type ", pData->type);
- rsDebug("data timestamp ", pData->timestamp);
- rsDebug("param timestamp", p->dataTimestamp);
-
- const SgTransform *pTransform = NULL;
- if (rsIsObject(pData->transform)) {
- pTransform = (const SgTransform *)rsGetElementAt(pData->transform, 0);
-
- rsDebug("transform", pTransform);
- printName(pTransform->name);
- rsDebug("timestamp", pTransform->timestamp);
- rsDebug("param timestamp", p->transformTimestamp);
- }
-
- const SgLight *pLight = NULL;
- if (rsIsObject(pData->light)) {
- pLight = (const SgLight *)rsGetElementAt(pData->light, 0);
- printLightInfo(pLight);
- }
-}
-
-static inline void writeFloatData(float *ptr, const float4 *input, uint32_t vecSize) {
-#ifdef DEBUG_PARAMS
- rsDebug("Writing value ", *input);
- rsDebug("Writing vec size ", vecSize);
-#endif // DEBUG_PARAMS
-
- switch (vecSize) {
- case 1:
- *ptr = input->x;
- break;
- case 2:
- *((float2*)ptr) = (*input).xy;
- break;
- case 3:
- *((float3*)ptr) = (*input).xyz;
- break;
- case 4:
- *((float4*)ptr) = *input;
- break;
- }
-}
-
-static inline bool processParam(SgShaderParam *p, SgShaderParamData *pData,
- uint8_t *constantBuffer,
- const SgCamera *currentCam,
- SgFragmentShader *shader) {
- bool isDataOnly = (pData->type > SHADER_PARAM_DATA_ONLY);
- const SgTransform *pTransform = NULL;
- if (rsIsObject(pData->transform)) {
- pTransform = (const SgTransform *)rsGetElementAt(pData->transform, 0);
- }
-
- if (isDataOnly) {
- // If we are a transform param and our transform is unchanged, nothing to do
- if (pTransform) {
- if (p->transformTimestamp == pTransform->timestamp) {
- return false;
- }
- p->transformTimestamp = pTransform->timestamp;
- } else {
- if (p->dataTimestamp == pData->timestamp) {
- return false;
- }
- p->dataTimestamp = pData->timestamp;
- }
- }
-
- const SgLight *pLight = NULL;
- if (rsIsObject(pData->light)) {
- pLight = (const SgLight *)rsGetElementAt(pData->light, 0);
- }
-
- uint8_t *dataPtr = NULL;
- const SgTexture *tex = NULL;
- if (pData->type == SHADER_PARAM_TEXTURE) {
- tex = rsGetElementAt(pData->texture, 0);
- } else {
- dataPtr = constantBuffer + p->bufferOffset;
- }
-
- switch (pData->type) {
- case SHADER_PARAM_TEXTURE:
- rsgBindTexture(shader->program, p->bufferOffset, tex->texture);
- break;
- case SHADER_PARAM_FLOAT4_DATA:
- writeFloatData((float*)dataPtr, &pData->float_value, p->float_vecSize);
- break;
- case SHADER_PARAM_FLOAT4_CAMERA_POS:
- writeFloatData((float*)dataPtr, ¤tCam->position, p->float_vecSize);
- break;
- case SHADER_PARAM_FLOAT4_CAMERA_DIR: break;
- case SHADER_PARAM_FLOAT4_LIGHT_COLOR:
- writeFloatData((float*)dataPtr, &pLight->color, p->float_vecSize);
- break;
- case SHADER_PARAM_FLOAT4_LIGHT_POS:
- writeFloatData((float*)dataPtr, &pLight->position, p->float_vecSize);
- break;
- case SHADER_PARAM_FLOAT4_LIGHT_DIR: break;
-
- case SHADER_PARAM_TRANSFORM_DATA:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, &pTransform->globalMat);
- break;
- case SHADER_PARAM_TRANSFORM_VIEW:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->view);
- break;
- case SHADER_PARAM_TRANSFORM_PROJ:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->proj);
- break;
- case SHADER_PARAM_TRANSFORM_VIEW_PROJ:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->viewProj);
- break;
- case SHADER_PARAM_TRANSFORM_MODEL:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, &pTransform->globalMat);
- break;
- case SHADER_PARAM_TRANSFORM_MODEL_VIEW:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->view);
- rsMatrixLoadMultiply((rs_matrix4x4*)dataPtr,
- (rs_matrix4x4*)dataPtr,
- &pTransform->globalMat);
- break;
- case SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ:
- rsMatrixLoad((rs_matrix4x4*)dataPtr, ¤tCam->viewProj);
- rsMatrixLoadMultiply((rs_matrix4x4*)dataPtr,
- (rs_matrix4x4*)dataPtr,
- &pTransform->globalMat);
- break;
- }
- return true;
-}
-
-static inline void processAllParams(rs_allocation shaderConst,
- rs_allocation allParams,
- const SgCamera *camera) {
- if (rsIsObject(shaderConst)) {
- uint8_t *constantBuffer = (uint8_t*)rsGetElementAt(shaderConst, 0);
-
- int numParams = 0;
- if (rsIsObject(allParams)) {
- numParams = rsAllocationGetDimX(allParams);
- }
- bool updated = false;
- for (int i = 0; i < numParams; i ++) {
- SgShaderParam *current = (SgShaderParam*)rsGetElementAt(allParams, i);
- SgShaderParamData *currentData = (SgShaderParamData*)rsGetElementAt(current->data, 0);
-#ifdef DEBUG_PARAMS
- debugParam(current, currentData);
-#endif // DEBUG_PARAMS
- updated = processParam(current, currentData, constantBuffer, camera, NULL) || updated;
- }
- }
-}
-
-static inline void processTextureParams(SgFragmentShader *shader) {
- int numParams = 0;
- if (rsIsObject(shader->shaderTextureParams)) {
- numParams = rsAllocationGetDimX(shader->shaderTextureParams);
- }
- for (int i = 0; i < numParams; i ++) {
- SgShaderParam *current = (SgShaderParam*)rsGetElementAt(shader->shaderTextureParams, i);
- SgShaderParamData *currentData = (SgShaderParamData*)rsGetElementAt(current->data, 0);
-#ifdef DEBUG_PARAMS
- debugParam(current, currentData);
-#endif // DEBUG_PARAMS
- processParam(current, currentData, NULL, NULL, shader);
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs
deleted file mode 100644
index 205b2cb..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/render.rs
+++ /dev/null
@@ -1,244 +0,0 @@
-// Copyright (C) 2011-2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#include "rs_graphics.rsh"
-#include "scenegraph_objects.rsh"
-
-rs_script gTransformScript;
-rs_script gCameraScript;
-rs_script gLightScript;
-rs_script gObjectParamsScript;
-rs_script gFragmentParamsScript;
-rs_script gVertexParamsScript;
-rs_script gCullScript;
-
-SgTransform *gRootNode;
-rs_allocation gCameras;
-rs_allocation gLights;
-rs_allocation gFragmentShaders;
-rs_allocation gVertexShaders;
-rs_allocation gRenderableObjects;
-
-rs_allocation gRenderPasses;
-
-// Temporary shaders
-rs_program_store gPFSBackground;
-
-uint32_t *gFrontToBack;
-static uint32_t gFrontToBackCount = 0;
-uint32_t *gBackToFront;
-static uint32_t gBackToFrontCount = 0;
-
-static SgCamera *gActiveCamera = NULL;
-
-static rs_allocation nullAlloc;
-
-// #define DEBUG_RENDERABLES
-static void draw(SgRenderable *obj) {
-#ifdef DEBUG_RENDERABLES
- const SgTransform *objTransform = (const SgTransform *)rsGetElementAt(obj->transformMatrix, 0);
- rsDebug("**** Drawing object with transform", obj);
- printName(objTransform->name);
- rsDebug("Model matrix: ", &objTransform->globalMat);
- printName(obj->name);
-#endif //DEBUG_RENDERABLES
-
- const SgRenderState *renderState = (const SgRenderState *)rsGetElementAt(obj->render_state, 0);
- const SgVertexShader *pv = (const SgVertexShader *)rsGetElementAt(renderState->pv, 0);
- const SgFragmentShader *pf = (const SgFragmentShader *)rsGetElementAt(renderState->pf, 0);
-
- if (pv->objectConstIndex != -1) {
- rsgBindConstant(pv->program, pv->objectConstIndex, obj->pv_const);
- }
- if (pf->objectConstIndex != -1) {
- rsgBindConstant(pf->program, pf->objectConstIndex, obj->pf_const);
- }
-
- if (rsIsObject(renderState->ps)) {
- rsgBindProgramStore(renderState->ps);
- } else {
- rsgBindProgramStore(gPFSBackground);
- }
-
- if (rsIsObject(renderState->pr)) {
- rsgBindProgramRaster(renderState->pr);
- } else {
- rs_program_raster pr = {0};
- rsgBindProgramRaster(pr);
- }
-
- rsgBindProgramVertex(pv->program);
- rsgBindProgramFragment(pf->program);
-
- for (uint32_t i = 0; i < obj->pf_num_textures; i ++) {
- const SgTexture *tex = rsGetElementAt(obj->pf_textures[i], 0);
- rsgBindTexture(pf->program, i, tex->texture);
- }
-
- rsgDrawMesh(obj->mesh, obj->meshIndex);
-}
-
-static void sortToBucket(SgRenderable *obj) {
- const SgRenderState *renderState = (const SgRenderState *)rsGetElementAt(obj->render_state, 0);
- if (rsIsObject(renderState->ps)) {
- bool isOpaque = false;
- if (isOpaque) {
- gFrontToBack[gFrontToBackCount++] = (uint32_t)obj;
- } else {
- gBackToFront[gBackToFrontCount++] = (uint32_t)obj;
- }
- } else {
- gFrontToBack[gFrontToBackCount++] = (uint32_t)obj;
- }
-}
-
-static void updateActiveCamera(rs_allocation cam) {
- gActiveCamera = (SgCamera *)rsGetElementAt(cam, 0);
-}
-
-static void prepareCameras() {
- // now compute all the camera matrices
- if (rsIsObject(gCameras)) {
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsForEach(gCameraScript, gCameras, nullAlloc, &aspect, sizeof(aspect));
- }
-}
-
-static void prepareLights() {
- if (rsIsObject(gLights)) {
- rsForEach(gLightScript, gLights, nullAlloc);
- }
-}
-
-static void drawSorted() {
- for (int i = 0; i < gFrontToBackCount; i ++) {
- SgRenderable *current = (SgRenderable*)gFrontToBack[i];
- draw(current);
- }
-
- for (int i = 0; i < gBackToFrontCount; i ++) {
- SgRenderable *current = (SgRenderable*)gBackToFront[i];
- draw(current);
- }
-}
-
-static void drawAllObjects(rs_allocation allObj) {
- if (!rsIsObject(allObj)) {
- return;
- }
-
- if (rsIsObject(gVertexShaders)) {
- rsForEach(gVertexParamsScript, nullAlloc, gVertexShaders,
- gActiveCamera, sizeof(gActiveCamera));
- }
- if (rsIsObject(gFragmentShaders)) {
- rsForEach(gFragmentParamsScript, nullAlloc, gFragmentShaders,
- gActiveCamera, sizeof(gActiveCamera));
- }
-
- // Run the params and cull script
- rsForEach(gCullScript, nullAlloc, allObj, gActiveCamera, sizeof(gActiveCamera));
- rsForEach(gObjectParamsScript, nullAlloc, allObj, gActiveCamera, sizeof(gActiveCamera));
-
- int numRenderables = rsAllocationGetDimX(allObj);
- for (int i = 0; i < numRenderables; i ++) {
- rs_allocation *drawAlloc = (rs_allocation*)rsGetElementAt(allObj, i);
- SgRenderable *current = (SgRenderable*)rsGetElementAt(*drawAlloc, 0);
- if (current->isVisible) {
- sortToBucket(current);
- }
- }
- drawSorted();
-}
-
-int root(void) {
-#ifdef DEBUG_RENDERABLES
- rsDebug("=============================================================================", 0);
-#endif // DEBUG_RENDERABLES
-
- // first step is to update the transform hierachy
- if (gRootNode && rsIsObject(gRootNode->children)) {
- rsForEach(gTransformScript, gRootNode->children, nullAlloc, 0, 0);
- }
-
- prepareCameras();
- prepareLights();
-
- if (rsIsObject(gRenderPasses)) {
- rsgClearDepth(1.0f);
- int numPasses = rsAllocationGetDimX(gRenderPasses);
- for (uint i = 0; i < numPasses; i ++) {
- gFrontToBackCount = 0;
- gBackToFrontCount = 0;
- SgRenderPass *pass = (SgRenderPass*)rsGetElementAt(gRenderPasses, i);
- if (rsIsObject(pass->color_target)) {
- rsgBindColorTarget(pass->color_target, 0);
- }
- if (rsIsObject(pass->depth_target)) {
- rsgBindDepthTarget(pass->depth_target);
- }
- if (!rsIsObject(pass->color_target) &&
- !rsIsObject(pass->depth_target)) {
- rsgClearAllRenderTargets();
- }
- updateActiveCamera(pass->camera);
- if (pass->should_clear_color) {
- rsgClearColor(pass->clear_color.x, pass->clear_color.y,
- pass->clear_color.z, pass->clear_color.w);
- }
- if (pass->should_clear_depth) {
- rsgClearDepth(pass->clear_depth);
- }
- drawAllObjects(pass->objects);
- }
- } else {
- gFrontToBackCount = 0;
- gBackToFrontCount = 0;
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
-
- if (rsIsObject(gCameras)) {
- rs_allocation *camAlloc = (rs_allocation*)rsGetElementAt(gCameras, 0);
- updateActiveCamera(*camAlloc);
- }
- drawAllObjects(gRenderableObjects);
- }
- return 10;
-}
-
-// Search through sorted and culled objects
-void pick(int screenX, int screenY) {
- float3 pnt, vec;
- getCameraRay(gActiveCamera, screenX, screenY, &pnt, &vec);
-
- for (int i = 0; i < gFrontToBackCount; i ++) {
- SgRenderable *current = (SgRenderable*)gFrontToBack[i];
- bool isPicked = intersect(current, pnt, vec);
- if (isPicked) {
- current->cullType = CULL_ALWAYS;
- }
- }
-
- for (int i = 0; i < gBackToFrontCount; i ++) {
- SgRenderable *current = (SgRenderable*)gBackToFront[i];
- bool isPicked = intersect(current, pnt, vec);
- if (isPicked) {
- current->cullType = CULL_ALWAYS;
- }
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh
deleted file mode 100644
index 90ae212..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/scenegraph_objects.rsh
+++ /dev/null
@@ -1,323 +0,0 @@
-// Copyright (C) 2011-2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#ifndef _TRANSFORM_DEF_
-#define _TRANSFORM_DEF_
-
-#include "rs_graphics.rsh"
-
-#define TRANSFORM_NONE 0
-#define TRANSFORM_TRANSLATE 1
-#define TRANSFORM_ROTATE 2
-#define TRANSFORM_SCALE 3
-
-#define CULL_FRUSTUM 0
-#define CULL_ALWAYS 2
-
-#define LIGHT_POINT 0
-#define LIGHT_DIRECTIONAL 1
-
-// Shader params that involve only data
-#define SHADER_PARAM_DATA_ONLY 10000
-#define SHADER_PARAM_FLOAT4_DATA 10001
-#define SHADER_PARAM_TRANSFORM_DATA 10002
-#define SHADER_PARAM_TRANSFORM_MODEL 10003
-
-// Shader params that involve camera
-#define SHADER_PARAM_CAMERA 1000
-#define SHADER_PARAM_FLOAT4_CAMERA_POS 1001
-#define SHADER_PARAM_FLOAT4_CAMERA_DIR 1002
-#define SHADER_PARAM_TRANSFORM_VIEW 1003
-#define SHADER_PARAM_TRANSFORM_PROJ 1004
-#define SHADER_PARAM_TRANSFORM_VIEW_PROJ 1005
-#define SHADER_PARAM_TRANSFORM_MODEL_VIEW 1006
-#define SHADER_PARAM_TRANSFORM_MODEL_VIEW_PROJ 1007
-
-// Shader Params that only involve lights
-#define SHADER_PARAM_LIGHT 100
-#define SHADER_PARAM_FLOAT4_LIGHT_COLOR 103
-#define SHADER_PARAM_FLOAT4_LIGHT_POS 104
-#define SHADER_PARAM_FLOAT4_LIGHT_DIR 105
-
-#define SHADER_PARAM_TEXTURE 10
-
-#define TEXTURE_NONE 0
-#define TEXTURE_2D 1
-#define TEXTURE_CUBE 2
-#define TEXTURE_RENDER_TARGET 3
-
-typedef struct TransformComponent_s {
- float4 value;
- int type;
- rs_allocation name;
-} SgTransformComponent;
-
-typedef struct __attribute__((packed, aligned(4))) SgTransform {
- rs_matrix4x4 globalMat;
- rs_matrix4x4 localMat;
-
- rs_allocation components;
- int isDirty;
-
- rs_allocation children;
- rs_allocation name;
-
- // Used to check whether transform params need to be updated
- uint32_t timestamp;
-} SgTransform;
-
-typedef struct VertexShader_s {
- rs_program_vertex program;
- // Buffer with vertex constant data
- rs_allocation shaderConst;
- // ShaderParam's that populate data
- rs_allocation shaderConstParams;
- // location of the per object constants on the buffer
- int objectConstIndex;
-} SgVertexShader;
-
-typedef struct FragmentShader_s {
- rs_program_fragment program;
- // Buffer with vertex constant data
- rs_allocation shaderConst;
- // ShaderParam's that populate data
- rs_allocation shaderConstParams;
- // ShaderParam's that set textures
- rs_allocation shaderTextureParams;
- // location of the per object constants on the buffer
- int objectConstIndex;
-} SgFragmentShader;
-
-typedef struct RenderState_s {
- rs_allocation pv; // VertexShader struct
- rs_allocation pf; // FragmentShader struct
- rs_program_store ps;
- rs_program_raster pr;
-} SgRenderState;
-
-typedef struct Renderable_s {
- rs_allocation render_state;
- // Buffer with vertex constant data
- rs_allocation pv_const;
- // ShaderParam's that populate data
- rs_allocation pv_constParams;
- // Buffer with fragment constant data
- rs_allocation pf_const;
- // ShaderParam's that populate data
- rs_allocation pf_constParams;
- rs_allocation pf_textures[8];
- int pf_num_textures;
- rs_mesh mesh;
- int meshIndex;
- rs_allocation transformMatrix;
- rs_allocation name;
- float4 boundingSphere;
- float4 worldBoundingSphere;
- int bVolInitialized;
- int cullType; // specifies whether to frustum cull
- int isVisible;
-} SgRenderable;
-
-typedef struct RenderPass_s {
- rs_allocation color_target;
- rs_allocation depth_target;
- rs_allocation camera;
- rs_allocation objects;
-
- float4 clear_color;
- float clear_depth;
- bool should_clear_color;
- bool should_clear_depth;
-} SgRenderPass;
-
-typedef struct Camera_s {
- rs_matrix4x4 proj;
- rs_matrix4x4 view;
- rs_matrix4x4 viewProj;
- float4 position;
- float near;
- float far;
- float horizontalFOV;
- float aspect;
- rs_allocation name;
- rs_allocation transformMatrix;
- float4 frustumPlanes[6];
-
- int isDirty;
- // Timestamp of the camera itself to signal params if anything changes
- uint32_t timestamp;
- // Timestamp of our transform
- uint32_t transformTimestamp;
-} SgCamera;
-
-typedef struct Light_s {
- float4 position;
- float4 color;
- float intensity;
- int type;
- rs_allocation name;
- rs_allocation transformMatrix;
-} SgLight;
-
-// This represents the shader parameter data needed to set a float or transform data
-typedef struct ShaderParamData_s {
- int type;
- float4 float_value;
- uint32_t timestamp;
- rs_allocation paramName;
- rs_allocation camera;
- rs_allocation light;
- rs_allocation transform;
- rs_allocation texture;
-} SgShaderParamData;
-
-// This represents a shader parameter that knows how to update itself for a given
-// renderable or shader and contains a timestamp for the last time this buffer was updated
-typedef struct ShaderParam_s {
- // Used to check whether transform params need to be updated
- uint32_t transformTimestamp;
- // Used to check whether data params need to be updated
- // These are used when somebody set the matrix of float value directly in java
- uint32_t dataTimestamp;
- // Specifies where in the constant buffer data gets written to
- int bufferOffset;
- // An instance of SgShaderParamData that could be shared by multiple objects
- rs_allocation data;
- // How many components of the vector we need to write
- int float_vecSize;
-} SgShaderParam;
-
-// This represents a texture object
-typedef struct Texture_s {
- uint32_t type;
- rs_allocation texture;
-} SgTexture;
-
-static inline void printName(rs_allocation name) {
- if (!rsIsObject(name)) {
- rsDebug("no name", 0);
- return;
- }
-
- rsDebug((const char*)rsGetElementAt(name, 0), 0);
-}
-
-static inline void printCameraInfo(const SgCamera *cam) {
- rsDebug("***** Camera information. ptr:", cam);
- printName(cam->name);
- const SgTransform *camTransform = (const SgTransform *)rsGetElementAt(cam->transformMatrix, 0);
- rsDebug("Transform name:", camTransform);
- printName(camTransform->name);
-
- rsDebug("Aspect: ", cam->aspect);
- rsDebug("Near: ", cam->near);
- rsDebug("Far: ", cam->far);
- rsDebug("Fov: ", cam->horizontalFOV);
- rsDebug("Position: ", cam->position);
- rsDebug("Proj: ", &cam->proj);
- rsDebug("View: ", &cam->view);
-}
-
-static inline void printLightInfo(const SgLight *light) {
- rsDebug("***** Light information. ptr:", light);
- printName(light->name);
- const SgTransform *lTransform = (const SgTransform *)rsGetElementAt(light->transformMatrix, 0);
- rsDebug("Transform name:", lTransform);
- printName(lTransform->name);
-
- rsDebug("Position: ", light->position);
- rsDebug("Color : ", light->color);
- rsDebug("Intensity: ", light->intensity);
- rsDebug("Type: ", light->type);
-}
-
-static inline void getCameraRay(const SgCamera *cam, int screenX, int screenY, float3 *pnt, float3 *vec) {
- rsDebug("=================================", screenX);
- rsDebug("Point X", screenX);
- rsDebug("Point Y", screenY);
-
- rs_matrix4x4 mvpInv;
- rsMatrixLoad(&mvpInv, &cam->viewProj);
- rsMatrixInverse(&mvpInv);
-
- float width = (float)rsgGetWidth();
- float height = (float)rsgGetHeight();
-
- float4 pos = {(float)screenX, height - (float)screenY, 0.0f, 1.0f};
-
- pos.x /= width;
- pos.y /= height;
-
- rsDebug("Pre Norm X", pos.x);
- rsDebug("Pre Norm Y", pos.y);
-
- pos.xy = pos.xy * 2.0f - 1.0f;
-
- rsDebug("Norm X", pos.x);
- rsDebug("Norm Y", pos.y);
-
- pos = rsMatrixMultiply(&mvpInv, pos);
- float oneOverW = 1.0f / pos.w;
- pos.xyz *= oneOverW;
-
- rsDebug("World X", pos.x);
- rsDebug("World Y", pos.y);
- rsDebug("World Z", pos.z);
-
- rsDebug("Cam X", cam->position.x);
- rsDebug("Cam Y", cam->position.y);
- rsDebug("Cam Z", cam->position.z);
-
- *vec = normalize(pos.xyz - cam->position.xyz);
- rsDebug("Vec X", vec->x);
- rsDebug("Vec Y", vec->y);
- rsDebug("Vec Z", vec->z);
- *pnt = cam->position.xyz;
-}
-
-static inline bool intersect(const SgRenderable *obj, float3 pnt, float3 vec) {
- // Solving for t^2 + Bt + C = 0
- float3 originMinusCenter = pnt - obj->worldBoundingSphere.xyz;
- float B = dot(originMinusCenter, vec) * 2.0f;
- float C = dot(originMinusCenter, originMinusCenter) -
- obj->worldBoundingSphere.w * obj->worldBoundingSphere.w;
-
- float discriminant = B * B - 4.0f * C;
- if (discriminant < 0.0f) {
- return false;
- }
- discriminant = sqrt(discriminant);
-
- float t0 = (-B - discriminant) * 0.5f;
- float t1 = (-B + discriminant) * 0.5f;
-
- if (t0 > t1) {
- float temp = t0;
- t0 = t1;
- t1 = temp;
- }
-
- // The sphere is behind us
- if (t1 < 0.0f) {
- return false;
- }
- return true;
-}
-
-
-#endif // _TRANSFORM_DEF_
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/transform.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/transform.rs
deleted file mode 100644
index 1d0b5be..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/transform.rs
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.modelviewer)
-
-#include "scenegraph_objects.rsh"
-
-rs_script gTransformScript;
-
-typedef struct {
- int changed;
- rs_matrix4x4 *mat;
-} ParentData;
-
-//#define DEBUG_TRANSFORMS
-/* Unused function:
-static void debugTransform(SgTransform *data, const ParentData *parent) {
- rsDebug("****** <Transform> ******", (int)data);
- printName(data->name);
- rsDebug("isDirty", data->isDirty);
- rsDebug("parent", (int)parent);
- rsDebug("child ", rsIsObject(data->children));
-
- // Refresh matrices if dirty
- if (data->isDirty && rsIsObject(data->components)) {
- uint32_t numComponenets = rsAllocationGetDimX(data->components);
- for (int i = 0; i < numComponenets; i ++) {
- const SgTransformComponent *comp = NULL;
- comp = (const SgTransformComponent *)rsGetElementAt(data->components, i);
-
- if (rsIsObject(comp->name)) {
- rsDebug((const char*)rsGetElementAt(comp->name, 0), comp->value);
- rsDebug("Type", comp->type);
- } else {
- rsDebug("no name", comp->value);
- rsDebug("Type", comp->type);
- }
- }
- }
-
- rsDebug("timestamp", data->timestamp);
- rsDebug("****** </Transform> ******", (int)data);
-}
-*/
-
-static void appendTransformation(int type, float4 data, rs_matrix4x4 *mat) {
- rs_matrix4x4 temp;
-
- switch (type) {
- case TRANSFORM_TRANSLATE:
- rsMatrixLoadTranslate(&temp, data.x, data.y, data.z);
- break;
- case TRANSFORM_ROTATE:
- rsMatrixLoadRotate(&temp, data.w, data.x, data.y, data.z);
- break;
- case TRANSFORM_SCALE:
- rsMatrixLoadScale(&temp, data.x, data.y, data.z);
- break;
- }
- rsMatrixMultiply(mat, &temp);
-}
-
-void root(const rs_allocation *v_in, rs_allocation *v_out, const void *usrData) {
-
- SgTransform *data = (SgTransform *)rsGetElementAt(*v_in, 0);
- const ParentData *parent = (const ParentData *)usrData;
-
-#ifdef DEBUG_TRANSFORMS
- debugTransform(data, parent);
-#endif //DEBUG_TRANSFORMS
-
- rs_matrix4x4 *localMat = &data->localMat;
- rs_matrix4x4 *globalMat = &data->globalMat;
-
- // Refresh matrices if dirty
- if (data->isDirty && rsIsObject(data->components)) {
- bool resetLocal = false;
- uint32_t numComponenets = rsAllocationGetDimX(data->components);
- for (int i = 0; i < numComponenets; i ++) {
- if (!resetLocal) {
- // Reset our local matrix only for component transforms
- rsMatrixLoadIdentity(localMat);
- resetLocal = true;
- }
- const SgTransformComponent *comp = NULL;
- comp = (const SgTransformComponent *)rsGetElementAt(data->components, i);
- appendTransformation(comp->type, comp->value, localMat);
- }
- }
-
- if (parent) {
- data->isDirty = (parent->changed || data->isDirty) ? 1 : 0;
- if (data->isDirty) {
- rsMatrixLoad(globalMat, parent->mat);
- rsMatrixMultiply(globalMat, localMat);
- }
- } else if (data->isDirty) {
- rsMatrixLoad(globalMat, localMat);
- }
-
- ParentData toChild;
- toChild.changed = 0;
- toChild.mat = globalMat;
-
- if (data->isDirty) {
- toChild.changed = 1;
- data->timestamp ++;
- }
-
- if (rsIsObject(data->children)) {
- rs_allocation nullAlloc = {0};
- rsForEach(gTransformScript, data->children, nullAlloc, &toChild, sizeof(toChild));
- }
-
- data->isDirty = 0;
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/vertex_params.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/vertex_params.rs
deleted file mode 100644
index 88955a8..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/scenegraph/vertex_params.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.scenegraph)
-
-#include "scenegraph_objects.rsh"
-
-//#define DEBUG_PARAMS
-
-#include "params.rsh"
-
-void root(rs_allocation *v_out, const void *usrData) {
- SgVertexShader *shader = (SgVertexShader *)rsGetElementAt(*v_out, 0);
- const SgCamera *camera = (const SgCamera*)usrData;
- processAllParams(shader->shaderConst, shader->shaderConstParams, camera);
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FileSelector.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FileSelector.java
deleted file mode 100644
index 420e133..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FileSelector.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.ArrayList;
-import java.util.List;
-
-import android.app.ListActivity;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-/**
- * A list view where the last item the user clicked is placed in
- * the "activated" state, causing its background to highlight.
- */
-public class FileSelector extends ListActivity {
-
- File[] mCurrentSubList;
- File mCurrentFile;
-
- class DAEFilter implements FileFilter {
- public boolean accept(File file) {
- if (file.isDirectory()) {
- return true;
- }
- return file.getName().endsWith(".dae");
- }
- }
-
- private void populateList(File file) {
-
- mCurrentFile = file;
- setTitle(mCurrentFile.getAbsolutePath() + "/*.dae");
- List<String> names = new ArrayList<String>();
- names.add("..");
-
- mCurrentSubList = mCurrentFile.listFiles(new DAEFilter());
-
- if (mCurrentSubList != null) {
- for (int i = 0; i < mCurrentSubList.length; i ++) {
- String fileName = mCurrentSubList[i].getName();
- if (mCurrentSubList[i].isDirectory()) {
- fileName = "/" + fileName;
- }
- names.add(fileName);
- }
- }
-
- // Use the built-in layout for showing a list item with a single
- // line of text whose background is changes when activated.
- setListAdapter(new ArrayAdapter<String>(this,
- android.R.layout.simple_list_item_activated_1, names));
- getListView().setTextFilterEnabled(true);
-
- // Tell the list view to show one checked/activated item at a time.
- getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- populateList(new File("/sdcard/"));
- }
-
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id) {
- if (position == 0) {
- File parent = mCurrentFile.getParentFile();
- if (parent == null) {
- return;
- }
- populateList(parent);
- return;
- }
-
- // the first thing in list is parent directory
- File selectedFile = mCurrentSubList[position - 1];
- if (selectedFile.isDirectory()) {
- populateList(selectedFile);
- return;
- }
-
- Intent resultIntent = new Intent();
- resultIntent.setData(Uri.fromFile(selectedFile));
- setResult(RESULT_OK, resultIntent);
- finish();
- }
-
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java
deleted file mode 100644
index 28f916c..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/FullscreenBlur.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.android.testapp;
-
-import java.util.ArrayList;
-
-import com.android.scenegraph.*;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Element.Builder;
-import android.renderscript.Font.Style;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-class FullscreenBlur {
-
- static TextureRenderTarget sRenderTargetBlur0Color;
- static TextureRenderTarget sRenderTargetBlur0Depth;
- static TextureRenderTarget sRenderTargetBlur1Color;
- static TextureRenderTarget sRenderTargetBlur1Depth;
- static TextureRenderTarget sRenderTargetBlur2Color;
- static TextureRenderTarget sRenderTargetBlur2Depth;
-
- static FragmentShader mPF_BlurH;
- static FragmentShader mPF_BlurV;
- static FragmentShader mPF_SelectColor;
- static FragmentShader mPF_Texture;
- static VertexShader mPV_Paint;
- static VertexShader mPV_Blur;
-
- static int targetWidth;
- static int targetHeight;
-
- // This is only used when full screen blur is enabled
- // Basically, it's the offscreen render targets
- static void createRenderTargets(RenderScriptGL rs, int w, int h) {
- targetWidth = w/8;
- targetHeight = h/8;
- Type.Builder b = new Type.Builder(rs, Element.RGBA_8888(rs));
- Type renderType = b.setX(targetWidth).setY(targetHeight).create();
- int usage = Allocation.USAGE_GRAPHICS_TEXTURE | Allocation.USAGE_GRAPHICS_RENDER_TARGET;
- sRenderTargetBlur0Color = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur1Color = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur2Color = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
-
- b = new Type.Builder(rs, Element.createPixel(rs, Element.DataType.UNSIGNED_16,
- Element.DataKind.PIXEL_DEPTH));
- renderType = b.setX(targetWidth).setY(targetHeight).create();
- usage = Allocation.USAGE_GRAPHICS_RENDER_TARGET;
- sRenderTargetBlur0Depth = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur1Depth = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- sRenderTargetBlur2Depth = new TextureRenderTarget(Allocation.createTyped(rs, renderType, usage));
- }
-
- static void addOffsets(Renderable quad, float advance) {
- quad.appendSourceParams(new Float4Param("blurOffset0", - advance * 2.5f));
- quad.appendSourceParams(new Float4Param("blurOffset1", - advance * 0.5f));
- quad.appendSourceParams(new Float4Param("blurOffset2", advance * 1.5f));
- quad.appendSourceParams(new Float4Param("blurOffset3", advance * 3.5f));
- }
-
- static RenderPass addPass(Scene scene, Camera cam, TextureRenderTarget color, TextureRenderTarget depth) {
- RenderPass pass = new RenderPass();
- pass.setColorTarget(color);
- pass.setDepthTarget(depth);
- pass.setShouldClearColor(false);
- pass.setShouldClearDepth(false);
- pass.setCamera(cam);
- scene.appendRenderPass(pass);
- return pass;
- }
-
- static void addBlurPasses(Scene scene, RenderScriptGL rs, Camera cam) {
- SceneManager sceneManager = SceneManager.getInstance();
- ArrayList<RenderableBase> allDraw = scene.getRenderables();
- int numDraw = allDraw.size();
-
- ProgramRaster cullNone = ProgramRaster.CULL_NONE(rs);
- ProgramStore blendAdd = SceneManager.BLEND_ADD_DEPTH_NONE(rs);
- ProgramStore blendNone = ProgramStore.BLEND_NONE_DEPTH_NONE(rs);
-
- RenderState drawTex = new RenderState(mPV_Blur, mPF_Texture, blendAdd, cullNone);
- RenderState selectCol = new RenderState(mPV_Blur, mPF_SelectColor, blendNone, cullNone);
- RenderState hBlur = new RenderState(mPV_Blur, mPF_BlurH, blendNone, cullNone);
- RenderState vBlur = new RenderState(mPV_Blur, mPF_BlurV, blendNone, cullNone);
-
- // Renders the scene off screen
- RenderPass blurSourcePass = addPass(scene, cam,
- sRenderTargetBlur0Color,
- sRenderTargetBlur0Depth);
- blurSourcePass.setClearColor(new Float4(1.0f, 1.0f, 1.0f, 1.0f));
- blurSourcePass.setShouldClearColor(true);
- blurSourcePass.setClearDepth(1.0f);
- blurSourcePass.setShouldClearDepth(true);
- for (int i = 0; i < numDraw; i ++) {
- blurSourcePass.appendRenderable((Renderable)allDraw.get(i));
- }
-
- // Pass for selecting bright colors
- RenderPass selectColorPass = addPass(scene, cam,
- sRenderTargetBlur2Color,
- sRenderTargetBlur2Depth);
- Renderable quad = sceneManager.getRenderableQuad("ScreenAlignedQuadS", selectCol);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur0Color));
- selectColorPass.appendRenderable(quad);
-
- // Horizontal blur
- RenderPass horizontalBlurPass = addPass(scene, cam,
- sRenderTargetBlur1Color,
- sRenderTargetBlur1Depth);
- quad = sceneManager.getRenderableQuad("ScreenAlignedQuadH", hBlur);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur2Color));
- addOffsets(quad, 1.0f / (float)targetWidth);
- horizontalBlurPass.appendRenderable(quad);
-
- // Vertical Blur
- RenderPass verticalBlurPass = addPass(scene, cam,
- sRenderTargetBlur2Color,
- sRenderTargetBlur2Depth);
- quad = sceneManager.getRenderableQuad("ScreenAlignedQuadV", vBlur);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur1Color));
- addOffsets(quad, 1.0f / (float)targetHeight);
- verticalBlurPass.appendRenderable(quad);
- }
-
- // Additively renders the blurred colors on top of the scene
- static void addCompositePass(Scene scene, RenderScriptGL rs, Camera cam) {
- SceneManager sceneManager = SceneManager.getInstance();
- RenderState drawTex = new RenderState(mPV_Blur, mPF_Texture,
- SceneManager.BLEND_ADD_DEPTH_NONE(rs),
- ProgramRaster.CULL_NONE(rs));
-
- RenderPass compositePass = addPass(scene, cam, null, null);
- Renderable quad = sceneManager.getRenderableQuad("ScreenAlignedQuadComposite", drawTex);
- quad.appendSourceParams(new TextureParam("color", sRenderTargetBlur2Color));
- compositePass.appendRenderable(quad);
- }
-
- static private FragmentShader getShader(Resources res, RenderScriptGL rs,
- int resID, Type constants) {
- FragmentShader.Builder fb = new FragmentShader.Builder(rs);
- fb.setShader(res, resID);
- fb.addTexture(TextureType.TEXTURE_2D, "color");
- if (constants != null) {
- fb.setObjectConst(constants);
- }
- FragmentShader prog = fb.create();
- prog.getProgram().bindSampler(Sampler.CLAMP_LINEAR(rs), 0);
- return prog;
- }
-
- static void initShaders(Resources res, RenderScriptGL rs) {
- ScriptField_BlurOffsets blurConst = new ScriptField_BlurOffsets(rs, 1);
- VertexShader.Builder vb = new VertexShader.Builder(rs);
- vb.addInput(ScriptField_VertexShaderInputs.createElement(rs));
- vb.setShader(res, R.raw.blur_vertex);
- mPV_Blur = vb.create();
-
- mPF_Texture = getShader(res, rs, R.raw.texture, null);
- mPF_Texture.getProgram().bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(rs), 0);
- mPF_BlurH = getShader(res, rs, R.raw.blur_h, blurConst.getAllocation().getType());
- mPF_BlurV = getShader(res, rs, R.raw.blur_v, blurConst.getAllocation().getType());
- mPF_SelectColor = getShader(res, rs, R.raw.select_color, null);
- }
-
-}
-
-
-
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleApp.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleApp.java
deleted file mode 100644
index 314db80..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleApp.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.View;
-import android.view.Window;
-import android.view.Window;
-import android.net.Uri;
-
-import java.lang.Runtime;
-
-public class SimpleApp extends Activity {
-
- private SimpleAppView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new SimpleAppView(this);
- setContentView(mView);
- }
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppRS.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppRS.java
deleted file mode 100644
index fff6f34..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppRS.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-import com.android.scenegraph.*;
-import com.android.scenegraph.SceneManager.SceneLoadedCallback;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Program.TextureType;
-import android.util.Log;
-
-// This is where the scenegraph and the rendered objects are initialized and used
-public class SimpleAppRS {
- SceneManager mSceneManager;
-
- RenderScriptGL mRS;
- Resources mRes;
-
- Scene mScene;
- Mesh mSimpleMesh;
- Mesh mSphereMesh;
- Mesh mCubeMesh;
-
- public void init(RenderScriptGL rs, Resources res, int width, int height) {
- mRS = rs;
- mRes = res;
- mSceneManager = SceneManager.getInstance();
- mSceneManager.initRS(mRS, mRes, width, height);
-
- mScene = new Scene();
-
- setupGeometry();
- setupColoredQuad();
- setupTexturedQuad();
- setupShadedGeometry();
- setupCamera();
- setupRenderPass();
-
- mSceneManager.setActiveScene(mScene);
-
- mScene.initRS();
- mRS.bindRootScript(mSceneManager.getRenderLoop());
- }
-
- private void setupGeometry() {
- Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS, 3,
- Mesh.TriangleMeshBuilder.TEXTURE_0);
-
- // Create four vertices with texture coordinates
- tmb.setTexture(0.0f, 1.0f).addVertex(-1.0f, 1.0f, 0.0f);
- tmb.setTexture(0.0f, 0.0f).addVertex(-1.0f, -1.0f, 0.0f);
- tmb.setTexture(1.0f, 0.0f).addVertex(1.0f, -1.0f, 0.0f);
- tmb.setTexture(1.0f, 1.0f).addVertex(1.0f, 1.0f, 0.0f);
-
- tmb.addTriangle(0, 1, 2);
- tmb.addTriangle(2, 3, 0);
- mSimpleMesh = tmb.create(true);
-
- // Load a file that constains two pieces of geometry, a sphere and a cube
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.unit_obj);
- for (int i = 0; i < model.getIndexEntryCount(); i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getName().equals("CubeMesh")) {
- mCubeMesh = entry.getMesh();
- } else if (entry != null && entry.getName().equals("SphereMesh")) {
- mSphereMesh = entry.getMesh();
- }
- }
- }
-
- private void setupColoredQuad() {
- // Built-in shader that provides position, texcoord and normal
- VertexShader genericV = SceneManager.getDefaultVS();
- // Built-in shader that displays a color
- FragmentShader colorF = SceneManager.getColorFS();
- RenderState colorRS = new RenderState(genericV, colorF, null, null);
-
- // Draw a simple colored quad
- Renderable quad = mScene.appendNewRenderable();
- quad.setMesh(mSimpleMesh);
- // Our shader has a constant input called "color"
- // This tells the scenegraph to assign the following float3 to that input
- quad.appendSourceParams(new Float4Param("color", 0.2f, 0.3f, 0.4f));
- quad.setRenderState(colorRS);
- }
-
- private void setupTexturedQuad() {
- // Built-in shader that provides position, texcoord and normal
- VertexShader genericV = SceneManager.getDefaultVS();
- // Built-in shader that displays a texture
- FragmentShader textureF = SceneManager.getTextureFS();
- // We want to use transparency based on the alpha channel of the texture
- ProgramStore alphaBlend = ProgramStore.BLEND_ALPHA_DEPTH_TEST(mRS);
- RenderState texRS = new RenderState(genericV, textureF, alphaBlend, null);
-
- // Draw a textured quad
- Renderable quad = mScene.appendNewRenderable();
- quad.setMesh(mSimpleMesh);
- // Make a transform to position the quad
- CompoundTransform t = mScene.appendNewCompoundTransform();
- t.addTranslate("position", new Float3(2, 2, 0));
- quad.setTransform(t);
- // Our fragment shader has a constant texture input called "color"
- // This will assign an icon from drawables to that input
- quad.appendSourceParams(new TextureParam("color", new Texture2D(R.drawable.icon)));
- quad.setRenderState(texRS);
- }
-
- private FragmentShader createLambertShader() {
- // Describe what constant inputs our shader wants
- Element.Builder b = new Element.Builder(mRS);
- b.add(Element.F32_4(mRS), "cameraPos");
-
- // Create a shader from a text file in resources
- FragmentShader.Builder fb = new FragmentShader.Builder(mRS);
- // Tell the shader what constants we want
- fb.setShaderConst(new Type.Builder(mRS, b.create()).setX(1).create());
- // Shader code location
- fb.setShader(mRes, R.raw.diffuse);
- // We want a texture called diffuse on our shader
- fb.addTexture(TextureType.TEXTURE_2D, "diffuse");
- FragmentShader shader = fb.create();
- mScene.appendShader(shader);
- return shader;
- }
-
- private void setupShadedGeometry() {
- // Built-in shader that provides position, texcoord and normal
- VertexShader genericV = SceneManager.getDefaultVS();
- // Custom shader
- FragmentShader diffuseF = createLambertShader();
- RenderState diffuseRS = new RenderState(genericV, diffuseF, null, null);
-
- // Draw a sphere
- Renderable sphere = mScene.appendNewRenderable();
- // Use the sphere geometry loaded earlier
- sphere.setMesh(mSphereMesh);
- // Make a transform to position the sphere
- CompoundTransform t = mScene.appendNewCompoundTransform();
- t.addTranslate("position", new Float3(-1, 2, 3));
- t.addScale("scale", new Float3(1.4f, 1.4f, 1.4f));
- sphere.setTransform(t);
- // Tell the renderable which texture to use when we draw
- // This will mean a texture param in the shader called "diffuse"
- // will be assigned a texture called red.jpg
- sphere.appendSourceParams(new TextureParam("diffuse", new Texture2D("", "red.jpg")));
- sphere.setRenderState(diffuseRS);
-
- // Draw a cube
- Renderable cube = mScene.appendNewRenderable();
- cube.setMesh(mCubeMesh);
- t = mScene.appendNewCompoundTransform();
- t.addTranslate("position", new Float3(-2, -2.1f, 0));
- t.addRotate("rotateX", new Float3(1, 0, 0), 30);
- t.addRotate("rotateY", new Float3(0, 1, 0), 30);
- t.addScale("scale", new Float3(2, 2, 2));
- cube.setTransform(t);
- cube.appendSourceParams(new TextureParam("diffuse", new Texture2D("", "orange.jpg")));
- cube.setRenderState(diffuseRS);
- }
-
- private void setupCamera() {
- Camera camera = mScene.appendNewCamera();
- camera.setFar(200);
- camera.setNear(0.1f);
- camera.setFOV(60);
- CompoundTransform cameraTransform = mScene.appendNewCompoundTransform();
- cameraTransform.addTranslate("camera", new Float3(0, 0, 10));
- camera.setTransform(cameraTransform);
- }
-
- private void setupRenderPass() {
- RenderPass mainPass = mScene.appendNewRenderPass();
- mainPass.setClearColor(new Float4(1.0f, 1.0f, 1.0f, 1.0f));
- mainPass.setShouldClearColor(true);
- mainPass.setClearDepth(1.0f);
- mainPass.setShouldClearDepth(true);
- mainPass.setCamera(mScene.getCameras().get(0));
- ArrayList<RenderableBase> allRender = mScene.getRenderables();
- for (RenderableBase renderable : allRender) {
- mainPass.appendRenderable((Renderable)renderable);
- }
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppView.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppView.java
deleted file mode 100644
index 2112181..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/SimpleAppView.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-
-public class SimpleAppView extends RSSurfaceView {
-
- public SimpleAppView(Context context) {
- super(context);
- }
-
- private RenderScriptGL mRS;
- SimpleAppRS mRender;
-
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- sc.setSamples(1, 2, 1);
- mRS = createRenderScriptGL(sc);
- mRS.setSurface(holder, w, h);
- mRender = new SimpleAppRS();
- mRender.init(mRS, getResources(), w, h);
- }
- }
-
- @Override
- protected void onDetachedFromWindow() {
- if (mRS != null) {
- mRender = null;
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-}
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestApp.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestApp.java
deleted file mode 100644
index 385a7ab..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestApp.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-import android.view.MenuInflater;
-import android.view.Window;
-import android.net.Uri;
-
-import java.lang.Runtime;
-
-public class TestApp extends Activity {
-
- private TestAppView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // Create our Preview view and set it as the content of our
- // Activity
- mView = new TestAppView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- // Ideally a game should implement onResume() and onPause()
- // to take appropriate action when the activity looses focus
- super.onPause();
- mView.pause();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.loader_menu, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
- case R.id.load_model:
- loadModel();
- return true;
- case R.id.use_blur:
- mView.mRender.toggleBlur();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
- private static final int FIND_DAE_MODEL = 10;
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode == RESULT_OK) {
- if (requestCode == FIND_DAE_MODEL) {
- Uri selectedImageUri = data.getData();
- Log.e("Selected Path: ", selectedImageUri.getPath());
- mView.mRender.loadModel(selectedImageUri.getPath());
- }
- }
- }
-
- public void loadModel() {
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_PICK);
- intent.setClassName("com.android.testapp",
- "com.android.testapp.FileSelector");
- startActivityForResult(intent, FIND_DAE_MODEL);
- }
-
-}
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java
deleted file mode 100644
index 5bd8f0b..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppLoadingScreen.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-import com.android.scenegraph.SceneManager;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Allocation.MipmapControl;
-import android.renderscript.Element.Builder;
-import android.renderscript.Font.Style;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-// This is where the scenegraph and the rendered objects are initialized and used
-public class TestAppLoadingScreen {
-
- private static String TAG = "TestAppLoadingScreen";
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private ScriptC_test_app mScript;
-
- public TestAppLoadingScreen(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- // Shows the loading screen with some text
- renderLoading();
- // Adds a little 3D bugdroid model to the laoding screen asynchronously.
- new LoadingScreenLoaderTask().execute();
- }
-
- public void showLoadingScreen(boolean show) {
- if (show) {
- mRS.bindRootScript(mScript);
- } else {
- mRS.bindRootScript(SceneManager.getInstance().getRenderLoop());
- }
- }
-
- // The loading screen has some elements that shouldn't be loaded on the UI thread
- private class LoadingScreenLoaderTask extends AsyncTask<String, Void, Boolean> {
- Allocation robotTex;
- Mesh robotMesh;
- protected Boolean doInBackground(String... names) {
- long start = System.currentTimeMillis();
- robotTex = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot,
- MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot);
- FileA3D.IndexEntry entry = model.getIndexEntry(0);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- robotMesh = entry.getMesh();
- }
-
- mScript.set_gPFSBackground(ProgramStore.BLEND_NONE_DEPTH_TEST(mRS));
-
- ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS);
- b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- ProgramFragment pfDefault = b.create();
- pfDefault.bindSampler(Sampler.CLAMP_LINEAR(mRS), 0);
- mScript.set_gPFBackground(pfDefault);
-
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- ProgramVertexFixedFunction pvDefault = pvb.create();
- ProgramVertexFixedFunction.Constants va = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction)pvDefault).bindConstants(va);
- mScript.set_gPVBackground(pvDefault);
-
- long end = System.currentTimeMillis();
- Log.v("TIMER", "Loading load time: " + (end - start));
- return new Boolean(true);
- }
-
- protected void onPostExecute(Boolean result) {
- mScript.set_gRobotTex(robotTex);
- mScript.set_gRobotMesh(robotMesh);
- }
- }
-
- // Creates a simple script to show a loding screen until everything is initialized
- // Could also be used to do some custom renderscript work before handing things over
- // to the scenegraph
- void renderLoading() {
- mScript = new ScriptC_test_app(mRS, mRes, R.raw.test_app);
- mRS.bindRootScript(mScript);
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java
deleted file mode 100644
index 3aa80f4..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppRS.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2011-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-import com.android.scenegraph.*;
-import com.android.scenegraph.SceneManager.SceneLoadedCallback;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.AsyncTask;
-import android.renderscript.*;
-import android.renderscript.Program.TextureType;
-import android.util.Log;
-
-// This is where the scenegraph and the rendered objects are initialized and used
-public class TestAppRS {
-
- private static String modelName = "orientation_test.dae";
- private static String TAG = "TestAppRS";
- private static String mFilePath = "";
-
- int mWidth;
- int mHeight;
-
- boolean mUseBlur;
-
- TestAppLoadingScreen mLoadingScreen;
-
- // Used to asynchronously load scene elements like meshes and transform hierarchies
- SceneLoadedCallback mLoadedCallback = new SceneLoadedCallback() {
- public void run() {
- prepareToRender(mLoadedScene);
- }
- };
-
- // Top level class that initializes all the elements needed to use the scene graph
- SceneManager mSceneManager;
-
- // Used to move the camera around in the 3D world
- TouchHandler mTouchHandler;
-
- private Resources mRes;
- private RenderScriptGL mRS;
-
- // Shaders
- private FragmentShader mPaintF;
- private FragmentShader mLightsF;
- private FragmentShader mLightsDiffF;
- private FragmentShader mAluminumF;
- private FragmentShader mPlasticF;
- private FragmentShader mDiffuseF;
- private FragmentShader mTextureF;
- private VertexShader mGenericV;
-
- Scene mActiveScene;
-
- // This is a part of the test app, it's used to tests multiple render passes and is toggled
- // on and off in the menu, off by default
- void toggleBlur() {
- mUseBlur = !mUseBlur;
-
- mActiveScene.clearRenderPasses();
- initRenderPasses();
- mActiveScene.initRenderPassRS(mRS, mSceneManager);
-
- // This is just a hardcoded object in the scene that gets turned on and off for the demo
- // to make things look a bit better. This could be deleted in the cleanup
- Renderable plane = (Renderable)mActiveScene.getRenderableByName("pPlaneShape1");
- if (plane != null) {
- plane.setVisible(!mUseBlur);
- }
- }
-
- public void init(RenderScriptGL rs, Resources res, int width, int height) {
- mUseBlur = false;
- mRS = rs;
- mRes = res;
- mWidth = width;
- mHeight = height;
-
- mTouchHandler = new TouchHandler();
-
- mSceneManager = SceneManager.getInstance();
- // Initializes all the RS specific scenegraph elements
- mSceneManager.initRS(mRS, mRes, mWidth, mHeight);
-
- mLoadingScreen = new TestAppLoadingScreen(mRS, mRes);
-
- // Initi renderscript stuff specific to the app. This will need to be abstracted out later.
- FullscreenBlur.createRenderTargets(mRS, mWidth, mHeight);
- initPaintShaders();
-
- // Load a scene to render
- mSceneManager.loadModel(mFilePath + modelName, mLoadedCallback);
- }
-
- // When a new model file is selected from the UI, this function gets called to init everything
- void loadModel(String path) {
- mLoadingScreen.showLoadingScreen(true);
- mActiveScene.destroyRS();
- mSceneManager.loadModel(path, mLoadedCallback);
- }
-
- public void onActionDown(float x, float y) {
- mTouchHandler.onActionDown(x, y);
- }
-
- public void onActionScale(float scale) {
- mTouchHandler.onActionScale(scale);
- }
-
- public void onActionMove(float x, float y) {
- mTouchHandler.onActionMove(x, y);
- }
-
- FragmentShader createFromResource(int id, boolean addCubemap, Type constType) {
- FragmentShader.Builder fb = new FragmentShader.Builder(mRS);
- fb.setShaderConst(constType);
- fb.setShader(mRes, id);
- fb.addTexture(TextureType.TEXTURE_2D, "diffuse");
- if (addCubemap) {
- fb.addShaderTexture(TextureType.TEXTURE_CUBE, "reflection");
- }
- FragmentShader pf = fb.create();
- pf.getProgram().bindSampler(Sampler.WRAP_LINEAR_MIP_LINEAR(mRS), 0);
- if (addCubemap) {
- pf.getProgram().bindSampler(Sampler.CLAMP_LINEAR_MIP_LINEAR(mRS), 1);
- }
- return pf;
- }
-
- private void initPaintShaders() {
- mGenericV = SceneManager.getDefaultVS();
-
- ScriptField_CameraParams camParams = new ScriptField_CameraParams(mRS, 1);
- Type camParamType = camParams.getAllocation().getType();
- ScriptField_LightParams lightParams = new ScriptField_LightParams(mRS, 1);
-
- mPaintF = createFromResource(R.raw.paintf, true, camParamType);
- // Assign a reflection map
- TextureCube envCube = new TextureCube("sdcard/scenegraph/", "cube_env.png");
- mPaintF.appendSourceParams(new TextureParam("reflection", envCube));
-
- mAluminumF = createFromResource(R.raw.metal, true, camParamType);
- TextureCube diffCube = new TextureCube("sdcard/scenegraph/", "cube_spec.png");
- mAluminumF.appendSourceParams(new TextureParam("reflection", diffCube));
-
- mPlasticF = createFromResource(R.raw.plastic, false, camParamType);
- mDiffuseF = createFromResource(R.raw.diffuse, false, camParamType);
- mTextureF = SceneManager.getTextureFS();
-
- FragmentShader.Builder fb = new FragmentShader.Builder(mRS);
- fb.setObjectConst(lightParams.getAllocation().getType());
- fb.setShader(mRes, R.raw.plastic_lights);
- mLightsF = fb.create();
-
- fb = new FragmentShader.Builder(mRS);
- fb.setObjectConst(lightParams.getAllocation().getType());
- fb.setShader(mRes, R.raw.diffuse_lights);
- mLightsDiffF = fb.create();
-
- FullscreenBlur.initShaders(mRes, mRS);
- }
-
- void initRenderPasses() {
- ArrayList<RenderableBase> allDraw = mActiveScene.getRenderables();
- int numDraw = allDraw.size();
-
- if (mUseBlur) {
- FullscreenBlur.addBlurPasses(mActiveScene, mRS, mTouchHandler.getCamera());
- }
-
- RenderPass mainPass = new RenderPass();
- mainPass.setClearColor(new Float4(1.0f, 1.0f, 1.0f, 1.0f));
- mainPass.setShouldClearColor(true);
- mainPass.setClearDepth(1.0f);
- mainPass.setShouldClearDepth(true);
- mainPass.setCamera(mTouchHandler.getCamera());
- for (int i = 0; i < numDraw; i ++) {
- mainPass.appendRenderable((Renderable)allDraw.get(i));
- }
- mActiveScene.appendRenderPass(mainPass);
-
- if (mUseBlur) {
- FullscreenBlur.addCompositePass(mActiveScene, mRS, mTouchHandler.getCamera());
- }
- }
-
- private void addShadersToScene() {
- mActiveScene.appendShader(mPaintF);
- mActiveScene.appendShader(mLightsF);
- mActiveScene.appendShader(mLightsDiffF);
- mActiveScene.appendShader(mAluminumF);
- mActiveScene.appendShader(mPlasticF);
- mActiveScene.appendShader(mDiffuseF);
- mActiveScene.appendShader(mTextureF);
- }
-
- public void prepareToRender(Scene s) {
- mSceneManager.setActiveScene(s);
- mActiveScene = s;
- mTouchHandler.init(mActiveScene);
- addShadersToScene();
- RenderState plastic = new RenderState(mGenericV, mPlasticF, null, null);
- RenderState diffuse = new RenderState(mGenericV, mDiffuseF, null, null);
- RenderState paint = new RenderState(mGenericV, mPaintF, null, null);
- RenderState aluminum = new RenderState(mGenericV, mAluminumF, null, null);
- RenderState lights = new RenderState(mGenericV, mLightsF, null, null);
- RenderState diff_lights = new RenderState(mGenericV, mLightsDiffF, null, null);
- RenderState diff_lights_no_cull = new RenderState(mGenericV, mLightsDiffF, null,
- ProgramRaster.CULL_NONE(mRS));
- RenderState glassTransp = new RenderState(mGenericV, mPaintF,
- ProgramStore.BLEND_ALPHA_DEPTH_TEST(mRS), null);
- RenderState texState = new RenderState(mGenericV, mTextureF, null, null);
-
- initRenderPasses();
-
- mActiveScene.assignRenderState(plastic);
-
- mActiveScene.assignRenderStateToMaterial(diffuse, "lambert2$");
-
- mActiveScene.assignRenderStateToMaterial(paint, "^Paint");
- mActiveScene.assignRenderStateToMaterial(paint, "^Carbon");
- mActiveScene.assignRenderStateToMaterial(paint, "^Glass");
- mActiveScene.assignRenderStateToMaterial(paint, "^MainGlass");
-
- mActiveScene.assignRenderStateToMaterial(aluminum, "^Metal");
- mActiveScene.assignRenderStateToMaterial(aluminum, "^Brake");
-
- mActiveScene.assignRenderStateToMaterial(glassTransp, "^GlassLight");
-
- mActiveScene.assignRenderStateToMaterial(lights, "^LightBlinn");
- mActiveScene.assignRenderStateToMaterial(diff_lights, "^LightLambert");
- mActiveScene.assignRenderStateToMaterial(diff_lights_no_cull, "^LightLambertNoCull");
- mActiveScene.assignRenderStateToMaterial(texState, "^TextureOnly");
-
- Renderable plane = (Renderable)mActiveScene.getRenderableByName("pPlaneShape1");
- if (plane != null) {
- plane.setRenderState(texState);
- plane.setVisible(!mUseBlur);
- }
-
- long start = System.currentTimeMillis();
- mActiveScene.initRS();
- long end = System.currentTimeMillis();
- Log.v("TIMER", "Scene init time: " + (end - start));
-
- mLoadingScreen.showLoadingScreen(false);
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppView.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppView.java
deleted file mode 100644
index 33ca1b8..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TestAppView.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
-
-public class TestAppView extends RSSurfaceView {
-
- public TestAppView(Context context) {
- super(context);
- mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
- }
-
- private RenderScriptGL mRS;
- TestAppRS mRender;
-
- private ScaleGestureDetector mScaleDetector;
- private static final int INVALID_POINTER_ID = -1;
- private int mActivePointerId = INVALID_POINTER_ID;
-
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- sc.setSamples(1, 2, 1);
- mRS = createRenderScriptGL(sc);
- mRS.setSurface(holder, w, h);
- mRender = new TestAppRS();
- mRender.init(mRS, getResources(), w, h);
- }
- }
-
- @Override
- protected void onDetachedFromWindow() {
- if (mRS != null) {
- mRender = null;
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event)
- {
- // break point at here
- // this method doesn't work when 'extends View' include 'extends ScrollView'.
- return super.onKeyDown(keyCode, event);
- }
-
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- mScaleDetector.onTouchEvent(ev);
-
- boolean ret = false;
- float x = ev.getX();
- float y = ev.getY();
-
- final int action = ev.getAction();
-
- switch (action & MotionEvent.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN: {
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(0);
- ret = true;
- break;
- }
- case MotionEvent.ACTION_MOVE: {
- if (!mScaleDetector.isInProgress()) {
- mRender.onActionMove(x, y);
- }
- mRender.onActionDown(x, y);
- ret = true;
- break;
- }
-
- case MotionEvent.ACTION_UP: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_CANCEL: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_POINTER_UP: {
- final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
- >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
- final int pointerId = ev.getPointerId(pointerIndex);
- if (pointerId == mActivePointerId) {
- // This was our active pointer going up. Choose a new
- // active pointer and adjust accordingly.
- final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- x = ev.getX(newPointerIndex);
- y = ev.getY(newPointerIndex);
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(newPointerIndex);
- }
- break;
- }
- }
-
- return ret;
- }
-
- private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mRender.onActionScale(detector.getScaleFactor());
- return true;
- }
- }
-}
-
-
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java
deleted file mode 100644
index d0f9797..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/TouchHandler.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.testapp;
-
-import android.util.Log;
-import android.renderscript.Float3;
-import com.android.scenegraph.*;
-import com.android.scenegraph.CompoundTransform.RotateComponent;
-import com.android.scenegraph.CompoundTransform.TranslateComponent;
-
-public class TouchHandler {
- private static String TAG = "TouchHandler";
-
- float mLastX;
- float mLastY;
-
- float mRotateXValue;
- float mRotateYValue;
- Float3 mDistValue;
- Float3 mPosValue;
-
- CompoundTransform mCameraRig;
- RotateComponent mRotateX;
- RotateComponent mRotateY;
- TranslateComponent mDist;
- TranslateComponent mPosition;
- Camera mCamera;
-
- public void init(Scene scene) {
- // Some initial values for camera position
- mRotateXValue = -20;
- mRotateYValue = 0;
- mDistValue = new Float3(0, 0, 45);
- mPosValue = new Float3(0, 4, 0);
-
- // Make a camera transform we can manipulate
- mCameraRig = scene.appendNewCompoundTransform();
- mCameraRig.setName("CameraRig");
-
- mPosition = mCameraRig.addTranslate("Position", mPosValue);
- mRotateY = mCameraRig.addRotate("RotateY", new Float3(0, 1, 0), mRotateYValue);
- mRotateX = mCameraRig.addRotate("RotateX", new Float3(1, 0, 0), mRotateXValue);
- mDist = mCameraRig.addTranslate("Distance", mDistValue);
-
- mCamera = scene.appendNewCamera();
- mCamera.setTransform(mCameraRig);
- }
-
- public Camera getCamera() {
- return mCamera;
- }
-
- public void onActionDown(float x, float y) {
- mLastX = x;
- mLastY = y;
- }
-
- public void onActionScale(float scale) {
- if (mDist == null) {
- return;
- }
- mDistValue.z *= 1.0f / scale;
- mDistValue.z = Math.max(10.0f, Math.min(mDistValue.z, 150.0f));
- mDist.setValue(mDistValue);
- }
-
- public void onActionMove(float x, float y) {
- if (mRotateX == null) {
- return;
- }
-
- float dx = mLastX - x;
- float dy = mLastY - y;
-
- if (Math.abs(dy) <= 2.0f) {
- dy = 0.0f;
- }
- if (Math.abs(dx) <= 2.0f) {
- dx = 0.0f;
- }
-
- mRotateYValue += dx * 0.25f;
- mRotateYValue %= 360.0f;
-
- mRotateXValue += dy * 0.25f;
- mRotateXValue = Math.max(mRotateXValue , -80.0f);
- mRotateXValue = Math.min(mRotateXValue , 0.0f);
-
- mRotateX.setAngle(mRotateXValue);
- mRotateY.setAngle(mRotateYValue);
-
- mLastX = x;
- mLastY = y;
- }
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs
deleted file mode 100644
index d94da52..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rs
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.testapp)
-
-#include "rs_graphics.rsh"
-#include "test_app.rsh"
-
-// Making sure these get reflected
-FBlurOffsets *blurExport;
-VShaderInputs *iExport;
-FShaderParams *fConst;
-FShaderLightParams *fConts2;
-VSParams *vConst2;
-VObjectParams *vConst3;
-
-rs_program_vertex gPVBackground;
-rs_program_fragment gPFBackground;
-
-rs_allocation gRobotTex;
-rs_mesh gRobotMesh;
-
-rs_program_store gPFSBackground;
-
-float gRotate;
-
-void init() {
- gRotate = 0.0f;
-}
-
-static float gRotateY = 120.0f;
-static float gZoom = 50.0f;
-static void displayLoading() {
- if (rsIsObject(gRobotTex) && rsIsObject(gRobotMesh)) {
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindProgramStore(gPFSBackground);
- rsgBindTexture(gPFBackground, 0, gRobotTex);
-
- rs_matrix4x4 matrix;
- rsMatrixLoadIdentity(&matrix);
- // Position our models on the screen
- gRotateY += rsGetDt()*100;
- rsMatrixTranslate(&matrix, 0, 0, -gZoom);
- rsMatrixRotate(&matrix, 20.0f, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
- rsMatrixScale(&matrix, 0.2f, 0.2f, 0.2f);
- rsgProgramVertexLoadModelMatrix(&matrix);
- rsgDrawMesh(gRobotMesh);
- }
-
- uint width = rsgGetWidth();
- uint height = rsgGetHeight();
- int left = 0, right = 0, top = 0, bottom = 0;
- const char* text = "Initializing...";
- rsgMeasureText(text, &left, &right, &top, &bottom);
- int centeredPos = width / 2 - (right - left) / 2;
- rsgDrawText(text, centeredPos, height / 2 + height / 10);
-}
-
-int root(void) {
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
- displayLoading();
- return 30;
-}
diff --git a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh b/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh
deleted file mode 100644
index 5fbcbb2..0000000
--- a/tests/RenderScriptTests/SceneGraph/src/com/android/testapp/test_app.rsh
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (C) 2012 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.testapp)
-
-// Helpers
-typedef struct ViewProjParams {
- rs_matrix4x4 viewProj;
-} VSParams;
-
-typedef struct ModelParams {
- rs_matrix4x4 model;
-} VObjectParams;
-
-typedef struct CameraParams {
- float4 cameraPos;
-} FShaderParams;
-
-typedef struct LightParams {
- float4 lightPos_0;
- float4 lightColor_0;
- float4 lightPos_1;
- float4 lightColor_1;
- float4 cameraPos;
- float4 diffuse;
-} FShaderLightParams;
-
-typedef struct BlurOffsets {
- float blurOffset0;
- float blurOffset1;
- float blurOffset2;
- float blurOffset3;
-} FBlurOffsets;
-
-typedef struct VertexShaderInputs {
- float4 position;
- float3 normal;
- float2 texture0;
-} VShaderInputs;
diff --git a/tests/RenderScriptTests/ShadersTest/Android.mk b/tests/RenderScriptTests/ShadersTest/Android.mk
deleted file mode 100644
index fb6356e..0000000
--- a/tests/RenderScriptTests/ShadersTest/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_SDK_VERSION := 17
-
-LOCAL_PACKAGE_NAME := ShadersTest
-
-include $(BUILD_PACKAGE)
diff --git a/tests/RenderScriptTests/ShadersTest/AndroidManifest.xml b/tests/RenderScriptTests/ShadersTest/AndroidManifest.xml
deleted file mode 100644
index 871200d..0000000
--- a/tests/RenderScriptTests/ShadersTest/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.shaderstest">
-
- <uses-permission android:name="android.permission.INTERNET" />
-
- <application android:label="_ShadersTest">
- <activity android:name="ShadersTest"
- android:label="_ShadersTest"
- android:theme="@android:style/Theme.Black.NoTitleBar">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/tests/RenderScriptTests/ShadersTest/res/drawable-nodpi/robot.png b/tests/RenderScriptTests/ShadersTest/res/drawable-nodpi/robot.png
deleted file mode 100644
index f7353fd..0000000
--- a/tests/RenderScriptTests/ShadersTest/res/drawable-nodpi/robot.png
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/ShadersTest/res/raw/depth_fs.glsl b/tests/RenderScriptTests/ShadersTest/res/raw/depth_fs.glsl
deleted file mode 100644
index 096843b..0000000
--- a/tests/RenderScriptTests/ShadersTest/res/raw/depth_fs.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-void main() {
- // Non-linear depth value
- float z = gl_FragCoord.z;
- // Near and far planes from the projection
- // In practice, these values can be used to tweak
- // the focus range
- float n = UNI_near;
- float f = UNI_far;
- // Linear depth value
- z = (2.0 * n) / (f + n - z * (f - n));
-
- gl_FragColor = vec4(z, z, z, 1.0);
-}
diff --git a/tests/RenderScriptTests/ShadersTest/res/raw/robot.a3d b/tests/RenderScriptTests/ShadersTest/res/raw/robot.a3d
deleted file mode 100644
index f48895c..0000000
--- a/tests/RenderScriptTests/ShadersTest/res/raw/robot.a3d
+++ /dev/null
Binary files differ
diff --git a/tests/RenderScriptTests/ShadersTest/res/raw/vignette_fs.glsl b/tests/RenderScriptTests/ShadersTest/res/raw/vignette_fs.glsl
deleted file mode 100644
index 2dc1ea3..0000000
--- a/tests/RenderScriptTests/ShadersTest/res/raw/vignette_fs.glsl
+++ /dev/null
@@ -1,31 +0,0 @@
-#define CRT_MASK
-
-varying vec2 varTex0;
-
-void main() {
- lowp vec4 color = texture2D(UNI_Tex0, varTex0);
-
- vec2 powers = pow(abs((gl_FragCoord.xy / vec2(UNI_width, UNI_height)) - 0.5), vec2(2.0));
- float gradient = smoothstep(UNI_size - UNI_feather, UNI_size + UNI_feather,
- powers.x + powers.y);
-
- color = vec4(mix(color.rgb, vec3(0.0), gradient), 1.0);
-
-#ifdef CRT_MASK
- float vShift = gl_FragCoord.y;
- if (mod(gl_FragCoord.x, 6.0) >= 3.0) {
- vShift += 2.0;
- }
-
- lowp vec3 r = vec3(0.95, 0.0, 0.2);
- lowp vec3 g = vec3(0.2, 0.95, 0.0);
- lowp vec3 b = vec3(0.0, 0.2, 0.95);
- int channel = int(floor(mod(gl_FragCoord.x, 3.0)));
- lowp vec4 crt = vec4(r[channel], g[channel], b[channel], 1.0);
- crt *= clamp(floor(mod(vShift, 4.0)), 0.0, 1.0);
-
- color = (crt * color * 1.25) + 0.05;
-#endif
-
- gl_FragColor = color;
-}
diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTest.java b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTest.java
deleted file mode 100644
index 6803fbb..0000000
--- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.shaderstest;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-@SuppressWarnings({"UnusedDeclaration"})
-public class ShadersTest extends Activity {
-
- private ShadersTestView mView;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- mView = new ShadersTestView(this);
- setContentView(mView);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- mView.resume();
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- mView.pause();
- }
-}
diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestRS.java b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestRS.java
deleted file mode 100644
index dad97e2..0000000
--- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestRS.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.shaderstest;
-
-import android.content.res.Resources;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.Element.DataKind;
-import android.renderscript.Element.DataType;
-import android.renderscript.FileA3D;
-import android.renderscript.Mesh;
-import android.renderscript.Program;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramFragmentFixedFunction;
-import android.renderscript.ProgramStore;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.renderscript.ProgramVertex;
-import android.renderscript.ProgramVertexFixedFunction;
-import android.renderscript.RSRuntimeException;
-import android.renderscript.RenderScriptGL;
-import android.renderscript.Sampler;
-import android.renderscript.Type.Builder;
-
-@SuppressWarnings({"FieldCanBeLocal"})
-public class ShadersTestRS {
- public ShadersTestRS() {
- }
-
- public void init(RenderScriptGL rs, Resources res) {
- mRS = rs;
- mRes = res;
- initRS();
- }
-
- public void surfaceChanged() {
- initBuffers(mRS.getWidth(), mRS.getHeight());
- }
-
- private Resources mRes;
- private RenderScriptGL mRS;
- private Sampler mLinearClamp;
- private Sampler mNearestClamp;
- private ProgramStore mPSBackground;
- private ProgramFragment mPFBackground;
- private ProgramVertex mPVBackground;
- private ProgramVertexFixedFunction.Constants mPVA;
-
- private ProgramFragment mPFVignette;
- private ScriptField_VignetteConstants_s mFSVignetteConst;
-
- private Allocation mMeshTexture;
- private Allocation mScreen;
- private Allocation mScreenDepth;
-
- private ScriptField_MeshInfo mMeshes;
- private ScriptC_shaderstest mScript;
-
-
- public void onActionDown(float x, float y) {
- mScript.invoke_onActionDown(x, y);
- }
-
- public void onActionScale(float scale) {
- mScript.invoke_onActionScale(scale);
- }
-
- public void onActionMove(float x, float y) {
- mScript.invoke_onActionMove(x, y);
- }
-
- private void initPFS() {
- ProgramStore.Builder b = new ProgramStore.Builder(mRS);
-
- b.setDepthFunc(DepthFunc.LESS);
- b.setDitherEnabled(false);
- b.setDepthMaskEnabled(true);
- mPSBackground = b.create();
-
- mScript.set_gPFSBackground(mPSBackground);
- }
-
- private void initPF() {
- mLinearClamp = Sampler.CLAMP_LINEAR(mRS);
- mScript.set_gLinear(mLinearClamp);
-
- mNearestClamp = Sampler.CLAMP_NEAREST(mRS);
- mScript.set_gNearest(mNearestClamp);
-
- ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS);
- b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
- ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
- mPFBackground = b.create();
- mPFBackground.bindSampler(mLinearClamp, 0);
- mScript.set_gPFBackground(mPFBackground);
-
- mFSVignetteConst = new ScriptField_VignetteConstants_s(mRS, 1);
- mScript.bind_gFSVignetteConstants(mFSVignetteConst);
-
- ProgramFragment.Builder fs;
-
- fs = new ProgramFragment.Builder(mRS);
- fs.setShader(mRes, R.raw.vignette_fs);
- fs.addConstant(mFSVignetteConst.getAllocation().getType());
- fs.addTexture(Program.TextureType.TEXTURE_2D);
- mPFVignette = fs.create();
- mPFVignette.bindConstants(mFSVignetteConst.getAllocation(), 0);
- mScript.set_gPFVignette(mPFVignette);
- }
-
- private void initPV() {
- ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
- mPVBackground = pvb.create();
-
- mPVA = new ProgramVertexFixedFunction.Constants(mRS);
- ((ProgramVertexFixedFunction) mPVBackground).bindConstants(mPVA);
-
- mScript.set_gPVBackground(mPVBackground);
- }
-
- private void loadImage() {
- mMeshTexture = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot,
- Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
- Allocation.USAGE_GRAPHICS_TEXTURE);
- mScript.set_gTMesh(mMeshTexture);
- }
-
- private void initMeshes(FileA3D model) {
- int numEntries = model.getIndexEntryCount();
- int numMeshes = 0;
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- numMeshes ++;
- }
- }
-
- if (numMeshes > 0) {
- mMeshes = new ScriptField_MeshInfo(mRS, numMeshes);
-
- for (int i = 0; i < numEntries; i ++) {
- FileA3D.IndexEntry entry = model.getIndexEntry(i);
- if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) {
- Mesh mesh = entry.getMesh();
- mMeshes.set_mMesh(i, mesh, false);
- mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false);
- }
- }
- mMeshes.copyAll();
- } else {
- throw new RSRuntimeException("No valid meshes in file");
- }
-
- mScript.bind_gMeshes(mMeshes);
- mScript.invoke_updateMeshInfo();
- }
-
- private void initRS() {
- mScript = new ScriptC_shaderstest(mRS, mRes, R.raw.shaderstest);
-
- initPFS();
- initPF();
- initPV();
-
- loadImage();
-
- initBuffers(1, 1);
-
- FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot);
- initMeshes(model);
-
- mRS.bindRootScript(mScript);
- }
-
- private void initBuffers(int width, int height) {
- Builder b;
- b = new Builder(mRS, Element.RGBA_8888(mRS));
- b.setX(width).setY(height);
- mScreen = Allocation.createTyped(mRS, b.create(),
- Allocation.USAGE_GRAPHICS_TEXTURE | Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gScreen(mScreen);
-
- b = new Builder(mRS, Element.createPixel(mRS, DataType.UNSIGNED_16, DataKind.PIXEL_DEPTH));
- b.setX(width).setY(height);
- mScreenDepth = Allocation.createTyped(mRS, b.create(),
- Allocation.USAGE_GRAPHICS_RENDER_TARGET);
- mScript.set_gScreenDepth(mScreenDepth);
- }
-}
diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestView.java b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestView.java
deleted file mode 100644
index e0a540f..0000000
--- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/ShadersTestView.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.shaderstest;
-
-import android.content.Context;
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
-import android.view.SurfaceHolder;
-
-public class ShadersTestView extends RSSurfaceView {
-
- private RenderScriptGL mRS;
- private ShadersTestRS mRender;
-
- private ScaleGestureDetector mScaleDetector;
-
- private static final int INVALID_POINTER_ID = -1;
- private int mActivePointerId = INVALID_POINTER_ID;
-
- public ShadersTestView(Context context) {
- super(context);
- ensureRenderScript();
- mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
- }
-
- private void ensureRenderScript() {
- if (mRS == null) {
- RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
- sc.setDepth(16, 24);
- mRS = createRenderScriptGL(sc);
- mRender = new ShadersTestRS();
- mRender.init(mRS, getResources());
- }
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- ensureRenderScript();
- }
-
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- super.surfaceChanged(holder, format, w, h);
- mRender.surfaceChanged();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- mRender = null;
- if (mRS != null) {
- mRS = null;
- destroyRenderScriptGL();
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- mScaleDetector.onTouchEvent(ev);
-
- boolean ret = false;
- float x = ev.getX();
- float y = ev.getY();
-
- final int action = ev.getAction();
-
- switch (action & MotionEvent.ACTION_MASK) {
- case MotionEvent.ACTION_DOWN: {
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(0);
- ret = true;
- break;
- }
- case MotionEvent.ACTION_MOVE: {
- if (!mScaleDetector.isInProgress()) {
- mRender.onActionMove(x, y);
- }
- mRender.onActionDown(x, y);
- ret = true;
- break;
- }
-
- case MotionEvent.ACTION_UP: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_CANCEL: {
- mActivePointerId = INVALID_POINTER_ID;
- break;
- }
-
- case MotionEvent.ACTION_POINTER_UP: {
- final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
- >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
- final int pointerId = ev.getPointerId(pointerIndex);
- if (pointerId == mActivePointerId) {
- // This was our active pointer going up. Choose a new
- // active pointer and adjust accordingly.
- final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
- x = ev.getX(newPointerIndex);
- y = ev.getY(newPointerIndex);
- mRender.onActionDown(x, y);
- mActivePointerId = ev.getPointerId(newPointerIndex);
- }
- break;
- }
- }
-
- return ret;
- }
-
- private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- mRender.onActionScale(detector.getScaleFactor());
- return true;
- }
- }
-}
-
-
diff --git a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/shaderstest.rs b/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/shaderstest.rs
deleted file mode 100644
index 735f6b9..0000000
--- a/tests/RenderScriptTests/ShadersTest/src/com/android/shaderstest/shaderstest.rs
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright (C) 2011 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-
-#pragma rs java_package_name(com.android.shaderstest)
-
-#include "rs_graphics.rsh"
-
-rs_program_vertex gPVBackground;
-rs_program_fragment gPFBackground;
-
-typedef struct VignetteConstants_s {
- float size;
- float feather;
- float width;
- float height;
-} VignetteConstants;
-VignetteConstants *gFSVignetteConstants;
-rs_program_fragment gPFVignette;
-
-rs_allocation gTMesh;
-
-rs_sampler gLinear;
-rs_sampler gNearest;
-
-rs_program_store gPFSBackground;
-
-rs_allocation gScreenDepth;
-rs_allocation gScreen;
-
-typedef struct MeshInfo {
- rs_mesh mMesh;
- int mNumIndexSets;
- float3 bBoxMin;
- float3 bBoxMax;
-} MeshInfo_t;
-MeshInfo_t *gMeshes;
-
-static float3 gLookAt;
-
-static float gRotateX;
-static float gRotateY;
-static float gZoom;
-
-static float gLastX;
-static float gLastY;
-
-static float3 toFloat3(float x, float y, float z) {
- float3 f;
- f.x = x;
- f.y = y;
- f.z = z;
- return f;
-}
-
-void onActionDown(float x, float y) {
- gLastX = x;
- gLastY = y;
-}
-
-void onActionScale(float scale) {
-
- gZoom *= 1.0f / scale;
- gZoom = max(0.1f, min(gZoom, 500.0f));
-}
-
-void onActionMove(float x, float y) {
- float dx = gLastX - x;
- float dy = gLastY - y;
-
- if (fabs(dy) <= 2.0f) {
- dy = 0.0f;
- }
- if (fabs(dx) <= 2.0f) {
- dx = 0.0f;
- }
-
- gRotateY -= dx;
- if (gRotateY > 360) {
- gRotateY -= 360;
- }
- if (gRotateY < 0) {
- gRotateY += 360;
- }
-
- gRotateX -= dy;
- gRotateX = min(gRotateX, 80.0f);
- gRotateX = max(gRotateX, -80.0f);
-
- gLastX = x;
- gLastY = y;
-}
-
-void init() {
- gRotateX = 0.0f;
- gRotateY = 0.0f;
- gZoom = 50.0f;
- gLookAt = 0.0f;
-}
-
-void updateMeshInfo() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- float minX, minY, minZ, maxX, maxY, maxZ;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgMeshComputeBoundingBox(info->mMesh,
- &minX, &minY, &minZ,
- &maxX, &maxY, &maxZ);
- info->bBoxMin = toFloat3(minX, minY, minZ);
- info->bBoxMax = toFloat3(maxX, maxY, maxZ);
- gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f;
- }
- gLookAt = gLookAt / (float)size;
-}
-
-static void renderAllMeshes() {
- rs_allocation allMeshes = rsGetAllocation(gMeshes);
- int size = rsAllocationGetDimX(allMeshes);
- gLookAt = 0.0f;
- for (int i = 0; i < size; i++) {
- MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i);
- rsgDrawMesh(info->mMesh);
- }
-}
-
-static void renderOffscreen() {
- rsgBindProgramVertex(gPVBackground);
- rs_matrix4x4 proj;
- float aspect = (float) rsAllocationGetDimX(gScreen) / (float) rsAllocationGetDimY(gScreen);
- rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 1000.0f);
- rsgProgramVertexLoadProjectionMatrix(&proj);
-
- rsgBindProgramFragment(gPFBackground);
- rsgBindTexture(gPFBackground, 0, gTMesh);
-
- rs_matrix4x4 matrix;
-
- rsMatrixLoadIdentity(&matrix);
- rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom);
- rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f);
- rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f);
- rsgProgramVertexLoadModelMatrix(&matrix);
-
- renderAllMeshes();
-}
-
-static void drawOffscreenResult(int posX, int posY, float width, float height) {
- // display the result d
- rs_matrix4x4 proj, matrix;
- rsMatrixLoadOrtho(&proj, 0, width, height, 0, -500, 500);
- rsgProgramVertexLoadProjectionMatrix(&proj);
- rsMatrixLoadIdentity(&matrix);
- rsgProgramVertexLoadModelMatrix(&matrix);
- float startX = posX, startY = posY;
- rsgDrawQuadTexCoords(startX, startY, 0, 0, 1,
- startX, startY + height, 0, 0, 0,
- startX + width, startY + height, 0, 1, 0,
- startX + width, startY, 0, 1, 1);
-}
-
-int root(void) {
- gFSVignetteConstants->size = 0.58f * 0.58f;
- gFSVignetteConstants->feather = 0.2f;
- gFSVignetteConstants->width = (float) rsAllocationGetDimX(gScreen);
- gFSVignetteConstants->height = (float) rsAllocationGetDimY(gScreen);
-
- rsgBindProgramStore(gPFSBackground);
-
- // Render scene to fullscreenbuffer
- rsgBindColorTarget(gScreen, 0);
- rsgBindDepthTarget(gScreenDepth);
- rsgClearDepth(1.0f);
- rsgClearColor(1.0f, 1.0f, 1.0f, 0.0f);
- renderOffscreen();
-
- // Render on screen
- rsgClearAllRenderTargets();
- rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- rsgClearDepth(1.0f);
-
- rsgBindProgramFragment(gPFVignette);
- rsgBindTexture(gPFVignette, 0, gScreen);
- drawOffscreenResult(0, 0, rsgGetWidth(), rsgGetHeight());
-
- return 0;
-}
diff --git a/tools/layoutlib/bridge/src/android/os/ServiceManager.java b/tools/layoutlib/bridge/src/android/os/ServiceManager.java
index 6a68ee2..549074d 100644
--- a/tools/layoutlib/bridge/src/android/os/ServiceManager.java
+++ b/tools/layoutlib/bridge/src/android/os/ServiceManager.java
@@ -51,8 +51,10 @@
/**
* Return a list of all currently running services.
+ * @return an array of all currently running services, or <code>null</code> in
+ * case of an exception
*/
- public static String[] listServices() throws RemoteException {
+ public static String[] listServices() {
// actual implementation returns null sometimes, so it's ok
// to return null instead of an empty list.
return null;
diff --git a/tools/preload2/Android.mk b/tools/preload2/Android.mk
new file mode 100644
index 0000000..35d28fb
--- /dev/null
+++ b/tools/preload2/Android.mk
@@ -0,0 +1,32 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under,src)
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
+
+# To connect to devices (and take hprof dumps).
+LOCAL_STATIC_JAVA_LIBRARIES := ddmlib-prebuilt
+
+# To process hprof dumps.
+LOCAL_STATIC_JAVA_LIBRARIES += perflib-prebuilt trove-prebuilt guavalib
+
+# For JDWP access we use the framework in the JDWP tests from Apache Harmony, for
+# convenience (and to not depend on internal JDK APIs).
+LOCAL_STATIC_JAVA_LIBRARIES += apache-harmony-jdwp-tests-host junit
+
+LOCAL_MODULE:= preload2
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+# Copy the preload-tool shell script to the host's bin directory.
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := preload-tool
+include $(BUILD_SYSTEM)/base_rules.mk
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/preload-tool $(ACP)
+ @echo "Copy: $(PRIVATE_MODULE) ($@)"
+ $(copy-file-to-new-target)
+ $(hide) chmod 755 $@
diff --git a/tools/preload2/preload-tool b/tools/preload2/preload-tool
new file mode 100644
index 0000000..36dbc1c
--- /dev/null
+++ b/tools/preload2/preload-tool
@@ -0,0 +1,37 @@
+# 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.
+
+# This script is used on the host only. It uses a common subset
+# shell dialect that should work well. It is partially derived
+# from art/tools/art.
+
+function follow_links() {
+ if [ z"$BASH_SOURCE" != z ]; then
+ file="$BASH_SOURCE"
+ else
+ file="$0"
+ fi
+ while [ -h "$file" ]; do
+ # On Mac OS, readlink -f doesn't work.
+ file="$(readlink "$file")"
+ done
+ echo "$file"
+}
+
+
+PROG_NAME="$(follow_links)"
+PROG_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
+ANDROID_ROOT=$PROG_DIR/..
+
+java -cp $ANDROID_ROOT/framework/preload2.jar com.android.preload.Main
diff --git a/tools/preload2/src/com/android/preload/ClientUtils.java b/tools/preload2/src/com/android/preload/ClientUtils.java
new file mode 100644
index 0000000..71ef025
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/ClientUtils.java
@@ -0,0 +1,224 @@
+/*
+ * 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.preload;
+
+import com.android.ddmlib.AndroidDebugBridge;
+import com.android.ddmlib.AndroidDebugBridge.IClientChangeListener;
+import com.android.ddmlib.Client;
+import com.android.ddmlib.IDevice;
+
+/**
+ * Helper class for common communication with a Client (the ddms name for a running application).
+ *
+ * Instances take a default timeout parameter that's applied to all functions without explicit
+ * timeout. Timeouts are in milliseconds.
+ */
+public class ClientUtils {
+
+ private int defaultTimeout;
+
+ public ClientUtils() {
+ this(10000);
+ }
+
+ public ClientUtils(int defaultTimeout) {
+ this.defaultTimeout = defaultTimeout;
+ }
+
+ /**
+ * Shortcut for findClient with default timeout.
+ */
+ public Client findClient(IDevice device, String processName, int processPid) {
+ return findClient(device, processName, processPid, defaultTimeout);
+ }
+
+ /**
+ * Find the client with the given process name or process id. The name takes precedence over
+ * the process id (if valid). Stop looking after the given timeout.
+ *
+ * @param device The device to communicate with.
+ * @param processName The name of the process. May be null.
+ * @param processPid The pid of the process. Values less than or equal to zero are ignored.
+ * @param timeout The amount of milliseconds to wait, at most.
+ * @return The client, if found. Otherwise null.
+ */
+ public Client findClient(IDevice device, String processName, int processPid, int timeout) {
+ WaitForClient wfc = new WaitForClient(device, processName, processPid, timeout);
+ return wfc.get();
+ }
+
+ /**
+ * Shortcut for findAllClients with default timeout.
+ */
+ public Client[] findAllClients(IDevice device) {
+ return findAllClients(device, defaultTimeout);
+ }
+
+ /**
+ * Retrieve all clients known to the given device. Wait at most the given timeout.
+ *
+ * @param device The device to investigate.
+ * @param timeout The amount of milliseconds to wait, at most.
+ * @return An array of clients running on the given device. May be null depending on the
+ * device implementation.
+ */
+ public Client[] findAllClients(IDevice device, int timeout) {
+ if (device.hasClients()) {
+ return device.getClients();
+ }
+ WaitForClients wfc = new WaitForClients(device, timeout);
+ return wfc.get();
+ }
+
+ private static class WaitForClient implements IClientChangeListener {
+
+ private IDevice device;
+ private String processName;
+ private int processPid;
+ private long timeout;
+ private Client result;
+
+ public WaitForClient(IDevice device, String processName, int processPid, long timeout) {
+ this.device = device;
+ this.processName = processName;
+ this.processPid = processPid;
+ this.timeout = timeout;
+ this.result = null;
+ }
+
+ public Client get() {
+ synchronized (this) {
+ AndroidDebugBridge.addClientChangeListener(this);
+
+ // Maybe it's already there.
+ if (result == null) {
+ result = searchForClient(device);
+ }
+
+ if (result == null) {
+ try {
+ wait(timeout);
+ } catch (InterruptedException e) {
+ // Note: doesn't guard for spurious wakeup.
+ }
+ }
+ }
+
+ AndroidDebugBridge.removeClientChangeListener(this);
+ return result;
+ }
+
+ private Client searchForClient(IDevice device) {
+ if (processName != null) {
+ Client tmp = device.getClient(processName);
+ if (tmp != null) {
+ return tmp;
+ }
+ }
+ if (processPid > 0) {
+ String name = device.getClientName(processPid);
+ if (name != null && !name.isEmpty()) {
+ Client tmp = device.getClient(name);
+ if (tmp != null) {
+ return tmp;
+ }
+ }
+ }
+ if (processPid > 0) {
+ // Try manual search.
+ for (Client cl : device.getClients()) {
+ if (cl.getClientData().getPid() == processPid
+ && cl.getClientData().getClientDescription() != null) {
+ return cl;
+ }
+ }
+ }
+ return null;
+ }
+
+ private boolean isTargetClient(Client c) {
+ if (processPid > 0 && c.getClientData().getPid() == processPid) {
+ return true;
+ }
+ if (processName != null
+ && processName.equals(c.getClientData().getClientDescription())) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void clientChanged(Client arg0, int arg1) {
+ synchronized (this) {
+ if ((arg1 & Client.CHANGE_INFO) != 0 && (arg0.getDevice() == device)) {
+ if (isTargetClient(arg0)) {
+ result = arg0;
+ notifyAll();
+ }
+ }
+ }
+ }
+ }
+
+ private static class WaitForClients implements IClientChangeListener {
+
+ private IDevice device;
+ private long timeout;
+
+ public WaitForClients(IDevice device, long timeout) {
+ this.device = device;
+ this.timeout = timeout;
+ }
+
+ public Client[] get() {
+ synchronized (this) {
+ AndroidDebugBridge.addClientChangeListener(this);
+
+ if (device.hasClients()) {
+ return device.getClients();
+ }
+
+ try {
+ wait(timeout); // Note: doesn't guard for spurious wakeup.
+ } catch (InterruptedException exc) {
+ }
+
+ // We will be woken up when the first client data arrives. Sleep a little longer
+ // to give (hopefully all of) the rest of the clients a chance to become available.
+ // Note: a loop with timeout is brittle as well and complicated, just accept this
+ // for now.
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException exc) {
+ }
+ }
+
+ AndroidDebugBridge.removeClientChangeListener(this);
+
+ return device.getClients();
+ }
+
+ @Override
+ public void clientChanged(Client arg0, int arg1) {
+ synchronized (this) {
+ if ((arg1 & Client.CHANGE_INFO) != 0 && (arg0.getDevice() == device)) {
+ notifyAll();
+ }
+ }
+ }
+ }
+}
diff --git a/tools/preload2/src/com/android/preload/DeviceUtils.java b/tools/preload2/src/com/android/preload/DeviceUtils.java
new file mode 100644
index 0000000..72de7b5
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/DeviceUtils.java
@@ -0,0 +1,390 @@
+/*
+ * 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.preload;
+
+import com.android.ddmlib.AndroidDebugBridge;
+import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
+import com.android.preload.classdataretrieval.hprof.Hprof;
+import com.android.ddmlib.DdmPreferences;
+import com.android.ddmlib.IDevice;
+import com.android.ddmlib.IShellOutputReceiver;
+
+import java.util.Date;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Helper class for some device routines.
+ */
+public class DeviceUtils {
+
+ public static void init(int debugPort) {
+ DdmPreferences.setSelectedDebugPort(debugPort);
+
+ Hprof.init();
+
+ AndroidDebugBridge.init(true);
+
+ AndroidDebugBridge.createBridge();
+ }
+
+ /**
+ * Run a command in the shell on the device.
+ */
+ public static void doShell(IDevice device, String cmdline, long timeout, TimeUnit unit) {
+ doShell(device, cmdline, new NullShellOutputReceiver(), timeout, unit);
+ }
+
+ /**
+ * Run a command in the shell on the device. Collects and returns the console output.
+ */
+ public static String doShellReturnString(IDevice device, String cmdline, long timeout,
+ TimeUnit unit) {
+ CollectStringShellOutputReceiver rec = new CollectStringShellOutputReceiver();
+ doShell(device, cmdline, rec, timeout, unit);
+ return rec.toString();
+ }
+
+ /**
+ * Run a command in the shell on the device, directing all output to the given receiver.
+ */
+ public static void doShell(IDevice device, String cmdline, IShellOutputReceiver receiver,
+ long timeout, TimeUnit unit) {
+ try {
+ device.executeShellCommand(cmdline, receiver, timeout, unit);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Run am start on the device.
+ */
+ public static void doAMStart(IDevice device, String name, String activity) {
+ doShell(device, "am start -n " + name + " /." + activity, 30, TimeUnit.SECONDS);
+ }
+
+ /**
+ * Find the device with the given serial. Give up after the given timeout (in milliseconds).
+ */
+ public static IDevice findDevice(String serial, int timeout) {
+ WaitForDevice wfd = new WaitForDevice(serial, timeout);
+ return wfd.get();
+ }
+
+ /**
+ * Get all devices ddms knows about. Wait at most for the given timeout.
+ */
+ public static IDevice[] findDevices(int timeout) {
+ WaitForDevice wfd = new WaitForDevice(null, timeout);
+ wfd.get();
+ return AndroidDebugBridge.getBridge().getDevices();
+ }
+
+ /**
+ * Return the build type of the given device. This is the value of the "ro.build.type"
+ * system property.
+ */
+ public static String getBuildType(IDevice device) {
+ try {
+ Future<String> buildType = device.getSystemProperty("ro.build.type");
+ return buildType.get(500, TimeUnit.MILLISECONDS);
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
+ /**
+ * Check whether the given device has a pre-optimized boot image. More precisely, checks
+ * whether /system/framework/ * /boot.art exists.
+ */
+ public static boolean hasPrebuiltBootImage(IDevice device) {
+ String ret =
+ doShellReturnString(device, "ls /system/framework/*/boot.art", 500, TimeUnit.MILLISECONDS);
+
+ return !ret.contains("No such file or directory");
+ }
+
+ /**
+ * Remove files involved in a standard build that interfere with collecting data. This will
+ * remove /etc/preloaded-classes, which determines which classes are allocated already in the
+ * boot image. It also deletes any compiled boot image on the device. Then it restarts the
+ * device.
+ *
+ * This is a potentially long-running operation, as the boot after the deletion may take a while.
+ * The method will abort after the given timeout.
+ */
+ public static boolean removePreloaded(IDevice device, long preloadedWaitTimeInSeconds) {
+ String oldContent =
+ DeviceUtils.doShellReturnString(device, "cat /etc/preloaded-classes", 1, TimeUnit.SECONDS);
+ if (oldContent.trim().equals("")) {
+ System.out.println("Preloaded-classes already empty.");
+ return true;
+ }
+
+ // Stop the system server etc.
+ doShell(device, "stop", 100, TimeUnit.MILLISECONDS);
+
+ // Remount /system, delete /etc/preloaded-classes. It would be nice to use "adb remount,"
+ // but AndroidDebugBridge doesn't expose it.
+ doShell(device, "mount -o remount,rw /system", 500, TimeUnit.MILLISECONDS);
+ doShell(device, "rm /etc/preloaded-classes", 100, TimeUnit.MILLISECONDS);
+ // We do need an empty file.
+ doShell(device, "touch /etc/preloaded-classes", 100, TimeUnit.MILLISECONDS);
+
+ // Delete the files in the dalvik cache.
+ doShell(device, "rm /data/dalvik-cache/*/*boot.art", 500, TimeUnit.MILLISECONDS);
+
+ // We'll try to use dev.bootcomplete to know when the system server is back up. But stop
+ // doesn't reset it, so do it manually.
+ doShell(device, "setprop dev.bootcomplete \"0\"", 500, TimeUnit.MILLISECONDS);
+
+ // Start the system server.
+ doShell(device, "start", 100, TimeUnit.MILLISECONDS);
+
+ // Do a loop checking each second whether bootcomplete. Wait for at most the given
+ // threshold.
+ Date startDate = new Date();
+ for (;;) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // Ignore spurious wakeup.
+ }
+ // Check whether bootcomplete.
+ String ret =
+ doShellReturnString(device, "getprop dev.bootcomplete", 500, TimeUnit.MILLISECONDS);
+ if (ret.trim().equals("1")) {
+ break;
+ }
+ System.out.println("Still not booted: " + ret);
+
+ // Check whether we timed out. This is a simplistic check that doesn't take into account
+ // things like switches in time.
+ Date endDate = new Date();
+ long seconds =
+ TimeUnit.SECONDS.convert(endDate.getTime() - startDate.getTime(), TimeUnit.MILLISECONDS);
+ if (seconds > preloadedWaitTimeInSeconds) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Enable method-tracing on device. The system should be restarted after this.
+ */
+ public static void enableTracing(IDevice device) {
+ // Disable selinux.
+ doShell(device, "setenforce 0", 100, TimeUnit.MILLISECONDS);
+
+ // Make the profile directory world-writable.
+ doShell(device, "chmod 777 /data/dalvik-cache/profiles", 100, TimeUnit.MILLISECONDS);
+
+ // Enable streaming method tracing with a small 1K buffer.
+ doShell(device, "setprop dalvik.vm.method-trace true", 100, TimeUnit.MILLISECONDS);
+ doShell(device, "setprop dalvik.vm.method-trace-file "
+ + "/data/dalvik-cache/profiles/zygote.trace.bin", 100, TimeUnit.MILLISECONDS);
+ doShell(device, "setprop dalvik.vm.method-trace-file-siz 1024", 100, TimeUnit.MILLISECONDS);
+ doShell(device, "setprop dalvik.vm.method-trace-stream true", 100, TimeUnit.MILLISECONDS);
+ }
+
+ private static class NullShellOutputReceiver implements IShellOutputReceiver {
+ @Override
+ public boolean isCancelled() {
+ return false;
+ }
+
+ @Override
+ public void flush() {}
+
+ @Override
+ public void addOutput(byte[] arg0, int arg1, int arg2) {}
+ }
+
+ private static class CollectStringShellOutputReceiver implements IShellOutputReceiver {
+
+ private StringBuilder builder = new StringBuilder();
+
+ @Override
+ public String toString() {
+ String ret = builder.toString();
+ // Strip trailing newlines. They are especially ugly because adb uses DOS line endings.
+ while (ret.endsWith("\r") || ret.endsWith("\n")) {
+ ret = ret.substring(0, ret.length() - 1);
+ }
+ return ret;
+ }
+
+ @Override
+ public void addOutput(byte[] arg0, int arg1, int arg2) {
+ builder.append(new String(arg0, arg1, arg2));
+ }
+
+ @Override
+ public void flush() {}
+
+ @Override
+ public boolean isCancelled() {
+ return false;
+ }
+ }
+
+ private static class WaitForDevice {
+
+ private String serial;
+ private long timeout;
+ private IDevice device;
+
+ public WaitForDevice(String serial, long timeout) {
+ this.serial = serial;
+ this.timeout = timeout;
+ device = null;
+ }
+
+ public IDevice get() {
+ if (device == null) {
+ WaitForDeviceListener wfdl = new WaitForDeviceListener(serial);
+ synchronized (wfdl) {
+ AndroidDebugBridge.addDeviceChangeListener(wfdl);
+
+ // Check whether we already know about this device.
+ IDevice[] devices = AndroidDebugBridge.getBridge().getDevices();
+ if (serial != null) {
+ for (IDevice d : devices) {
+ if (serial.equals(d.getSerialNumber())) {
+ // Only accept if there are clients already. Else wait for the callback informing
+ // us that we now have clients.
+ if (d.hasClients()) {
+ device = d;
+ }
+
+ break;
+ }
+ }
+ } else {
+ if (devices.length > 0) {
+ device = devices[0];
+ }
+ }
+
+ if (device == null) {
+ try {
+ wait(timeout);
+ } catch (InterruptedException e) {
+ // Ignore spurious wakeups.
+ }
+ device = wfdl.getDevice();
+ }
+
+ AndroidDebugBridge.removeDeviceChangeListener(wfdl);
+ }
+ }
+
+ if (device != null) {
+ // Wait for clients.
+ WaitForClientsListener wfcl = new WaitForClientsListener(device);
+ synchronized (wfcl) {
+ AndroidDebugBridge.addDeviceChangeListener(wfcl);
+
+ if (!device.hasClients()) {
+ try {
+ wait(timeout);
+ } catch (InterruptedException e) {
+ // Ignore spurious wakeups.
+ }
+ }
+
+ AndroidDebugBridge.removeDeviceChangeListener(wfcl);
+ }
+ }
+
+ return device;
+ }
+
+ private static class WaitForDeviceListener implements IDeviceChangeListener {
+
+ private String serial;
+ private IDevice device;
+
+ public WaitForDeviceListener(String serial) {
+ this.serial = serial;
+ }
+
+ public IDevice getDevice() {
+ return device;
+ }
+
+ @Override
+ public void deviceChanged(IDevice arg0, int arg1) {
+ // We may get a device changed instead of connected. Handle like a connection.
+ deviceConnected(arg0);
+ }
+
+ @Override
+ public void deviceConnected(IDevice arg0) {
+ if (device != null) {
+ // Ignore updates.
+ return;
+ }
+
+ if (serial == null || serial.equals(arg0.getSerialNumber())) {
+ device = arg0;
+ synchronized (this) {
+ notifyAll();
+ }
+ }
+ }
+
+ @Override
+ public void deviceDisconnected(IDevice arg0) {
+ // Ignore disconnects.
+ }
+
+ }
+
+ private static class WaitForClientsListener implements IDeviceChangeListener {
+
+ private IDevice myDevice;
+
+ public WaitForClientsListener(IDevice myDevice) {
+ this.myDevice = myDevice;
+ }
+
+ @Override
+ public void deviceChanged(IDevice arg0, int arg1) {
+ if (arg0 == myDevice && (arg1 & IDevice.CHANGE_CLIENT_LIST) != 0) {
+ // Got a client list, done here.
+ synchronized (this) {
+ notifyAll();
+ }
+ }
+ }
+
+ @Override
+ public void deviceConnected(IDevice arg0) {
+ }
+
+ @Override
+ public void deviceDisconnected(IDevice arg0) {
+ }
+
+ }
+ }
+
+}
diff --git a/tools/preload2/src/com/android/preload/DumpData.java b/tools/preload2/src/com/android/preload/DumpData.java
new file mode 100644
index 0000000..d997224
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/DumpData.java
@@ -0,0 +1,91 @@
+/*
+ * 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.preload;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Holds the collected data for a process.
+ */
+public class DumpData {
+ /**
+ * Name of the package (=application).
+ */
+ String packageName;
+
+ /**
+ * A map of class name to a string for the classloader. This may be a toString equivalent,
+ * or just a unique ID.
+ */
+ Map<String, String> dumpData;
+
+ /**
+ * The Date when this data was captured. Mostly for display purposes.
+ */
+ Date date;
+
+ /**
+ * A cached value for the number of boot classpath classes (classloader value in dumpData is
+ * null).
+ */
+ int bcpClasses;
+
+ public DumpData(String packageName, Map<String, String> dumpData, Date date) {
+ this.packageName = packageName;
+ this.dumpData = dumpData;
+ this.date = date;
+
+ countBootClassPath();
+ }
+
+ public String getPackageName() {
+ return packageName;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public Map<String, String> getDumpData() {
+ return dumpData;
+ }
+
+ public void countBootClassPath() {
+ bcpClasses = 0;
+ for (Map.Entry<String, String> e : dumpData.entrySet()) {
+ if (e.getValue() == null) {
+ bcpClasses++;
+ }
+ }
+ }
+
+ // Return an inverted mapping.
+ public Map<String, Set<String>> invertData() {
+ Map<String, Set<String>> ret = new HashMap<>();
+ for (Map.Entry<String, String> e : dumpData.entrySet()) {
+ if (!ret.containsKey(e.getValue())) {
+ ret.put(e.getValue(), new HashSet<String>());
+ }
+ ret.get(e.getValue()).add(e.getKey());
+ }
+ return ret;
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/DumpDataIO.java b/tools/preload2/src/com/android/preload/DumpDataIO.java
new file mode 100644
index 0000000..28625c5
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/DumpDataIO.java
@@ -0,0 +1,141 @@
+/*
+ * 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.preload;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
+
+import java.io.File;
+import java.io.FileReader;
+import java.text.DateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+/**
+ * Helper class for serialization and deserialization of a collection of DumpData objects to XML.
+ */
+public class DumpDataIO {
+
+ /**
+ * Serialize the given collection to an XML document. Returns the produced string.
+ */
+ public static String serialize(Collection<DumpData> data) {
+ // We'll do this by hand, constructing a DOM or similar is too complicated for our simple
+ // use case.
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("<preloaded-classes-data>\n");
+
+ for (DumpData d : data) {
+ serialize(d, sb);
+ }
+
+ sb.append("</preloaded-classes-data>\n");
+ return sb.toString();
+ }
+
+ private static void serialize(DumpData d, StringBuilder sb) {
+ sb.append("<data package=\"" + d.packageName + "\" date=\"" +
+ DateFormat.getDateTimeInstance().format(d.date) +"\">\n");
+
+ for (Map.Entry<String, String> e : d.dumpData.entrySet()) {
+ sb.append("<class name=\"" + e.getKey() + "\" classloader=\"" + e.getValue() + "\"/>\n");
+ }
+
+ sb.append("</data>\n");
+ }
+
+ /**
+ * Load a collection of DumpData objects from the given file.
+ */
+ public static Collection<DumpData> deserialize(File f) throws Exception {
+ // Use SAX parsing. Our format is very simple. Don't do any schema validation or such.
+
+ SAXParserFactory spf = SAXParserFactory.newInstance();
+ spf.setNamespaceAware(false);
+ SAXParser saxParser = spf.newSAXParser();
+
+ XMLReader xmlReader = saxParser.getXMLReader();
+ DumpDataContentHandler ddch = new DumpDataContentHandler();
+ xmlReader.setContentHandler(ddch);
+ xmlReader.parse(new InputSource(new FileReader(f)));
+
+ return ddch.data;
+ }
+
+ private static class DumpDataContentHandler extends DefaultHandler {
+ Collection<DumpData> data = new LinkedList<DumpData>();
+ DumpData openData = null;
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes)
+ throws SAXException {
+ if (qName.equals("data")) {
+ if (openData != null) {
+ throw new IllegalStateException();
+ }
+ String pkg = attributes.getValue("package");
+ String dateString = attributes.getValue("date");
+
+ if (pkg == null || dateString == null) {
+ throw new IllegalArgumentException();
+ }
+
+ try {
+ Date date = DateFormat.getDateTimeInstance().parse(dateString);
+ openData = new DumpData(pkg, new HashMap<String, String>(), date);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ } else if (qName.equals("class")) {
+ if (openData == null) {
+ throw new IllegalStateException();
+ }
+ String className = attributes.getValue("name");
+ String classLoader = attributes.getValue("classloader");
+
+ if (className == null || classLoader == null) {
+ throw new IllegalArgumentException();
+ }
+
+ openData.dumpData.put(className, classLoader.equals("null") ? null : classLoader);
+ }
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+ if (qName.equals("data")) {
+ if (openData == null) {
+ throw new IllegalStateException();
+ }
+ openData.countBootClassPath();
+
+ data.add(openData);
+ openData = null;
+ }
+ }
+ }
+}
diff --git a/tools/preload2/src/com/android/preload/DumpTableModel.java b/tools/preload2/src/com/android/preload/DumpTableModel.java
new file mode 100644
index 0000000..d97cbf0
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/DumpTableModel.java
@@ -0,0 +1,93 @@
+/*
+ * 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.preload;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * A table model for collected DumpData. This is both the internal storage as well as the model
+ * for display.
+ */
+public class DumpTableModel extends AbstractTableModel {
+
+ private List<DumpData> data = new ArrayList<DumpData>();
+
+ public void addData(DumpData d) {
+ data.add(d);
+ fireTableRowsInserted(data.size() - 1, data.size() - 1);
+ }
+
+ public void clear() {
+ int size = data.size();
+ if (size > 0) {
+ data.clear();
+ fireTableRowsDeleted(0, size - 1);
+ }
+ }
+
+ public List<DumpData> getData() {
+ return data;
+ }
+
+ @Override
+ public int getRowCount() {
+ return data.size();
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 4;
+ }
+
+ @Override
+ public String getColumnName(int column) {
+ switch (column) {
+ case 0:
+ return "Package";
+ case 1:
+ return "Date";
+ case 2:
+ return "# All Classes";
+ case 3:
+ return "# Boot Classpath Classes";
+
+ default:
+ throw new IndexOutOfBoundsException(String.valueOf(column));
+ }
+ }
+
+ @Override
+ public Object getValueAt(int rowIndex, int columnIndex) {
+ DumpData d = data.get(rowIndex);
+ switch (columnIndex) {
+ case 0:
+ return d.packageName;
+ case 1:
+ return d.date;
+ case 2:
+ return d.dumpData.size();
+ case 3:
+ return d.bcpClasses;
+
+ default:
+ throw new IndexOutOfBoundsException(String.valueOf(columnIndex));
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/Main.java b/tools/preload2/src/com/android/preload/Main.java
new file mode 100644
index 0000000..ca5b0e0
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/Main.java
@@ -0,0 +1,242 @@
+/*
+ * 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.preload;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.IDevice;
+import com.android.preload.actions.ClearTableAction;
+import com.android.preload.actions.ComputeThresholdAction;
+import com.android.preload.actions.ComputeThresholdXAction;
+import com.android.preload.actions.DeviceSpecific;
+import com.android.preload.actions.ExportAction;
+import com.android.preload.actions.ImportAction;
+import com.android.preload.actions.ReloadListAction;
+import com.android.preload.actions.RunMonkeyAction;
+import com.android.preload.actions.ScanAllPackagesAction;
+import com.android.preload.actions.ScanPackageAction;
+import com.android.preload.actions.ShowDataAction;
+import com.android.preload.classdataretrieval.ClassDataRetriever;
+import com.android.preload.classdataretrieval.hprof.Hprof;
+import com.android.preload.classdataretrieval.jdwp.JDWPClassDataRetriever;
+import com.android.preload.ui.UI;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.Action;
+import javax.swing.DefaultListModel;
+
+public class Main {
+
+ /**
+ * Enable tracing mode. This is a work-in-progress to derive compiled-methods data, so it is
+ * off for now.
+ */
+ public final static boolean ENABLE_TRACING = false;
+
+ /**
+ * Ten-second timeout.
+ */
+ public final static int DEFAULT_TIMEOUT_MILLIS = 10 * 1000;
+
+ /**
+ * Hprof timeout. Two minutes.
+ */
+ public final static int HPROF_TIMEOUT_MILLIS = 120 * 1000;
+
+ private IDevice device;
+ private static ClientUtils clientUtils;
+
+ private DumpTableModel dataTableModel;
+ private DefaultListModel<Client> clientListModel;
+
+ private UI ui;
+
+ // Actions that need to be updated once a device is selected.
+ private Collection<DeviceSpecific> deviceSpecificActions;
+
+ // Current main instance.
+ private static Main top;
+ private static boolean useJdwpClassDataRetriever = false;
+
+ public final static String CLASS_PRELOAD_BLACKLIST = "android.app.AlarmManager$" + "|"
+ + "android.app.SearchManager$" + "|" + "android.os.FileObserver$" + "|"
+ + "com.android.server.PackageManagerService\\$AppDirObserver$" + "|" +
+
+
+ // Threads
+ "android.os.AsyncTask$" + "|" + "android.pim.ContactsAsyncHelper$" + "|"
+ + "android.webkit.WebViewClassic\\$1$" + "|" + "java.lang.ProcessManager$" + "|"
+ + "(.*\\$NoPreloadHolder$)";
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ Main m = new Main();
+ top = m;
+
+ m.startUp();
+ }
+
+ public Main() {
+ clientListModel = new DefaultListModel<Client>();
+ dataTableModel = new DumpTableModel();
+
+ clientUtils = new ClientUtils(DEFAULT_TIMEOUT_MILLIS); // Client utils with 10s timeout.
+
+ List<Action> actions = new ArrayList<Action>();
+ actions.add(new ReloadListAction(clientUtils, null, clientListModel));
+ actions.add(new ClearTableAction(dataTableModel));
+ actions.add(new RunMonkeyAction(null, dataTableModel));
+ actions.add(new ScanPackageAction(clientUtils, null, dataTableModel));
+ actions.add(new ScanAllPackagesAction(clientUtils, null, dataTableModel));
+ actions.add(new ComputeThresholdAction("Compute preloaded-classes", dataTableModel, 2,
+ CLASS_PRELOAD_BLACKLIST));
+ actions.add(new ComputeThresholdAction("Compute compiled-classes", dataTableModel, 1,
+ null));
+ actions.add(new ComputeThresholdXAction("Compute(X)", dataTableModel,
+ CLASS_PRELOAD_BLACKLIST));
+ actions.add(new ShowDataAction(dataTableModel));
+ actions.add(new ImportAction(dataTableModel));
+ actions.add(new ExportAction(dataTableModel));
+
+ deviceSpecificActions = new ArrayList<DeviceSpecific>();
+ for (Action a : actions) {
+ if (a instanceof DeviceSpecific) {
+ deviceSpecificActions.add((DeviceSpecific)a);
+ }
+ }
+
+ ui = new UI(clientListModel, dataTableModel, actions);
+ ui.setVisible(true);
+ }
+
+ public static UI getUI() {
+ return top.ui;
+ }
+
+ public static ClassDataRetriever getClassDataRetriever() {
+ if (useJdwpClassDataRetriever) {
+ return new JDWPClassDataRetriever();
+ } else {
+ return new Hprof(HPROF_TIMEOUT_MILLIS);
+ }
+ }
+
+ public IDevice getDevice() {
+ return device;
+ }
+
+ public void setDevice(IDevice device) {
+ this.device = device;
+ for (DeviceSpecific ds : deviceSpecificActions) {
+ ds.setDevice(device);
+ }
+ }
+
+ public DefaultListModel<Client> getClientListModel() {
+ return clientListModel;
+ }
+
+ static class DeviceWrapper {
+ IDevice device;
+
+ public DeviceWrapper(IDevice d) {
+ device = d;
+ }
+
+ @Override
+ public String toString() {
+ return device.getName() + " (#" + device.getSerialNumber() + ")";
+ }
+ }
+
+ private void startUp() {
+ getUI().showWaitDialog();
+ initDevice();
+
+ // Load clients.
+ new ReloadListAction(clientUtils, getDevice(), clientListModel).run();
+
+ getUI().hideWaitDialog();
+ }
+
+ private void initDevice() {
+ DeviceUtils.init(DEFAULT_TIMEOUT_MILLIS);
+
+ IDevice devices[] = DeviceUtils.findDevices(DEFAULT_TIMEOUT_MILLIS);
+ if (devices == null || devices.length == 0) {
+ throw new RuntimeException("Could not find any devices...");
+ }
+
+ getUI().hideWaitDialog();
+
+ DeviceWrapper deviceWrappers[] = new DeviceWrapper[devices.length];
+ for (int i = 0; i < devices.length; i++) {
+ deviceWrappers[i] = new DeviceWrapper(devices[i]);
+ }
+
+ DeviceWrapper ret = Main.getUI().showChoiceDialog("Choose a device", "Choose device",
+ deviceWrappers);
+ if (ret != null) {
+ setDevice(ret.device);
+ } else {
+ System.exit(0);
+ }
+
+ boolean prepare = Main.getUI().showConfirmDialog("Prepare device?",
+ "Do you want to prepare the device? This is highly recommended.");
+ if (prepare) {
+ String buildType = DeviceUtils.getBuildType(device);
+ if (buildType == null || (!buildType.equals("userdebug") && !buildType.equals("eng"))) {
+ Main.getUI().showMessageDialog("Need a userdebug or eng build! (Found " + buildType
+ + ")");
+ return;
+ }
+ if (DeviceUtils.hasPrebuiltBootImage(device)) {
+ Main.getUI().showMessageDialog("Cannot prepare a device with pre-optimized boot "
+ + "image!");
+ return;
+ }
+
+ if (ENABLE_TRACING) {
+ DeviceUtils.enableTracing(device);
+ }
+
+ Main.getUI().showMessageDialog("The device will reboot. This will potentially take a "
+ + "long time. Please be patient.");
+ if (!DeviceUtils.removePreloaded(device, 15 * 60) /* 15m timeout */) {
+ Main.getUI().showMessageDialog("Removing preloaded-classes failed unexpectedly!");
+ }
+ }
+ }
+
+ public static Map<String, String> findAndGetClassData(IDevice device, String packageName)
+ throws Exception {
+ Client client = clientUtils.findClient(device, packageName, -1);
+ if (client == null) {
+ throw new RuntimeException("Could not find client...");
+ }
+ System.out.println("Found client: " + client);
+
+ return getClassDataRetriever().getClassData(client);
+ }
+
+}
diff --git a/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java b/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java
new file mode 100644
index 0000000..fbf83d2
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java
@@ -0,0 +1,34 @@
+/*
+ * 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.preload.actions;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+
+public abstract class AbstractThreadedAction extends AbstractAction implements Runnable {
+
+ protected AbstractThreadedAction(String title) {
+ super(title);
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ new Thread(this).start();
+ }
+
+}
diff --git a/tools/preload2/src/com/android/preload/actions/AbstractThreadedDeviceSpecificAction.java b/tools/preload2/src/com/android/preload/actions/AbstractThreadedDeviceSpecificAction.java
new file mode 100644
index 0000000..7906417
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/AbstractThreadedDeviceSpecificAction.java
@@ -0,0 +1,45 @@
+/*
+ * 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.preload.actions;
+
+import com.android.ddmlib.IDevice;
+
+import java.awt.event.ActionEvent;
+
+public abstract class AbstractThreadedDeviceSpecificAction extends AbstractThreadedAction
+ implements DeviceSpecific {
+
+ protected IDevice device;
+
+ protected AbstractThreadedDeviceSpecificAction(String title, IDevice device) {
+ super(title);
+ this.device = device;
+ }
+
+ @Override
+ public void setDevice(IDevice device) {
+ this.device = device;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (device == null) {
+ return;
+ }
+ super.actionPerformed(e);
+ }
+}
diff --git a/tools/preload2/src/com/android/preload/actions/ClearTableAction.java b/tools/preload2/src/com/android/preload/actions/ClearTableAction.java
new file mode 100644
index 0000000..c0e4795
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ClearTableAction.java
@@ -0,0 +1,37 @@
+/*
+ * 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.preload.actions;
+
+import com.android.preload.DumpTableModel;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+
+public class ClearTableAction extends AbstractAction {
+ private final DumpTableModel dataTableModel;
+
+ public ClearTableAction(DumpTableModel dataTableModel) {
+ super("Clear");
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ dataTableModel.clear();
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ComputeThresholdAction.java b/tools/preload2/src/com/android/preload/actions/ComputeThresholdAction.java
new file mode 100644
index 0000000..b524716
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ComputeThresholdAction.java
@@ -0,0 +1,151 @@
+/*
+ * 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.preload.actions;
+
+import com.android.preload.DumpData;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.regex.Pattern;
+
+import javax.swing.AbstractAction;
+import javax.swing.JFileChooser;
+
+/**
+ * Compute an intersection of classes from the given data. A class is in the intersection if it
+ * appears in at least the number of threshold given packages. An optional blacklist can be
+ * used to filter classes from the intersection.
+ */
+public class ComputeThresholdAction extends AbstractAction implements Runnable {
+ protected int threshold;
+ private Pattern blacklist;
+ private DumpTableModel dataTableModel;
+
+ /**
+ * Create an action with the given parameters. The blacklist is a regular expression
+ * that filters classes.
+ */
+ public ComputeThresholdAction(String name, DumpTableModel dataTableModel, int threshold,
+ String blacklist) {
+ super(name);
+ this.dataTableModel = dataTableModel;
+ this.threshold = threshold;
+ if (blacklist != null) {
+ this.blacklist = Pattern.compile(blacklist);
+ }
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ List<DumpData> data = dataTableModel.getData();
+ if (data.size() == 0) {
+ Main.getUI().showMessageDialog("No data available, please scan packages or run "
+ + "monkeys.");
+ return;
+ }
+ if (data.size() == 1) {
+ Main.getUI().showMessageDialog("Cannot compute list from only one data set, please "
+ + "scan packages or run monkeys.");
+ return;
+ }
+
+ new Thread(this).start();
+ }
+
+ @Override
+ public void run() {
+ Main.getUI().showWaitDialog();
+
+ Map<String, Set<String>> uses = new HashMap<String, Set<String>>();
+ for (DumpData d : dataTableModel.getData()) {
+ Main.getUI().updateWaitDialog("Merging " + d.getPackageName());
+ updateClassUse(d.getPackageName(), uses, getBootClassPathClasses(d.getDumpData()));
+ }
+
+ Main.getUI().updateWaitDialog("Computing thresholded set");
+ Set<String> result = fromThreshold(uses, blacklist, threshold);
+ Main.getUI().hideWaitDialog();
+
+ boolean ret = Main.getUI().showConfirmDialog("Computed a set with " + result.size()
+ + " classes, would you like to save to disk?", "Save?");
+ if (ret) {
+ JFileChooser jfc = new JFileChooser();
+ int ret2 = jfc.showSaveDialog(Main.getUI());
+ if (ret2 == JFileChooser.APPROVE_OPTION) {
+ File f = jfc.getSelectedFile();
+ saveSet(result, f);
+ }
+ }
+ }
+
+ private Set<String> fromThreshold(Map<String, Set<String>> classUses, Pattern blacklist,
+ int threshold) {
+ TreeSet<String> ret = new TreeSet<>(); // TreeSet so it's nicely ordered by name.
+
+ for (Map.Entry<String, Set<String>> e : classUses.entrySet()) {
+ if (e.getValue().size() >= threshold) {
+ if (blacklist == null || !blacklist.matcher(e.getKey()).matches()) {
+ ret.add(e.getKey());
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ private static void updateClassUse(String pkg, Map<String, Set<String>> classUses,
+ Set<String> classes) {
+ for (String className : classes) {
+ Set<String> old = classUses.get(className);
+ if (old == null) {
+ classUses.put(className, new HashSet<String>());
+ }
+ classUses.get(className).add(pkg);
+ }
+ }
+
+ private static Set<String> getBootClassPathClasses(Map<String, String> source) {
+ Set<String> ret = new HashSet<>();
+ for (Map.Entry<String, String> e : source.entrySet()) {
+ if (e.getValue() == null) {
+ ret.add(e.getKey());
+ }
+ }
+ return ret;
+ }
+
+ private static void saveSet(Set<String> result, File f) {
+ try {
+ PrintWriter out = new PrintWriter(f);
+ for (String s : result) {
+ out.println(s);
+ }
+ out.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ComputeThresholdXAction.java b/tools/preload2/src/com/android/preload/actions/ComputeThresholdXAction.java
new file mode 100644
index 0000000..3ec0a4c
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ComputeThresholdXAction.java
@@ -0,0 +1,41 @@
+/*
+ * 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.preload.actions;
+
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+public class ComputeThresholdXAction extends ComputeThresholdAction {
+
+ public ComputeThresholdXAction(String name, DumpTableModel dataTableModel,
+ String blacklist) {
+ super(name, dataTableModel, 1, blacklist);
+ }
+
+ @Override
+ public void run() {
+ String value = Main.getUI().showInputDialog("Threshold?");
+
+ if (value != null) {
+ try {
+ threshold = Integer.parseInt(value);
+ super.run();
+ } catch (Exception exc) {
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/DeviceSpecific.java b/tools/preload2/src/com/android/preload/actions/DeviceSpecific.java
new file mode 100644
index 0000000..35a8f26
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/DeviceSpecific.java
@@ -0,0 +1,38 @@
+/*
+ * 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.preload.actions;
+
+import com.android.ddmlib.IDevice;
+
+/**
+ * Marks an action as being device-specific. The user must set the device through the specified
+ * method if the device selection changes.
+ *
+ * Implementors must tolerate a null device (for example, with a no-op). This includes calling
+ * any methods before setDevice has been called.
+ */
+public interface DeviceSpecific {
+
+ /**
+ * Set the device that should be used. Note that there is no restriction on calling other
+ * methods of the implementor before a setDevice call. Neither is device guaranteed to be
+ * non-null.
+ *
+ * @param device The device to use going forward.
+ */
+ public void setDevice(IDevice device);
+}
diff --git a/tools/preload2/src/com/android/preload/actions/ExportAction.java b/tools/preload2/src/com/android/preload/actions/ExportAction.java
new file mode 100644
index 0000000..cb8b3df
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ExportAction.java
@@ -0,0 +1,65 @@
+/*
+ * 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.preload.actions;
+
+import com.android.preload.DumpDataIO;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.PrintWriter;
+
+import javax.swing.AbstractAction;
+
+public class ExportAction extends AbstractAction implements Runnable {
+ private File lastSaveFile;
+ private DumpTableModel dataTableModel;
+
+ public ExportAction(DumpTableModel dataTableModel) {
+ super("Export data");
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ lastSaveFile = Main.getUI().showSaveDialog();
+ if (lastSaveFile != null) {
+ new Thread(this).start();
+ }
+ }
+
+ @Override
+ public void run() {
+ Main.getUI().showWaitDialog();
+
+ String serialized = DumpDataIO.serialize(dataTableModel.getData());
+
+ if (serialized != null) {
+ try {
+ PrintWriter out = new PrintWriter(lastSaveFile);
+ out.println(serialized);
+ out.close();
+
+ Main.getUI().hideWaitDialog();
+ } catch (Exception e) {
+ Main.getUI().hideWaitDialog();
+ Main.getUI().showMessageDialog("Failed writing: " + e.getMessage());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ImportAction.java b/tools/preload2/src/com/android/preload/actions/ImportAction.java
new file mode 100644
index 0000000..5c19765
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ImportAction.java
@@ -0,0 +1,68 @@
+/*
+ * 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.preload.actions;
+
+import com.android.preload.DumpData;
+import com.android.preload.DumpDataIO;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.util.Collection;
+
+import javax.swing.AbstractAction;
+
+public class ImportAction extends AbstractAction implements Runnable {
+ private File[] lastOpenFiles;
+ private DumpTableModel dataTableModel;
+
+ public ImportAction(DumpTableModel dataTableModel) {
+ super("Import data");
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ lastOpenFiles = Main.getUI().showOpenDialog(true);
+ if (lastOpenFiles != null) {
+ new Thread(this).start();
+ }
+ }
+
+ @Override
+ public void run() {
+ Main.getUI().showWaitDialog();
+
+ try {
+ for (File f : lastOpenFiles) {
+ try {
+ Collection<DumpData> data = DumpDataIO.deserialize(f);
+
+ for (DumpData d : data) {
+ dataTableModel.addData(d);
+ }
+ } catch (Exception e) {
+ Main.getUI().showMessageDialog("Failed reading: " + e.getMessage());
+ }
+ }
+ } finally {
+ Main.getUI().hideWaitDialog();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ReloadListAction.java b/tools/preload2/src/com/android/preload/actions/ReloadListAction.java
new file mode 100644
index 0000000..29f0557
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ReloadListAction.java
@@ -0,0 +1,68 @@
+/*
+ * 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.preload.actions;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.IDevice;
+import com.android.preload.ClientUtils;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+import javax.swing.DefaultListModel;
+
+public class ReloadListAction extends AbstractThreadedDeviceSpecificAction {
+
+ private ClientUtils clientUtils;
+ private final DefaultListModel<Client> clientListModel;
+
+ public ReloadListAction(ClientUtils utils, IDevice device,
+ DefaultListModel<Client> clientListModel) {
+ super("Reload", device);
+ this.clientUtils = utils;
+ this.clientListModel = clientListModel;
+ }
+
+ @Override
+ public void run() {
+ Client[] clients = clientUtils.findAllClients(device);
+ if (clients != null) {
+ Arrays.sort(clients, new ClientComparator());
+ }
+ clientListModel.removeAllElements();
+ for (Client c : clients) {
+ clientListModel.addElement(c);
+ }
+ }
+
+ private static class ClientComparator implements Comparator<Client> {
+
+ @Override
+ public int compare(Client o1, Client o2) {
+ String s1 = o1.getClientData().getClientDescription();
+ String s2 = o2.getClientData().getClientDescription();
+
+ if (s1 == null || s2 == null) {
+ // Not good, didn't get all data?
+ return (s1 == null) ? -1 : 1;
+ }
+
+ return s1.compareTo(s2);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java b/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java
new file mode 100644
index 0000000..385e857
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java
@@ -0,0 +1,119 @@
+/*
+ * 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.preload.actions;
+
+import com.android.ddmlib.IDevice;
+import com.android.preload.DeviceUtils;
+import com.android.preload.DumpData;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.awt.event.ActionEvent;
+import java.util.Date;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import javax.swing.AbstractAction;
+
+public class RunMonkeyAction extends AbstractAction implements DeviceSpecific {
+
+ private final static String DEFAULT_MONKEY_PACKAGES =
+ "com.android.calendar,com.android.gallery3d";
+
+ private IDevice device;
+ private DumpTableModel dataTableModel;
+
+ public RunMonkeyAction(IDevice device, DumpTableModel dataTableModel) {
+ super("Run monkey");
+ this.device = device;
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void setDevice(IDevice device) {
+ this.device = device;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String packages = Main.getUI().showInputDialog("Please enter packages name to run with"
+ + " the monkey, or leave empty for default.");
+ if (packages == null) {
+ return;
+ }
+ if (packages.isEmpty()) {
+ packages = DEFAULT_MONKEY_PACKAGES;
+ }
+ new Thread(new RunMonkeyRunnable(packages)).start();
+ }
+
+ private class RunMonkeyRunnable implements Runnable {
+
+ private String packages;
+ private final static int ITERATIONS = 1000;
+
+ public RunMonkeyRunnable(String packages) {
+ this.packages = packages;
+ }
+
+ @Override
+ public void run() {
+ Main.getUI().showWaitDialog();
+
+ try {
+ String pkgs[] = packages.split(",");
+
+ for (String pkg : pkgs) {
+ Main.getUI().updateWaitDialog("Running monkey on " + pkg);
+
+ try {
+ // Stop running app.
+ forceStop(pkg);
+
+ // Little bit of breather here.
+ try {
+ Thread.sleep(1000);
+ } catch (Exception e) {
+ }
+
+ DeviceUtils.doShell(device, "monkey -p " + pkg + " " + ITERATIONS, 1,
+ TimeUnit.MINUTES);
+
+ Main.getUI().updateWaitDialog("Retrieving heap data for " + pkg);
+ Map<String, String> data = Main.findAndGetClassData(device, pkg);
+ DumpData dumpData = new DumpData(pkg, data, new Date());
+ dataTableModel.addData(dumpData);
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ // Stop running app.
+ forceStop(pkg);
+ }
+ }
+ } finally {
+ Main.getUI().hideWaitDialog();
+ }
+ }
+
+ private void forceStop(String packageName) {
+ // Stop running app.
+ DeviceUtils.doShell(device, "force-stop " + packageName, 5, TimeUnit.SECONDS);
+ DeviceUtils.doShell(device, "kill " + packageName, 5, TimeUnit.SECONDS);
+ DeviceUtils.doShell(device, "kill `pid " + packageName + "`", 5, TimeUnit.SECONDS);
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ScanAllPackagesAction.java b/tools/preload2/src/com/android/preload/actions/ScanAllPackagesAction.java
new file mode 100644
index 0000000..d74b8a3
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ScanAllPackagesAction.java
@@ -0,0 +1,63 @@
+/*
+ * 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.preload.actions;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.IDevice;
+import com.android.preload.ClientUtils;
+import com.android.preload.DumpData;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.util.Date;
+import java.util.Map;
+
+public class ScanAllPackagesAction extends AbstractThreadedDeviceSpecificAction {
+
+ private ClientUtils clientUtils;
+ private DumpTableModel dataTableModel;
+
+ public ScanAllPackagesAction(ClientUtils utils, IDevice device, DumpTableModel dataTableModel) {
+ super("Scan all packages", device);
+ this.clientUtils = utils;
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void run() {
+ Main.getUI().showWaitDialog();
+
+ try {
+ Client[] clients = clientUtils.findAllClients(device);
+ for (Client c : clients) {
+ String pkg = c.getClientData().getClientDescription();
+ Main.getUI().showWaitDialog();
+ Main.getUI().updateWaitDialog("Retrieving heap data for " + pkg);
+
+ try {
+ Map<String, String> data = Main.getClassDataRetriever().getClassData(c);
+ DumpData dumpData = new DumpData(pkg, data, new Date());
+ dataTableModel.addData(dumpData);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ } finally {
+ Main.getUI().hideWaitDialog();
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ScanPackageAction.java b/tools/preload2/src/com/android/preload/actions/ScanPackageAction.java
new file mode 100644
index 0000000..98492bd
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ScanPackageAction.java
@@ -0,0 +1,97 @@
+/*
+ * 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.preload.actions;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.IDevice;
+import com.android.preload.ClientUtils;
+import com.android.preload.DumpData;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.util.Date;
+import java.util.Map;
+
+public class ScanPackageAction extends AbstractThreadedDeviceSpecificAction {
+
+ private ClientUtils clientUtils;
+ private DumpTableModel dataTableModel;
+
+ public ScanPackageAction(ClientUtils utils, IDevice device, DumpTableModel dataTableModel) {
+ super("Scan package", device);
+ this.clientUtils = utils;
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void run() {
+ Main.getUI().showWaitDialog();
+
+ try {
+ Client client = Main.getUI().getSelectedClient();
+ if (client != null) {
+ work(client);
+ } else {
+ Client[] clients = clientUtils.findAllClients(device);
+ if (clients.length > 0) {
+ ClientWrapper[] clientWrappers = new ClientWrapper[clients.length];
+ for (int i = 0; i < clientWrappers.length; i++) {
+ clientWrappers[i] = new ClientWrapper(clients[i]);
+ }
+ Main.getUI().hideWaitDialog();
+
+ ClientWrapper ret = Main.getUI().showChoiceDialog("Choose a package to scan",
+ "Choose package",
+ clientWrappers);
+ if (ret != null) {
+ work(ret.client);
+ }
+ }
+ }
+ } finally {
+ Main.getUI().hideWaitDialog();
+ }
+ }
+
+ private void work(Client c) {
+ String pkg = c.getClientData().getClientDescription();
+ Main.getUI().showWaitDialog();
+ Main.getUI().updateWaitDialog("Retrieving heap data for " + pkg);
+
+ try {
+ Map<String, String> data = Main.findAndGetClassData(device, pkg);
+ DumpData dumpData = new DumpData(pkg, data, new Date());
+ dataTableModel.addData(dumpData);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private static class ClientWrapper {
+ private Client client;
+
+ public ClientWrapper(Client c) {
+ client = c;
+ }
+
+ @Override
+ public String toString() {
+ return client.getClientData().getClientDescription() + " (pid "
+ + client.getClientData().getPid() + ")";
+ }
+ }
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/actions/ShowDataAction.java b/tools/preload2/src/com/android/preload/actions/ShowDataAction.java
new file mode 100644
index 0000000..2bb175f
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/actions/ShowDataAction.java
@@ -0,0 +1,94 @@
+/*
+ * 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.preload.actions;
+
+import com.android.preload.DumpData;
+import com.android.preload.DumpTableModel;
+import com.android.preload.Main;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.swing.AbstractAction;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+public class ShowDataAction extends AbstractAction {
+ private DumpTableModel dataTableModel;
+
+ public ShowDataAction(DumpTableModel dataTableModel) {
+ super("Show data");
+ this.dataTableModel = dataTableModel;
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ // TODO(agampe): Auto-generated method stub
+ int selRow = Main.getUI().getSelectedDataTableRow();
+ if (selRow != -1) {
+ DumpData data = dataTableModel.getData().get(selRow);
+ Map<String, Set<String>> inv = data.invertData();
+
+ StringBuilder builder = new StringBuilder();
+
+ // First bootclasspath.
+ add(builder, "Boot classpath:", inv.get(null));
+
+ // Now everything else.
+ for (String k : inv.keySet()) {
+ if (k != null) {
+ builder.append("==================\n\n");
+ add(builder, k, inv.get(k));
+ }
+ }
+
+ JFrame newFrame = new JFrame(data.getPackageName() + " " + data.getDate());
+ newFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+ newFrame.getContentPane().add(new JScrollPane(new JTextArea(builder.toString())),
+ BorderLayout.CENTER);
+ newFrame.setSize(800, 600);
+ newFrame.setLocationRelativeTo(null);
+ newFrame.setVisible(true);
+ }
+ }
+
+ private void add(StringBuilder builder, String head, Set<String> set) {
+ builder.append(head);
+ builder.append('\n');
+ addSet(builder, set);
+ builder.append('\n');
+ }
+
+ private void addSet(StringBuilder builder, Set<String> set) {
+ if (set == null) {
+ builder.append(" NONE\n");
+ return;
+ }
+ List<String> sorted = new ArrayList<>(set);
+ Collections.sort(sorted);
+ for (String s : sorted) {
+ builder.append(s);
+ builder.append('\n');
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchBaseTest.java b/tools/preload2/src/com/android/preload/classdataretrieval/ClassDataRetriever.java
similarity index 62%
rename from tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchBaseTest.java
rename to tools/preload2/src/com/android/preload/classdataretrieval/ClassDataRetriever.java
index a9e1777..f04360f 100644
--- a/tests/RenderScriptTests/PerfTest/src/com/android/perftest/RsBenchBaseTest.java
+++ b/tools/preload2/src/com/android/preload/classdataretrieval/ClassDataRetriever.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 The Android Open Source Project
+ * 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.
@@ -14,13 +14,16 @@
* limitations under the License.
*/
-package com.android.perftest;
-import android.renderscript.*;
-import android.content.res.Resources;
+package com.android.preload.classdataretrieval;
-interface RsBenchBaseTest {
- boolean init(RenderScriptGL rs, Resources res);
+import com.android.ddmlib.Client;
- ScriptField_TestScripts_s.Item[] getTests();
- String[] getTestNames();
+import java.util.Map;
+
+/**
+ * Retrieve a class-to-classloader map for loaded classes from the client.
+ */
+public interface ClassDataRetriever {
+
+ public Map<String, String> getClassData(Client client);
}
diff --git a/tools/preload2/src/com/android/preload/classdataretrieval/hprof/GeneralHprofDumpHandler.java b/tools/preload2/src/com/android/preload/classdataretrieval/hprof/GeneralHprofDumpHandler.java
new file mode 100644
index 0000000..8d797ee
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/classdataretrieval/hprof/GeneralHprofDumpHandler.java
@@ -0,0 +1,70 @@
+/*
+ * 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.preload.classdataretrieval.hprof;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.ClientData.IHprofDumpHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GeneralHprofDumpHandler implements IHprofDumpHandler {
+
+ private List<IHprofDumpHandler> handlers = new ArrayList<>();
+
+ public void addHandler(IHprofDumpHandler h) {
+ synchronized (handlers) {
+ handlers.add(h);
+ }
+ }
+
+ public void removeHandler(IHprofDumpHandler h) {
+ synchronized (handlers) {
+ handlers.remove(h);
+ }
+ }
+
+ private List<IHprofDumpHandler> getIterationList() {
+ synchronized (handlers) {
+ return new ArrayList<>(handlers);
+ }
+ }
+
+ @Override
+ public void onEndFailure(Client arg0, String arg1) {
+ List<IHprofDumpHandler> iterList = getIterationList();
+ for (IHprofDumpHandler h : iterList) {
+ h.onEndFailure(arg0, arg1);
+ }
+ }
+
+ @Override
+ public void onSuccess(String arg0, Client arg1) {
+ List<IHprofDumpHandler> iterList = getIterationList();
+ for (IHprofDumpHandler h : iterList) {
+ h.onSuccess(arg0, arg1);
+ }
+ }
+
+ @Override
+ public void onSuccess(byte[] arg0, Client arg1) {
+ List<IHprofDumpHandler> iterList = getIterationList();
+ for (IHprofDumpHandler h : iterList) {
+ h.onSuccess(arg0, arg1);
+ }
+ }
+ }
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/classdataretrieval/hprof/Hprof.java b/tools/preload2/src/com/android/preload/classdataretrieval/hprof/Hprof.java
new file mode 100644
index 0000000..21b7a04
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/classdataretrieval/hprof/Hprof.java
@@ -0,0 +1,220 @@
+/*
+ * 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.preload.classdataretrieval.hprof;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.ClientData;
+import com.android.ddmlib.ClientData.IHprofDumpHandler;
+import com.android.preload.classdataretrieval.ClassDataRetriever;
+import com.android.preload.ui.NullProgressMonitor;
+import com.android.tools.perflib.captures.MemoryMappedFileBuffer;
+import com.android.tools.perflib.heap.ClassObj;
+import com.android.tools.perflib.heap.Queries;
+import com.android.tools.perflib.heap.Snapshot;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class Hprof implements ClassDataRetriever {
+
+ private static GeneralHprofDumpHandler hprofHandler;
+
+ public static void init() {
+ synchronized(Hprof.class) {
+ if (hprofHandler == null) {
+ ClientData.setHprofDumpHandler(hprofHandler = new GeneralHprofDumpHandler());
+ }
+ }
+ }
+
+ public static File doHprof(Client client, int timeout) {
+ GetHprof gh = new GetHprof(client, timeout);
+ return gh.get();
+ }
+
+ /**
+ * Return a map of class names to class-loader names derived from the hprof dump.
+ *
+ * @param hprofLocalFile
+ */
+ public static Map<String, String> analyzeHprof(File hprofLocalFile) throws Exception {
+ Snapshot snapshot = Snapshot.createSnapshot(new MemoryMappedFileBuffer(hprofLocalFile));
+
+ Map<String, Set<ClassObj>> classes = Queries.classes(snapshot, null);
+ Map<String, String> retValue = new HashMap<String, String>();
+ for (Map.Entry<String, Set<ClassObj>> e : classes.entrySet()) {
+ for (ClassObj c : e.getValue()) {
+ String cl = c.getClassLoader() == null ? null : c.getClassLoader().toString();
+ String cName = c.getClassName();
+ int aDepth = 0;
+ while (cName.endsWith("[]")) {
+ cName = cName.substring(0, cName.length()-2);
+ aDepth++;
+ }
+ String newName = transformPrimitiveClass(cName);
+ if (aDepth > 0) {
+ // Need to use kind-a descriptor syntax. If it was transformed, it is primitive.
+ if (newName.equals(cName)) {
+ newName = "L" + newName + ";";
+ }
+ for (int i = 0; i < aDepth; i++) {
+ newName = "[" + newName;
+ }
+ }
+ retValue.put(newName, cl);
+ }
+ }
+
+ // Free up memory.
+ snapshot.dispose();
+
+ return retValue;
+ }
+
+ private static Map<String, String> primitiveMapping;
+
+ static {
+ primitiveMapping = new HashMap<>();
+ primitiveMapping.put("boolean", "Z");
+ primitiveMapping.put("byte", "B");
+ primitiveMapping.put("char", "C");
+ primitiveMapping.put("double", "D");
+ primitiveMapping.put("float", "F");
+ primitiveMapping.put("int", "I");
+ primitiveMapping.put("long", "J");
+ primitiveMapping.put("short", "S");
+ primitiveMapping.put("void", "V");
+ }
+
+ private static String transformPrimitiveClass(String name) {
+ String rep = primitiveMapping.get(name);
+ if (rep != null) {
+ return rep;
+ }
+ return name;
+ }
+
+ private static class GetHprof implements IHprofDumpHandler {
+
+ private File target;
+ private long timeout;
+ private Client client;
+
+ public GetHprof(Client client, long timeout) {
+ this.client = client;
+ this.timeout = timeout;
+ }
+
+ public File get() {
+ synchronized (this) {
+ hprofHandler.addHandler(this);
+ client.dumpHprof();
+ if (target == null) {
+ try {
+ wait(timeout);
+ } catch (Exception e) {
+ System.out.println(e);
+ }
+ }
+ }
+
+ hprofHandler.removeHandler(this);
+ return target;
+ }
+
+ private void wakeUp() {
+ synchronized (this) {
+ notifyAll();
+ }
+ }
+
+ @Override
+ public void onEndFailure(Client arg0, String arg1) {
+ System.out.println("GetHprof.onEndFailure");
+ if (client == arg0) {
+ wakeUp();
+ }
+ }
+
+ private static File createTargetFile() {
+ try {
+ return File.createTempFile("ddms", ".hprof");
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public void onSuccess(String arg0, Client arg1) {
+ System.out.println("GetHprof.onSuccess");
+ if (client == arg1) {
+ try {
+ target = createTargetFile();
+ arg1.getDevice().getSyncService().pullFile(arg0,
+ target.getAbsoluteFile().toString(), new NullProgressMonitor());
+ } catch (Exception e) {
+ e.printStackTrace();
+ target = null;
+ }
+ wakeUp();
+ }
+ }
+
+ @Override
+ public void onSuccess(byte[] arg0, Client arg1) {
+ System.out.println("GetHprof.onSuccess");
+ if (client == arg1) {
+ try {
+ target = createTargetFile();
+ BufferedOutputStream out =
+ new BufferedOutputStream(new FileOutputStream(target));
+ out.write(arg0);
+ out.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ target = null;
+ }
+ wakeUp();
+ }
+ }
+ }
+
+ private int timeout;
+
+ public Hprof(int timeout) {
+ this.timeout = timeout;
+ }
+
+ @Override
+ public Map<String, String> getClassData(Client client) {
+ File hprofLocalFile = Hprof.doHprof(client, timeout);
+ if (hprofLocalFile == null) {
+ throw new RuntimeException("Failed getting dump...");
+ }
+ System.out.println("Dump file is " + hprofLocalFile);
+
+ try {
+ return analyzeHprof(hprofLocalFile);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/tools/preload2/src/com/android/preload/classdataretrieval/jdwp/JDWPClassDataRetriever.java b/tools/preload2/src/com/android/preload/classdataretrieval/jdwp/JDWPClassDataRetriever.java
new file mode 100644
index 0000000..dbd4c89
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/classdataretrieval/jdwp/JDWPClassDataRetriever.java
@@ -0,0 +1,221 @@
+/*
+ * 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.preload.classdataretrieval.jdwp;
+
+import com.android.ddmlib.Client;
+import com.android.preload.classdataretrieval.ClassDataRetriever;
+
+import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands;
+import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
+import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
+import org.apache.harmony.jpda.tests.jdwp.share.JDWPTestCase;
+import org.apache.harmony.jpda.tests.jdwp.share.JDWPUnitDebuggeeWrapper;
+import org.apache.harmony.jpda.tests.share.JPDALogWriter;
+import org.apache.harmony.jpda.tests.share.JPDATestOptions;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class JDWPClassDataRetriever extends JDWPTestCase implements ClassDataRetriever {
+
+ private final Client client;
+
+ public JDWPClassDataRetriever() {
+ this(null);
+ }
+
+ public JDWPClassDataRetriever(Client client) {
+ this.client = client;
+ }
+
+
+ @Override
+ protected String getDebuggeeClassName() {
+ return "<unset>";
+ }
+
+ @Override
+ public Map<String, String> getClassData(Client client) {
+ return new JDWPClassDataRetriever(client).retrieve();
+ }
+
+ private Map<String, String> retrieve() {
+ if (client == null) {
+ throw new IllegalStateException();
+ }
+
+ settings = createTestOptions("localhost:" + String.valueOf(client.getDebuggerListenPort()));
+ settings.setDebuggeeSuspend("n");
+
+ logWriter = new JPDALogWriter(System.out, "", false);
+
+ try {
+ internalSetUp();
+
+ return retrieveImpl();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ } finally {
+ internalTearDown();
+ }
+ }
+
+ private Map<String, String> retrieveImpl() {
+ try {
+ // Suspend the app.
+ {
+ CommandPacket packet = new CommandPacket(
+ JDWPCommands.VirtualMachineCommandSet.CommandSetID,
+ JDWPCommands.VirtualMachineCommandSet.SuspendCommand);
+ ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
+ if (reply.getErrorCode() != JDWPConstants.Error.NONE) {
+ return null;
+ }
+ }
+
+ // List all classes.
+ CommandPacket packet = new CommandPacket(
+ JDWPCommands.VirtualMachineCommandSet.CommandSetID,
+ JDWPCommands.VirtualMachineCommandSet.AllClassesCommand);
+ ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
+
+ if (reply.getErrorCode() != JDWPConstants.Error.NONE) {
+ return null;
+ }
+
+ int classCount = reply.getNextValueAsInt();
+ System.out.println("Runtime reported " + classCount + " classes.");
+
+ Map<Long, String> classes = new HashMap<Long, String>();
+ Map<Long, String> arrayClasses = new HashMap<Long, String>();
+
+ for (int i = 0; i < classCount; i++) {
+ byte refTypeTag = reply.getNextValueAsByte();
+ long typeID = reply.getNextValueAsReferenceTypeID();
+ String signature = reply.getNextValueAsString();
+ /* int status = */ reply.getNextValueAsInt();
+
+ switch (refTypeTag) {
+ case JDWPConstants.TypeTag.CLASS:
+ case JDWPConstants.TypeTag.INTERFACE:
+ classes.put(typeID, signature);
+ break;
+
+ case JDWPConstants.TypeTag.ARRAY:
+ arrayClasses.put(typeID, signature);
+ break;
+ }
+ }
+
+ Map<String, String> result = new HashMap<String, String>();
+
+ // Parse all classes.
+ for (Map.Entry<Long, String> entry : classes.entrySet()) {
+ long typeID = entry.getKey();
+ String signature = entry.getValue();
+
+ if (!checkClass(typeID, signature, result)) {
+ System.err.println("Issue investigating " + signature);
+ }
+ }
+
+ // For arrays, look at the leaf component type.
+ for (Map.Entry<Long, String> entry : arrayClasses.entrySet()) {
+ long typeID = entry.getKey();
+ String signature = entry.getValue();
+
+ if (!checkArrayClass(typeID, signature, result)) {
+ System.err.println("Issue investigating " + signature);
+ }
+ }
+
+ return result;
+ } finally {
+ // Resume the app.
+ {
+ CommandPacket packet = new CommandPacket(
+ JDWPCommands.VirtualMachineCommandSet.CommandSetID,
+ JDWPCommands.VirtualMachineCommandSet.ResumeCommand);
+ /* ReplyPacket reply = */ debuggeeWrapper.vmMirror.performCommand(packet);
+ }
+ }
+ }
+
+ private boolean checkClass(long typeID, String signature, Map<String, String> result) {
+ CommandPacket packet = new CommandPacket(
+ JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
+ JDWPCommands.ReferenceTypeCommandSet.ClassLoaderCommand);
+ packet.setNextValueAsReferenceTypeID(typeID);
+ ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
+ if (reply.getErrorCode() != JDWPConstants.Error.NONE) {
+ return false;
+ }
+
+ long classLoaderID = reply.getNextValueAsObjectID();
+
+ // TODO: Investigate the classloader to have a better string?
+ String classLoaderString = (classLoaderID == 0) ? null : String.valueOf(classLoaderID);
+
+ result.put(getClassName(signature), classLoaderString);
+
+ return true;
+ }
+
+ private boolean checkArrayClass(long typeID, String signature, Map<String, String> result) {
+ // Classloaders of array classes are the same as the component class'.
+ CommandPacket packet = new CommandPacket(
+ JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
+ JDWPCommands.ReferenceTypeCommandSet.ClassLoaderCommand);
+ packet.setNextValueAsReferenceTypeID(typeID);
+ ReplyPacket reply = debuggeeWrapper.vmMirror.performCommand(packet);
+ if (reply.getErrorCode() != JDWPConstants.Error.NONE) {
+ return false;
+ }
+
+ long classLoaderID = reply.getNextValueAsObjectID();
+
+ // TODO: Investigate the classloader to have a better string?
+ String classLoaderString = (classLoaderID == 0) ? null : String.valueOf(classLoaderID);
+
+ // For array classes, we *need* the signature directly.
+ result.put(signature, classLoaderString);
+
+ return true;
+ }
+
+ private static String getClassName(String signature) {
+ String withoutLAndSemicolon = signature.substring(1, signature.length() - 1);
+ return withoutLAndSemicolon.replace('/', '.');
+ }
+
+
+ private static JPDATestOptions createTestOptions(String address) {
+ JPDATestOptions options = new JPDATestOptions();
+ options.setAttachConnectorKind();
+ options.setTimeout(1000);
+ options.setWaitingTime(1000);
+ options.setTransportAddress(address);
+ return options;
+ }
+
+ @Override
+ protected JDWPUnitDebuggeeWrapper createDebuggeeWrapper() {
+ return new PreloadDebugeeWrapper(settings, logWriter);
+ }
+}
diff --git a/tools/preload2/src/com/android/preload/classdataretrieval/jdwp/PreloadDebugeeWrapper.java b/tools/preload2/src/com/android/preload/classdataretrieval/jdwp/PreloadDebugeeWrapper.java
new file mode 100644
index 0000000..b9df6d0
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/classdataretrieval/jdwp/PreloadDebugeeWrapper.java
@@ -0,0 +1,40 @@
+/*
+ * 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.preload.classdataretrieval.jdwp;
+
+import org.apache.harmony.jpda.tests.framework.LogWriter;
+import org.apache.harmony.jpda.tests.jdwp.share.JDWPManualDebuggeeWrapper;
+import org.apache.harmony.jpda.tests.share.JPDATestOptions;
+
+import java.io.IOException;
+
+public class PreloadDebugeeWrapper extends JDWPManualDebuggeeWrapper {
+
+ public PreloadDebugeeWrapper(JPDATestOptions options, LogWriter writer) {
+ super(options, writer);
+ }
+
+ @Override
+ protected Process launchProcess(String cmdLine) throws IOException {
+ return null;
+ }
+
+ @Override
+ protected void WaitForProcessExit(Process process) {
+ }
+
+}
diff --git a/tools/preload2/src/com/android/preload/ui/NullProgressMonitor.java b/tools/preload2/src/com/android/preload/ui/NullProgressMonitor.java
new file mode 100644
index 0000000..f45aad0
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/ui/NullProgressMonitor.java
@@ -0,0 +1,39 @@
+/*
+ * 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.preload.ui;
+
+import com.android.ddmlib.SyncService.ISyncProgressMonitor;
+
+public class NullProgressMonitor implements ISyncProgressMonitor {
+
+ @Override
+ public void advance(int arg0) {}
+
+ @Override
+ public boolean isCanceled() {
+ return false;
+ }
+
+ @Override
+ public void start(int arg0) {}
+
+ @Override
+ public void startSubTask(String arg0) {}
+
+ @Override
+ public void stop() {}
+}
\ No newline at end of file
diff --git a/tools/preload2/src/com/android/preload/ui/UI.java b/tools/preload2/src/com/android/preload/ui/UI.java
new file mode 100644
index 0000000..47174dd
--- /dev/null
+++ b/tools/preload2/src/com/android/preload/ui/UI.java
@@ -0,0 +1,267 @@
+/*
+ * 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.preload.ui;
+
+import com.android.ddmlib.Client;
+import com.android.ddmlib.ClientData;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.io.File;
+import java.util.List;
+
+import javax.swing.Action;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JDialog;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JToolBar;
+import javax.swing.ListModel;
+import javax.swing.SwingUtilities;
+import javax.swing.table.TableModel;
+
+public class UI extends JFrame {
+
+ private JList<Client> clientList;
+ private JTable dataTable;
+
+ // Shared file chooser, means the directory is retained.
+ private JFileChooser jfc;
+
+ public UI(ListModel<Client> clientListModel,
+ TableModel dataTableModel,
+ List<Action> actions) {
+ super("Preloaded-classes computation");
+
+ getContentPane().add(new JScrollPane(clientList = new JList<Client>(clientListModel)),
+ BorderLayout.WEST);
+ clientList.setCellRenderer(new ClientListCellRenderer());
+ // clientList.addListSelectionListener(listener);
+
+ dataTable = new JTable(dataTableModel);
+ getContentPane().add(new JScrollPane(dataTable), BorderLayout.CENTER);
+
+ JToolBar toolbar = new JToolBar(JToolBar.HORIZONTAL);
+ for (Action a : actions) {
+ if (a == null) {
+ toolbar.addSeparator();
+ } else {
+ toolbar.add(a);
+ }
+ }
+ getContentPane().add(toolbar, BorderLayout.PAGE_START);
+
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setBounds(100, 100, 800, 600);
+ }
+
+ public Client getSelectedClient() {
+ return clientList.getSelectedValue();
+ }
+
+ public int getSelectedDataTableRow() {
+ return dataTable.getSelectedRow();
+ }
+
+ private JDialog currentWaitDialog = null;
+
+ public void showWaitDialog() {
+ if (currentWaitDialog == null) {
+ currentWaitDialog = new JDialog(this, "Please wait...", true);
+ currentWaitDialog.getContentPane().add(new JLabel("Please be patient."),
+ BorderLayout.CENTER);
+ JProgressBar progress = new JProgressBar(JProgressBar.HORIZONTAL);
+ progress.setIndeterminate(true);
+ currentWaitDialog.getContentPane().add(progress, BorderLayout.SOUTH);
+ currentWaitDialog.setSize(200, 100);
+ currentWaitDialog.setLocationRelativeTo(null);
+ showWaitDialogLater();
+ }
+ }
+
+ private void showWaitDialogLater() {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(true); // This is blocking.
+ }
+ }
+ });
+ }
+
+ public void updateWaitDialog(String s) {
+ if (currentWaitDialog != null) {
+ ((JLabel) currentWaitDialog.getContentPane().getComponent(0)).setText(s);
+ Dimension prefSize = currentWaitDialog.getPreferredSize();
+ Dimension curSize = currentWaitDialog.getSize();
+ if (prefSize.width > curSize.width || prefSize.height > curSize.height) {
+ currentWaitDialog.setSize(Math.max(prefSize.width, curSize.width),
+ Math.max(prefSize.height, curSize.height));
+ currentWaitDialog.invalidate();
+ }
+ }
+ }
+
+ public void hideWaitDialog() {
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ currentWaitDialog = null;
+ }
+ }
+
+ public void showMessageDialog(String s) {
+ // Hide the wait dialog...
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ }
+
+ try {
+ JOptionPane.showMessageDialog(this, s);
+ } finally {
+ // And reshow it afterwards...
+ if (currentWaitDialog != null) {
+ showWaitDialogLater();
+ }
+ }
+ }
+
+ public boolean showConfirmDialog(String title, String message) {
+ // Hide the wait dialog...
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ }
+
+ try {
+ return JOptionPane.showConfirmDialog(this, title, message, JOptionPane.YES_NO_OPTION)
+ == JOptionPane.YES_OPTION;
+ } finally {
+ // And reshow it afterwards...
+ if (currentWaitDialog != null) {
+ showWaitDialogLater();
+ }
+ }
+ }
+
+ public String showInputDialog(String message) {
+ // Hide the wait dialog...
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ }
+
+ try {
+ return JOptionPane.showInputDialog(message);
+ } finally {
+ // And reshow it afterwards...
+ if (currentWaitDialog != null) {
+ showWaitDialogLater();
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T showChoiceDialog(String title, String message, T[] choices) {
+ // Hide the wait dialog...
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ }
+
+ try{
+ return (T)JOptionPane.showInputDialog(this,
+ title,
+ message,
+ JOptionPane.QUESTION_MESSAGE,
+ null,
+ choices,
+ choices[0]);
+ } finally {
+ // And reshow it afterwards...
+ if (currentWaitDialog != null) {
+ showWaitDialogLater();
+ }
+ }
+ }
+
+ public File showSaveDialog() {
+ // Hide the wait dialog...
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ }
+
+ try{
+ if (jfc == null) {
+ jfc = new JFileChooser();
+ }
+
+ int ret = jfc.showSaveDialog(this);
+ if (ret == JFileChooser.APPROVE_OPTION) {
+ return jfc.getSelectedFile();
+ } else {
+ return null;
+ }
+ } finally {
+ // And reshow it afterwards...
+ if (currentWaitDialog != null) {
+ showWaitDialogLater();
+ }
+ }
+ }
+
+ public File[] showOpenDialog(boolean multi) {
+ // Hide the wait dialog...
+ if (currentWaitDialog != null) {
+ currentWaitDialog.setVisible(false);
+ }
+
+ try{
+ if (jfc == null) {
+ jfc = new JFileChooser();
+ }
+
+ jfc.setMultiSelectionEnabled(multi);
+ int ret = jfc.showOpenDialog(this);
+ if (ret == JFileChooser.APPROVE_OPTION) {
+ return jfc.getSelectedFiles();
+ } else {
+ return null;
+ }
+ } finally {
+ // And reshow it afterwards...
+ if (currentWaitDialog != null) {
+ showWaitDialogLater();
+ }
+ }
+ }
+
+ private class ClientListCellRenderer extends DefaultListCellRenderer {
+
+ @Override
+ public Component getListCellRendererComponent(JList<?> list, Object value, int index,
+ boolean isSelected, boolean cellHasFocus) {
+ ClientData cd = ((Client) value).getClientData();
+ String s = cd.getClientDescription() + " (pid " + cd.getPid() + ")";
+ return super.getListCellRendererComponent(list, s, index, isSelected, cellHasFocus);
+ }
+ }
+}