Merge "Allow obtaining BLE capabilities in BLE scan only mode." into mnc-dev
diff --git a/Android.mk b/Android.mk
index b71f08c..27dedd9 100644
--- a/Android.mk
+++ b/Android.mk
@@ -348,12 +348,6 @@
 	media/java/android/media/projection/IMediaProjectionCallback.aidl \
 	media/java/android/media/projection/IMediaProjectionManager.aidl \
 	media/java/android/media/projection/IMediaProjectionWatcherCallback.aidl \
-	media/java/android/media/routing/IMediaRouteService.aidl \
-	media/java/android/media/routing/IMediaRouteClientCallback.aidl \
-	media/java/android/media/routing/IMediaRouter.aidl \
-	media/java/android/media/routing/IMediaRouterDelegate.aidl \
-	media/java/android/media/routing/IMediaRouterRoutingCallback.aidl \
-	media/java/android/media/routing/IMediaRouterStateCallback.aidl \
 	media/java/android/media/session/IActiveSessionsListener.aidl \
 	media/java/android/media/session/ISessionController.aidl \
 	media/java/android/media/session/ISessionControllerCallback.aidl \
@@ -460,7 +454,6 @@
 	frameworks/base/location/java/android/location/Criteria.aidl \
 	frameworks/base/media/java/android/media/MediaMetadata.aidl \
 	frameworks/base/media/java/android/media/MediaDescription.aidl \
-	frameworks/base/media/java/android/media/routing/MediaRouteSelector.aidl \
 	frameworks/base/media/java/android/media/Rating.aidl \
 	frameworks/base/media/java/android/media/AudioAttributes.aidl \
 	frameworks/base/media/java/android/media/AudioFocusInfo.aidl \
diff --git a/CleanSpec.mk b/CleanSpec.mk
index c812b6a..667ed02 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -233,6 +233,7 @@
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/symbols/system/lib/libinputflingerhost.so $(PRODUCT_OUT)/symbols/system/lib64/libinputflingerhost.so)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/lib/libinputflingerhost.so $(PRODUCT_OUT)/obj_arm/lib/libinputflingerhost.so)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libinputflingerhost_intermediates $(PRODUCT_OUT)/obj_arm/SHARED_LIBRARIES/libinputflingerhost_intermediates)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/target/common/obj/framework.aidl)
 
 # ******************************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THIS BANNER
diff --git a/api/current.txt b/api/current.txt
index 07a4ff7..cdc2404 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -28,7 +28,6 @@
     field public static final java.lang.String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
     field public static final java.lang.String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
     field public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
-    field public static final java.lang.String BIND_MEDIA_ROUTE_SERVICE = "android.permission.BIND_MEDIA_ROUTE_SERVICE";
     field public static final java.lang.String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
     field public static final java.lang.String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
     field public static final java.lang.String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
@@ -1049,6 +1048,7 @@
     field public static final int screenOrientation = 16842782; // 0x101001e
     field public static final int screenSize = 16843466; // 0x10102ca
     field public static final int scrollHorizontally = 16843099; // 0x101015b
+    field public static final int scrollIndicators = 16844023; // 0x10104f7
     field public static final int scrollViewStyle = 16842880; // 0x1010080
     field public static final int scrollX = 16842962; // 0x10100d2
     field public static final int scrollY = 16842963; // 0x10100d3
@@ -1190,6 +1190,7 @@
     field public static final int summaryOff = 16843248; // 0x10101f0
     field public static final int summaryOn = 16843247; // 0x10101ef
     field public static final int supportsAssist = 16844012; // 0x10104ec
+    field public static final int supportsLaunchVoiceAssistFromKeyguard = 16844022; // 0x10104f6
     field public static final int supportsRtl = 16843695; // 0x10103af
     field public static final int supportsSwitchingToNextInputMethod = 16843755; // 0x10103eb
     field public static final int supportsUploading = 16843419; // 0x101029b
@@ -4495,6 +4496,7 @@
 
   public abstract class FragmentHostCallback extends android.app.FragmentContainer {
     ctor public FragmentHostCallback(android.content.Context, android.os.Handler, int);
+    method public void onAttachFragment(android.app.Fragment);
     method public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
     method public android.view.View onFindViewById(int);
     method public abstract E onGetHost();
@@ -5789,8 +5791,8 @@
     method public void setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean);
     method public boolean setDeviceInitializer(android.content.ComponentName, android.content.ComponentName, java.lang.String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
     method public void setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String);
+    method public boolean setKeyguardDisabled(android.content.ComponentName, boolean);
     method public void setKeyguardDisabledFeatures(android.content.ComponentName, int);
-    method public boolean setKeyguardEnabledState(android.content.ComponentName, boolean);
     method public void setLockTaskPackages(android.content.ComponentName, java.lang.String[]) throws java.lang.SecurityException;
     method public void setMasterVolumeMuted(android.content.ComponentName, boolean);
     method public void setMaximumFailedPasswordsForWipe(android.content.ComponentName, int);
@@ -5816,7 +5818,7 @@
     method public void setRestrictionsProvider(android.content.ComponentName, android.content.ComponentName);
     method public void setScreenCaptureDisabled(android.content.ComponentName, boolean);
     method public void setSecureSetting(android.content.ComponentName, java.lang.String, java.lang.String);
-    method public void setStatusBarEnabledState(android.content.ComponentName, boolean);
+    method public boolean setStatusBarDisabled(android.content.ComponentName, boolean);
     method public int setStorageEncryption(android.content.ComponentName, boolean);
     method public void setSystemUpdatePolicy(android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
     method public void setTrustAgentConfiguration(android.content.ComponentName, android.content.ComponentName, android.os.PersistableBundle);
@@ -8279,6 +8281,7 @@
     field public static final java.lang.String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
     field public static final java.lang.String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
     field public static final deprecated java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
+    field public static final java.lang.String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
     field public static final java.lang.String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
     field public static final java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
     field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
@@ -8290,6 +8293,7 @@
     field public static final java.lang.String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
     field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
     field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
+    field public static final java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
     field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
     field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
     field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
@@ -8322,6 +8326,7 @@
     field public static final java.lang.String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
     field public static final java.lang.String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
     field public static final java.lang.String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
+    field public static final java.lang.String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
     field public static final java.lang.String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
     field public static final java.lang.String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
     field public static final java.lang.String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
@@ -9827,6 +9832,7 @@
   public final class Resources.Theme {
     method public void applyStyle(int, boolean);
     method public void dump(int, java.lang.String, java.lang.String);
+    method public int getChangingConfigurations();
     method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException;
     method public android.content.res.Resources getResources();
     method public android.content.res.TypedArray obtainStyledAttributes(int[]);
@@ -15606,6 +15612,16 @@
     field public static final int HEVCMainTierLevel62 = 16777216; // 0x1000000
     field public static final int HEVCProfileMain = 1; // 0x1
     field public static final int HEVCProfileMain10 = 2; // 0x2
+    field public static final int MPEG2LevelH14 = 2; // 0x2
+    field public static final int MPEG2LevelHL = 3; // 0x3
+    field public static final int MPEG2LevelLL = 0; // 0x0
+    field public static final int MPEG2LevelML = 1; // 0x1
+    field public static final int MPEG2Profile422 = 2; // 0x2
+    field public static final int MPEG2ProfileHigh = 5; // 0x5
+    field public static final int MPEG2ProfileMain = 1; // 0x1
+    field public static final int MPEG2ProfileSNR = 3; // 0x3
+    field public static final int MPEG2ProfileSimple = 0; // 0x0
+    field public static final int MPEG2ProfileSpatial = 4; // 0x4
     field public static final int MPEG4Level0 = 1; // 0x1
     field public static final int MPEG4Level0b = 2; // 0x2
     field public static final int MPEG4Level1 = 4; // 0x4
@@ -17410,248 +17426,11 @@
 
 }
 
-package android.media.routing {
-
-  public final class MediaRouteSelector implements android.os.Parcelable {
-    method public boolean containsProtocol(java.lang.Class<?>);
-    method public boolean containsProtocol(java.lang.String);
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public int getOptionalFeatures();
-    method public java.util.List<java.lang.String> getOptionalProtocols();
-    method public int getRequiredFeatures();
-    method public java.util.List<java.lang.String> getRequiredProtocols();
-    method public java.lang.String getServicePackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.media.routing.MediaRouteSelector> CREATOR;
-  }
-
-  public static final class MediaRouteSelector.Builder {
-    ctor public MediaRouteSelector.Builder();
-    method public android.media.routing.MediaRouteSelector.Builder addOptionalProtocol(java.lang.Class<?>);
-    method public android.media.routing.MediaRouteSelector.Builder addOptionalProtocol(java.lang.String);
-    method public android.media.routing.MediaRouteSelector.Builder addRequiredProtocol(java.lang.Class<?>);
-    method public android.media.routing.MediaRouteSelector.Builder addRequiredProtocol(java.lang.String);
-    method public android.media.routing.MediaRouteSelector build();
-    method public android.media.routing.MediaRouteSelector.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouteSelector.Builder setOptionalFeatures(int);
-    method public android.media.routing.MediaRouteSelector.Builder setRequiredFeatures(int);
-    method public android.media.routing.MediaRouteSelector.Builder setServicePackageName(java.lang.String);
-  }
-
-  public abstract class MediaRouteService extends android.app.Service {
-    ctor public MediaRouteService();
-    method public android.media.routing.MediaRouter.ServiceMetadata getServiceMetadata();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.media.routing.MediaRouteService.ClientSession onCreateClientSession(android.media.routing.MediaRouteService.ClientInfo);
-    field public static final java.lang.String SERVICE_INTERFACE = "android.media.routing.MediaRouteService";
-  }
-
-  public static final class MediaRouteService.ClientInfo {
-    method public java.lang.String getPackageName();
-    method public int getUid();
-  }
-
-  public static abstract class MediaRouteService.ClientSession {
-    ctor public MediaRouteService.ClientSession();
-    method public abstract boolean onConnect(android.media.routing.MediaRouter.ConnectionRequest, android.media.routing.MediaRouteService.ConnectionCallback);
-    method public abstract void onDisconnect();
-    method public void onPauseStream();
-    method public void onRelease();
-    method public void onResumeStream();
-    method public abstract boolean onStartDiscovery(android.media.routing.MediaRouter.DiscoveryRequest, android.media.routing.MediaRouteService.DiscoveryCallback);
-    method public abstract void onStopDiscovery();
-  }
-
-  public final class MediaRouteService.ConnectionCallback {
-    method public void onConnected(android.media.routing.MediaRouter.ConnectionInfo);
-    method public void onConnectionFailed(int, java.lang.CharSequence, android.os.Bundle);
-    method public void onDisconnected();
-  }
-
-  public final class MediaRouteService.DiscoveryCallback {
-    method public void onDestinationFound(android.media.routing.MediaRouter.DestinationInfo, java.util.List<android.media.routing.MediaRouter.RouteInfo>);
-    method public void onDestinationLost(android.media.routing.MediaRouter.DestinationInfo);
-    method public void onDiscoveryFailed(int, java.lang.CharSequence, android.os.Bundle);
-  }
-
-  public final class MediaRouter {
-    ctor public MediaRouter(android.content.Context);
-    method public void addSelector(android.media.routing.MediaRouteSelector);
-    method public void clearSelectors();
-    method public android.media.routing.MediaRouter.Delegate createDelegate();
-    method public android.media.routing.MediaRouter.ConnectionInfo getConnection();
-    method public int getConnectionState();
-    method public java.util.List<android.media.routing.MediaRouter.DestinationInfo> getDiscoveredDestinations();
-    method public java.util.List<android.media.routing.MediaRouter.RouteInfo> getDiscoveredRoutes(android.media.routing.MediaRouter.DestinationInfo);
-    method public int getDiscoveryState();
-    method public android.media.AudioAttributes getPreferredAudioAttributes();
-    method public android.view.Display getPreferredPresentationDisplay();
-    method public android.media.VolumeProvider getPreferredVolumeProvider();
-    method public android.media.routing.MediaRouter.DestinationInfo getSelectedDestination();
-    method public android.media.routing.MediaRouter.RouteInfo getSelectedRoute();
-    method public java.util.List<android.media.routing.MediaRouteSelector> getSelectors();
-    method public boolean isReleased();
-    method public void pauseStream();
-    method public void release();
-    method public void removeSelector(android.media.routing.MediaRouteSelector);
-    method public void resumeStream();
-    method public void setRoutingCallback(android.media.routing.MediaRouter.RoutingCallback, android.os.Handler);
-    field public static final int CONNECTION_ERROR_ABORTED = 1; // 0x1
-    field public static final int CONNECTION_ERROR_BARGED = 7; // 0x7
-    field public static final int CONNECTION_ERROR_BROKEN = 6; // 0x6
-    field public static final int CONNECTION_ERROR_BUSY = 4; // 0x4
-    field public static final int CONNECTION_ERROR_TIMEOUT = 5; // 0x5
-    field public static final int CONNECTION_ERROR_UNAUTHORIZED = 2; // 0x2
-    field public static final int CONNECTION_ERROR_UNKNOWN = 0; // 0x0
-    field public static final int CONNECTION_ERROR_UNREACHABLE = 3; // 0x3
-    field public static final int CONNECTION_FLAG_BARGE = 1; // 0x1
-    field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
-    field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
-    field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
-    field public static final int DISCONNECTION_REASON_APPLICATION_REQUEST = 0; // 0x0
-    field public static final int DISCONNECTION_REASON_ERROR = 2; // 0x2
-    field public static final int DISCONNECTION_REASON_USER_REQUEST = 1; // 0x1
-    field public static final int DISCOVERY_ERROR_ABORTED = 1; // 0x1
-    field public static final int DISCOVERY_ERROR_NO_CONNECTIVITY = 2; // 0x2
-    field public static final int DISCOVERY_ERROR_UNKNOWN = 0; // 0x0
-    field public static final int DISCOVERY_FLAG_BACKGROUND = 1; // 0x1
-    field public static final int DISCOVERY_STATE_STARTED = 1; // 0x1
-    field public static final int DISCOVERY_STATE_STOPPED = 0; // 0x0
-    field public static final int ROUTE_FEATURE_LIVE_AUDIO = 1; // 0x1
-    field public static final int ROUTE_FEATURE_LIVE_VIDEO = 2; // 0x2
-  }
-
-  public static final class MediaRouter.ConnectionInfo {
-    method public android.media.AudioAttributes getAudioAttributes();
-    method public android.os.Bundle getExtras();
-    method public int getFeatures();
-    method public android.view.Display getPresentationDisplay();
-    method public android.os.IBinder getProtocolBinder(java.lang.String);
-    method public android.os.IBinder getProtocolBinder(int);
-    method public T getProtocolObject(java.lang.Class<T>);
-    method public java.util.List<java.lang.String> getProtocols();
-    method public android.media.routing.MediaRouter.RouteInfo getRoute();
-    method public android.media.VolumeProvider getVolumeProvider();
-  }
-
-  public static final class MediaRouter.ConnectionInfo.Builder {
-    ctor public MediaRouter.ConnectionInfo.Builder(android.media.routing.MediaRouter.RouteInfo);
-    method public android.media.routing.MediaRouter.ConnectionInfo build();
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setAudioAttributes(android.media.AudioAttributes);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setPresentationDisplay(android.view.Display);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setProtocolBinder(java.lang.String, android.os.IBinder);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setProtocolStub(java.lang.Class<?>, android.os.IInterface);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setVolumeProvider(android.media.VolumeProvider);
-  }
-
-  public static final class MediaRouter.ConnectionRequest {
-    method public android.os.Bundle getExtras();
-    method public int getFlags();
-    method public android.media.routing.MediaRouter.RouteInfo getRoute();
-    method public void setExtras(android.os.Bundle);
-    method public void setFlags(int);
-    method public void setRoute(android.media.routing.MediaRouter.RouteInfo);
-  }
-
-  public static final class MediaRouter.Delegate {
-    ctor public MediaRouter.Delegate();
-    method public void addStateCallback(android.media.routing.MediaRouter.StateCallback, android.os.Handler);
-    method public void connect(android.media.routing.MediaRouter.DestinationInfo, int);
-    method public void disconnect(int);
-    method public int getConnectionState();
-    method public java.util.List<android.media.routing.MediaRouter.DestinationInfo> getDiscoveredDestinations();
-    method public int getDiscoveryState();
-    method public android.media.routing.MediaRouter.DestinationInfo getSelectedDestination();
-    method public boolean isReleased();
-    method public void removeStateCallback(android.media.routing.MediaRouter.StateCallback);
-    method public void startDiscovery(int);
-    method public void stopDiscovery();
-  }
-
-  public static final class MediaRouter.DestinationInfo {
-    method public java.lang.CharSequence getDescription();
-    method public android.os.Bundle getExtras();
-    method public int getIconResourceId();
-    method public java.lang.String getId();
-    method public java.lang.CharSequence getName();
-    method public android.media.routing.MediaRouter.ServiceMetadata getServiceMetadata();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-  }
-
-  public static final class MediaRouter.DestinationInfo.Builder {
-    ctor public MediaRouter.DestinationInfo.Builder(java.lang.String, android.media.routing.MediaRouter.ServiceMetadata, java.lang.CharSequence);
-    method public android.media.routing.MediaRouter.DestinationInfo build();
-    method public android.media.routing.MediaRouter.DestinationInfo.Builder setDescription(java.lang.CharSequence);
-    method public android.media.routing.MediaRouter.DestinationInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouter.DestinationInfo.Builder setIconResourceId(int);
-  }
-
-  public static final class MediaRouter.DiscoveryRequest {
-    method public int getFlags();
-    method public java.util.List<android.media.routing.MediaRouteSelector> getSelectors();
-    method public void setFlags(int);
-    method public void setSelectors(java.util.List<android.media.routing.MediaRouteSelector>);
-  }
-
-  public static final class MediaRouter.RouteInfo {
-    method public android.media.routing.MediaRouter.DestinationInfo getDestination();
-    method public android.os.Bundle getExtras();
-    method public int getFeatures();
-    method public java.lang.String getId();
-    method public java.util.List<java.lang.String> getProtocols();
-    method public android.media.routing.MediaRouteSelector getSelector();
-  }
-
-  public static final class MediaRouter.RouteInfo.Builder {
-    ctor public MediaRouter.RouteInfo.Builder(java.lang.String, android.media.routing.MediaRouter.DestinationInfo, android.media.routing.MediaRouteSelector);
-    method public android.media.routing.MediaRouter.RouteInfo.Builder addProtocol(java.lang.Class<T>);
-    method public android.media.routing.MediaRouter.RouteInfo.Builder addProtocol(java.lang.String);
-    method public android.media.routing.MediaRouter.RouteInfo build();
-    method public android.media.routing.MediaRouter.RouteInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouter.RouteInfo.Builder setFeatures(int);
-  }
-
-  public static abstract class MediaRouter.RoutingCallback extends android.media.routing.MediaRouter.StateCallback {
-    ctor public MediaRouter.RoutingCallback();
-    method public boolean onPrepareConnectionRequest(android.media.routing.MediaRouter.ConnectionRequest, android.media.routing.MediaRouter.DestinationInfo, java.util.List<android.media.routing.MediaRouter.RouteInfo>);
-    method public boolean onPrepareDiscoveryRequest(android.media.routing.MediaRouter.DiscoveryRequest, java.util.List<android.media.routing.MediaRouteSelector>);
-  }
-
-  public static final class MediaRouter.ServiceMetadata {
-    method public android.content.ComponentName getComponentName();
-    method public android.graphics.drawable.Drawable getIcon(android.content.pm.PackageManager);
-    method public java.lang.CharSequence getLabel(android.content.pm.PackageManager);
-    method public java.lang.String getPackageName();
-    method public android.content.pm.ServiceInfo getService();
-  }
-
-  public static abstract class MediaRouter.StateCallback {
-    ctor public MediaRouter.StateCallback();
-    method public void onConnected();
-    method public void onConnecting();
-    method public void onConnectionFailed(int, java.lang.CharSequence, android.os.Bundle);
-    method public void onConnectionStateChanged(int);
-    method public void onDestinationFound(android.media.routing.MediaRouter.DestinationInfo);
-    method public void onDestinationLost(android.media.routing.MediaRouter.DestinationInfo);
-    method public void onDisconnected();
-    method public void onDiscoveryFailed(int, java.lang.CharSequence, android.os.Bundle);
-    method public void onDiscoveryStarted();
-    method public void onDiscoveryStateChanged(int);
-    method public void onDiscoveryStopped();
-    method public void onReleased();
-    method public void onSelectedDestinationChanged(android.media.routing.MediaRouter.DestinationInfo);
-  }
-
-}
-
 package android.media.session {
 
   public final class MediaController {
     ctor public MediaController(android.content.Context, android.media.session.MediaSession.Token);
     method public void adjustVolume(int, int);
-    method public android.media.routing.MediaRouter.Delegate createMediaRouterDelegate();
     method public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
     method public android.os.Bundle getExtras();
     method public long getFlags();
@@ -17725,7 +17504,6 @@
     method public void setExtras(android.os.Bundle);
     method public void setFlags(int);
     method public void setMediaButtonReceiver(android.app.PendingIntent);
-    method public void setMediaRouter(android.media.routing.MediaRouter);
     method public void setMetadata(android.media.MediaMetadata);
     method public void setPlaybackState(android.media.session.PlaybackState);
     method public void setPlaybackToLocal(android.media.AudioAttributes);
@@ -28728,6 +28506,53 @@
   public abstract class KeyStoreKeyProperties {
   }
 
+  public static abstract class KeyStoreKeyProperties.Algorithm {
+    field public static final java.lang.String AES = "AES";
+    field public static final java.lang.String EC = "EC";
+    field public static final java.lang.String HMAC_SHA1 = "HmacSHA1";
+    field public static final java.lang.String HMAC_SHA224 = "HmacSHA224";
+    field public static final java.lang.String HMAC_SHA256 = "HmacSHA256";
+    field public static final java.lang.String HMAC_SHA384 = "HmacSHA384";
+    field public static final java.lang.String HMAC_SHA512 = "HmacSHA512";
+    field public static final java.lang.String RSA = "RSA";
+  }
+
+  public static abstract class KeyStoreKeyProperties.AlgorithmEnum implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class KeyStoreKeyProperties.BlockMode {
+    field public static final java.lang.String CBC = "CBC";
+    field public static final java.lang.String CTR = "CTR";
+    field public static final java.lang.String ECB = "ECB";
+    field public static final java.lang.String GCM = "GCM";
+  }
+
+  public static abstract class KeyStoreKeyProperties.BlockModeEnum implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class KeyStoreKeyProperties.Digest {
+    field public static final java.lang.String MD5 = "MD5";
+    field public static final java.lang.String NONE = "NONE";
+    field public static final java.lang.String SHA1 = "SHA-1";
+    field public static final java.lang.String SHA224 = "SHA-224";
+    field public static final java.lang.String SHA256 = "SHA-256";
+    field public static final java.lang.String SHA384 = "SHA-384";
+    field public static final java.lang.String SHA512 = "SHA-512";
+  }
+
+  public static abstract class KeyStoreKeyProperties.DigestEnum implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class KeyStoreKeyProperties.EncryptionPadding {
+    field public static final java.lang.String NONE = "NoPadding";
+    field public static final java.lang.String PKCS7 = "PKCS7Padding";
+    field public static final java.lang.String RSA_OAEP = "OAEPPadding";
+    field public static final java.lang.String RSA_PKCS1 = "PKCS1Padding";
+  }
+
+  public static abstract class KeyStoreKeyProperties.EncryptionPaddingEnum implements java.lang.annotation.Annotation {
+  }
+
   public static abstract class KeyStoreKeyProperties.Origin {
     field public static final int GENERATED = 1; // 0x1
     field public static final int IMPORTED = 2; // 0x2
@@ -28747,6 +28572,14 @@
   public static abstract class KeyStoreKeyProperties.PurposeEnum implements java.lang.annotation.Annotation {
   }
 
+  public static abstract class KeyStoreKeyProperties.SignaturePadding {
+    field public static final java.lang.String RSA_PKCS1 = "PKCS1";
+    field public static final java.lang.String RSA_PSS = "PSS";
+  }
+
+  public static abstract class KeyStoreKeyProperties.SignaturePaddingEnum implements java.lang.annotation.Annotation {
+  }
+
   public class KeyStoreKeySpec implements java.security.spec.KeySpec {
     method public java.lang.String[] getBlockModes();
     method public java.lang.String[] getDigests();
@@ -29141,6 +28974,7 @@
     method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(java.lang.String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
     method public static boolean isActiveService(android.content.Context, android.content.ComponentName);
     method public android.os.IBinder onBind(android.content.Intent);
+    method public void onLaunchVoiceAssistFromKeyguard();
     method public void onReady();
     method public void onShutdown();
     method public void showSession(android.os.Bundle, int);
@@ -30432,7 +30266,7 @@
     method public void handleCallSessionEvent(int);
     method public abstract void onRequestCameraCapabilities();
     method public abstract void onRequestConnectionDataUsage();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile);
+    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
     method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
     method public abstract void onSetCamera(java.lang.String);
     method public abstract void onSetDeviceOrientation(int);
@@ -34172,14 +34006,6 @@
   }
 
   public deprecated class FloatMath {
-    method public static float ceil(float);
-    method public static float cos(float);
-    method public static float exp(float);
-    method public static float floor(float);
-    method public static float hypot(float, float);
-    method public static float pow(float, float);
-    method public static float sin(float);
-    method public static float sqrt(float);
   }
 
   public final class JsonReader implements java.io.Closeable {
@@ -36186,6 +36012,7 @@
     method public int getScrollBarFadeDuration();
     method public int getScrollBarSize();
     method public int getScrollBarStyle();
+    method public int getScrollIndicators();
     method public final int getScrollX();
     method public final int getScrollY();
     method public int getSolidColor();
@@ -36267,6 +36094,7 @@
     method public boolean isSaveEnabled();
     method public boolean isSaveFromParentEnabled();
     method public boolean isScrollContainer();
+    method public boolean isScrollIndicatorEnabled(int);
     method public boolean isScrollbarFadingEnabled();
     method public boolean isSelected();
     method public boolean isShown();
@@ -36466,6 +36294,8 @@
     method public void setScrollBarSize(int);
     method public void setScrollBarStyle(int);
     method public void setScrollContainer(boolean);
+    method public void setScrollIndicators(int);
+    method public void setScrollIndicators(int, int);
     method public void setScrollX(int);
     method public void setScrollY(int);
     method public void setScrollbarFadingEnabled(boolean);
@@ -36591,6 +36421,12 @@
     field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
     field public static final int SCROLL_AXIS_NONE = 0; // 0x0
     field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
+    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
+    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
+    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
+    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
+    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
+    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
     field protected static final int[] SELECTED_STATE_SET;
     field protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
     field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000
@@ -40633,6 +40469,7 @@
     method public void setSoftInputMode(int);
     method public void setVerticalOffset(int);
     method public void setWidth(int);
+    method public void setWindowLayoutType(int);
     method public void show();
     field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
     field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
diff --git a/api/removed.txt b/api/removed.txt
index 5e77e15..0046a70 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -108,6 +108,21 @@
 
 }
 
+package android.util {
+
+  public deprecated class FloatMath {
+    method public static float ceil(float);
+    method public static float cos(float);
+    method public static float exp(float);
+    method public static float floor(float);
+    method public static float hypot(float, float);
+    method public static float pow(float, float);
+    method public static float sin(float);
+    method public static float sqrt(float);
+  }
+
+}
+
 package android.view {
 
   public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
diff --git a/api/system-current.txt b/api/system-current.txt
index 2880446..7012773 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -39,7 +39,6 @@
     field public static final java.lang.String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
     field public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
     field public static final java.lang.String BIND_KEYGUARD_APPWIDGET = "android.permission.BIND_KEYGUARD_APPWIDGET";
-    field public static final java.lang.String BIND_MEDIA_ROUTE_SERVICE = "android.permission.BIND_MEDIA_ROUTE_SERVICE";
     field public static final java.lang.String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
     field public static final java.lang.String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
     field public static final java.lang.String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
@@ -110,6 +109,7 @@
     field public static final java.lang.String INTERNET = "android.permission.INTERNET";
     field public static final java.lang.String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
     field public static final java.lang.String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
+    field public static final java.lang.String KILL_UID = "android.permission.KILL_UID";
     field public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
     field public static final java.lang.String LOOP_RADIO = "android.permission.LOOP_RADIO";
     field public static final java.lang.String MANAGE_ACCOUNTS = "android.permission.MANAGE_ACCOUNTS";
@@ -1120,6 +1120,7 @@
     field public static final int screenOrientation = 16842782; // 0x101001e
     field public static final int screenSize = 16843466; // 0x10102ca
     field public static final int scrollHorizontally = 16843099; // 0x101015b
+    field public static final int scrollIndicators = 16844023; // 0x10104f7
     field public static final int scrollViewStyle = 16842880; // 0x1010080
     field public static final int scrollX = 16842962; // 0x10100d2
     field public static final int scrollY = 16842963; // 0x10100d3
@@ -1265,6 +1266,7 @@
     field public static final int summaryOff = 16843248; // 0x10101f0
     field public static final int summaryOn = 16843247; // 0x10101ef
     field public static final int supportsAssist = 16844012; // 0x10104ec
+    field public static final int supportsLaunchVoiceAssistFromKeyguard = 16844022; // 0x10104f6
     field public static final int supportsRtl = 16843695; // 0x10103af
     field public static final int supportsSwitchingToNextInputMethod = 16843755; // 0x10103eb
     field public static final int supportsUploading = 16843419; // 0x101029b
@@ -3670,6 +3672,7 @@
     method public static boolean isRunningInTestHarness();
     method public static boolean isUserAMonkey();
     method public void killBackgroundProcesses(java.lang.String);
+    method public void killUid(int, java.lang.String);
     method public void moveTaskToFront(int, int);
     method public void moveTaskToFront(int, int, android.os.Bundle);
     method public deprecated void restartPackage(java.lang.String);
@@ -4585,6 +4588,7 @@
 
   public abstract class FragmentHostCallback extends android.app.FragmentContainer {
     ctor public FragmentHostCallback(android.content.Context, android.os.Handler, int);
+    method public void onAttachFragment(android.app.Fragment);
     method public void onDump(java.lang.String, java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
     method public android.view.View onFindViewById(int);
     method public abstract E onGetHost();
@@ -5893,8 +5897,8 @@
     method public void setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean);
     method public boolean setDeviceInitializer(android.content.ComponentName, android.content.ComponentName, java.lang.String) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException;
     method public void setGlobalSetting(android.content.ComponentName, java.lang.String, java.lang.String);
+    method public boolean setKeyguardDisabled(android.content.ComponentName, boolean);
     method public void setKeyguardDisabledFeatures(android.content.ComponentName, int);
-    method public boolean setKeyguardEnabledState(android.content.ComponentName, boolean);
     method public void setLockTaskPackages(android.content.ComponentName, java.lang.String[]) throws java.lang.SecurityException;
     method public void setMasterVolumeMuted(android.content.ComponentName, boolean);
     method public void setMaximumFailedPasswordsForWipe(android.content.ComponentName, int);
@@ -5920,7 +5924,7 @@
     method public void setRestrictionsProvider(android.content.ComponentName, android.content.ComponentName);
     method public void setScreenCaptureDisabled(android.content.ComponentName, boolean);
     method public void setSecureSetting(android.content.ComponentName, java.lang.String, java.lang.String);
-    method public void setStatusBarEnabledState(android.content.ComponentName, boolean);
+    method public boolean setStatusBarDisabled(android.content.ComponentName, boolean);
     method public int setStorageEncryption(android.content.ComponentName, boolean);
     method public void setSystemUpdatePolicy(android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
     method public void setTrustAgentConfiguration(android.content.ComponentName, android.content.ComponentName, android.os.PersistableBundle);
@@ -8503,6 +8507,7 @@
     field public static final java.lang.String EXTRA_ALARM_COUNT = "android.intent.extra.ALARM_COUNT";
     field public static final java.lang.String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE";
     field public static final deprecated java.lang.String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE";
+    field public static final java.lang.String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
     field public static final java.lang.String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT";
     field public static final java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD";
     field public static final java.lang.String EXTRA_ASSIST_PACKAGE = "android.intent.extra.ASSIST_PACKAGE";
@@ -8514,6 +8519,7 @@
     field public static final java.lang.String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
     field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
     field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
+    field public static final java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
     field public static final java.lang.String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
     field public static final java.lang.String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
     field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
@@ -8549,6 +8555,7 @@
     field public static final java.lang.String EXTRA_RESTRICTIONS_BUNDLE = "android.intent.extra.restrictions_bundle";
     field public static final java.lang.String EXTRA_RESTRICTIONS_INTENT = "android.intent.extra.restrictions_intent";
     field public static final java.lang.String EXTRA_RESTRICTIONS_LIST = "android.intent.extra.restrictions_list";
+    field public static final java.lang.String EXTRA_RESULT_RECEIVER = "android.intent.extra.RESULT_RECEIVER";
     field public static final java.lang.String EXTRA_RETURN_RESULT = "android.intent.extra.RETURN_RESULT";
     field public static final java.lang.String EXTRA_SHORTCUT_ICON = "android.intent.extra.shortcut.ICON";
     field public static final java.lang.String EXTRA_SHORTCUT_ICON_RESOURCE = "android.intent.extra.shortcut.ICON_RESOURCE";
@@ -10119,6 +10126,7 @@
   public final class Resources.Theme {
     method public void applyStyle(int, boolean);
     method public void dump(int, java.lang.String, java.lang.String);
+    method public int getChangingConfigurations();
     method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException;
     method public android.content.res.Resources getResources();
     method public android.content.res.TypedArray obtainStyledAttributes(int[]);
@@ -16826,6 +16834,16 @@
     field public static final int HEVCMainTierLevel62 = 16777216; // 0x1000000
     field public static final int HEVCProfileMain = 1; // 0x1
     field public static final int HEVCProfileMain10 = 2; // 0x2
+    field public static final int MPEG2LevelH14 = 2; // 0x2
+    field public static final int MPEG2LevelHL = 3; // 0x3
+    field public static final int MPEG2LevelLL = 0; // 0x0
+    field public static final int MPEG2LevelML = 1; // 0x1
+    field public static final int MPEG2Profile422 = 2; // 0x2
+    field public static final int MPEG2ProfileHigh = 5; // 0x5
+    field public static final int MPEG2ProfileMain = 1; // 0x1
+    field public static final int MPEG2ProfileSNR = 3; // 0x3
+    field public static final int MPEG2ProfileSimple = 0; // 0x0
+    field public static final int MPEG2ProfileSpatial = 4; // 0x4
     field public static final int MPEG4Level0 = 1; // 0x1
     field public static final int MPEG4Level0b = 2; // 0x2
     field public static final int MPEG4Level1 = 4; // 0x4
@@ -18701,248 +18719,11 @@
 
 }
 
-package android.media.routing {
-
-  public final class MediaRouteSelector implements android.os.Parcelable {
-    method public boolean containsProtocol(java.lang.Class<?>);
-    method public boolean containsProtocol(java.lang.String);
-    method public int describeContents();
-    method public android.os.Bundle getExtras();
-    method public int getOptionalFeatures();
-    method public java.util.List<java.lang.String> getOptionalProtocols();
-    method public int getRequiredFeatures();
-    method public java.util.List<java.lang.String> getRequiredProtocols();
-    method public java.lang.String getServicePackageName();
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.media.routing.MediaRouteSelector> CREATOR;
-  }
-
-  public static final class MediaRouteSelector.Builder {
-    ctor public MediaRouteSelector.Builder();
-    method public android.media.routing.MediaRouteSelector.Builder addOptionalProtocol(java.lang.Class<?>);
-    method public android.media.routing.MediaRouteSelector.Builder addOptionalProtocol(java.lang.String);
-    method public android.media.routing.MediaRouteSelector.Builder addRequiredProtocol(java.lang.Class<?>);
-    method public android.media.routing.MediaRouteSelector.Builder addRequiredProtocol(java.lang.String);
-    method public android.media.routing.MediaRouteSelector build();
-    method public android.media.routing.MediaRouteSelector.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouteSelector.Builder setOptionalFeatures(int);
-    method public android.media.routing.MediaRouteSelector.Builder setRequiredFeatures(int);
-    method public android.media.routing.MediaRouteSelector.Builder setServicePackageName(java.lang.String);
-  }
-
-  public abstract class MediaRouteService extends android.app.Service {
-    ctor public MediaRouteService();
-    method public android.media.routing.MediaRouter.ServiceMetadata getServiceMetadata();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract android.media.routing.MediaRouteService.ClientSession onCreateClientSession(android.media.routing.MediaRouteService.ClientInfo);
-    field public static final java.lang.String SERVICE_INTERFACE = "android.media.routing.MediaRouteService";
-  }
-
-  public static final class MediaRouteService.ClientInfo {
-    method public java.lang.String getPackageName();
-    method public int getUid();
-  }
-
-  public static abstract class MediaRouteService.ClientSession {
-    ctor public MediaRouteService.ClientSession();
-    method public abstract boolean onConnect(android.media.routing.MediaRouter.ConnectionRequest, android.media.routing.MediaRouteService.ConnectionCallback);
-    method public abstract void onDisconnect();
-    method public void onPauseStream();
-    method public void onRelease();
-    method public void onResumeStream();
-    method public abstract boolean onStartDiscovery(android.media.routing.MediaRouter.DiscoveryRequest, android.media.routing.MediaRouteService.DiscoveryCallback);
-    method public abstract void onStopDiscovery();
-  }
-
-  public final class MediaRouteService.ConnectionCallback {
-    method public void onConnected(android.media.routing.MediaRouter.ConnectionInfo);
-    method public void onConnectionFailed(int, java.lang.CharSequence, android.os.Bundle);
-    method public void onDisconnected();
-  }
-
-  public final class MediaRouteService.DiscoveryCallback {
-    method public void onDestinationFound(android.media.routing.MediaRouter.DestinationInfo, java.util.List<android.media.routing.MediaRouter.RouteInfo>);
-    method public void onDestinationLost(android.media.routing.MediaRouter.DestinationInfo);
-    method public void onDiscoveryFailed(int, java.lang.CharSequence, android.os.Bundle);
-  }
-
-  public final class MediaRouter {
-    ctor public MediaRouter(android.content.Context);
-    method public void addSelector(android.media.routing.MediaRouteSelector);
-    method public void clearSelectors();
-    method public android.media.routing.MediaRouter.Delegate createDelegate();
-    method public android.media.routing.MediaRouter.ConnectionInfo getConnection();
-    method public int getConnectionState();
-    method public java.util.List<android.media.routing.MediaRouter.DestinationInfo> getDiscoveredDestinations();
-    method public java.util.List<android.media.routing.MediaRouter.RouteInfo> getDiscoveredRoutes(android.media.routing.MediaRouter.DestinationInfo);
-    method public int getDiscoveryState();
-    method public android.media.AudioAttributes getPreferredAudioAttributes();
-    method public android.view.Display getPreferredPresentationDisplay();
-    method public android.media.VolumeProvider getPreferredVolumeProvider();
-    method public android.media.routing.MediaRouter.DestinationInfo getSelectedDestination();
-    method public android.media.routing.MediaRouter.RouteInfo getSelectedRoute();
-    method public java.util.List<android.media.routing.MediaRouteSelector> getSelectors();
-    method public boolean isReleased();
-    method public void pauseStream();
-    method public void release();
-    method public void removeSelector(android.media.routing.MediaRouteSelector);
-    method public void resumeStream();
-    method public void setRoutingCallback(android.media.routing.MediaRouter.RoutingCallback, android.os.Handler);
-    field public static final int CONNECTION_ERROR_ABORTED = 1; // 0x1
-    field public static final int CONNECTION_ERROR_BARGED = 7; // 0x7
-    field public static final int CONNECTION_ERROR_BROKEN = 6; // 0x6
-    field public static final int CONNECTION_ERROR_BUSY = 4; // 0x4
-    field public static final int CONNECTION_ERROR_TIMEOUT = 5; // 0x5
-    field public static final int CONNECTION_ERROR_UNAUTHORIZED = 2; // 0x2
-    field public static final int CONNECTION_ERROR_UNKNOWN = 0; // 0x0
-    field public static final int CONNECTION_ERROR_UNREACHABLE = 3; // 0x3
-    field public static final int CONNECTION_FLAG_BARGE = 1; // 0x1
-    field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
-    field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
-    field public static final int CONNECTION_STATE_DISCONNECTED = 0; // 0x0
-    field public static final int DISCONNECTION_REASON_APPLICATION_REQUEST = 0; // 0x0
-    field public static final int DISCONNECTION_REASON_ERROR = 2; // 0x2
-    field public static final int DISCONNECTION_REASON_USER_REQUEST = 1; // 0x1
-    field public static final int DISCOVERY_ERROR_ABORTED = 1; // 0x1
-    field public static final int DISCOVERY_ERROR_NO_CONNECTIVITY = 2; // 0x2
-    field public static final int DISCOVERY_ERROR_UNKNOWN = 0; // 0x0
-    field public static final int DISCOVERY_FLAG_BACKGROUND = 1; // 0x1
-    field public static final int DISCOVERY_STATE_STARTED = 1; // 0x1
-    field public static final int DISCOVERY_STATE_STOPPED = 0; // 0x0
-    field public static final int ROUTE_FEATURE_LIVE_AUDIO = 1; // 0x1
-    field public static final int ROUTE_FEATURE_LIVE_VIDEO = 2; // 0x2
-  }
-
-  public static final class MediaRouter.ConnectionInfo {
-    method public android.media.AudioAttributes getAudioAttributes();
-    method public android.os.Bundle getExtras();
-    method public int getFeatures();
-    method public android.view.Display getPresentationDisplay();
-    method public android.os.IBinder getProtocolBinder(java.lang.String);
-    method public android.os.IBinder getProtocolBinder(int);
-    method public T getProtocolObject(java.lang.Class<T>);
-    method public java.util.List<java.lang.String> getProtocols();
-    method public android.media.routing.MediaRouter.RouteInfo getRoute();
-    method public android.media.VolumeProvider getVolumeProvider();
-  }
-
-  public static final class MediaRouter.ConnectionInfo.Builder {
-    ctor public MediaRouter.ConnectionInfo.Builder(android.media.routing.MediaRouter.RouteInfo);
-    method public android.media.routing.MediaRouter.ConnectionInfo build();
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setAudioAttributes(android.media.AudioAttributes);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setPresentationDisplay(android.view.Display);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setProtocolBinder(java.lang.String, android.os.IBinder);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setProtocolStub(java.lang.Class<?>, android.os.IInterface);
-    method public android.media.routing.MediaRouter.ConnectionInfo.Builder setVolumeProvider(android.media.VolumeProvider);
-  }
-
-  public static final class MediaRouter.ConnectionRequest {
-    method public android.os.Bundle getExtras();
-    method public int getFlags();
-    method public android.media.routing.MediaRouter.RouteInfo getRoute();
-    method public void setExtras(android.os.Bundle);
-    method public void setFlags(int);
-    method public void setRoute(android.media.routing.MediaRouter.RouteInfo);
-  }
-
-  public static final class MediaRouter.Delegate {
-    ctor public MediaRouter.Delegate();
-    method public void addStateCallback(android.media.routing.MediaRouter.StateCallback, android.os.Handler);
-    method public void connect(android.media.routing.MediaRouter.DestinationInfo, int);
-    method public void disconnect(int);
-    method public int getConnectionState();
-    method public java.util.List<android.media.routing.MediaRouter.DestinationInfo> getDiscoveredDestinations();
-    method public int getDiscoveryState();
-    method public android.media.routing.MediaRouter.DestinationInfo getSelectedDestination();
-    method public boolean isReleased();
-    method public void removeStateCallback(android.media.routing.MediaRouter.StateCallback);
-    method public void startDiscovery(int);
-    method public void stopDiscovery();
-  }
-
-  public static final class MediaRouter.DestinationInfo {
-    method public java.lang.CharSequence getDescription();
-    method public android.os.Bundle getExtras();
-    method public int getIconResourceId();
-    method public java.lang.String getId();
-    method public java.lang.CharSequence getName();
-    method public android.media.routing.MediaRouter.ServiceMetadata getServiceMetadata();
-    method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
-  }
-
-  public static final class MediaRouter.DestinationInfo.Builder {
-    ctor public MediaRouter.DestinationInfo.Builder(java.lang.String, android.media.routing.MediaRouter.ServiceMetadata, java.lang.CharSequence);
-    method public android.media.routing.MediaRouter.DestinationInfo build();
-    method public android.media.routing.MediaRouter.DestinationInfo.Builder setDescription(java.lang.CharSequence);
-    method public android.media.routing.MediaRouter.DestinationInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouter.DestinationInfo.Builder setIconResourceId(int);
-  }
-
-  public static final class MediaRouter.DiscoveryRequest {
-    method public int getFlags();
-    method public java.util.List<android.media.routing.MediaRouteSelector> getSelectors();
-    method public void setFlags(int);
-    method public void setSelectors(java.util.List<android.media.routing.MediaRouteSelector>);
-  }
-
-  public static final class MediaRouter.RouteInfo {
-    method public android.media.routing.MediaRouter.DestinationInfo getDestination();
-    method public android.os.Bundle getExtras();
-    method public int getFeatures();
-    method public java.lang.String getId();
-    method public java.util.List<java.lang.String> getProtocols();
-    method public android.media.routing.MediaRouteSelector getSelector();
-  }
-
-  public static final class MediaRouter.RouteInfo.Builder {
-    ctor public MediaRouter.RouteInfo.Builder(java.lang.String, android.media.routing.MediaRouter.DestinationInfo, android.media.routing.MediaRouteSelector);
-    method public android.media.routing.MediaRouter.RouteInfo.Builder addProtocol(java.lang.Class<T>);
-    method public android.media.routing.MediaRouter.RouteInfo.Builder addProtocol(java.lang.String);
-    method public android.media.routing.MediaRouter.RouteInfo build();
-    method public android.media.routing.MediaRouter.RouteInfo.Builder setExtras(android.os.Bundle);
-    method public android.media.routing.MediaRouter.RouteInfo.Builder setFeatures(int);
-  }
-
-  public static abstract class MediaRouter.RoutingCallback extends android.media.routing.MediaRouter.StateCallback {
-    ctor public MediaRouter.RoutingCallback();
-    method public boolean onPrepareConnectionRequest(android.media.routing.MediaRouter.ConnectionRequest, android.media.routing.MediaRouter.DestinationInfo, java.util.List<android.media.routing.MediaRouter.RouteInfo>);
-    method public boolean onPrepareDiscoveryRequest(android.media.routing.MediaRouter.DiscoveryRequest, java.util.List<android.media.routing.MediaRouteSelector>);
-  }
-
-  public static final class MediaRouter.ServiceMetadata {
-    method public android.content.ComponentName getComponentName();
-    method public android.graphics.drawable.Drawable getIcon(android.content.pm.PackageManager);
-    method public java.lang.CharSequence getLabel(android.content.pm.PackageManager);
-    method public java.lang.String getPackageName();
-    method public android.content.pm.ServiceInfo getService();
-  }
-
-  public static abstract class MediaRouter.StateCallback {
-    ctor public MediaRouter.StateCallback();
-    method public void onConnected();
-    method public void onConnecting();
-    method public void onConnectionFailed(int, java.lang.CharSequence, android.os.Bundle);
-    method public void onConnectionStateChanged(int);
-    method public void onDestinationFound(android.media.routing.MediaRouter.DestinationInfo);
-    method public void onDestinationLost(android.media.routing.MediaRouter.DestinationInfo);
-    method public void onDisconnected();
-    method public void onDiscoveryFailed(int, java.lang.CharSequence, android.os.Bundle);
-    method public void onDiscoveryStarted();
-    method public void onDiscoveryStateChanged(int);
-    method public void onDiscoveryStopped();
-    method public void onReleased();
-    method public void onSelectedDestinationChanged(android.media.routing.MediaRouter.DestinationInfo);
-  }
-
-}
-
 package android.media.session {
 
   public final class MediaController {
     ctor public MediaController(android.content.Context, android.media.session.MediaSession.Token);
     method public void adjustVolume(int, int);
-    method public android.media.routing.MediaRouter.Delegate createMediaRouterDelegate();
     method public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
     method public android.os.Bundle getExtras();
     method public long getFlags();
@@ -19016,7 +18797,6 @@
     method public void setExtras(android.os.Bundle);
     method public void setFlags(int);
     method public void setMediaButtonReceiver(android.app.PendingIntent);
-    method public void setMediaRouter(android.media.routing.MediaRouter);
     method public void setMetadata(android.media.MediaMetadata);
     method public void setPlaybackState(android.media.session.PlaybackState);
     method public void setPlaybackToLocal(android.media.AudioAttributes);
@@ -30740,6 +30520,53 @@
   public abstract class KeyStoreKeyProperties {
   }
 
+  public static abstract class KeyStoreKeyProperties.Algorithm {
+    field public static final java.lang.String AES = "AES";
+    field public static final java.lang.String EC = "EC";
+    field public static final java.lang.String HMAC_SHA1 = "HmacSHA1";
+    field public static final java.lang.String HMAC_SHA224 = "HmacSHA224";
+    field public static final java.lang.String HMAC_SHA256 = "HmacSHA256";
+    field public static final java.lang.String HMAC_SHA384 = "HmacSHA384";
+    field public static final java.lang.String HMAC_SHA512 = "HmacSHA512";
+    field public static final java.lang.String RSA = "RSA";
+  }
+
+  public static abstract class KeyStoreKeyProperties.AlgorithmEnum implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class KeyStoreKeyProperties.BlockMode {
+    field public static final java.lang.String CBC = "CBC";
+    field public static final java.lang.String CTR = "CTR";
+    field public static final java.lang.String ECB = "ECB";
+    field public static final java.lang.String GCM = "GCM";
+  }
+
+  public static abstract class KeyStoreKeyProperties.BlockModeEnum implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class KeyStoreKeyProperties.Digest {
+    field public static final java.lang.String MD5 = "MD5";
+    field public static final java.lang.String NONE = "NONE";
+    field public static final java.lang.String SHA1 = "SHA-1";
+    field public static final java.lang.String SHA224 = "SHA-224";
+    field public static final java.lang.String SHA256 = "SHA-256";
+    field public static final java.lang.String SHA384 = "SHA-384";
+    field public static final java.lang.String SHA512 = "SHA-512";
+  }
+
+  public static abstract class KeyStoreKeyProperties.DigestEnum implements java.lang.annotation.Annotation {
+  }
+
+  public static abstract class KeyStoreKeyProperties.EncryptionPadding {
+    field public static final java.lang.String NONE = "NoPadding";
+    field public static final java.lang.String PKCS7 = "PKCS7Padding";
+    field public static final java.lang.String RSA_OAEP = "OAEPPadding";
+    field public static final java.lang.String RSA_PKCS1 = "PKCS1Padding";
+  }
+
+  public static abstract class KeyStoreKeyProperties.EncryptionPaddingEnum implements java.lang.annotation.Annotation {
+  }
+
   public static abstract class KeyStoreKeyProperties.Origin {
     field public static final int GENERATED = 1; // 0x1
     field public static final int IMPORTED = 2; // 0x2
@@ -30759,6 +30586,14 @@
   public static abstract class KeyStoreKeyProperties.PurposeEnum implements java.lang.annotation.Annotation {
   }
 
+  public static abstract class KeyStoreKeyProperties.SignaturePadding {
+    field public static final java.lang.String RSA_PKCS1 = "PKCS1";
+    field public static final java.lang.String RSA_PSS = "PSS";
+  }
+
+  public static abstract class KeyStoreKeyProperties.SignaturePaddingEnum implements java.lang.annotation.Annotation {
+  }
+
   public class KeyStoreKeySpec implements java.security.spec.KeySpec {
     method public java.lang.String[] getBlockModes();
     method public java.lang.String[] getDigests();
@@ -31253,6 +31088,7 @@
     method public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(java.lang.String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
     method public static boolean isActiveService(android.content.Context, android.content.ComponentName);
     method public android.os.IBinder onBind(android.content.Intent);
+    method public void onLaunchVoiceAssistFromKeyguard();
     method public void onReady();
     method public void onShutdown();
     method public void showSession(android.os.Bundle, int);
@@ -32551,7 +32387,7 @@
     method public void handleCallSessionEvent(int);
     method public abstract void onRequestCameraCapabilities();
     method public abstract void onRequestConnectionDataUsage();
-    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile);
+    method public abstract void onSendSessionModifyRequest(android.telecom.VideoProfile, android.telecom.VideoProfile);
     method public abstract void onSendSessionModifyResponse(android.telecom.VideoProfile);
     method public abstract void onSetCamera(java.lang.String);
     method public abstract void onSetDeviceOrientation(int);
@@ -36381,14 +36217,6 @@
   }
 
   public deprecated class FloatMath {
-    method public static float ceil(float);
-    method public static float cos(float);
-    method public static float exp(float);
-    method public static float floor(float);
-    method public static float hypot(float, float);
-    method public static float pow(float, float);
-    method public static float sin(float);
-    method public static float sqrt(float);
   }
 
   public final class JsonReader implements java.io.Closeable {
@@ -38395,6 +38223,7 @@
     method public int getScrollBarFadeDuration();
     method public int getScrollBarSize();
     method public int getScrollBarStyle();
+    method public int getScrollIndicators();
     method public final int getScrollX();
     method public final int getScrollY();
     method public int getSolidColor();
@@ -38476,6 +38305,7 @@
     method public boolean isSaveEnabled();
     method public boolean isSaveFromParentEnabled();
     method public boolean isScrollContainer();
+    method public boolean isScrollIndicatorEnabled(int);
     method public boolean isScrollbarFadingEnabled();
     method public boolean isSelected();
     method public boolean isShown();
@@ -38675,6 +38505,8 @@
     method public void setScrollBarSize(int);
     method public void setScrollBarStyle(int);
     method public void setScrollContainer(boolean);
+    method public void setScrollIndicators(int);
+    method public void setScrollIndicators(int, int);
     method public void setScrollX(int);
     method public void setScrollY(int);
     method public void setScrollbarFadingEnabled(boolean);
@@ -38800,6 +38632,12 @@
     field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
     field public static final int SCROLL_AXIS_NONE = 0; // 0x0
     field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
+    field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
+    field public static final int SCROLL_INDICATOR_END = 32; // 0x20
+    field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
+    field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
+    field public static final int SCROLL_INDICATOR_START = 16; // 0x10
+    field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
     field protected static final int[] SELECTED_STATE_SET;
     field protected static final int[] SELECTED_WINDOW_FOCUSED_STATE_SET;
     field public static final int SOUND_EFFECTS_ENABLED = 134217728; // 0x8000000
@@ -43153,6 +42991,7 @@
     method public void setSoftInputMode(int);
     method public void setVerticalOffset(int);
     method public void setWidth(int);
+    method public void setWindowLayoutType(int);
     method public void show();
     field public static final int INPUT_METHOD_FROM_FOCUSABLE = 0; // 0x0
     field public static final int INPUT_METHOD_NEEDED = 1; // 0x1
diff --git a/api/system-removed.txt b/api/system-removed.txt
index 5e77e15..0046a70 100644
--- a/api/system-removed.txt
+++ b/api/system-removed.txt
@@ -108,6 +108,21 @@
 
 }
 
+package android.util {
+
+  public deprecated class FloatMath {
+    method public static float ceil(float);
+    method public static float cos(float);
+    method public static float exp(float);
+    method public static float floor(float);
+    method public static float hypot(float, float);
+    method public static float pow(float, float);
+    method public static float sin(float);
+    method public static float sqrt(float);
+  }
+
+}
+
 package android.view {
 
   public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index bb25ec6..21dc1e2 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -630,7 +630,10 @@
                     }
                     glDisable(GL_SCISSOR_TEST);
                 }
-                glDrawTexiOES(xc, yc, 0, animation.width, animation.height);
+                // specify the y center as ceiling((mHeight - animation.height) / 2)
+                // which is equivalent to mHeight - (yc + animation.height)
+                glDrawTexiOES(xc, mHeight - (yc + animation.height),
+                              0, animation.width, animation.height);
                 eglSwapBuffers(mDisplay, mSurface);
 
                 nsecs_t now = systemTime();
diff --git a/core/java/android/animation/AnimatorInflater.java b/core/java/android/animation/AnimatorInflater.java
index 427ecce..435d5ab 100644
--- a/core/java/android/animation/AnimatorInflater.java
+++ b/core/java/android/animation/AnimatorInflater.java
@@ -108,7 +108,7 @@
             float pathErrorScale) throws NotFoundException {
         final ConfigurationBoundResourceCache<Animator> animatorCache = resources
                 .getAnimatorCache();
-        Animator animator = animatorCache.get(id, theme);
+        Animator animator = animatorCache.getInstance(id, theme);
         if (animator != null) {
             if (DBG_ANIMATOR_INFLATER) {
                 Log.d(TAG, "loaded animator from cache, " + resources.getResourceName(id));
@@ -157,7 +157,7 @@
         final ConfigurationBoundResourceCache<StateListAnimator> cache = resources
                 .getStateListAnimatorCache();
         final Theme theme = context.getTheme();
-        StateListAnimator animator = cache.get(id, theme);
+        StateListAnimator animator = cache.getInstance(id, theme);
         if (animator != null) {
             return animator;
         }
diff --git a/core/java/android/animation/LayoutTransition.java b/core/java/android/animation/LayoutTransition.java
index 57906824..cdd72be 100644
--- a/core/java/android/animation/LayoutTransition.java
+++ b/core/java/android/animation/LayoutTransition.java
@@ -28,6 +28,7 @@
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * This class enables automatic animations on layout changes in ViewGroup objects. To enable
@@ -757,7 +758,7 @@
         // reset the inter-animation delay, in case we use it later
         staggerDelay = 0;
 
-        final ViewTreeObserver observer = parent.getViewTreeObserver(); // used for later cleanup
+        final ViewTreeObserver observer = parent.getViewTreeObserver();
         if (!observer.isAlive()) {
             // If the observer's not in a good state, skip the transition
             return;
@@ -790,21 +791,9 @@
         // This is the cleanup step. When we get this rendering event, we know that all of
         // the appropriate animations have been set up and run. Now we can clear out the
         // layout listeners.
-        observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
-            public boolean onPreDraw() {
-                parent.getViewTreeObserver().removeOnPreDrawListener(this);
-                int count = layoutChangeListenerMap.size();
-                if (count > 0) {
-                    Collection<View> views = layoutChangeListenerMap.keySet();
-                    for (View view : views) {
-                        View.OnLayoutChangeListener listener = layoutChangeListenerMap.get(view);
-                        view.removeOnLayoutChangeListener(listener);
-                    }
-                }
-                layoutChangeListenerMap.clear();
-                return true;
-            }
-        });
+        CleanupCallback callback = new CleanupCallback(layoutChangeListenerMap, parent);
+        observer.addOnPreDrawListener(callback);
+        parent.addOnAttachStateChangeListener(callback);
     }
 
     /**
@@ -1499,4 +1488,50 @@
                 View view, int transitionType);
     }
 
+    /**
+     * Utility class to clean up listeners after animations are setup. Cleanup happens
+     * when either the OnPreDrawListener method is called or when the parent is detached,
+     * whichever comes first.
+     */
+    private static final class CleanupCallback implements ViewTreeObserver.OnPreDrawListener,
+            View.OnAttachStateChangeListener {
+
+        final Map<View, View.OnLayoutChangeListener> layoutChangeListenerMap;
+        final ViewGroup parent;
+
+        CleanupCallback(Map<View, View.OnLayoutChangeListener> listenerMap, ViewGroup parent) {
+            this.layoutChangeListenerMap = listenerMap;
+            this.parent = parent;
+        }
+
+        private void cleanup() {
+            parent.getViewTreeObserver().removeOnPreDrawListener(this);
+            parent.removeOnAttachStateChangeListener(this);
+            int count = layoutChangeListenerMap.size();
+            if (count > 0) {
+                Collection<View> views = layoutChangeListenerMap.keySet();
+                for (View view : views) {
+                    View.OnLayoutChangeListener listener = layoutChangeListenerMap.get(view);
+                    view.removeOnLayoutChangeListener(listener);
+                }
+                layoutChangeListenerMap.clear();
+            }
+        }
+
+        @Override
+        public void onViewAttachedToWindow(View v) {
+        }
+
+        @Override
+        public void onViewDetachedFromWindow(View v) {
+            cleanup();
+        }
+
+        @Override
+        public boolean onPreDraw() {
+            cleanup();
+            return true;
+        }
+    };
+
 }
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index afbddd9..9968dbb 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -89,7 +89,7 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.MotionEvent;
-import android.view.PhoneWindow;
+import com.android.internal.policy.PhoneWindow;
 import android.view.SearchEvent;
 import android.view.View;
 import android.view.View.OnCreateContextMenuListener;
@@ -6498,6 +6498,11 @@
             return (w == null) ? 0 : w.getAttributes().windowAnimations;
         }
 
+        @Override
+        public void onAttachFragment(Fragment fragment) {
+            Activity.this.onAttachFragment(fragment);
+        }
+
         @Nullable
         @Override
         public View onFindViewById(int id) {
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 576a046..9bbb4be 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -16,8 +16,10 @@
 
 package android.app;
 
+import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
@@ -26,6 +28,7 @@
 import android.os.IBinder;
 import android.os.ParcelFileDescriptor;
 
+import android.util.Log;
 import com.android.internal.app.ProcessStats;
 import com.android.internal.os.TransferPipe;
 import com.android.internal.util.FastPrintWriter;
@@ -2396,7 +2399,24 @@
         } catch (RemoteException e) {
         }
     }
-    
+
+    /**
+     * Kills the specified UID.
+     * @param uid The UID to kill.
+     * @param reason The reason for the kill.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.KILL_UID)
+    public void killUid(int uid, String reason) {
+        try {
+            ActivityManagerNative.getDefault().killUid(uid, reason);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Couldn't kill uid:" + uid, e);
+        }
+    }
+
     /**
      * Have the system perform a force stop of everything associated with
      * the given application package.  All processes that share its uid
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index da6d8c5..f16406a 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -38,6 +38,7 @@
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.content.res.Resources.Theme;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteDebug;
 import android.database.sqlite.SQLiteDebug.DbStats;
@@ -4186,9 +4187,14 @@
             if (!mConfiguration.isOtherSeqNewer(config) && compat == null) {
                 return;
             }
-            configDiff = mConfiguration.diff(config);
-            mConfiguration.updateFrom(config);
+
+            configDiff = mConfiguration.updateFrom(config);
             config = applyCompatConfiguration(mCurDefaultDisplayDpi);
+
+            final Theme systemTheme = getSystemContext().getTheme();
+            if ((systemTheme.getChangingConfigurations() & configDiff) != 0) {
+                systemTheme.rebase();
+            }
         }
 
         ArrayList<ComponentCallbacks2> callbacks = collectComponentCallbacks(false, config);
diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java
index 2939322..968c956 100644
--- a/core/java/android/app/ActivityTransitionCoordinator.java
+++ b/core/java/android/app/ActivityTransitionCoordinator.java
@@ -476,9 +476,8 @@
             tempRect.set(0, 0, width, height);
             view.getMatrix().mapRect(tempRect);
 
-            ViewGroup parent = (ViewGroup) view.getParent();
-            left = leftInParent - tempRect.left + parent.getScrollX();
-            top = topInParent - tempRect.top + parent.getScrollY();
+            left = leftInParent - tempRect.left;
+            top = topInParent - tempRect.top;
             right = left + width;
             bottom = top + height;
         }
@@ -506,7 +505,7 @@
             ViewGroup parent = (ViewGroup) view.getParent();
             Matrix matrix = new Matrix();
             parent.transformMatrixToLocal(matrix);
-
+            matrix.postTranslate(parent.getScrollX(), parent.getScrollY());
             mSharedElementParentMatrices.add(matrix);
         }
     }
@@ -521,6 +520,7 @@
                 // Find the location in the view's parent
                 ViewGroup parent = (ViewGroup) viewParent;
                 parent.transformMatrixToLocal(matrix);
+                matrix.postTranslate(parent.getScrollX(), parent.getScrollY());
             }
         } else {
             // The indices of mSharedElementParentMatrices matches the
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 6bbbf9e..5aa399b 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -941,7 +941,8 @@
      * @hide
      */
     public static int permissionToOpCode(String permission) {
-        return sPermToOp.get(permission);
+        Integer boxedOpCode = sPermToOp.get(permission);
+        return boxedOpCode != null ? boxedOpCode : OP_NONE;
     }
 
     /**
diff --git a/core/java/android/app/Application.java b/core/java/android/app/Application.java
index 75e4bab..1174387 100644
--- a/core/java/android/app/Application.java
+++ b/core/java/android/app/Application.java
@@ -18,6 +18,7 @@
 
 import java.util.ArrayList;
 
+import android.annotation.CallSuper;
 import android.content.ComponentCallbacks;
 import android.content.ComponentCallbacks2;
 import android.content.Context;
@@ -89,6 +90,7 @@
      * service, or receiver in a process.
      * If you override this method, be sure to call super.onCreate().
      */
+    @CallSuper
     public void onCreate() {
     }
 
@@ -98,9 +100,11 @@
      * removed by simply killing them; no user code (including this callback)
      * is executed when doing so.
      */
+    @CallSuper
     public void onTerminate() {
     }
 
+    @CallSuper
     public void onConfigurationChanged(Configuration newConfig) {
         Object[] callbacks = collectComponentCallbacks();
         if (callbacks != null) {
@@ -110,6 +114,7 @@
         }
     }
 
+    @CallSuper
     public void onLowMemory() {
         Object[] callbacks = collectComponentCallbacks();
         if (callbacks != null) {
@@ -119,6 +124,7 @@
         }
     }
 
+    @CallSuper
     public void onTrimMemory(int level) {
         Object[] callbacks = collectComponentCallbacks();
         if (callbacks != null) {
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index d049104..f6e0e1e 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -48,7 +48,7 @@
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
-import android.view.PhoneWindow;
+import com.android.internal.policy.PhoneWindow;
 import android.view.SearchEvent;
 import android.view.View;
 import android.view.View.OnCreateContextMenuListener;
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index 91d810e..40c5c64 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -1314,6 +1314,12 @@
                     com.android.internal.R.styleable.Fragment_fragmentAllowReturnTransitionOverlap, true);
         }
         a.recycle();
+
+        final Activity hostActivity = mHost == null ? null : mHost.getActivity();
+        if (hostActivity != null) {
+            mCalled = false;
+            onInflate(hostActivity, attrs, savedInstanceState);
+        }
     }
 
     /**
diff --git a/core/java/android/app/FragmentHostCallback.java b/core/java/android/app/FragmentHostCallback.java
index dad2c79..3e753f0 100644
--- a/core/java/android/app/FragmentHostCallback.java
+++ b/core/java/android/app/FragmentHostCallback.java
@@ -23,7 +23,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.util.ArrayMap;
-import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 
@@ -140,6 +139,14 @@
         return mWindowAnimations;
     }
 
+    /**
+     * Called when a {@link Fragment} is being attached to this host, immediately
+     * after the call to its {@link Fragment#onAttach(Context)} method and before
+     * {@link Fragment#onCreate(Bundle)}.
+     */
+    public void onAttachFragment(Fragment fragment) {
+    }
+
     @Nullable
     @Override
     public View onFindViewById(int id) {
@@ -187,14 +194,6 @@
         }
     }
 
-    void onFragmentInflate(Fragment fragment, AttributeSet attrs, Bundle savedInstanceState) {
-        fragment.onInflate(mContext, attrs, savedInstanceState);
-    }
-
-    void onFragmentAttach(Fragment fragment) {
-        fragment.onAttach(mContext);
-    }
-
     void doLoaderStart() {
         if (mLoadersStarted) {
             return;
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 62436e9..6b5239d 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -844,13 +844,13 @@
                     f.mFragmentManager = mParent != null
                             ? mParent.mChildFragmentManager : mHost.getFragmentManagerImpl();
                     f.mCalled = false;
-                    mHost.onFragmentAttach(f);
+                    f.onAttach(mHost.getContext());
                     if (!f.mCalled) {
                         throw new SuperNotCalledException("Fragment " + f
                                 + " did not call through to super.onAttach()");
                     }
                     if (f.mParentFragment == null) {
-                        mHost.onFragmentAttach(f);
+                        mHost.onAttachFragment(f);
                     }
 
                     if (!f.mRetaining) {
@@ -2107,7 +2107,7 @@
             fragment.mTag = tag;
             fragment.mInLayout = true;
             fragment.mFragmentManager = this;
-            mHost.onFragmentInflate(fragment, attrs, fragment.mSavedFragmentState);
+            fragment.onInflate(mHost.getContext(), attrs, fragment.mSavedFragmentState);
             addFragment(fragment, true);
         } else if (fragment.mInLayout) {
             // A fragment already exists and it is not one we restored from
@@ -2124,7 +2124,7 @@
             // from last saved state), then give it the attributes to
             // initialize itself.
             if (!fragment.mRetaining) {
-                mHost.onFragmentInflate(fragment, attrs, fragment.mSavedFragmentState);
+                fragment.onInflate(mHost.getContext(), attrs, fragment.mSavedFragmentState);
             }
         }
 
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index b1a5d21..fa11221 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -165,8 +165,6 @@
         setContentView(com.android.internal.R.layout.search_bar);
 
         // get the view elements for local access
-        SearchBar searchBar = (SearchBar) findViewById(com.android.internal.R.id.search_bar);
-        searchBar.setSearchDialog(this);
         mSearchView = (SearchView) findViewById(com.android.internal.R.id.search_view);
         mSearchView.setIconified(false);
         mSearchView.setOnCloseListener(mOnCloseListener);
@@ -618,8 +616,6 @@
      */
     public static class SearchBar extends LinearLayout {
 
-        private SearchDialog mSearchDialog;
-
         public SearchBar(Context context, AttributeSet attrs) {
             super(context, attrs);
         }
@@ -628,18 +624,6 @@
             super(context);
         }
 
-        public void setSearchDialog(SearchDialog searchDialog) {
-            mSearchDialog = searchDialog;
-        }
-
-        /**
-         * Don't allow action modes in a SearchBar, it looks silly.
-         */
-        @Override
-        public ActionMode startActionModeForChild(View child, ActionMode.Callback callback) {
-            return null;
-        }
-
         @Override
         public ActionMode startActionModeForChild(
                 View child, ActionMode.Callback callback, int type) {
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 46da025..391131a 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -91,7 +91,6 @@
 import android.os.IUserManager;
 import android.os.PowerManager;
 import android.os.Process;
-import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemVibrator;
 import android.os.UserHandle;
@@ -111,7 +110,7 @@
 import android.util.Log;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
-import android.view.PhoneLayoutInflater;
+import com.android.internal.policy.PhoneLayoutInflater;
 import android.view.WindowManager;
 import android.view.WindowManagerImpl;
 import android.view.accessibility.AccessibilityManager;
diff --git a/core/java/android/app/admin/DeviceAdminReceiver.java b/core/java/android/app/admin/DeviceAdminReceiver.java
index aea413d..470804d 100644
--- a/core/java/android/app/admin/DeviceAdminReceiver.java
+++ b/core/java/android/app/admin/DeviceAdminReceiver.java
@@ -231,7 +231,7 @@
      * device owner app.
      *
      * <p>The broadcast will be limited to the {@link DeviceAdminReceiver} component specified in
-     * the (@link DevicePolicyManager#EXTRA_PROVISIONING_DEVICE_INITIALIZER_COMPONENT_NAME) field
+     * the {@link DevicePolicyManager#EXTRA_PROVISIONING_DEVICE_INITIALIZER_COMPONENT_NAME} field
      * of the original intent or NFC bump that started the provisioning process. You will generally
      * handle this in {@link DeviceAdminReceiver#onReadyForUserInitialization}.
      *
@@ -450,9 +450,9 @@
      *
      * <p>It is not assumed that the device initializer is finished when it returns from
      * this call, as it may do additional setup asynchronously. The device initializer must call
-     * {DevicePolicyManager#setUserEnabled(ComponentName admin)} when it has finished any additional
-     * setup (such as adding an account by using the {@link AccountManager}) in order for the user
-     * to be functional.
+     * {@link DevicePolicyManager#setUserEnabled(ComponentName admin)} when it has finished any
+     * additional setup (such as adding an account by using the {@link AccountManager}) in order for
+     * the user to be functional.
      *
      * @param context The running context as per {@link #onReceive}.
      * @param intent The received intent as per {@link #onReceive}.
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 9f71ea5..8009b6c 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -412,7 +412,7 @@
         = "android.app.action.MANAGED_PROFILE_PROVISIONED";
 
     /**
-     * A boolean extra indicating whether device encryption is required as part of Device Owner
+     * A boolean extra indicating whether device encryption can be skipped as part of Device Owner
      * provisioning.
      *
      * <p>Use in an NFC record with {@link #MIME_TYPE_PROVISIONING_NFC_V2} that starts device owner
@@ -4294,14 +4294,14 @@
      * being disabled.
      *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
-     * @param enabled New state of the keyguard.
+     * @param disabled {@code true} disables the keyguard, {@code false} reenables it.
      *
      * @return {@code false} if attempting to disable the keyguard while a lock password was in
-     * place. {@code true} otherwise."
+     * place. {@code true} otherwise.
      */
-    public boolean setKeyguardEnabledState(ComponentName admin, boolean enabled) {
+    public boolean setKeyguardDisabled(ComponentName admin, boolean disabled) {
         try {
-            return mService.setKeyguardEnabledState(admin, enabled);
+            return mService.setKeyguardDisabled(admin, disabled);
         } catch (RemoteException re) {
             Log.w(TAG, "Failed talking with device policy service", re);
             return false;
@@ -4309,18 +4309,22 @@
     }
 
     /**
-     * Called by device owner to set the enabled state of the status bar. Disabling the status
-     * bar blocks notifications, quick settings and other screen overlays that allow escaping from
+     * Called by device owner to disable the status bar. Disabling the status bar blocks
+     * notifications, quick settings and other screen overlays that allow escaping from
      * a single use device.
      *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
-     * @param enabled New state of the status bar.
+     * @param disabled {@code true} disables the status bar, {@code false} reenables it.
+     *
+     * @return {@code false} if attempting to disable the status bar failed.
+     * {@code true} otherwise.
      */
-    public void setStatusBarEnabledState(ComponentName admin, boolean enabled) {
+    public boolean setStatusBarDisabled(ComponentName admin, boolean disabled) {
         try {
-            mService.setStatusBarEnabledState(admin, enabled);
+            return mService.setStatusBarDisabled(admin, disabled);
         } catch (RemoteException re) {
             Log.w(TAG, "Failed talking with device policy service", re);
+            return false;
         }
     }
 
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 833bc00..e81e7c1 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -224,8 +224,8 @@
     void setSystemUpdatePolicy(in ComponentName who, in PersistableBundle policy);
     PersistableBundle getSystemUpdatePolicy();
 
-    boolean setKeyguardEnabledState(in ComponentName admin, boolean enabled);
-    void setStatusBarEnabledState(in ComponentName who, boolean enabled);
+    boolean setKeyguardDisabled(in ComponentName admin, boolean disabled);
+    boolean setStatusBarDisabled(in ComponentName who, boolean disabled);
     boolean getDoNotAskCredentialsOnBoot();
 
     void notifyPendingSystemUpdate(in long updateReceivedTime);
diff --git a/core/java/android/app/trust/ITrustManager.aidl b/core/java/android/app/trust/ITrustManager.aidl
index 17cff5c..32951d9 100644
--- a/core/java/android/app/trust/ITrustManager.aidl
+++ b/core/java/android/app/trust/ITrustManager.aidl
@@ -32,4 +32,5 @@
     void reportKeyguardShowingChanged();
     boolean isDeviceLocked(int userId);
     boolean isDeviceSecure(int userId);
+    boolean hasUserAuthenticatedSinceBoot(int userId);
 }
diff --git a/core/java/android/app/trust/TrustManager.java b/core/java/android/app/trust/TrustManager.java
index b5c5317..8cab565 100644
--- a/core/java/android/app/trust/TrustManager.java
+++ b/core/java/android/app/trust/TrustManager.java
@@ -147,6 +147,23 @@
         }
     }
 
+    /**
+     * Checks whether the specified user has been authenticated since the last boot.
+     *
+     * @param userId the user id of the user to check for
+     * @return true if the user has authenticated since boot, false otherwise
+     *
+     * Requires the {@link android.Manifest.permission#ACCESS_KEYGUARD_SECURE_STORAGE} permission.
+     */
+    public boolean hasUserAuthenticatedSinceBoot(int userId) {
+        try {
+            return mService.hasUserAuthenticatedSinceBoot(userId);
+        } catch (RemoteException e) {
+            onError(e);
+            return false;
+        }
+    }
+
     private void onError(Exception e) {
         Log.e(TAG, "Error while calling TrustManagerService", e);
     }
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 54fe786..d0298cd 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -17,6 +17,7 @@
 package android.content;
 
 import android.content.pm.ApplicationInfo;
+import android.os.ResultReceiver;
 import android.provider.MediaStore;
 import android.util.ArraySet;
 
@@ -3291,11 +3292,79 @@
 
     /**
      * An Intent describing the choices you would like shown with
-     * {@link #ACTION_PICK_ACTIVITY}.
+     * {@link #ACTION_PICK_ACTIVITY} or {@link #ACTION_CHOOSER}.
      */
     public static final String EXTRA_INTENT = "android.intent.extra.INTENT";
 
     /**
+     * An Intent[] describing additional, alternate choices you would like shown with
+     * {@link #ACTION_CHOOSER}.
+     *
+     * <p>An app may be capable of providing several different payload types to complete a
+     * user's intended action. For example, an app invoking {@link #ACTION_SEND} to share photos
+     * with another app may use EXTRA_ALTERNATE_INTENTS to have the chooser transparently offer
+     * several different supported sending mechanisms for sharing, such as the actual "image/*"
+     * photo data or a hosted link where the photos can be viewed.</p>
+     *
+     * <p>The intent present in {@link #EXTRA_INTENT} will be treated as the
+     * first/primary/preferred intent in the set. Additional intents specified in
+     * this extra are ordered; by default intents that appear earlier in the array will be
+     * preferred over intents that appear later in the array as matches for the same
+     * target component. To alter this preference, a calling app may also supply
+     * {@link #EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER}.</p>
+     */
+    public static final String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS";
+
+    /**
+     * An {@link IntentSender} for an Activity that will be invoked when the user makes a selection
+     * from the chooser activity presented by {@link #ACTION_CHOOSER}.
+     *
+     * <p>An app preparing an action for another app to complete may wish to allow the user to
+     * disambiguate between several options for completing the action based on the chosen target
+     * or otherwise refine the action before it is invoked.
+     * </p>
+     *
+     * <p>When sent, this IntentSender may be filled in with the following extras:</p>
+     * <ul>
+     *     <li>{@link #EXTRA_INTENT} The first intent that matched the user's chosen target</li>
+     *     <li>{@link #EXTRA_ALTERNATE_INTENTS} Any additional intents that also matched the user's
+     *     chosen target beyond the first</li>
+     *     <li>{@link #EXTRA_RESULT_RECEIVER} A {@link ResultReceiver} that the refinement activity
+     *     should fill in and send once the disambiguation is complete</li>
+     * </ul>
+     */
+    public static final String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER
+            = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
+
+    /**
+     * A {@link ResultReceiver} used to return data back to the sender.
+     *
+     * <p>Used to complete an app-specific
+     * {@link #EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER refinement} for {@link #ACTION_CHOOSER}.</p>
+     *
+     * <p>If {@link #EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER} is present in the intent
+     * used to start a {@link #ACTION_CHOOSER} activity this extra will be
+     * {@link #fillIn(Intent, int) filled in} to that {@link IntentSender} and sent
+     * when the user selects a target component from the chooser. It is up to the recipient
+     * to send a result to this ResultReceiver to signal that disambiguation is complete
+     * and that the chooser should invoke the user's choice.</p>
+     *
+     * <p>The disambiguator should provide a Bundle to the ResultReceiver with an intent
+     * assigned to the key {@link #EXTRA_INTENT}. This supplied intent will be used by the chooser
+     * to match and fill in the final Intent or ChooserTarget before starting it.
+     * The supplied intent must {@link #filterEquals(Intent) match} one of the intents from
+     * {@link #EXTRA_INTENT} or {@link #EXTRA_ALTERNATE_INTENTS} passed to
+     * {@link #EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER} to be accepted.</p>
+     *
+     * <p>The result code passed to the ResultReceiver should be
+     * {@link android.app.Activity#RESULT_OK} if the refinement succeeded and the supplied intent's
+     * target in the chooser should be started, or {@link android.app.Activity#RESULT_CANCELED} if
+     * the chooser should finish without starting a target.</p>
+     */
+    public static final String EXTRA_RESULT_RECEIVER
+            = "android.intent.extra.RESULT_RECEIVER";
+
+    /**
      * A CharSequence dialog title to provide to the user when used with a
      * {@link #ACTION_CHOOSER}.
      */
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index 16f6b1e..43cc63b 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -570,13 +570,16 @@
         Configuration.NATIVE_CONFIG_DENSITY,                // DENSITY
         Configuration.NATIVE_CONFIG_LAYOUTDIR,              // LAYOUT DIRECTION
     };
-    /** @hide
+
+    /**
      * Convert Java change bits to native.
+     *
+     * @hide
      */
     public static int activityInfoConfigToNative(int input) {
         int output = 0;
-        for (int i=0; i<CONFIG_NATIVE_BITS.length; i++) {
-            if ((input&(1<<i)) != 0) {
+        for (int i = 0; i < CONFIG_NATIVE_BITS.length; i++) {
+            if ((input & (1 << i)) != 0) {
                 output |= CONFIG_NATIVE_BITS[i];
             }
         }
@@ -584,6 +587,21 @@
     }
 
     /**
+     * Convert native change bits to Java.
+     *
+     * @hide
+     */
+    public static int activityInfoConfigNativeToJava(int input) {
+        int output = 0;
+        for (int i = 0; i < CONFIG_NATIVE_BITS.length; i++) {
+            if ((input & CONFIG_NATIVE_BITS[i]) != 0) {
+                output |= (1 << i);
+            }
+        }
+        return output;
+    }
+
+    /**
      * @hide
      * Unfortunately some developers (OpenFeint I am looking at you) have
      * compared the configChanges bit field against absolute values, so if we
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 0b24594..94b0223 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -96,9 +96,9 @@
 
     void removePermission(String name);
 
-    boolean grantPermission(String packageName, String permissionName, int userId);
+    void grantPermission(String packageName, String permissionName, int userId);
 
-    boolean revokePermission(String packageName, String permissionName, int userId);
+    void revokePermission(String packageName, String permissionName, int userId);
 
     boolean isProtectedBroadcast(String actionName);
 
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index a176593..8d96f5c2 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -785,10 +785,12 @@
     private native final void deleteTheme(long theme);
     /*package*/ native static final void applyThemeStyle(long theme, int styleRes, boolean force);
     /*package*/ native static final void copyTheme(long dest, long source);
+    /*package*/ native static final void clearTheme(long theme);
     /*package*/ native static final int loadThemeAttributeValue(long theme, int ident,
                                                                 TypedValue outValue,
                                                                 boolean resolve);
     /*package*/ native static final void dumpTheme(long theme, int priority, String tag, String prefix);
+    /*package*/ native static final int getThemeChangingConfigurations(long theme);
 
     private native final long openXmlAssetNative(int cookie, String fileName);
 
diff --git a/core/java/android/content/res/ConfigurationBoundResourceCache.java b/core/java/android/content/res/ConfigurationBoundResourceCache.java
index cde7e84..fecda87 100644
--- a/core/java/android/content/res/ConfigurationBoundResourceCache.java
+++ b/core/java/android/content/res/ConfigurationBoundResourceCache.java
@@ -1,138 +1,58 @@
 /*
-* Copyright (C) 2014 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.content.res;
+ * Copyright (C) 2014 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.
+ */
 
-import android.util.ArrayMap;
-import android.util.LongSparseArray;
-import java.lang.ref.WeakReference;
+package android.content.res;
 
 /**
  * A Cache class which can be used to cache resource objects that are easy to clone but more
  * expensive to inflate.
- * @hide
+ *
+ * @hide For internal use only.
  */
-public class ConfigurationBoundResourceCache<T> {
-
-    private final ArrayMap<String, LongSparseArray<WeakReference<ConstantState<T>>>> mCache =
-            new ArrayMap<String, LongSparseArray<WeakReference<ConstantState<T>>>>();
-
-    final Resources mResources;
+public class ConfigurationBoundResourceCache<T> extends ThemedResourceCache<ConstantState<T>> {
+    private final Resources mResources;
 
     /**
-     * Creates a Resource cache for the given Resources instance.
+     * Creates a cache for the given Resources instance.
      *
-     * @param resources The Resource which can be used when creating new instances.
+     * @param resources the resources to use when creating new instances
      */
     public ConfigurationBoundResourceCache(Resources resources) {
         mResources = resources;
     }
 
     /**
-     * Adds a new item to the cache.
+     * If the resource is cached, creates and returns a new instance of it.
      *
-     * @param key A custom key that uniquely identifies the resource.
-     * @param theme The Theme instance where this resource was loaded.
-     * @param constantState The constant state that can create new instances of the resource.
-     *
+     * @param key a key that uniquely identifies the drawable resource
+     * @param theme the theme where the resource will be used
+     * @return a new instance of the resource, or {@code null} if not in
+     *         the cache
      */
-    public void put(long key, Resources.Theme theme, ConstantState<T> constantState) {
-        if (constantState == null) {
-            return;
-        }
-        final String themeKey = theme == null ? "" : theme.getKey();
-        LongSparseArray<WeakReference<ConstantState<T>>> themedCache;
-        synchronized (this) {
-            themedCache = mCache.get(themeKey);
-            if (themedCache == null) {
-                themedCache = new LongSparseArray<WeakReference<ConstantState<T>>>(1);
-                mCache.put(themeKey, themedCache);
-            }
-            themedCache.put(key, new WeakReference<ConstantState<T>>(constantState));
-        }
-    }
-
-    /**
-     * If the resource is cached, creates a new instance of it and returns.
-     *
-     * @param key The long key which can be used to uniquely identify the resource.
-     * @param theme The The Theme instance where we want to load this resource.
-     *
-     * @return If this resources was loaded before, returns a new instance of it. Otherwise, returns
-     *         null.
-     */
-    public T get(long key, Resources.Theme theme) {
-        final String themeKey = theme != null ? theme.getKey() : "";
-        final LongSparseArray<WeakReference<ConstantState<T>>> themedCache;
-        final WeakReference<ConstantState<T>> wr;
-        synchronized (this) {
-            themedCache = mCache.get(themeKey);
-            if (themedCache == null) {
-                return null;
-            }
-            wr = themedCache.get(key);
-        }
-        if (wr == null) {
-            return null;
-        }
-        final ConstantState entry = wr.get();
+    public T getInstance(long key, Resources.Theme theme) {
+        final ConstantState<T> entry = get(key, theme);
         if (entry != null) {
-            return  (T) entry.newInstance(mResources, theme);
-        } else {  // our entry has been purged
-            synchronized (this) {
-                // there is a potential race condition here where this entry may be put in
-                // another thread. But we prefer it to minimize lock duration
-                themedCache.delete(key);
-            }
+            return entry.newInstance(mResources, theme);
         }
+
         return null;
     }
 
-    /**
-     * Users of ConfigurationBoundResourceCache must call this method whenever a configuration
-     * change happens. On this callback, the cache invalidates all resources that are not valid
-     * anymore.
-     *
-     * @param configChanges The configuration changes
-     */
-    public void onConfigurationChange(final int configChanges) {
-        synchronized (this) {
-            final int size = mCache.size();
-            for (int i = size - 1; i >= 0; i--) {
-                final LongSparseArray<WeakReference<ConstantState<T>>>
-                        themeCache = mCache.valueAt(i);
-                onConfigurationChangeInt(themeCache, configChanges);
-                if (themeCache.size() == 0) {
-                    mCache.removeAt(i);
-                }
-            }
-        }
+    @Override
+    public boolean shouldInvalidateEntry(ConstantState<T> entry, int configChanges) {
+        return Configuration.needNewResources(configChanges, entry.getChangingConfigurations());
     }
-
-    private void onConfigurationChangeInt(
-            final LongSparseArray<WeakReference<ConstantState<T>>> themeCache,
-            final int configChanges) {
-        final int size = themeCache.size();
-        for (int i = size - 1; i >= 0; i--) {
-            final WeakReference<ConstantState<T>> wr = themeCache.valueAt(i);
-            final ConstantState<T> constantState = wr.get();
-            if (constantState == null || Configuration.needNewResources(
-                    configChanges, constantState.getChangingConfigurations())) {
-                themeCache.removeAt(i);
-            }
-        }
-    }
-
 }
diff --git a/core/java/android/content/res/DrawableCache.java b/core/java/android/content/res/DrawableCache.java
new file mode 100644
index 0000000..fc70bc60
--- /dev/null
+++ b/core/java/android/content/res/DrawableCache.java
@@ -0,0 +1,57 @@
+/*
+ * 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.content.res;
+
+import android.graphics.drawable.Drawable;
+
+/**
+ * Class which can be used to cache Drawable resources against a theme.
+ */
+class DrawableCache extends ThemedResourceCache<Drawable.ConstantState> {
+    private final Resources mResources;
+
+    /**
+     * Creates a cache for the given Resources instance.
+     *
+     * @param resources the resources to use when creating new instances
+     */
+    public DrawableCache(Resources resources) {
+        mResources = resources;
+    }
+
+    /**
+     * If the resource is cached, creates and returns a new instance of it.
+     *
+     * @param key a key that uniquely identifies the drawable resource
+     * @param theme the theme where the resource will be used
+     * @return a new instance of the resource, or {@code null} if not in
+     *         the cache
+     */
+    public Drawable getInstance(long key, Resources.Theme theme) {
+        final Drawable.ConstantState entry = get(key, theme);
+        if (entry != null) {
+            return entry.newDrawable(mResources, theme);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean shouldInvalidateEntry(Drawable.ConstantState entry, int configChanges) {
+        return false;
+    }
+}
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 6e77e33..1d108a2 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -20,6 +20,8 @@
 import android.annotation.ColorInt;
 import android.annotation.StyleRes;
 import android.annotation.StyleableRes;
+
+import com.android.internal.util.GrowingArrayUtils;
 import com.android.internal.util.XmlUtils;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -132,10 +134,8 @@
     // These are protected by mAccessLock.
     private final Object mAccessLock = new Object();
     private final Configuration mTmpConfig = new Configuration();
-    private final ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> mDrawableCache =
-            new ArrayMap<>();
-    private final ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> mColorDrawableCache =
-            new ArrayMap<>();
+    private final DrawableCache mDrawableCache = new DrawableCache(this);
+    private final DrawableCache mColorDrawableCache = new DrawableCache(this);
     private final ConfigurationBoundResourceCache<ColorStateList> mColorStateListCache =
             new ConfigurationBoundResourceCache<>(this);
     private final ConfigurationBoundResourceCache<Animator> mAnimatorCache =
@@ -1441,7 +1441,7 @@
             AssetManager.applyThemeStyle(mTheme, resId, force);
 
             mThemeResId = resId;
-            mKey += Integer.toHexString(resId) + (force ? "! " : " ");
+            mKey.append(resId, force);
         }
 
         /**
@@ -1457,7 +1457,7 @@
             AssetManager.copyTheme(mTheme, other.mTheme);
 
             mThemeResId = other.mThemeResId;
-            mKey = other.mKey;
+            mKey.setTo(other.getKey());
         }
 
         /**
@@ -1731,6 +1731,19 @@
         }
 
         /**
+         * Returns a bit mask of configuration changes that will impact this
+         * theme (and thus require completely reloading it).
+         *
+         * @return a bit mask of configuration changes, as defined by
+         *         {@link ActivityInfo}
+         * @see ActivityInfo
+         */
+        public int getChangingConfigurations() {
+            final int nativeChangingConfig = AssetManager.getThemeChangingConfigurations(mTheme);
+            return ActivityInfo.activityInfoConfigNativeToJava(nativeChangingConfig);
+        }
+
+        /**
          * Print contents of this theme out to the log.  For debugging only.
          * 
          * @param priority The log priority to use.
@@ -1752,6 +1765,9 @@
             mTheme = mAssets.createTheme();
         }
 
+        /** Unique key for the series of styles applied to this theme. */
+        private final ThemeKey mKey = new ThemeKey();
+
         @SuppressWarnings("hiding")
         private final AssetManager mAssets;
         private final long mTheme;
@@ -1759,9 +1775,6 @@
         /** Resource identifier for the theme. */
         private int mThemeResId = 0;
 
-        /** Unique key for the series of styles applied to this theme. */
-        private String mKey = "";
-
         // Needed by layoutlib.
         /*package*/ long getNativeTheme() {
             return mTheme;
@@ -1771,7 +1784,7 @@
             return mThemeResId;
         }
 
-        /*package*/ String getKey() {
+        /*package*/ ThemeKey getKey() {
             return mKey;
         }
 
@@ -1780,29 +1793,119 @@
         }
 
         /**
-         * Parses {@link #mKey} and returns a String array that holds pairs of adjacent Theme data:
-         * resource name followed by whether or not it was forced, as specified by
-         * {@link #applyStyle(int, boolean)}.
+         * Parses {@link #mKey} and returns a String array that holds pairs of
+         * adjacent Theme data: resource name followed by whether or not it was
+         * forced, as specified by {@link #applyStyle(int, boolean)}.
          *
          * @hide
          */
         @ViewDebug.ExportedProperty(category = "theme", hasAdjacentMapping = true)
         public String[] getTheme() {
-            String[] themeData = mKey.split(" ");
-            String[] themes = new String[themeData.length * 2];
-            String theme;
-            boolean forced;
-
-            for (int i = 0, j = themeData.length - 1; i < themes.length; i += 2, --j) {
-                theme = themeData[j];
-                forced = theme.endsWith("!");
-                themes[i] = forced ?
-                        getResourceNameFromHexString(theme.substring(0, theme.length() - 1)) :
-                        getResourceNameFromHexString(theme);
+            final int N = mKey.mCount;
+            final String[] themes = new String[N * 2];
+            for (int i = 0, j = N - 1; i < themes.length; i += 2, --j) {
+                final int resId = mKey.mResId[i];
+                final boolean forced = mKey.mForce[i];
+                themes[i] = getResourceName(resId);
                 themes[i + 1] = forced ? "forced" : "not forced";
             }
             return themes;
         }
+
+        /**
+         * Rebases the theme against the parent Resource object's current
+         * configuration by re-applying the styles passed to
+         * {@link #applyStyle(int, boolean)}.
+         *
+         * @hide
+         */
+        public void rebase() {
+            AssetManager.clearTheme(mTheme);
+
+            // Reapply the same styles in the same order.
+            for (int i = 0; i < mKey.mCount; i++) {
+                final int resId = mKey.mResId[i];
+                final boolean force = mKey.mForce[i];
+                AssetManager.applyThemeStyle(mTheme, resId, force);
+            }
+        }
+    }
+
+    static class ThemeKey implements Cloneable {
+        int[] mResId;
+        boolean[] mForce;
+        int mCount;
+
+        private int mHashCode = 0;
+
+        public void append(int resId, boolean force) {
+            if (mResId == null) {
+                mResId = new int[4];
+            }
+
+            if (mForce == null) {
+                mForce = new boolean[4];
+            }
+
+            mResId = GrowingArrayUtils.append(mResId, mCount, resId);
+            mForce = GrowingArrayUtils.append(mForce, mCount, force);
+            mCount++;
+
+            mHashCode = 31 * (31 * mHashCode + resId) + (force ? 1 : 0);
+        }
+
+        /**
+         * Sets up this key as a deep copy of another key.
+         *
+         * @param other the key to deep copy into this key
+         */
+        public void setTo(ThemeKey other) {
+            mResId = other.mResId == null ? null : other.mResId.clone();
+            mForce = other.mForce == null ? null : other.mForce.clone();
+            mCount = other.mCount;
+        }
+
+        @Override
+        public int hashCode() {
+            return mHashCode;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+
+            if (o == null || getClass() != o.getClass() || hashCode() != o.hashCode()) {
+                return false;
+            }
+
+            final ThemeKey t = (ThemeKey) o;
+            if (mCount != t.mCount) {
+                return false;
+            }
+
+            final int N = mCount;
+            for (int i = 0; i < N; i++) {
+                if (mResId[i] != t.mResId[i] || mForce[i] != t.mForce[i]) {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+        /**
+         * @return a shallow copy of this key
+         */
+        @Override
+        public ThemeKey clone() {
+            final ThemeKey other = new ThemeKey();
+            other.mResId = mResId;
+            other.mForce = mForce;
+            other.mCount = mCount;
+            return other;
+        }
     }
 
     /**
@@ -1931,8 +2034,8 @@
                         + " final compat is " + mCompatibilityInfo);
             }
 
-            clearDrawableCachesLocked(mDrawableCache, configChanges);
-            clearDrawableCachesLocked(mColorDrawableCache, configChanges);
+            mDrawableCache.onConfigurationChange(configChanges);
+            mColorDrawableCache.onConfigurationChange(configChanges);
             mColorStateListCache.onConfigurationChange(configChanges);
             mAnimatorCache.onConfigurationChange(configChanges);
             mStateListAnimatorCache.onConfigurationChange(configChanges);
@@ -1970,48 +2073,6 @@
         return configChanges;
     }
 
-    private void clearDrawableCachesLocked(
-            ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> caches,
-            int configChanges) {
-        final int N = caches.size();
-        for (int i = 0; i < N; i++) {
-            clearDrawableCacheLocked(caches.valueAt(i), configChanges);
-        }
-    }
-
-    private void clearDrawableCacheLocked(
-            LongSparseArray<WeakReference<ConstantState>> cache, int configChanges) {
-        if (DEBUG_CONFIG) {
-            Log.d(TAG, "Cleaning up drawables config changes: 0x"
-                    + Integer.toHexString(configChanges));
-        }
-        final int N = cache.size();
-        for (int i = 0; i < N; i++) {
-            final WeakReference<ConstantState> ref = cache.valueAt(i);
-            if (ref != null) {
-                final ConstantState cs = ref.get();
-                if (cs != null) {
-                    if (Configuration.needNewResources(
-                            configChanges, cs.getChangingConfigurations())) {
-                        if (DEBUG_CONFIG) {
-                            Log.d(TAG, "FLUSHING #0x"
-                                    + Long.toHexString(cache.keyAt(i))
-                                    + " / " + cs + " with changes: 0x"
-                                    + Integer.toHexString(cs.getChangingConfigurations()));
-                        }
-                        cache.setValueAt(i, null);
-                    } else if (DEBUG_CONFIG) {
-                        Log.d(TAG, "(Keeping #0x"
-                                + Long.toHexString(cache.keyAt(i))
-                                + " / " + cs + " with changes: 0x"
-                                + Integer.toHexString(cs.getChangingConfigurations())
-                                + ")");
-                    }
-                }
-            }
-        }
-    }
-
     /**
      * {@code Locale.toLanguageTag} will transform the obsolete (and deprecated)
      * language codes "in", "ji" and "iw" to "id", "yi" and "he" respectively.
@@ -2423,7 +2484,7 @@
         }
 
         final boolean isColorDrawable;
-        final ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> caches;
+        final DrawableCache caches;
         final long key;
         if (value.type >= TypedValue.TYPE_FIRST_COLOR_INT
                 && value.type <= TypedValue.TYPE_LAST_COLOR_INT) {
@@ -2439,7 +2500,7 @@
         // First, check whether we have a cached version of this drawable
         // that was inflated against the specified theme.
         if (!mPreloading) {
-            final Drawable cachedDrawable = getCachedDrawable(caches, key, theme);
+            final Drawable cachedDrawable = caches.getInstance(key, theme);
             if (cachedDrawable != null) {
                 return cachedDrawable;
             }
@@ -2466,13 +2527,8 @@
         // Determine if the drawable has unresolved theme attributes. If it
         // does, we'll need to apply a theme and store it in a theme-specific
         // cache.
-        final String cacheKey;
-        if (!dr.canApplyTheme()) {
-            cacheKey = CACHE_NOT_THEMED;
-        } else if (theme == null) {
-            cacheKey = CACHE_NULL_THEME;
-        } else {
-            cacheKey = theme.getKey();
+        final boolean canApplyTheme = dr.canApplyTheme();
+        if (canApplyTheme && theme != null) {
             dr = dr.mutate();
             dr.applyTheme(theme);
             dr.clearMutated();
@@ -2482,15 +2538,14 @@
         // cache: preload, not themed, null theme, or theme-specific.
         if (dr != null) {
             dr.setChangingConfigurations(value.changingConfigurations);
-            cacheDrawable(value, isColorDrawable, caches, cacheKey, key, dr);
+            cacheDrawable(value, isColorDrawable, caches, theme, canApplyTheme, key, dr);
         }
 
         return dr;
     }
 
-    private void cacheDrawable(TypedValue value, boolean isColorDrawable,
-            ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> caches,
-            String cacheKey, long key, Drawable dr) {
+    private void cacheDrawable(TypedValue value, boolean isColorDrawable, DrawableCache caches,
+            Theme theme, boolean usesTheme, long key, Drawable dr) {
         final ConstantState cs = dr.getConstantState();
         if (cs == null) {
             return;
@@ -2518,54 +2573,12 @@
             }
         } else {
             synchronized (mAccessLock) {
-                LongSparseArray<WeakReference<ConstantState>> themedCache = caches.get(cacheKey);
-                if (themedCache == null) {
-                    // Clean out the caches before we add more. This shouldn't
-                    // happen very often.
-                    pruneCaches(caches);
-                    themedCache = new LongSparseArray<>(1);
-                    caches.put(cacheKey, themedCache);
-                }
-                themedCache.put(key, new WeakReference<>(cs));
+                caches.put(key, theme, cs, usesTheme);
             }
         }
     }
 
     /**
-     * Prunes empty caches from the cache map.
-     *
-     * @param caches The map of caches to prune.
-     */
-    private void pruneCaches(ArrayMap<String,
-            LongSparseArray<WeakReference<ConstantState>>> caches) {
-        final int N = caches.size();
-        for (int i = N - 1; i >= 0; i--) {
-            final LongSparseArray<WeakReference<ConstantState>> cache = caches.valueAt(i);
-            if (pruneCache(cache)) {
-                caches.removeAt(i);
-            }
-        }
-    }
-
-    /**
-     * Prunes obsolete weak references from a cache, returning {@code true} if
-     * the cache is empty and should be removed.
-     *
-     * @param cache The cache of weak references to prune.
-     * @return {@code true} if the cache is empty and should be removed.
-     */
-    private boolean pruneCache(LongSparseArray<WeakReference<ConstantState>> cache) {
-        final int N = cache.size();
-        for (int i = N - 1; i >= 0; i--) {
-            final WeakReference entry = cache.valueAt(i);
-            if (entry == null || entry.get() == null) {
-                cache.removeAt(i);
-            }
-        }
-        return cache.size() == 0;
-    }
-
-    /**
      * Loads a drawable from XML or resources stream.
      */
     private Drawable loadDrawableForCookie(TypedValue value, int id, Theme theme) {
@@ -2618,51 +2631,6 @@
         return dr;
     }
 
-    private Drawable getCachedDrawable(
-            ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> caches,
-            long key, Theme theme) {
-        synchronized (mAccessLock) {
-            // First search theme-agnostic cache.
-            final Drawable unthemedDrawable = getCachedDrawableLocked(
-                    caches, key, CACHE_NOT_THEMED);
-            if (unthemedDrawable != null) {
-                return unthemedDrawable;
-            }
-
-            // Next search theme-specific cache.
-            final String themeKey = theme != null ? theme.getKey() : CACHE_NULL_THEME;
-            return getCachedDrawableLocked(caches, key, themeKey);
-        }
-    }
-
-    private Drawable getCachedDrawableLocked(
-            ArrayMap<String, LongSparseArray<WeakReference<ConstantState>>> caches,
-            long key, String themeKey) {
-        final LongSparseArray<WeakReference<ConstantState>> cache = caches.get(themeKey);
-        if (cache != null) {
-            final ConstantState entry = getConstantStateLocked(cache, key);
-            if (entry != null) {
-                return entry.newDrawable(this);
-            }
-        }
-        return null;
-    }
-
-    private ConstantState getConstantStateLocked(
-            LongSparseArray<WeakReference<ConstantState>> drawableCache, long key) {
-        final WeakReference<ConstantState> wr = drawableCache.get(key);
-        if (wr != null) {
-            final ConstantState entry = wr.get();
-            if (entry != null) {
-                return entry;
-            } else {
-                // Our entry has been purged.
-                drawableCache.delete(key);
-            }
-        }
-        return null;
-    }
-
     @Nullable
     ColorStateList loadColorStateList(TypedValue value, int id, Theme theme)
             throws NotFoundException {
@@ -2700,8 +2668,7 @@
         }
 
         final ConfigurationBoundResourceCache<ColorStateList> cache = mColorStateListCache;
-
-        csl = cache.get(key, theme);
+        csl = cache.getInstance(key, theme);
         if (csl != null) {
             return csl;
         }
diff --git a/core/java/android/content/res/ThemedResourceCache.java b/core/java/android/content/res/ThemedResourceCache.java
new file mode 100644
index 0000000..9a2d06147
--- /dev/null
+++ b/core/java/android/content/res/ThemedResourceCache.java
@@ -0,0 +1,233 @@
+/*
+ * 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.content.res;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.res.Resources.Theme;
+import android.content.res.Resources.ThemeKey;
+import android.util.LongSparseArray;
+import android.util.ArrayMap;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * Data structure used for caching data against themes.
+ *
+ * @param <T> type of data to cache
+ */
+abstract class ThemedResourceCache<T> {
+    private ArrayMap<ThemeKey, LongSparseArray<WeakReference<T>>> mThemedEntries;
+    private LongSparseArray<WeakReference<T>> mUnthemedEntries;
+    private LongSparseArray<WeakReference<T>> mNullThemedEntries;
+
+    /**
+     * Adds a new theme-dependent entry to the cache.
+     *
+     * @param key a key that uniquely identifies the entry
+     * @param theme the theme against which this entry was inflated, or
+     *              {@code null} if the entry has no theme applied
+     * @param entry the entry to cache
+     */
+    public void put(long key, @Nullable Theme theme, @NonNull T entry) {
+        put(key, theme, entry, true);
+    }
+
+    /**
+     * Adds a new entry to the cache.
+     *
+     * @param key a key that uniquely identifies the entry
+     * @param theme the theme against which this entry was inflated, or
+     *              {@code null} if the entry has no theme applied
+     * @param entry the entry to cache
+     * @param usesTheme {@code true} if the entry is affected theme changes,
+     *                  {@code false} otherwise
+     */
+    public void put(long key, @Nullable Theme theme, @NonNull T entry, boolean usesTheme) {
+        if (entry == null) {
+            return;
+        }
+
+        synchronized (this) {
+            final LongSparseArray<WeakReference<T>> entries;
+            if (!usesTheme) {
+                entries = getUnthemedLocked(true);
+            } else {
+                entries = getThemedLocked(theme, true);
+            }
+            if (entries != null) {
+                entries.put(key, new WeakReference<>(entry));
+            }
+        }
+    }
+
+    /**
+     * Returns an entry from the cache.
+     *
+     * @param key a key that uniquely identifies the entry
+     * @param theme the theme where the entry will be used
+     * @return a cached entry, or {@code null} if not in the cache
+     */
+    @Nullable
+    public T get(long key, @Nullable Theme theme) {
+        // The themed (includes null-themed) and unthemed caches are mutually
+        // exclusive, so we'll give priority to whichever one we think we'll
+        // hit first. Since most of the framework drawables are themed, that's
+        // probably going to be the themed cache.
+        synchronized (this) {
+            final LongSparseArray<WeakReference<T>> themedEntries = getThemedLocked(theme, false);
+            if (themedEntries != null) {
+                final WeakReference<T> themedEntry = themedEntries.get(key);
+                if (themedEntry != null) {
+                    return themedEntry.get();
+                }
+            }
+
+            final LongSparseArray<WeakReference<T>> unthemedEntries = getUnthemedLocked(false);
+            if (unthemedEntries != null) {
+                final WeakReference<T> unthemedEntry = unthemedEntries.get(key);
+                if (unthemedEntry != null) {
+                    return unthemedEntry.get();
+                }
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Prunes cache entries that have been invalidated by a configuration
+     * change.
+     *
+     * @param configChanges a bitmask of configuration changes
+     */
+    public void onConfigurationChange(int configChanges) {
+        prune(configChanges);
+    }
+
+    /**
+     * Returns whether a cached entry has been invalidated by a configuration
+     * change.
+     *
+     * @param entry a cached entry
+     * @param configChanges a non-zero bitmask of configuration changes
+     * @return {@code true} if the entry is invalid, {@code false} otherwise
+     */
+    protected abstract boolean shouldInvalidateEntry(@NonNull T entry, int configChanges);
+
+    /**
+     * Returns the cached data for the specified theme, optionally creating a
+     * new entry if one does not already exist.
+     *
+     * @param t the theme for which to return cached data
+     * @param create {@code true} to create an entry if one does not already
+     *               exist, {@code false} otherwise
+     * @return the cached data for the theme, or {@code null} if the cache is
+     *         empty and {@code create} was {@code false}
+     */
+    @Nullable
+    private LongSparseArray<WeakReference<T>> getThemedLocked(@Nullable Theme t, boolean create) {
+        if (t == null) {
+            if (mNullThemedEntries == null && create) {
+                mNullThemedEntries = new LongSparseArray<>(1);
+            }
+            return mNullThemedEntries;
+        }
+
+        if (mThemedEntries == null) {
+            if (create) {
+                mThemedEntries = new ArrayMap<>(1);
+            } else {
+                return null;
+            }
+        }
+
+        final ThemeKey key = t.getKey();
+        LongSparseArray<WeakReference<T>> cache = mThemedEntries.get(key);
+        if (cache == null && create) {
+            cache = new LongSparseArray<>(1);
+
+            final ThemeKey keyClone = key.clone();
+            mThemedEntries.put(keyClone, cache);
+        }
+
+        return cache;
+    }
+
+    /**
+     * Returns the theme-agnostic cached data.
+     *
+     * @param create {@code true} to create an entry if one does not already
+     *               exist, {@code false} otherwise
+     * @return the theme-agnostic cached data, or {@code null} if the cache is
+     *         empty and {@code create} was {@code false}
+     */
+    @Nullable
+    private LongSparseArray<WeakReference<T>> getUnthemedLocked(boolean create) {
+        if (mUnthemedEntries == null && create) {
+            mUnthemedEntries = new LongSparseArray<>(1);
+        }
+        return mUnthemedEntries;
+    }
+
+    /**
+     * Prunes cache entries affected by configuration changes or where weak
+     * references have expired.
+     *
+     * @param configChanges a bitmask of configuration changes, or {@code 0} to
+     *                      simply prune missing weak references
+     * @return {@code true} if the cache is completely empty after pruning
+     */
+    private boolean prune(int configChanges) {
+        synchronized (this) {
+            if (mThemedEntries != null) {
+                for (int i = mThemedEntries.size() - 1; i >= 0; i--) {
+                    if (pruneEntriesLocked(mThemedEntries.valueAt(i), configChanges)) {
+                        mThemedEntries.removeAt(i);
+                    }
+                }
+            }
+
+            pruneEntriesLocked(mNullThemedEntries, configChanges);
+            pruneEntriesLocked(mUnthemedEntries, configChanges);
+
+            return mThemedEntries == null && mNullThemedEntries == null
+                    && mUnthemedEntries == null;
+        }
+    }
+
+    private boolean pruneEntriesLocked(@Nullable LongSparseArray<WeakReference<T>> entries,
+            int configChanges) {
+        if (entries == null) {
+            return true;
+        }
+
+        for (int i = entries.size() - 1; i >= 0; i--) {
+            final WeakReference<T> ref = entries.valueAt(i);
+            if (ref == null || pruneEntryLocked(ref.get(), configChanges)) {
+                entries.removeAt(i);
+            }
+        }
+
+        return entries.size() == 0;
+    }
+
+    private boolean pruneEntryLocked(@Nullable T entry, int configChanges) {
+        return entry == null || (configChanges != 0
+                && shouldInvalidateEntry(entry, configChanges));
+    }
+}
diff --git a/core/java/android/hardware/camera2/CameraCaptureSession.java b/core/java/android/hardware/camera2/CameraCaptureSession.java
index aeddf03..ef71c42 100644
--- a/core/java/android/hardware/camera2/CameraCaptureSession.java
+++ b/core/java/android/hardware/camera2/CameraCaptureSession.java
@@ -212,8 +212,7 @@
      * <p>All capture sessions can be used for capturing images from the camera but only capture
      * sessions created by
      * {@link CameraDevice#createReprocessibleCaptureSession createReprocessibleCaptureSession}
-     * can submit reprocess capture requests. The list of requests must all be capturing images from
-     * the camera or all be reprocess capture requests. Submitting a reprocess request to a regular
+     * can submit reprocess capture requests. Submitting a reprocess request to a regular
      * capture session will result in an {@link IllegalArgumentException}.</p>
      *
      * @param requests the list of settings for this burst capture
@@ -236,9 +235,7 @@
      * @throws IllegalArgumentException If the requests target no Surfaces, or the requests target
      *                                  Surfaces not currently configured as outputs; or a reprocess
      *                                  capture request is submitted in a non-reprocessible capture
-     *                                  session; or the list of requests contains both requests to
-     *                                  capture images from the camera and reprocess capture
-     *                                  requests; or one of the reprocess capture requests was
+     *                                  session; or one of the reprocess capture requests was
      *                                  created with a {@link TotalCaptureResult} from a different
      *                                  session; or one of the captures targets a Surface in the
      *                                  middle of being {@link #prepare prepared}; or if the handler
diff --git a/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java
index 3c19529..dff6227 100644
--- a/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java
@@ -177,26 +177,20 @@
     public synchronized int captureBurst(List<CaptureRequest> requests, CaptureCallback callback,
             Handler handler) throws CameraAccessException {
         if (requests == null) {
-            throw new IllegalArgumentException("requests must not be null");
+            throw new IllegalArgumentException("Requests must not be null");
         } else if (requests.isEmpty()) {
-            throw new IllegalArgumentException("requests must have at least one element");
+            throw new IllegalArgumentException("Requests must have at least one element");
         }
 
-        boolean reprocess = requests.get(0).isReprocess();
-        if (reprocess && !isReprocessible()) {
-            throw new IllegalArgumentException("this capture session cannot handle reprocess " +
-                    "requests");
-        } else if (reprocess && requests.get(0).getReprocessibleSessionId() != mId) {
-            throw new IllegalArgumentException("capture request was created for another session");
-        }
-
-        for (int i = 1; i < requests.size(); i++) {
-            if (requests.get(i).isReprocess() != reprocess) {
-                throw new IllegalArgumentException("cannot mix regular and reprocess capture " +
-                        " requests");
-            } else if (reprocess && requests.get(i).getReprocessibleSessionId() != mId) {
-                throw new IllegalArgumentException("capture request was created for another " +
-                    "session");
+        for (CaptureRequest request : requests) {
+            if (request.isReprocess()) {
+                if (!isReprocessible()) {
+                    throw new IllegalArgumentException("This capture session cannot handle " +
+                            "reprocess requests");
+                } else if (request.getReprocessibleSessionId() != mId) {
+                    throw new IllegalArgumentException("Capture request was created for another " +
+                            "session");
+                }
             }
         }
 
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index ff4ad79..e84b46a 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -94,11 +94,11 @@
     private final int mTotalPartialCount;
 
     /**
-     * A list tracking request and its expected last frame.
-     * Updated when calling ICameraDeviceUser methods.
+     * A list tracking request and its expected last regular frame number and last reprocess frame
+     * number. Updated when calling ICameraDeviceUser methods.
      */
-    private final List<SimpleEntry</*frameNumber*/Long, /*requestId*/Integer>>
-            mFrameNumberRequestPairs = new ArrayList<SimpleEntry<Long, Integer>>();
+    private final List<RequestLastFrameNumbersHolder> mRequestLastFrameNumbersList =
+            new ArrayList<>();
 
     /**
      * An object tracking received frame numbers.
@@ -653,8 +653,8 @@
      *
      * <p>If lastFrameNumber is NO_FRAMES_CAPTURED, it means that the request was never
      * sent to HAL. Then onCaptureSequenceAborted is immediately triggered.
-     * If lastFrameNumber is non-negative, then the requestId and lastFrameNumber pair
-     * is added to the list mFrameNumberRequestPairs.</p>
+     * If lastFrameNumber is non-negative, then the requestId and lastFrameNumber as the last
+     * regular frame number will be added to the list mRequestLastFrameNumbersList.</p>
      *
      * @param requestId the request ID of the current repeating request.
      *
@@ -693,10 +693,6 @@
                                         "early trigger sequence complete for request %d",
                                         requestId));
                             }
-                            if (lastFrameNumber < Integer.MIN_VALUE
-                                    || lastFrameNumber > Integer.MAX_VALUE) {
-                                throw new AssertionError(lastFrameNumber + " cannot be cast to int");
-                            }
                             holder.getCallback().onCaptureSequenceAborted(
                                     CameraDeviceImpl.this,
                                     requestId);
@@ -710,9 +706,11 @@
                         requestId));
             }
         } else {
-            mFrameNumberRequestPairs.add(
-                    new SimpleEntry<Long, Integer>(lastFrameNumber,
-                            requestId));
+            // This function is only called for regular request so lastFrameNumber is the last
+            // regular frame number.
+            mRequestLastFrameNumbersList.add(new RequestLastFrameNumbersHolder(requestId,
+                    lastFrameNumber));
+
             // It is possible that the last frame has already arrived, so we need to check
             // for sequence completion right away
             checkAndFireSequenceComplete();
@@ -779,8 +777,8 @@
                 }
                 mRepeatingRequestId = requestId;
             } else {
-                mFrameNumberRequestPairs.add(
-                        new SimpleEntry<Long, Integer>(lastFrameNumber, requestId));
+                mRequestLastFrameNumbersList.add(new RequestLastFrameNumbersHolder(requestList,
+                        requestId, lastFrameNumber));
             }
 
             if (mIdle) {
@@ -1146,7 +1144,101 @@
         public int getSessionId() {
             return mSessionId;
         }
+    }
 
+    /**
+     * This class holds a capture ID and its expected last regular frame number and last reprocess
+     * frame number.
+     */
+    static class RequestLastFrameNumbersHolder {
+        // request ID
+        private final int mRequestId;
+        // The last regular frame number for this request ID. It's
+        // CaptureCallback.NO_FRAMES_CAPTURED if the request ID has no regular request.
+        private final long mLastRegularFrameNumber;
+        // The last reprocess frame number for this request ID. It's
+        // CaptureCallback.NO_FRAMES_CAPTURED if the request ID has no reprocess request.
+        private final long mLastReprocessFrameNumber;
+
+        /**
+         * Create a request-last-frame-numbers holder with a list of requests, request ID, and
+         * the last frame number returned by camera service.
+         */
+        public RequestLastFrameNumbersHolder(List<CaptureRequest> requestList, int requestId,
+                long lastFrameNumber) {
+            long lastRegularFrameNumber = CaptureCallback.NO_FRAMES_CAPTURED;
+            long lastReprocessFrameNumber = CaptureCallback.NO_FRAMES_CAPTURED;
+            long frameNumber = lastFrameNumber;
+
+            if (lastFrameNumber < requestList.size() - 1) {
+                throw new IllegalArgumentException("lastFrameNumber: " + lastFrameNumber +
+                        " should be at least " + (requestList.size() - 1) + " for the number of " +
+                        " requests in the list: " + requestList.size());
+            }
+
+            // find the last regular frame number and the last reprocess frame number
+            for (int i = requestList.size() - 1; i >= 0; i--) {
+                CaptureRequest request = requestList.get(i);
+                if (request.isReprocess() && lastReprocessFrameNumber ==
+                        CaptureCallback.NO_FRAMES_CAPTURED) {
+                    lastReprocessFrameNumber = frameNumber;
+                } else if (!request.isReprocess() && lastRegularFrameNumber ==
+                        CaptureCallback.NO_FRAMES_CAPTURED) {
+                    lastRegularFrameNumber = frameNumber;
+                }
+
+                if (lastReprocessFrameNumber != CaptureCallback.NO_FRAMES_CAPTURED &&
+                        lastRegularFrameNumber != CaptureCallback.NO_FRAMES_CAPTURED) {
+                    break;
+                }
+
+                frameNumber--;
+            }
+
+            mLastRegularFrameNumber = lastRegularFrameNumber;
+            mLastReprocessFrameNumber = lastReprocessFrameNumber;
+            mRequestId = requestId;
+        }
+
+        /**
+         * Create a request-last-frame-numbers holder with a request ID and last regular frame
+         * number.
+         */
+        public RequestLastFrameNumbersHolder(int requestId, long lastRegularFrameNumber) {
+            mLastRegularFrameNumber = lastRegularFrameNumber;
+            mLastReprocessFrameNumber = CaptureCallback.NO_FRAMES_CAPTURED;
+            mRequestId = requestId;
+        }
+
+        /**
+         * Return the last regular frame number. Return CaptureCallback.NO_FRAMES_CAPTURED if
+         * it contains no regular request.
+         */
+        public long getLastRegularFrameNumber() {
+            return mLastRegularFrameNumber;
+        }
+
+        /**
+         * Return the last reprocess frame number. Return CaptureCallback.NO_FRAMES_CAPTURED if
+         * it contains no reprocess request.
+         */
+        public long getLastReprocessFrameNumber() {
+            return mLastReprocessFrameNumber;
+        }
+
+        /**
+         * Return the last frame number overall.
+         */
+        public long getLastFrameNumber() {
+            return Math.max(mLastRegularFrameNumber, mLastReprocessFrameNumber);
+        }
+
+        /**
+         * Return the request ID.
+         */
+        public int getRequestId() {
+            return mRequestId;
+        }
     }
 
     /**
@@ -1154,8 +1246,8 @@
      */
     public class FrameNumberTracker {
 
-        private long mCompletedFrameNumber = -1;
-        private long mCompletedReprocessFrameNumber = -1;
+        private long mCompletedFrameNumber = CaptureCallback.NO_FRAMES_CAPTURED;
+        private long mCompletedReprocessFrameNumber = CaptureCallback.NO_FRAMES_CAPTURED;
         /** the skipped frame numbers that belong to regular results */
         private final LinkedList<Long> mSkippedRegularFrameNumbers = new LinkedList<Long>();
         /** the skipped frame numbers that belong to reprocess results */
@@ -1360,11 +1452,11 @@
         long completedFrameNumber = mFrameNumberTracker.getCompletedFrameNumber();
         long completedReprocessFrameNumber = mFrameNumberTracker.getCompletedReprocessFrameNumber();
         boolean isReprocess = false;
-        Iterator<SimpleEntry<Long, Integer> > iter = mFrameNumberRequestPairs.iterator();
+        Iterator<RequestLastFrameNumbersHolder> iter = mRequestLastFrameNumbersList.iterator();
         while (iter.hasNext()) {
-            final SimpleEntry<Long, Integer> frameNumberRequestPair = iter.next();
+            final RequestLastFrameNumbersHolder requestLastFrameNumbers = iter.next();
             boolean sequenceCompleted = false;
-            final int requestId = frameNumberRequestPair.getValue();
+            final int requestId = requestLastFrameNumbers.getRequestId();
             final CaptureCallbackHolder holder;
             synchronized(mInterfaceLock) {
                 if (mRemoteDevice == null) {
@@ -1376,19 +1468,22 @@
                 holder = (index >= 0) ?
                         mCaptureCallbackMap.valueAt(index) : null;
                 if (holder != null) {
-                    isReprocess = holder.getRequest().isReprocess();
+                    long lastRegularFrameNumber =
+                            requestLastFrameNumbers.getLastRegularFrameNumber();
+                    long lastReprocessFrameNumber =
+                            requestLastFrameNumbers.getLastReprocessFrameNumber();
+
                     // check if it's okay to remove request from mCaptureCallbackMap
-                    if ((isReprocess && frameNumberRequestPair.getKey() <=
-                            completedReprocessFrameNumber) || (!isReprocess &&
-                            frameNumberRequestPair.getKey() <= completedFrameNumber)) {
+                    if (lastRegularFrameNumber <= completedFrameNumber &&
+                            lastReprocessFrameNumber <= completedReprocessFrameNumber) {
                         sequenceCompleted = true;
                         mCaptureCallbackMap.removeAt(index);
                         if (DEBUG) {
                             Log.v(TAG, String.format(
-                                    "remove holder for requestId %d, "
-                                    + "because lastFrame %d is <= %d",
-                                    requestId, frameNumberRequestPair.getKey(),
-                                    completedFrameNumber));
+                                    "Remove holder for requestId %d, because lastRegularFrame %d " +
+                                    "is <= %d and lastReprocessFrame %d is <= %d", requestId,
+                                    lastRegularFrameNumber, completedFrameNumber,
+                                    lastReprocessFrameNumber, completedReprocessFrameNumber));
                         }
                     }
                 }
@@ -1412,16 +1507,10 @@
                                         requestId));
                             }
 
-                            long lastFrameNumber = frameNumberRequestPair.getKey();
-                            if (lastFrameNumber < Integer.MIN_VALUE
-                                    || lastFrameNumber > Integer.MAX_VALUE) {
-                                throw new AssertionError(lastFrameNumber
-                                        + " cannot be cast to int");
-                            }
                             holder.getCallback().onCaptureSequenceCompleted(
                                 CameraDeviceImpl.this,
                                 requestId,
-                                lastFrameNumber);
+                                requestLastFrameNumbers.getLastFrameNumber());
                         }
                     }
                 };
diff --git a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
index a4d6be09..691798f 100644
--- a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
+++ b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
@@ -326,9 +326,6 @@
         }
 
         try {
-            startPreview(); // If preview is not running (i.e. after a JPEG capture), we need to
-                            // explicitely start and stop preview before setting preview surface.
-                            // null.
             stopPreview();
         }  catch (RuntimeException e) {
             Log.e(TAG, "Received device exception in configure call: ", e);
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 293cf6f..a7af838 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -324,23 +324,7 @@
             "android.settings.BLUETOOTH_SETTINGS";
 
     /**
-     * Activity Action: Show settings to allow configuration of Wifi Displays.
-     * <p>
-     * In some cases, a matching Activity may not exist, so ensure you
-     * safeguard against this.
-     * <p>
-     * Input: Nothing.
-     * <p>
-     * Output: Nothing.
-     * @hide
-     */
-    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
-    public static final String ACTION_WIFI_DISPLAY_SETTINGS =
-            "android.settings.WIFI_DISPLAY_SETTINGS";
-
-    /**
-     * Activity Action: Show settings to allow configuration of
-     * {@link android.media.routing.MediaRouteService media route providers}.
+     * Activity Action: Show settings to allow configuration of cast endpoints.
      * <p>
      * In some cases, a matching Activity may not exist, so ensure you
      * safeguard against this.
@@ -5951,6 +5935,12 @@
                 "wireless_charging_started_sound";
 
         /**
+         * Whether to play a sound for charging events.
+         * @hide
+         */
+        public static final String CHARGING_SOUNDS_ENABLED = "charging_sounds_enabled";
+
+        /**
          * Whether we keep the device on while the device is plugged in.
          * Supported values are:
          * <ul>
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index 29aaf30..01718694 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -40,7 +40,7 @@
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MotionEvent;
-import android.view.PhoneWindow;
+import com.android.internal.policy.PhoneWindow;
 import android.view.SearchEvent;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index f09f4d2..26bd10f 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -55,6 +55,7 @@
     public static final int SOURCE_CONTACT = 1;
     public static final int SOURCE_STAR = 2;
     public static final int MAX_SOURCE = SOURCE_STAR;
+    private static final int DEFAULT_SOURCE = SOURCE_CONTACT;
 
     public static final int[] ALL_DAYS = { Calendar.SUNDAY, Calendar.MONDAY, Calendar.TUESDAY,
             Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY };
@@ -67,6 +68,8 @@
     private static final int MINUTES_MS = 60 * SECONDS_MS;
     private static final int ZERO_VALUE_MS = 10 * SECONDS_MS;
 
+    private static final boolean DEFAULT_ALLOW_CALLS = true;
+    private static final boolean DEFAULT_ALLOW_MESSAGES = false;
     private static final boolean DEFAULT_ALLOW_REMINDERS = true;
     private static final boolean DEFAULT_ALLOW_EVENTS = true;
     private static final boolean DEFAULT_ALLOW_REPEAT_CALLERS = false;
@@ -79,6 +82,8 @@
     private static final String ALLOW_ATT_REPEAT_CALLERS = "repeatCallers";
     private static final String ALLOW_ATT_MESSAGES = "messages";
     private static final String ALLOW_ATT_FROM = "from";
+    private static final String ALLOW_ATT_CALLS_FROM = "callsFrom";
+    private static final String ALLOW_ATT_MESSAGES_FROM = "messagesFrom";
     private static final String ALLOW_ATT_REMINDERS = "reminders";
     private static final String ALLOW_ATT_EVENTS = "events";
 
@@ -103,12 +108,13 @@
     private static final String RULE_ATT_ZEN = "zen";
     private static final String RULE_ATT_CONDITION_ID = "conditionId";
 
-    public boolean allowCalls;
+    public boolean allowCalls = DEFAULT_ALLOW_CALLS;
     public boolean allowRepeatCallers = DEFAULT_ALLOW_REPEAT_CALLERS;
-    public boolean allowMessages;
+    public boolean allowMessages = DEFAULT_ALLOW_MESSAGES;
     public boolean allowReminders = DEFAULT_ALLOW_REMINDERS;
     public boolean allowEvents = DEFAULT_ALLOW_EVENTS;
-    public int allowFrom = SOURCE_ANYONE;
+    public int allowCallsFrom = DEFAULT_SOURCE;
+    public int allowMessagesFrom = DEFAULT_SOURCE;
 
     public ZenRule manualRule;
     public ArrayMap<String, ZenRule> automaticRules = new ArrayMap<>();
@@ -121,7 +127,8 @@
         allowMessages = source.readInt() == 1;
         allowReminders = source.readInt() == 1;
         allowEvents = source.readInt() == 1;
-        allowFrom = source.readInt();
+        allowCallsFrom = source.readInt();
+        allowMessagesFrom = source.readInt();
         manualRule = source.readParcelable(null);
         final int len = source.readInt();
         if (len > 0) {
@@ -142,7 +149,8 @@
         dest.writeInt(allowMessages ? 1 : 0);
         dest.writeInt(allowReminders ? 1 : 0);
         dest.writeInt(allowEvents ? 1 : 0);
-        dest.writeInt(allowFrom);
+        dest.writeInt(allowCallsFrom);
+        dest.writeInt(allowMessagesFrom);
         dest.writeParcelable(manualRule, 0);
         if (!automaticRules.isEmpty()) {
             final int len = automaticRules.size();
@@ -166,7 +174,8 @@
             .append("allowCalls=").append(allowCalls)
             .append(",allowRepeatCallers=").append(allowRepeatCallers)
             .append(",allowMessages=").append(allowMessages)
-            .append(",allowFrom=").append(sourceToString(allowFrom))
+            .append(",allowCallsFrom=").append(sourceToString(allowCallsFrom))
+            .append(",allowMessagesFrom=").append(sourceToString(allowMessagesFrom))
             .append(",allowReminders=").append(allowReminders)
             .append(",allowEvents=").append(allowEvents)
             .append(",automaticRules=").append(automaticRules)
@@ -234,7 +243,8 @@
         return other.allowCalls == allowCalls
                 && other.allowRepeatCallers == allowRepeatCallers
                 && other.allowMessages == allowMessages
-                && other.allowFrom == allowFrom
+                && other.allowCallsFrom == allowCallsFrom
+                && other.allowMessagesFrom == allowMessagesFrom
                 && other.allowReminders == allowReminders
                 && other.allowEvents == allowEvents
                 && Objects.equals(other.automaticRules, automaticRules)
@@ -243,8 +253,8 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(allowCalls, allowRepeatCallers, allowMessages, allowFrom,
-                allowReminders, allowEvents, automaticRules, manualRule);
+        return Objects.hash(allowCalls, allowRepeatCallers, allowMessages, allowCallsFrom,
+                allowMessagesFrom, allowReminders, allowEvents, automaticRules, manualRule);
     }
 
     private static String toDayList(int[] days) {
@@ -314,9 +324,19 @@
                     rt.allowReminders = safeBoolean(parser, ALLOW_ATT_REMINDERS,
                             DEFAULT_ALLOW_REMINDERS);
                     rt.allowEvents = safeBoolean(parser, ALLOW_ATT_EVENTS, DEFAULT_ALLOW_EVENTS);
-                    rt.allowFrom = safeInt(parser, ALLOW_ATT_FROM, SOURCE_ANYONE);
-                    if (rt.allowFrom < SOURCE_ANYONE || rt.allowFrom > MAX_SOURCE) {
-                        throw new IndexOutOfBoundsException("bad source in config:" + rt.allowFrom);
+                    final int from = safeInt(parser, ALLOW_ATT_FROM, -1);
+                    final int callsFrom = safeInt(parser, ALLOW_ATT_CALLS_FROM, -1);
+                    final int messagesFrom = safeInt(parser, ALLOW_ATT_MESSAGES_FROM, -1);
+                    if (isValidSource(callsFrom) && isValidSource(messagesFrom)) {
+                        rt.allowCallsFrom = callsFrom;
+                        rt.allowMessagesFrom = messagesFrom;
+                    } else if (isValidSource(from)) {
+                        Slog.i(TAG, "Migrating existing shared 'from': " + sourceToString(from));
+                        rt.allowCallsFrom = from;
+                        rt.allowMessagesFrom = from;
+                    } else {
+                        rt.allowCallsFrom = DEFAULT_SOURCE;
+                        rt.allowMessagesFrom = DEFAULT_SOURCE;
                     }
                 } else if (MANUAL_TAG.equals(tag)) {
                     rt.manualRule = readRuleXml(parser, false /*conditionRequired*/);
@@ -342,7 +362,8 @@
         out.attribute(null, ALLOW_ATT_MESSAGES, Boolean.toString(allowMessages));
         out.attribute(null, ALLOW_ATT_REMINDERS, Boolean.toString(allowReminders));
         out.attribute(null, ALLOW_ATT_EVENTS, Boolean.toString(allowEvents));
-        out.attribute(null, ALLOW_ATT_FROM, Integer.toString(allowFrom));
+        out.attribute(null, ALLOW_ATT_CALLS_FROM, Integer.toString(allowCallsFrom));
+        out.attribute(null, ALLOW_ATT_MESSAGES_FROM, Integer.toString(allowMessagesFrom));
         out.endTag(null, ALLOW_TAG);
 
         if (manualRule != null) {
@@ -432,6 +453,10 @@
         return val >= 0 && val < 60;
     }
 
+    private static boolean isValidSource(int source) {
+        return source >= SOURCE_ANYONE && source <= MAX_SOURCE;
+    }
+
     private static boolean safeBoolean(XmlPullParser parser, String att, boolean defValue) {
         final String val = parser.getAttributeValue(null, att);
         if (TextUtils.isEmpty(val)) return defValue;
@@ -494,7 +519,8 @@
 
     public Policy toNotificationPolicy() {
         int priorityCategories = 0;
-        int prioritySenders = Policy.PRIORITY_SENDERS_ANY;
+        int priorityCallSenders = Policy.PRIORITY_SENDERS_CONTACTS;
+        int priorityMessageSenders = Policy.PRIORITY_SENDERS_CONTACTS;
         if (allowCalls) {
             priorityCategories |= Policy.PRIORITY_CATEGORY_CALLS;
         }
@@ -510,18 +536,27 @@
         if (allowRepeatCallers) {
             priorityCategories |= Policy.PRIORITY_CATEGORY_REPEAT_CALLERS;
         }
-        switch (allowFrom) {
-            case SOURCE_ANYONE:
-                prioritySenders = Policy.PRIORITY_SENDERS_ANY;
-                break;
-            case SOURCE_CONTACT:
-                prioritySenders = Policy.PRIORITY_SENDERS_CONTACTS;
-                break;
-            case SOURCE_STAR:
-                prioritySenders = Policy.PRIORITY_SENDERS_STARRED;
-                break;
+        priorityCallSenders = sourceToPrioritySenders(allowCallsFrom, priorityCallSenders);
+        priorityMessageSenders = sourceToPrioritySenders(allowMessagesFrom, priorityMessageSenders);
+        return new Policy(priorityCategories, priorityCallSenders);
+    }
+
+    private static int sourceToPrioritySenders(int source, int def) {
+        switch (source) {
+            case SOURCE_ANYONE: return Policy.PRIORITY_SENDERS_ANY;
+            case SOURCE_CONTACT: return Policy.PRIORITY_SENDERS_CONTACTS;
+            case SOURCE_STAR: return Policy.PRIORITY_SENDERS_STARRED;
+            default: return def;
         }
-        return new Policy(priorityCategories, prioritySenders);
+    }
+
+    private static int prioritySendersToSource(int prioritySenders, int def) {
+        switch (prioritySenders) {
+            case Policy.PRIORITY_SENDERS_CONTACTS: return SOURCE_CONTACT;
+            case Policy.PRIORITY_SENDERS_STARRED: return SOURCE_STAR;
+            case Policy.PRIORITY_SENDERS_ANY: return SOURCE_ANYONE;
+            default: return def;
+        }
     }
 
     public void applyNotificationPolicy(Policy policy) {
@@ -532,17 +567,7 @@
         allowReminders = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_REMINDERS) != 0;
         allowRepeatCallers = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_REPEAT_CALLERS)
                 != 0;
-        switch (policy.prioritySenders) {
-            case Policy.PRIORITY_SENDERS_CONTACTS:
-                allowFrom = SOURCE_CONTACT;
-                break;
-            case Policy.PRIORITY_SENDERS_STARRED:
-                allowFrom = SOURCE_STAR;
-                break;
-            default:
-                allowFrom = SOURCE_ANYONE;
-                break;
-        }
+        allowCallsFrom = prioritySendersToSource(policy.prioritySenders, allowCallsFrom);
     }
 
     public static Condition toTimeCondition(Context context, int minutesFromNow, int userHandle) {
@@ -692,7 +717,6 @@
                 .authority(SYSTEM_AUTHORITY)
                 .appendPath(EVENT_PATH)
                 .appendQueryParameter("calendar", Long.toString(event.calendar))
-                .appendQueryParameter("attendance", Integer.toString(event.attendance))
                 .appendQueryParameter("reply", Integer.toString(event.reply))
                 .build();
     }
@@ -710,22 +734,16 @@
         if (!isEvent) return null;
         final EventInfo rt = new EventInfo();
         rt.calendar = tryParseLong(conditionId.getQueryParameter("calendar"), 0L);
-        rt.attendance = tryParseInt(conditionId.getQueryParameter("attendance"), 0);
         rt.reply = tryParseInt(conditionId.getQueryParameter("reply"), 0);
         return rt;
     }
 
     public static class EventInfo {
-        public static final int ATTENDANCE_REQUIRED_OR_OPTIONAL = 0;
-        public static final int ATTENDANCE_REQUIRED = 1;
-        public static final int ATTENDANCE_OPTIONAL = 2;
-
-        public static final int REPLY_ANY = 0;
-        public static final int REPLY_ANY_EXCEPT_NO = 1;
+        public static final int REPLY_ANY_EXCEPT_NO = 0;
+        public static final int REPLY_YES_OR_MAYBE = 1;
         public static final int REPLY_YES = 2;
 
         public long calendar;  // CalendarContract.Calendars._ID, or 0 for any
-        public int attendance;
         public int reply;
 
         @Override
@@ -738,14 +756,12 @@
             if (!(o instanceof EventInfo)) return false;
             final EventInfo other = (EventInfo) o;
             return calendar == other.calendar
-                    && attendance == other.attendance
                     && reply == other.reply;
         }
 
         public EventInfo copy() {
             final EventInfo rt = new EventInfo();
             rt.calendar = calendar;
-            rt.attendance = attendance;
             rt.reply = reply;
             return rt;
         }
diff --git a/core/java/android/service/voice/IVoiceInteractionService.aidl b/core/java/android/service/voice/IVoiceInteractionService.aidl
index e8265a2..e3d68a6 100644
--- a/core/java/android/service/voice/IVoiceInteractionService.aidl
+++ b/core/java/android/service/voice/IVoiceInteractionService.aidl
@@ -23,4 +23,5 @@
     void ready();
     void soundModelsChanged();
     void shutdown();
+    void launchVoiceAssistFromKeyguard();
 }
diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java
index fee0c75..8c89ddb 100644
--- a/core/java/android/service/voice/VoiceInteractionService.java
+++ b/core/java/android/service/voice/VoiceInteractionService.java
@@ -98,6 +98,10 @@
         @Override public void soundModelsChanged() {
             mHandler.sendEmptyMessage(MSG_SOUND_MODELS_CHANGED);
         }
+        @Override
+        public void launchVoiceAssistFromKeyguard() throws RemoteException {
+            mHandler.sendEmptyMessage(MSG_LAUNCH_VOICE_ASSIST_FROM_KEYGUARD);
+        }
     };
 
     MyHandler mHandler;
@@ -113,6 +117,7 @@
     static final int MSG_READY = 1;
     static final int MSG_SHUTDOWN = 2;
     static final int MSG_SOUND_MODELS_CHANGED = 3;
+    static final int MSG_LAUNCH_VOICE_ASSIST_FROM_KEYGUARD = 4;
 
     class MyHandler extends Handler {
         @Override
@@ -127,6 +132,9 @@
                 case MSG_SOUND_MODELS_CHANGED:
                     onSoundModelsChangedInternal();
                     break;
+                case MSG_LAUNCH_VOICE_ASSIST_FROM_KEYGUARD:
+                    onLaunchVoiceAssistFromKeyguard();
+                    break;
                 default:
                     super.handleMessage(msg);
             }
@@ -134,6 +142,19 @@
     }
 
     /**
+     * Called when a user has activated an affordance to launch voice assist from the Keyguard.
+     *
+     * <p>This method will only be called if the VoiceInteractionService has set
+     * {@link android.R.attr#supportsLaunchVoiceAssistFromKeyguard} and the Keyguard is showing.</p>
+     *
+     * <p>A valid implementation must start a new activity that should use {@link
+     * android.view.WindowManager.LayoutParams#FLAG_SHOW_WHEN_LOCKED} to display
+     * on top of the lock screen.</p>
+     */
+    public void onLaunchVoiceAssistFromKeyguard() {
+    }
+
+    /**
      * Check whether the given service component is the currently active
      * VoiceInteractionService.
      */
diff --git a/core/java/android/service/voice/VoiceInteractionServiceInfo.java b/core/java/android/service/voice/VoiceInteractionServiceInfo.java
index 997d58673..463eb5b 100644
--- a/core/java/android/service/voice/VoiceInteractionServiceInfo.java
+++ b/core/java/android/service/voice/VoiceInteractionServiceInfo.java
@@ -44,6 +44,7 @@
     private String mRecognitionService;
     private String mSettingsActivity;
     private boolean mSupportsAssist;
+    private boolean mSupportsLaunchFromKeyguard;
 
     public VoiceInteractionServiceInfo(PackageManager pm, ComponentName comp)
             throws PackageManager.NameNotFoundException {
@@ -98,6 +99,9 @@
             mSupportsAssist = array.getBoolean(
                     com.android.internal.R.styleable.VoiceInteractionService_supportsAssist,
                     false);
+            mSupportsLaunchFromKeyguard = array.getBoolean(com.android.internal.
+                    R.styleable.VoiceInteractionService_supportsLaunchVoiceAssistFromKeyguard,
+                    false);
             array.recycle();
             if (mSessionService == null) {
                 mParseError = "No sessionService specified";
@@ -148,4 +152,8 @@
     public boolean getSupportsAssist() {
         return mSupportsAssist;
     }
+
+    public boolean getSupportsLaunchFromKeyguard() {
+        return mSupportsLaunchFromKeyguard;
+    }
 }
diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java
index cf29310..3eeb04a 100644
--- a/core/java/android/speech/tts/TextToSpeech.java
+++ b/core/java/android/speech/tts/TextToSpeech.java
@@ -1481,14 +1481,8 @@
                 // interface).
 
                 // Sanitize locale using isLanguageAvailable.
-                int result = service.isLanguageAvailable( language, country, variant);
-                if (result >= LANG_AVAILABLE){
-                    if (result < LANG_COUNTRY_VAR_AVAILABLE) {
-                        variant = "";
-                        if (result < LANG_COUNTRY_AVAILABLE) {
-                            country = "";
-                        }
-                    }
+                int result = service.isLanguageAvailable(language, country, variant);
+                if (result >= LANG_AVAILABLE) {
                     // Get the default voice for the locale.
                     String voiceName = service.getDefaultVoiceNameFor(language, country, variant);
                     if (TextUtils.isEmpty(voiceName)) {
@@ -1502,10 +1496,28 @@
                         return LANG_NOT_SUPPORTED;
                     }
 
+                    // Set the language/country/variant of the voice, so #getLanguage will return
+                    // the currently set voice locale when called.
+                    Voice voice = getVoice(service, voiceName);
+                    String voiceLanguage = "";
+                    try {
+                        voiceLanguage = voice.getLocale().getISO3Language();
+                    } catch (MissingResourceException e) {
+                        Log.w(TAG, "Couldn't retrieve ISO 639-2/T language code for locale: " +
+                                voice.getLocale(), e);
+                    }
+
+                    String voiceCountry = "";
+                    try {
+                        voiceCountry = voice.getLocale().getISO3Country();
+                    } catch (MissingResourceException e) {
+                        Log.w(TAG, "Couldn't retrieve ISO 3166 country code for locale: " +
+                                voice.getLocale(), e);
+                    }
                     mParams.putString(Engine.KEY_PARAM_VOICE_NAME, voiceName);
-                    mParams.putString(Engine.KEY_PARAM_LANGUAGE, language);
-                    mParams.putString(Engine.KEY_PARAM_COUNTRY, country);
-                    mParams.putString(Engine.KEY_PARAM_VARIANT, variant);
+                    mParams.putString(Engine.KEY_PARAM_LANGUAGE, voiceLanguage);
+                    mParams.putString(Engine.KEY_PARAM_COUNTRY, voiceCountry);
+                    mParams.putString(Engine.KEY_PARAM_VARIANT, voice.getLocale().getVariant());
                 }
                 return result;
             }
@@ -1654,20 +1666,32 @@
                 if (TextUtils.isEmpty(voiceName)) {
                     return null;
                 }
-                List<Voice> voices = service.getVoices();
-                if (voices == null) {
-                    return null;
-                }
-                for (Voice voice : voices) {
-                    if (voice.getName().equals(voiceName)) {
-                        return voice;
-                    }
-                }
-                return null;
+                return getVoice(service, voiceName);
             }
         }, null, "getVoice");
     }
 
+
+    /**
+     * Returns a Voice instance of the voice with the given voice name.
+     *
+     * @return Voice instance with the given voice name, or {@code null} if not set or on error.
+     *
+     * @see Voice
+     */
+    private Voice getVoice(ITextToSpeechService service, String voiceName) throws RemoteException {
+        List<Voice> voices = service.getVoices();
+        if (voices == null) {
+            return null;
+        }
+        for (Voice voice : voices) {
+            if (voice.getName().equals(voiceName)) {
+                return voice;
+            }
+        }
+        return null;
+    }
+
     /**
      * Returns a Voice instance that's the default voice for the default Text-to-speech language.
      * @return The default voice instance for the default language, or {@code null} if not set or
@@ -1690,14 +1714,7 @@
 
                 // Sanitize the locale using isLanguageAvailable.
                 int result = service.isLanguageAvailable(language, country, variant);
-                if (result >= LANG_AVAILABLE){
-                    if (result < LANG_COUNTRY_VAR_AVAILABLE) {
-                        variant = "";
-                        if (result < LANG_COUNTRY_AVAILABLE) {
-                            country = "";
-                        }
-                    }
-                } else {
+                if (result < LANG_AVAILABLE) {
                     // The default language is not supported.
                     return null;
                 }
diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java
index 7bebbfb..a55a08c 100644
--- a/core/java/android/text/Html.java
+++ b/core/java/android/text/Html.java
@@ -278,7 +278,7 @@
                 if (style[j] instanceof TypefaceSpan) {
                     String s = ((TypefaceSpan) style[j]).getFamily();
 
-                    if (s.equals("monospace")) {
+                    if ("monospace".equals(s)) {
                         out.append("<tt>");
                     }
                 }
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index 451abea..59c7c6d 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -91,6 +91,7 @@
             b.mEllipsizedWidth = width;
             b.mEllipsize = null;
             b.mMaxLines = Integer.MAX_VALUE;
+            b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE;
 
             b.mMeasuredText = MeasuredText.obtain();
             return b;
@@ -100,6 +101,8 @@
             b.mPaint = null;
             b.mText = null;
             MeasuredText.recycle(b.mMeasuredText);
+            b.mMeasuredText = null;
+            nFinishBuilder(b.mNativePtr);
             sPool.release(b);
         }
 
diff --git a/core/java/android/text/method/WordIterator.java b/core/java/android/text/method/WordIterator.java
index 11226a9..c4dc5ed 100644
--- a/core/java/android/text/method/WordIterator.java
+++ b/core/java/android/text/method/WordIterator.java
@@ -95,6 +95,45 @@
         } while (true);
     }
 
+    /** {@inheritDoc} */
+    public boolean isBoundary(int offset) {
+        int shiftedOffset = offset - mOffsetShift;
+        checkOffsetIsValid(shiftedOffset);
+        return mIterator.isBoundary(shiftedOffset);
+    }
+
+    /**
+     * Returns the position of next boundary after the given offset. Returns
+     * {@code DONE} if there is no boundary after the given offset.
+     *
+     * @param offset the given start position to search from.
+     * @return the position of the last boundary preceding the given offset.
+     */
+    public int nextBoundary(int offset) {
+        int shiftedOffset = offset - mOffsetShift;
+        shiftedOffset = mIterator.following(shiftedOffset);
+        if (shiftedOffset == BreakIterator.DONE) {
+            return BreakIterator.DONE;
+        }
+        return shiftedOffset + mOffsetShift;
+    }
+
+    /**
+     * Returns the position of boundary preceding the given offset or
+     * {@code DONE} if the given offset specifies the starting position.
+     *
+     * @param offset the given start position to search from.
+     * @return the position of the last boundary preceding the given offset.
+     */
+    public int prevBoundary(int offset) {
+        int shiftedOffset = offset - mOffsetShift;
+        shiftedOffset = mIterator.preceding(shiftedOffset);
+        if (shiftedOffset == BreakIterator.DONE) {
+            return BreakIterator.DONE;
+        }
+        return shiftedOffset + mOffsetShift;
+    }
+
     /** If <code>offset</code> is within a word, returns the index of the first character of that
      * word, otherwise returns BreakIterator.DONE.
      *
diff --git a/core/java/android/transition/Transition.java b/core/java/android/transition/Transition.java
index ebc2aac..1b25505 100644
--- a/core/java/android/transition/Transition.java
+++ b/core/java/android/transition/Transition.java
@@ -1639,6 +1639,7 @@
         for (int i = 0; i < count; i++) {
             TransitionValues values = lookIn.get(i);
             if (values == null) {
+                // Null values are always added to the end of the list, so we know to stop now.
                 return null;
             }
             if (values.view == view) {
@@ -1742,6 +1743,9 @@
                     View oldView = oldInfo.view;
                     TransitionValues startValues = getTransitionValues(oldView, true);
                     TransitionValues endValues = getMatchedTransitionValues(oldView, true);
+                    if (startValues == null && endValues == null) {
+                        endValues = mEndValues.viewValues.get(oldView);
+                    }
                     boolean cancel = (startValues != null || endValues != null) &&
                             oldInfo.transition.areValuesChanged(oldValues, endValues);
                     if (cancel) {
diff --git a/core/java/android/util/FloatMath.java b/core/java/android/util/FloatMath.java
index 8f488af..bb7d15f 100644
--- a/core/java/android/util/FloatMath.java
+++ b/core/java/android/util/FloatMath.java
@@ -25,6 +25,8 @@
  * {@link java.lang.Math}. {@link java.lang.Math} should be used in
  * preference.
  *
+ * <p>All methods were removed from the public API in version 23.
+ *
  * @deprecated Use {@link java.lang.Math} instead.
  */
 @Deprecated
@@ -39,6 +41,7 @@
      *
      * @param value to be converted
      * @return the floor of value
+     * @removed
      */
     public static float floor(float value) {
         return (float) Math.floor(value);
@@ -50,6 +53,7 @@
      *
      * @param value to be converted
      * @return the ceiling of value
+     * @removed
      */
     public static float ceil(float value) {
         return (float) Math.ceil(value);
@@ -60,6 +64,7 @@
      *
      * @param angle to compute the cosine of, in radians
      * @return the sine of angle
+     * @removed
      */
     public static float sin(float angle) {
         return (float) Math.sin(angle);
@@ -70,6 +75,7 @@
      *
      * @param angle to compute the cosine of, in radians
      * @return the cosine of angle
+     * @removed
      */
     public static float cos(float angle) {
         return (float) Math.cos(angle);
@@ -81,6 +87,7 @@
      *
      * @param value to compute sqrt of
      * @return the square root of value
+     * @removed
      */
     public static float sqrt(float value) {
         return (float) Math.sqrt(value);
@@ -92,6 +99,7 @@
      *
      * @param value to compute the exponential of
      * @return the exponential of value
+     * @removed
      */
     public static float exp(float value) {
         return (float) Math.exp(value);
@@ -104,6 +112,7 @@
      * @param x the base of the operation.
      * @param y the exponent of the operation.
      * @return {@code x} to the power of {@code y}.
+     * @removed
      */
     public static float pow(float x, float y) {
         return (float) Math.pow(x, y);
@@ -116,6 +125,7 @@
      * @param x a float number
      * @param y a float number
      * @return the hypotenuse
+     * @removed
      */
     public static float hypot(float x, float y) {
         return (float) Math.hypot(x, y);
diff --git a/core/java/android/view/DisplayListCanvas.java b/core/java/android/view/DisplayListCanvas.java
index 48167c8..bb761f0 100644
--- a/core/java/android/view/DisplayListCanvas.java
+++ b/core/java/android/view/DisplayListCanvas.java
@@ -93,12 +93,6 @@
 
     private static native long nCreateDisplayListCanvas();
 
-    public static void setProperty(String name, String value) {
-        nSetProperty(name, value);
-    }
-
-    private static native void nSetProperty(String name, String value);
-
     ///////////////////////////////////////////////////////////////////////////
     // Canvas management
     ///////////////////////////////////////////////////////////////////////////
diff --git a/core/java/android/view/GhostView.java b/core/java/android/view/GhostView.java
index bc38e1a..9f46f45 100644
--- a/core/java/android/view/GhostView.java
+++ b/core/java/android/view/GhostView.java
@@ -40,8 +40,7 @@
         mView.mGhostView = this;
         final ViewGroup parent = (ViewGroup) mView.getParent();
         setGhostedVisibility(View.INVISIBLE);
-        parent.mRecreateDisplayList = true;
-        parent.updateDisplayListIfDirty();
+        parent.invalidate();
     }
 
     @Override
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index 91e6d68..1fd7109 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.IntDef;
+import android.annotation.NonNull;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -412,6 +413,13 @@
         nTrimMemory(level);
     }
 
+    public static void overrideProperty(@NonNull String name, @NonNull String value) {
+        if (name == null || value == null) {
+            throw new IllegalArgumentException("name and value must be non-null");
+        }
+        nOverrideProperty(name, value);
+    }
+
     public static void dumpProfileData(byte[] data, FileDescriptor fd) {
         nDumpProfileData(data, fd);
     }
@@ -510,6 +518,7 @@
 
     private static native void nDestroyHardwareResources(long nativeProxy);
     private static native void nTrimMemory(int level);
+    private static native void nOverrideProperty(String name, String value);
 
     private static native void nFence(long nativeProxy);
     private static native void nStopDrawing(long nativeProxy);
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 75dc0a2..f62e6a2 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -2395,10 +2395,143 @@
      */
     static final int PFLAG3_NESTED_SCROLLING_ENABLED = 0x80;
 
+    /**
+     * Flag indicating that the bottom scroll indicator should be displayed
+     * when this view can scroll up.
+     */
+    static final int PFLAG3_SCROLL_INDICATOR_TOP = 0x0100;
+
+    /**
+     * Flag indicating that the bottom scroll indicator should be displayed
+     * when this view can scroll down.
+     */
+    static final int PFLAG3_SCROLL_INDICATOR_BOTTOM = 0x0200;
+
+    /**
+     * Flag indicating that the left scroll indicator should be displayed
+     * when this view can scroll left.
+     */
+    static final int PFLAG3_SCROLL_INDICATOR_LEFT = 0x0400;
+
+    /**
+     * Flag indicating that the right scroll indicator should be displayed
+     * when this view can scroll right.
+     */
+    static final int PFLAG3_SCROLL_INDICATOR_RIGHT = 0x0800;
+
+    /**
+     * Flag indicating that the start scroll indicator should be displayed
+     * when this view can scroll in the start direction.
+     */
+    static final int PFLAG3_SCROLL_INDICATOR_START = 0x1000;
+
+    /**
+     * Flag indicating that the end scroll indicator should be displayed
+     * when this view can scroll in the end direction.
+     */
+    static final int PFLAG3_SCROLL_INDICATOR_END = 0x2000;
+
     /* End of masks for mPrivateFlags3 */
 
     static final int DRAG_MASK = PFLAG2_DRAG_CAN_ACCEPT | PFLAG2_DRAG_HOVERED;
 
+    static final int SCROLL_INDICATORS_NONE = 0x0000;
+
+    /**
+     * Mask for use with setFlags indicating bits used for indicating which
+     * scroll indicators are enabled.
+     */
+    static final int SCROLL_INDICATORS_PFLAG3_MASK = PFLAG3_SCROLL_INDICATOR_TOP
+            | PFLAG3_SCROLL_INDICATOR_BOTTOM | PFLAG3_SCROLL_INDICATOR_LEFT
+            | PFLAG3_SCROLL_INDICATOR_RIGHT | PFLAG3_SCROLL_INDICATOR_START
+            | PFLAG3_SCROLL_INDICATOR_END;
+
+    /**
+     * Left-shift required to translate between public scroll indicator flags
+     * and internal PFLAGS3 flags. When used as a right-shift, translates
+     * PFLAGS3 flags to public flags.
+     */
+    static final int SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT = 8;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true,
+            value = {
+                    SCROLL_INDICATOR_TOP,
+                    SCROLL_INDICATOR_BOTTOM,
+                    SCROLL_INDICATOR_LEFT,
+                    SCROLL_INDICATOR_RIGHT,
+                    SCROLL_INDICATOR_START,
+                    SCROLL_INDICATOR_END,
+            })
+    public @interface ScrollIndicators {}
+
+    /**
+     * Scroll indicator direction for the top edge of the view.
+     *
+     * @see #setScrollIndicators(int)
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     */
+    public static final int SCROLL_INDICATOR_TOP =
+            PFLAG3_SCROLL_INDICATOR_TOP >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+
+    /**
+     * Scroll indicator direction for the bottom edge of the view.
+     *
+     * @see #setScrollIndicators(int)
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     */
+    public static final int SCROLL_INDICATOR_BOTTOM =
+            PFLAG3_SCROLL_INDICATOR_BOTTOM >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+
+    /**
+     * Scroll indicator direction for the left edge of the view.
+     *
+     * @see #setScrollIndicators(int)
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     */
+    public static final int SCROLL_INDICATOR_LEFT =
+            PFLAG3_SCROLL_INDICATOR_LEFT >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+
+    /**
+     * Scroll indicator direction for the right edge of the view.
+     *
+     * @see #setScrollIndicators(int)
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     */
+    public static final int SCROLL_INDICATOR_RIGHT =
+            PFLAG3_SCROLL_INDICATOR_RIGHT >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+
+    /**
+     * Scroll indicator direction for the starting edge of the view.
+     * <p>
+     * Resolved according to the view's layout direction, see
+     * {@link #getLayoutDirection()} for more information.
+     *
+     * @see #setScrollIndicators(int)
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     */
+    public static final int SCROLL_INDICATOR_START =
+            PFLAG3_SCROLL_INDICATOR_START >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+
+    /**
+     * Scroll indicator direction for the ending edge of the view.
+     * <p>
+     * Resolved according to the view's layout direction, see
+     * {@link #getLayoutDirection()} for more information.
+     *
+     * @see #setScrollIndicators(int)
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     */
+    public static final int SCROLL_INDICATOR_END =
+            PFLAG3_SCROLL_INDICATOR_END >> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+
     /**
      * <p>Indicates that we are allowing {@link android.view.ViewAssistStructure} to traverse
      * into this view.<p>
@@ -3217,6 +3350,8 @@
     @ViewDebug.ExportedProperty(deepExport = true, prefix = "fg_")
     private ForegroundInfo mForegroundInfo;
 
+    private Drawable mScrollIndicatorDrawable;
+
     /**
      * RenderNode used for backgrounds.
      * <p>
@@ -3769,6 +3904,7 @@
         int scrollbarStyle = SCROLLBARS_INSIDE_OVERLAY;
         int overScrollMode = mOverScrollMode;
         boolean initializeScrollbars = false;
+        boolean initializeScrollIndicators = false;
 
         boolean startPaddingDefined = false;
         boolean endPaddingDefined = false;
@@ -4135,6 +4271,14 @@
                     }
                     mForegroundInfo.mInsidePadding = a.getBoolean(attr,
                             mForegroundInfo.mInsidePadding);
+                case R.styleable.View_scrollIndicators:
+                    final int scrollIndicators =
+                            a.getInt(attr, SCROLL_INDICATORS_NONE) & SCROLL_INDICATORS_PFLAG3_MASK;
+                    if (scrollIndicators != 0) {
+                        viewFlagValues |= scrollIndicators;
+                        viewFlagMasks |= SCROLL_INDICATORS_PFLAG3_MASK;
+                        initializeScrollIndicators = true;
+                    }
                     break;
             }
         }
@@ -4211,6 +4355,10 @@
             initializeScrollbarsInternal(a);
         }
 
+        if (initializeScrollIndicators) {
+            initializeScrollIndicatorsInternal();
+        }
+
         a.recycle();
 
         // Needs to be called after mViewFlags is set
@@ -4682,6 +4830,15 @@
         resolvePadding();
     }
 
+    private void initializeScrollIndicatorsInternal() {
+        // Some day maybe we'll break this into top/left/start/etc. and let the
+        // client control it. Until then, you can have any scroll indicator you
+        // want as long as it's a 1dp foreground-colored rectangle.
+        if (mScrollIndicatorDrawable == null) {
+            mScrollIndicatorDrawable = mContext.getDrawable(R.drawable.scroll_indicator_material);
+        }
+    }
+
     /**
      * <p>
      * Initalizes the scrollability cache if necessary.
@@ -4721,6 +4878,118 @@
         return mVerticalScrollbarPosition;
     }
 
+    /**
+     * Sets the state of all scroll indicators.
+     * <p>
+     * See {@link #setScrollIndicators(int, int)} for usage information.
+     *
+     * @param indicators a bitmask of indicators that should be enabled, or
+     *                   {@code 0} to disable all indicators
+     * @see #setScrollIndicators(int, int)
+     * @see #getScrollIndicators()
+     * @attr ref android.R.styleable#View_scrollIndicators
+     */
+    public void setScrollIndicators(@ScrollIndicators int indicators) {
+        setScrollIndicators(indicators, SCROLL_INDICATORS_PFLAG3_MASK);
+    }
+
+    /**
+     * Sets the state of the scroll indicators specified by the mask. To change
+     * all scroll indicators at once, see {@link #setScrollIndicators(int)}.
+     * <p>
+     * When a scroll indicator is enabled, it will be displayed if the view
+     * can scroll in the direction of the indicator.
+     * <p>
+     * Multiple indicator types may be enabled or disabled by passing the
+     * logical OR of the desired types. If multiple types are specified, they
+     * will all be set to the same enabled state.
+     * <p>
+     * For example, to enable the top scroll indicatorExample: {@code setScrollIndicators
+     *
+     * @param indicators the indicator direction, or the logical OR of multiple
+     *             indicator directions. One or more of:
+     *             <ul>
+     *               <li>{@link #SCROLL_INDICATOR_TOP}</li>
+     *               <li>{@link #SCROLL_INDICATOR_BOTTOM}</li>
+     *               <li>{@link #SCROLL_INDICATOR_LEFT}</li>
+     *               <li>{@link #SCROLL_INDICATOR_RIGHT}</li>
+     *               <li>{@link #SCROLL_INDICATOR_START}</li>
+     *               <li>{@link #SCROLL_INDICATOR_END}</li>
+     *             </ul>
+     * @see #setScrollIndicators(int)
+     * @see #getScrollIndicators()
+     * @attr ref android.R.styleable#View_scrollIndicators
+     */
+    public void setScrollIndicators(@ScrollIndicators int indicators, @ScrollIndicators int mask) {
+        // Shift and sanitize mask.
+        mask <<= SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+        mask &= SCROLL_INDICATORS_PFLAG3_MASK;
+
+        // Shift and mask indicators.
+        indicators <<= SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+        indicators &= mask;
+
+        // Merge with non-masked flags.
+        final int updatedFlags = indicators | (mPrivateFlags3 & ~mask);
+
+        if (mPrivateFlags3 != updatedFlags) {
+            mPrivateFlags3 = updatedFlags;
+
+            if (indicators != 0) {
+                initializeScrollIndicatorsInternal();
+            }
+            invalidate();
+        }
+    }
+
+    /**
+     * Returns a bitmask representing the enabled scroll indicators.
+     * <p>
+     * For example, if the top and left scroll indicators are enabled and all
+     * other indicators are disabled, the return value will be
+     * {@code View.SCROLL_INDICATOR_TOP | View.SCROLL_INDICATOR_LEFT}.
+     * <p>
+     * To check whether the bottom scroll indicator is enabled, use the value
+     * of {@code (getScrollIndicators() & View.SCROLL_INDICATOR_BOTTOM) != 0}.
+     *
+     * @return a bitmask representing the enabled scroll indicators
+     */
+    @ScrollIndicators
+    public int getScrollIndicators() {
+        return (mPrivateFlags3 & SCROLL_INDICATORS_PFLAG3_MASK)
+                >>> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+    }
+
+    /**
+     * Returns whether the specified scroll indicator is enabled.
+     * <p>
+     * Multiple indicator types may be queried by passing the logical OR of the
+     * desired types. If multiple types are specified, the return value
+     * represents whether they are all enabled.
+     *
+     * @param direction the indicator direction, or the logical OR of multiple
+     *             indicator directions. One or more of:
+     *             <ul>
+     *               <li>{@link #SCROLL_INDICATOR_TOP}</li>
+     *               <li>{@link #SCROLL_INDICATOR_BOTTOM}</li>
+     *               <li>{@link #SCROLL_INDICATOR_LEFT}</li>
+     *               <li>{@link #SCROLL_INDICATOR_RIGHT}</li>
+     *               <li>{@link #SCROLL_INDICATOR_START}</li>
+     *               <li>{@link #SCROLL_INDICATOR_END}</li>
+     *             </ul>
+     * @return {@code true} if the specified indicator(s) are enabled,
+     *         {@code false} otherwise
+     * @attr ref android.R.styleable#View_scrollIndicators
+     */
+    public boolean isScrollIndicatorEnabled(int direction) {
+        // Shift and sanitize input.
+        direction <<= SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
+        direction &= SCROLL_INDICATORS_PFLAG3_MASK;
+
+        // All of the flags must be set.
+        return (mPrivateFlags3 & direction) == direction;
+    }
+
     ListenerInfo getListenerInfo() {
         if (mListenerInfo != null) {
             return mListenerInfo;
@@ -13444,6 +13713,75 @@
         }
     }
 
+    void getScrollIndicatorBounds(@NonNull Rect out) {
+        out.left = mScrollX;
+        out.right = mScrollX + mRight - mLeft;
+        out.top = mScrollY;
+        out.bottom = mScrollY + mBottom - mTop;
+    }
+
+    private void onDrawScrollIndicators(Canvas c) {
+        if ((mPrivateFlags3 & SCROLL_INDICATORS_PFLAG3_MASK) == 0) {
+            // No scroll indicators enabled.
+            return;
+        }
+
+        final Drawable dr = mScrollIndicatorDrawable;
+        if (dr == null) {
+            // Scroll indicators aren't supported here.
+            return;
+        }
+
+        final int h = dr.getIntrinsicHeight();
+        final int w = dr.getIntrinsicWidth();
+        final Rect rect = mAttachInfo.mTmpInvalRect;
+        getScrollIndicatorBounds(rect);
+
+        if ((mPrivateFlags3 & PFLAG3_SCROLL_INDICATOR_TOP) != 0) {
+            final boolean canScrollUp = canScrollVertically(-1);
+            if (canScrollUp) {
+                dr.setBounds(rect.left, rect.top, rect.right, rect.top + h);
+                dr.draw(c);
+            }
+        }
+
+        if ((mPrivateFlags3 & PFLAG3_SCROLL_INDICATOR_BOTTOM) != 0) {
+            final boolean canScrollDown = canScrollVertically(1);
+            if (canScrollDown) {
+                dr.setBounds(rect.left, rect.bottom - h, rect.right, rect.bottom);
+                dr.draw(c);
+            }
+        }
+
+        final int leftRtl;
+        final int rightRtl;
+        if (getLayoutDirection() == LAYOUT_DIRECTION_RTL) {
+            leftRtl = PFLAG3_SCROLL_INDICATOR_END;
+            rightRtl = PFLAG3_SCROLL_INDICATOR_START;
+        } else {
+            leftRtl = PFLAG3_SCROLL_INDICATOR_START;
+            rightRtl = PFLAG3_SCROLL_INDICATOR_END;
+        }
+
+        final int leftMask = PFLAG3_SCROLL_INDICATOR_LEFT | leftRtl;
+        if ((mPrivateFlags3 & leftMask) != 0) {
+            final boolean canScrollLeft = canScrollHorizontally(-1);
+            if (canScrollLeft) {
+                dr.setBounds(rect.left, rect.top, rect.left + w, rect.bottom);
+                dr.draw(c);
+            }
+        }
+
+        final int rightMask = PFLAG3_SCROLL_INDICATOR_RIGHT | rightRtl;
+        if ((mPrivateFlags3 & rightMask) != 0) {
+            final boolean canScrollRight = canScrollHorizontally(1);
+            if (canScrollRight) {
+                dr.setBounds(rect.right - w, rect.top, rect.right, rect.bottom);
+                dr.draw(c);
+            }
+        }
+    }
+
     /**
      * <p>Request the drawing of the horizontal and the vertical scrollbar. The
      * scrollbars are painted only if they have been awakened first.</p>
@@ -17272,6 +17610,7 @@
      * @param canvas canvas to draw into
      */
     public void onDrawForeground(Canvas canvas) {
+        onDrawScrollIndicators(canvas);
         onDrawScrollBars(canvas);
 
         final Drawable foreground = mForegroundInfo != null ? mForegroundInfo.mDrawable : null;
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index f240fd6..babb4e9 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -18,6 +18,7 @@
 
 import android.animation.LayoutTransition;
 import android.annotation.IdRes;
+import android.annotation.NonNull;
 import android.annotation.UiThread;
 import android.content.Context;
 import android.content.Intent;
@@ -3547,6 +3548,21 @@
         return child.draw(canvas, this, drawingTime);
     }
 
+    @Override
+    void getScrollIndicatorBounds(@NonNull Rect out) {
+        super.getScrollIndicatorBounds(out);
+
+        // If we have padding and we're supposed to clip children to that
+        // padding, offset the scroll indicators to match our clip bounds.
+        final boolean clipToPadding = (mGroupFlags & CLIP_TO_PADDING_MASK) == CLIP_TO_PADDING_MASK;
+        if (clipToPadding) {
+            out.left += mPaddingLeft;
+            out.right -= mPaddingRight;
+            out.top += mPaddingTop;
+            out.bottom -= mPaddingBottom;
+        }
+    }
+
     /**
      * Returns whether this group's children are clipped to their bounds before drawing.
      * The default value is true.
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index fda6e63..c9c2a827 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -76,6 +76,7 @@
 
 import com.android.internal.R;
 import com.android.internal.os.SomeArgs;
+import com.android.internal.policy.PhoneFallbackEventHandler;
 import com.android.internal.util.ScreenShapeHelper;
 import com.android.internal.view.BaseSurfaceHolder;
 import com.android.internal.view.RootViewSurfaceTaker;
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 78604bf..040fd37 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -247,6 +247,13 @@
     /** @hide */
     public static final int DISPATCH_HANDLED = 1;
 
+    /** @hide */
+    public static final int SHOW_IM_PICKER_MODE_AUTO = 0;
+    /** @hide */
+    public static final int SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES = 1;
+    /** @hide */
+    public static final int SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES = 2;
+
     final IInputMethodManager mService;
     final Looper mMainLooper;
     
@@ -1890,9 +1897,28 @@
         }
     }
 
+    /**
+     * Shows the input method chooser dialog.
+     *
+     * @param showAuxiliarySubtypes Set true to show auxiliary input methods.
+     * @hide
+     */
+    public void showInputMethodPicker(boolean showAuxiliarySubtypes) {
+        synchronized (mH) {
+            try {
+                final int mode = showAuxiliarySubtypes ?
+                        SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES:
+                        SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES;
+                mService.showInputMethodPickerFromClient(mClient, mode);
+            } catch (RemoteException e) {
+                Log.w(TAG, "IME died: " + mCurId, e);
+            }
+        }
+    }
+
     private void showInputMethodPickerLocked() {
         try {
-            mService.showInputMethodPickerFromClient(mClient);
+            mService.showInputMethodPickerFromClient(mClient, SHOW_IM_PICKER_MODE_AUTO);
         } catch (RemoteException e) {
             Log.w(TAG, "IME died: " + mCurId, e);
         }
diff --git a/core/java/android/widget/ActionMenuPresenter.java b/core/java/android/widget/ActionMenuPresenter.java
index e0b0e1f..f08141c 100644
--- a/core/java/android/widget/ActionMenuPresenter.java
+++ b/core/java/android/widget/ActionMenuPresenter.java
@@ -61,6 +61,7 @@
         implements ActionProvider.SubUiVisibilityListener {
     private static final String TAG = "ActionMenuPresenter";
     private static final int ITEM_ANIMATION_DURATION = 150;
+    private static final boolean ACTIONBAR_ANIMATIONS_ENABLED = false;
 
     private OverflowMenuButton mOverflowButton;
     private boolean mReserveOverflow;
@@ -414,7 +415,7 @@
     @Override
     public void updateMenuView(boolean cleared) {
         final ViewGroup menuViewParent = (ViewGroup) ((View) mMenuView).getParent();
-        if (menuViewParent != null) {
+        if (menuViewParent != null && ACTIONBAR_ANIMATIONS_ENABLED) {
             setupItemAnimations();
         }
         super.updateMenuView(cleared);
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 8d35b83..86a100f 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -688,44 +688,101 @@
     private int getWordStart(int offset) {
         // FIXME - For this and similar methods we're not doing anything to check if there's
         // a LocaleSpan in the text, this may be something we should try handling or checking for.
-        int retOffset = getWordIteratorWithText().getBeginning(offset);
-        if (retOffset == BreakIterator.DONE) retOffset = offset;
-        return retOffset;
-    }
-
-    private int getWordEnd(int offset, boolean includePunctuation) {
-        int retOffset = getWordIteratorWithText().getEnd(offset);
-        if (retOffset == BreakIterator.DONE) {
-            retOffset = offset;
-        } else if (includePunctuation) {
-            retOffset = handlePunctuation(retOffset);
-        }
-        return retOffset;
-    }
-
-    private boolean isEndBoundary(int offset) {
-        int thisEnd = getWordEnd(offset, false);
-        return offset == thisEnd;
-    }
-
-    private boolean isStartBoundary(int offset) {
-        int thisStart = getWordStart(offset);
-        return thisStart == offset;
-    }
-
-    private int handlePunctuation(int offset) {
-        // FIXME - Check with UX how repeated ending punctuation should be handled.
-        // FIXME - Check with UX if / how we would handle non sentence ending characters.
-        // FIXME - Consider punctuation in different languages.
-        CharSequence text = mTextView.getText();
-        if (offset < text.length()) {
-            int c = Character.codePointAt(text, offset);
-            if (c == 0x002e /* period */|| c == 0x003f /* question mark */
-                    || c == 0x0021 /* exclamation mark */) {
-                offset = Character.offsetByCodePoints(text, offset, 1);
+        int retOffset = getWordIteratorWithText().prevBoundary(offset);
+        if (isPunctBoundaryBehind(retOffset, true /* isStart */)) {
+            // If we're on a punctuation boundary we should continue to get the
+            // previous offset until we're not longer on a punctuation boundary.
+            retOffset = getWordIteratorWithText().prevBoundary(retOffset);
+            while (!isPunctBoundaryBehind(retOffset, false /* isStart */)
+                    && retOffset != BreakIterator.DONE) {
+                retOffset = getWordIteratorWithText().prevBoundary(retOffset);
             }
         }
-        return offset;
+        if (retOffset == BreakIterator.DONE) {
+            return offset;
+        }
+        return retOffset;
+    }
+
+    private int getWordEnd(int offset) {
+        int retOffset = getWordIteratorWithText().nextBoundary(offset);
+        if (isPunctBoundaryForward(retOffset, true /* isStart */)) {
+            // If we're on a punctuation boundary we should continue to get the
+            // next offset until we're no longer on a punctuation boundary.
+            retOffset = getWordIteratorWithText().nextBoundary(retOffset);
+            while (!isPunctBoundaryForward(retOffset, false /* isStart */)
+                    && retOffset != BreakIterator.DONE) {
+                retOffset = getWordIteratorWithText().nextBoundary(retOffset);
+            }
+        }
+        if (retOffset == BreakIterator.DONE) {
+            return offset;
+        }
+        return retOffset;
+    }
+
+    /**
+     * Checks for punctuation boundaries for the provided offset and the
+     * previous character.
+     *
+     * @param offset The offset to check from.
+     * @param isStart Whether the boundary being checked for is at the start or
+     *            end of a punctuation sequence.
+     * @return Whether this is a punctuation boundary.
+     */
+    private boolean isPunctBoundaryBehind(int offset, boolean isStart) {
+        CharSequence text = mTextView.getText();
+        if (offset == BreakIterator.DONE || offset > text.length() || offset == 0) {
+            return false;
+        }
+        int cp = Character.codePointAt(text, offset);
+        int prevCp = Character.codePointBefore(text, offset);
+
+        if (isPunctuation(cp)) {
+            // If it's the start, the current cp and the prev cp are
+            // punctuation. If it's at the end of a punctuation sequence the
+            // current is punctuation and the prev is not.
+            return isStart ? isPunctuation(prevCp) : !isPunctuation(prevCp);
+        }
+        return false;
+    }
+
+    /**
+     * Checks for punctuation boundaries for the provided offset and the next
+     * character.
+     *
+     * @param offset The offset to check from.
+     * @param isStart Whether the boundary being checked for is at the start or
+     *            end of a punctuation sequence.
+     * @return Whether this is a punctuation boundary.
+     */
+    private boolean isPunctBoundaryForward(int offset, boolean isStart) {
+        CharSequence text = mTextView.getText();
+        if (offset == BreakIterator.DONE || offset > text.length() || offset == 0) {
+            return false;
+        }
+        int cp = Character.codePointBefore(text, offset);
+        int nextCpOffset = Math.min(offset + Character.charCount(cp), text.length() - 1);
+        int nextCp = Character.codePointBefore(text, nextCpOffset);
+
+        if (isPunctuation(cp)) {
+            // If it's the start, the current cp and the next cp are
+            // punctuation. If it's at the end of a punctuation sequence the
+            // current is punctuation and the next is not.
+            return isStart ? isPunctuation(nextCp) : !isPunctuation(nextCp);
+        }
+        return false;
+    }
+
+    private boolean isPunctuation(int cp) {
+        int type = Character.getType(cp);
+        return (type == Character.CONNECTOR_PUNCTUATION ||
+                type == Character.DASH_PUNCTUATION ||
+                type == Character.END_PUNCTUATION ||
+                type == Character.FINAL_QUOTE_PUNCTUATION ||
+                type == Character.INITIAL_QUOTE_PUNCTUATION ||
+                type == Character.OTHER_PUNCTUATION ||
+                type == Character.START_PUNCTUATION);
     }
 
     /**
@@ -788,7 +845,7 @@
             if (selectionStart == BreakIterator.DONE || selectionEnd == BreakIterator.DONE ||
                     selectionStart == selectionEnd) {
                 // Possible when the word iterator does not properly handle the text's language
-                long range = getCharRange(minOffset);
+                long range = getCharClusterRange(minOffset);
                 selectionStart = TextUtils.unpackRangeStartFromLong(range);
                 selectionEnd = TextUtils.unpackRangeEndFromLong(range);
             }
@@ -831,29 +888,25 @@
         return mWordIteratorWithText;
     }
 
-    private long getCharRange(int offset) {
+    private int getNextCursorOffset(int offset, boolean findAfterGivenOffset) {
+        final Layout layout = mTextView.getLayout();
+        if (layout == null) return offset;
+        final CharSequence text = mTextView.getText();
+        final int nextOffset = layout.getPaint().getTextRunCursor(text, 0, text.length(),
+                layout.isRtlCharAt(offset) ? Paint.DIRECTION_RTL : Paint.DIRECTION_LTR,
+                offset, findAfterGivenOffset ? Paint.CURSOR_AFTER : Paint.CURSOR_BEFORE);
+        return nextOffset == -1 ? offset : nextOffset;
+    }
+
+    private long getCharClusterRange(int offset) {
         final int textLength = mTextView.getText().length();
-        if (offset + 1 < textLength) {
-            final char currentChar = mTextView.getText().charAt(offset);
-            final char nextChar = mTextView.getText().charAt(offset + 1);
-            if (Character.isSurrogatePair(currentChar, nextChar)) {
-                return TextUtils.packRangeInLong(offset,  offset + 2);
-            }
-        }
         if (offset < textLength) {
-            return TextUtils.packRangeInLong(offset,  offset + 1);
-        }
-        if (offset - 2 >= 0) {
-            final char previousChar = mTextView.getText().charAt(offset - 1);
-            final char previousPreviousChar = mTextView.getText().charAt(offset - 2);
-            if (Character.isSurrogatePair(previousPreviousChar, previousChar)) {
-                return TextUtils.packRangeInLong(offset - 2,  offset);
-            }
+            return TextUtils.packRangeInLong(offset, getNextCursorOffset(offset, true));
         }
         if (offset - 1 >= 0) {
-            return TextUtils.packRangeInLong(offset - 1,  offset);
+            return TextUtils.packRangeInLong(getNextCursorOffset(offset, false), offset);
         }
-        return TextUtils.packRangeInLong(offset,  offset);
+        return TextUtils.packRangeInLong(offset, offset);
     }
 
     private boolean touchPositionIsInSelection() {
@@ -2421,7 +2474,8 @@
         public PinnedPopupWindow() {
             createPopupWindow();
 
-            mPopupWindow.setWindowLayoutType(WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL);
+            mPopupWindow.setWindowLayoutType(
+                    WindowManager.LayoutParams.TYPE_APPLICATION_ABOVE_SUB_PANEL);
             mPopupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
             mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
 
@@ -3902,13 +3956,9 @@
         public void updatePosition(float x, float y) {
             final int trueOffset = mTextView.getOffsetForPosition(x, y);
             final int currLine = mTextView.getLineAtCoordinate(y);
-
-            // Don't select white space on different lines.
-            if (isWhitespaceLine(mPrevLine, currLine, trueOffset)) return;
-
             boolean positionCursor = false;
             int offset = trueOffset;
-            int end = getWordEnd(offset, true);
+            int end = getWordEnd(offset);
             int start = getWordStart(offset);
 
             if (offset < mPreviousOffset) {
@@ -3924,7 +3974,7 @@
                     }
                 }
                 mTouchWordOffset = Math.max(trueOffset - offset, 0);
-                mInWord = !isStartBoundary(offset);
+                mInWord = !getWordIteratorWithText().isBoundary(offset);
                 positionCursor = true;
             } else if (offset - mTouchWordOffset > mPreviousOffset) {
                 // User is shrinking the selection.
@@ -3933,7 +3983,7 @@
                     offset = end;
                 }
                 offset -= mTouchWordOffset;
-                mInWord = !isEndBoundary(offset);
+                mInWord = !getWordIteratorWithText().isBoundary(offset);
                 positionCursor = true;
             }
 
@@ -3945,7 +3995,7 @@
                     int alteredOffset = mTextView.getOffsetAtCoordinate(mPrevLine, x);
                     if (alteredOffset >= selectionEnd) {
                         // Can't pass the other drag handle.
-                        offset = Math.max(0, selectionEnd - 1);
+                        offset = getNextCursorOffset(selectionEnd, false);
                     } else {
                         offset = alteredOffset;
                     }
@@ -4004,14 +4054,9 @@
         public void updatePosition(float x, float y) {
             final int trueOffset = mTextView.getOffsetForPosition(x, y);
             final int currLine = mTextView.getLineAtCoordinate(y);
-
-            // Don't select white space on different lines.
-            if (isWhitespaceLine(mPrevLine, currLine, trueOffset)) return;
-
             int offset = trueOffset;
             boolean positionCursor = false;
-
-            int end = getWordEnd(offset, true);
+            int end = getWordEnd(offset);
             int start = getWordStart(offset);
 
             if (offset > mPreviousOffset) {
@@ -4027,7 +4072,7 @@
                     }
                 }
                 mTouchWordOffset = Math.max(offset - trueOffset, 0);
-                mInWord = !isEndBoundary(offset);
+                mInWord = !getWordIteratorWithText().isBoundary(offset);
                 positionCursor = true;
             } else if (offset + mTouchWordOffset < mPreviousOffset) {
                 // User is shrinking the selection.
@@ -4037,7 +4082,7 @@
                 }
                 offset += mTouchWordOffset;
                 positionCursor = true;
-                mInWord = !isStartBoundary(offset);
+                mInWord = !getWordIteratorWithText().isBoundary(offset);
             }
 
             if (positionCursor) {
@@ -4048,7 +4093,7 @@
                     int length = mTextView.getText().length();
                     if (alteredOffset <= selectionStart) {
                         // Can't pass the other drag handle.
-                        offset = Math.min(selectionStart + 1, length);
+                        offset = getNextCursorOffset(selectionStart, true);
                     } else {
                         offset = Math.min(alteredOffset, length);
                     }
@@ -4069,36 +4114,6 @@
     }
 
     /**
-     * Checks whether selection is happening on a different line than previous and
-     * if that line only contains whitespace up to the touch location.
-     *
-     * @param prevLine The previous line the selection was on.
-     * @param currLine The current line being selected.
-     * @param offset The offset in the text where the touch occurred.
-     * @return Whether or not it was just a white space line being selected.
-     */
-    private boolean isWhitespaceLine(int prevLine, int currLine, int offset) {
-        if (prevLine == currLine) {
-            // Same line; don't care.
-            return false;
-        }
-        CharSequence text = mTextView.getText();
-        if (offset == text.length()) {
-            // No character at the last position.
-            return false;
-        }
-        int lineEndOffset = mTextView.getLayout().getLineEnd(currLine);
-        for (int cp, i = offset; i < lineEndOffset; i += Character.charCount(cp)) {
-            cp = Character.codePointAt(text, i);
-            if (!Character.isSpaceChar(cp) && !Character.isWhitespace(cp)) {
-                // There are non white space chars on the line.
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
      * A CursorController instance can be used to control a cursor in the text.
      */
     private interface CursorController extends ViewTreeObserver.OnTouchModeChangeListener {
@@ -4177,8 +4192,6 @@
         private int mStartOffset = -1;
         // Indicates whether the user is selecting text and using the drag accelerator.
         private boolean mDragAcceleratorActive;
-        // Indicates the line of text the drag accelerator is on.
-        private int mPrevLine = -1;
 
         SelectionModifierCursorController() {
             resetTouchOffsets();
@@ -4271,8 +4284,6 @@
                         }
                     }
 
-                    // New selection, reset line.
-                    mPrevLine = mTextView.getLineAtCoordinate(y);
                     mDownPositionX = x;
                     mDownPositionY = y;
                     mGestureStayedInTapRegion = true;
@@ -4317,7 +4328,7 @@
                         // We don't start "dragging" until the user is past the initial word that
                         // gets selected on long press.
                         int firstWordStart = getWordStart(mStartOffset);
-                        int firstWordEnd = getWordEnd(mStartOffset, false);
+                        int firstWordEnd = getWordEnd(mStartOffset);
                         if (offset > firstWordEnd || offset < firstWordStart) {
 
                             // Basically the goal in the below code is to have the highlight be
@@ -4329,13 +4340,6 @@
                             if (my > fingerOffset) my -= fingerOffset;
                             offset = mTextView.getOffsetForPosition(mx, my);
 
-                            int currLine = mTextView.getLineAtCoordinate(my);
-
-                            // Don't select white space on different lines.
-                            if (isWhitespaceLine(mPrevLine, currLine, offset)) return;
-
-                            mPrevLine = currLine;
-
                             // Perform the check for closeness at edge of view, if we're very close
                             // don't adjust the offset to be in front of the finger - otherwise the
                             // user can't select words at the edge.
@@ -4364,7 +4368,7 @@
 
                             // Need to adjust start offset based on direction of movement.
                             int newStart = mStartOffset < offset ? getWordStart(mStartOffset)
-                                    : getWordEnd(mStartOffset, true);
+                                    : getWordEnd(mStartOffset);
                             Selection.setSelection((Spannable) mTextView.getText(), newStart,
                                     offset);
                         }
diff --git a/core/java/android/widget/ListPopupWindow.java b/core/java/android/widget/ListPopupWindow.java
index 310412f9..94b9416 100644
--- a/core/java/android/widget/ListPopupWindow.java
+++ b/core/java/android/widget/ListPopupWindow.java
@@ -39,6 +39,7 @@
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.ViewParent;
+import android.view.WindowManager;
 import android.view.animation.AccelerateDecelerateInterpolator;
 
 import com.android.internal.R;
@@ -77,6 +78,7 @@
     private int mDropDownWidth = ViewGroup.LayoutParams.WRAP_CONTENT;
     private int mDropDownHorizontalOffset;
     private int mDropDownVerticalOffset;
+    private int mDropDownWindowLayoutType = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL;
     private boolean mDropDownVerticalOffsetSet;
 
     private int mDropDownGravity = Gravity.NO_GRAVITY;
@@ -515,6 +517,19 @@
     }
 
     /**
+     * Set the layout type for this popup window.
+     * <p>
+     * See {@link WindowManager.LayoutParams#type} for possible values.
+     *
+     * @param layoutType Layout type for this window.
+     *
+     * @see WindowManager.LayoutParams#type
+     */
+    public void setWindowLayoutType(int layoutType) {
+        mDropDownWindowLayoutType = layoutType;
+    }
+
+    /**
      * Sets a listener to receive events when a list item is clicked.
      * 
      * @param clickListener Listener to register
@@ -567,8 +582,9 @@
     public void show() {
         int height = buildDropDown();
 
-        boolean noInputMethod = isInputMethodNotNeeded();
+        final boolean noInputMethod = isInputMethodNotNeeded();
         mPopup.setAllowScrollingAnchorParent(!noInputMethod);
+        mPopup.setWindowLayoutType(mDropDownWindowLayoutType);
 
         if (mPopup.isShowing()) {
             final int widthSpec;
@@ -1775,8 +1791,9 @@
 
     private class ResizePopupRunnable implements Runnable {
         public void run() {
-            if (mDropDownList != null && mDropDownList.getCount() > mDropDownList.getChildCount() &&
-                    mDropDownList.getChildCount() <= mListItemExpandMaximum) {
+            if (mDropDownList != null && mDropDownList.isAttachedToWindow()
+                    && mDropDownList.getCount() > mDropDownList.getChildCount()
+                    && mDropDownList.getChildCount() <= mListItemExpandMaximum) {
                 mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
                 show();
             }
diff --git a/core/java/android/widget/MediaController.java b/core/java/android/widget/MediaController.java
index 8d8b3a3..97348e30 100644
--- a/core/java/android/widget/MediaController.java
+++ b/core/java/android/widget/MediaController.java
@@ -28,7 +28,7 @@
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
-import android.view.PhoneWindow;
+import com.android.internal.policy.PhoneWindow;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index c3ac278..b4cbf35 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -829,9 +829,9 @@
     }
 
     /**
-     * Set the layout type for this window. This value will be passed through to
-     * {@link WindowManager.LayoutParams#type} therefore the value should match any value
-     * {@link WindowManager.LayoutParams#type} accepts.
+     * Set the layout type for this window.
+     * <p>
+     * See {@link WindowManager.LayoutParams#type} for possible values.
      *
      * @param layoutType Layout type for this window.
      *
diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java
index b8110e3..61ee00c 100644
--- a/core/java/com/android/internal/app/AlertController.java
+++ b/core/java/com/android/internal/app/AlertController.java
@@ -526,11 +526,15 @@
             mWindow.setCloseOnTouchOutsideIfNotSet(true);
         }
 
-        // Only display the divider if we have a title and a custom view or a
-        // message.
         if (hasTopPanel) {
+            // Only clip scrolling content to padding if we have a title.
+            if (mScrollView != null) {
+                mScrollView.setClipToPadding(true);
+            }
+
+            // Only show the divider if we have a title.
             final View divider;
-            if (mMessage != null || hasCustomPanel || mListView != null) {
+            if (mMessage != null || mListView != null || hasCustomPanel) {
                 divider = topPanel.findViewById(R.id.titleDivider);
             } else {
                 divider = topPanel.findViewById(R.id.titleDividerTop);
@@ -541,6 +545,17 @@
             }
         }
 
+        // Update scroll indicators as needed.
+        if (!hasCustomPanel) {
+            final View content = mListView != null ? mListView : mScrollView;
+            if (content != null) {
+                final int indicators = (hasTopPanel ? View.SCROLL_INDICATOR_TOP : 0)
+                        | (hasButtonPanel ? View.SCROLL_INDICATOR_BOTTOM : 0);
+                content.setScrollIndicators(indicators,
+                        View.SCROLL_INDICATOR_TOP | View.SCROLL_INDICATOR_BOTTOM);
+            }
+        }
+
         final TypedArray a = mContext.obtainStyledAttributes(
                 null, R.styleable.AlertDialog, R.attr.alertDialogStyle, 0);
         setBackground(a, topPanel, contentPanel, customPanel, buttonPanel,
@@ -654,59 +669,6 @@
                 contentPanel.setVisibility(View.GONE);
             }
         }
-
-        // Set up scroll indicators (if present).
-        final View indicatorUp = contentPanel.findViewById(R.id.scrollIndicatorUp);
-        final View indicatorDown = contentPanel.findViewById(R.id.scrollIndicatorDown);
-        if (indicatorUp != null || indicatorDown != null) {
-            if (mMessage != null) {
-                // We're just showing the ScrollView, set up listener.
-                mScrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
-                        @Override
-                        public void onScrollChange(View v, int scrollX, int scrollY,
-                                int oldScrollX, int oldScrollY) {
-                            manageScrollIndicators(v, indicatorUp, indicatorDown);
-                        }
-                    });
-                // Set up the indicators following layout.
-                mScrollView.post(new Runnable() {
-                     @Override
-                     public void run() {
-                             manageScrollIndicators(mScrollView, indicatorUp, indicatorDown);
-                         }
-                     });
-
-            } else if (mListView != null) {
-                // We're just showing the AbsListView, set up listener.
-                mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
-                        @Override
-                        public void onScrollStateChanged(AbsListView view, int scrollState) {
-                            // That's cool, I guess?
-                        }
-
-                        @Override
-                        public void onScroll(AbsListView v, int firstVisibleItem,
-                                int visibleItemCount, int totalItemCount) {
-                            manageScrollIndicators(v, indicatorUp, indicatorDown);
-                        }
-                    });
-                // Set up the indicators following layout.
-                mListView.post(new Runnable() {
-                        @Override
-                        public void run() {
-                            manageScrollIndicators(mListView, indicatorUp, indicatorDown);
-                        }
-                    });
-            } else {
-                // We don't have any content to scroll, remove the indicators.
-                if (indicatorUp != null) {
-                    contentPanel.removeView(indicatorUp);
-                }
-                if (indicatorDown != null) {
-                    contentPanel.removeView(indicatorDown);
-                }
-            }
-        }
     }
 
     private static void manageScrollIndicators(View v, View upIndicator, View downIndicator) {
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index e347faa..62ca1f0 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.content.IntentSender.SendIntentException;
 import android.content.ServiceConnection;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
@@ -34,6 +35,7 @@
 import android.os.Message;
 import android.os.Parcelable;
 import android.os.RemoteException;
+import android.os.ResultReceiver;
 import android.os.UserHandle;
 import android.service.chooser.ChooserTarget;
 import android.service.chooser.ChooserTargetService;
@@ -53,11 +55,13 @@
 
     private static final boolean DEBUG = false;
 
-    private static final int QUERY_TARGET_LIMIT = 5;
+    private static final int QUERY_TARGET_SERVICE_LIMIT = 5;
     private static final int WATCHDOG_TIMEOUT_MILLIS = 5000;
 
     private Bundle mReplacementExtras;
     private IntentSender mChosenComponentSender;
+    private IntentSender mRefinementIntentSender;
+    private RefinementResultReceiver mRefinementResultReceiver;
 
     private ChooserTarget[] mCallerChooserTargets;
 
@@ -113,6 +117,32 @@
         if (target != null) {
             modifyTargetIntent(target);
         }
+        Parcelable[] targetsParcelable
+                = intent.getParcelableArrayExtra(Intent.EXTRA_ALTERNATE_INTENTS);
+        if (targetsParcelable != null) {
+            final boolean offset = target == null;
+            Intent[] additionalTargets =
+                    new Intent[offset ? targetsParcelable.length - 1 : targetsParcelable.length];
+            for (int i = 0; i < targetsParcelable.length; i++) {
+                if (!(targetsParcelable[i] instanceof Intent)) {
+                    Log.w(TAG, "EXTRA_ALTERNATE_INTENTS array entry #" + i + " is not an Intent: "
+                            + targetsParcelable[i]);
+                    finish();
+                    super.onCreate(null);
+                    return;
+                }
+                final Intent additionalTarget = (Intent) targetsParcelable[i];
+                if (i == 0 && target == null) {
+                    target = additionalTarget;
+                    modifyTargetIntent(target);
+                } else {
+                    additionalTargets[offset ? i - 1 : i] = additionalTarget;
+                    modifyTargetIntent(additionalTarget);
+                }
+            }
+            setAdditionalTargets(additionalTargets);
+        }
+
         mReplacementExtras = intent.getBundleExtra(Intent.EXTRA_REPLACEMENT_EXTRAS);
         CharSequence title = intent.getCharSequenceExtra(Intent.EXTRA_TITLE);
         int defaultTitleRes = 0;
@@ -125,7 +155,7 @@
             initialIntents = new Intent[pa.length];
             for (int i=0; i<pa.length; i++) {
                 if (!(pa[i] instanceof Intent)) {
-                    Log.w("ChooserActivity", "Initial intent #" + i + " not an Intent: " + pa[i]);
+                    Log.w(TAG, "Initial intent #" + i + " not an Intent: " + pa[i]);
                     finish();
                     super.onCreate(null);
                     return;
@@ -141,8 +171,7 @@
             final ChooserTarget[] targets = new ChooserTarget[pa.length];
             for (int i = 0; i < pa.length; i++) {
                 if (!(pa[i] instanceof ChooserTarget)) {
-                    Log.w("ChooserActivity", "Chooser target #" + i + " is not a ChooserTarget: " +
-                            pa[i]);
+                    Log.w(TAG, "Chooser target #" + i + " is not a ChooserTarget: " + pa[i]);
                     finish();
                     super.onCreate(null);
                     return;
@@ -153,12 +182,23 @@
         }
         mChosenComponentSender = intent.getParcelableExtra(
                 Intent.EXTRA_CHOSEN_COMPONENT_INTENT_SENDER);
+        mRefinementIntentSender = intent.getParcelableExtra(
+                Intent.EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER);
         setSafeForwardingMode(true);
         super.onCreate(savedInstanceState, target, title, defaultTitleRes, initialIntents,
                 null, false);
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (mRefinementResultReceiver != null) {
+            mRefinementResultReceiver.destroy();
+            mRefinementResultReceiver = null;
+        }
+    }
+
+    @Override
     public Intent getReplacementIntent(ActivityInfo aInfo, Intent defIntent) {
         Intent result = defIntent;
         if (mReplacementExtras != null) {
@@ -211,6 +251,37 @@
         }
     }
 
+    @Override
+    protected boolean onTargetSelected(TargetInfo target, boolean alwaysCheck) {
+        if (mRefinementIntentSender != null) {
+            final Intent fillIn = new Intent();
+            final List<Intent> sourceIntents = target.getAllSourceIntents();
+            if (!sourceIntents.isEmpty()) {
+                fillIn.putExtra(Intent.EXTRA_INTENT, sourceIntents.get(0));
+                if (sourceIntents.size() > 1) {
+                    final Intent[] alts = new Intent[sourceIntents.size() - 1];
+                    for (int i = 1, N = sourceIntents.size(); i < N; i++) {
+                        alts[i - 1] = sourceIntents.get(i);
+                    }
+                    fillIn.putExtra(Intent.EXTRA_ALTERNATE_INTENTS, alts);
+                }
+                if (mRefinementResultReceiver != null) {
+                    mRefinementResultReceiver.destroy();
+                }
+                mRefinementResultReceiver = new RefinementResultReceiver(this, target, null);
+                fillIn.putExtra(Intent.EXTRA_RESULT_RECEIVER,
+                        mRefinementResultReceiver);
+                try {
+                    mRefinementIntentSender.sendIntent(this, 0, fillIn, null, null);
+                    return false;
+                } catch (SendIntentException e) {
+                    Log.e(TAG, "Refinement IntentSender failed to send", e);
+                }
+            }
+        }
+        return super.onTargetSelected(target, alwaysCheck);
+    }
+
     void queryTargetServices(ChooserListAdapter adapter) {
         final PackageManager pm = getPackageManager();
         int targetsToQuery = 0;
@@ -258,8 +329,9 @@
                     targetsToQuery++;
                 }
             }
-            if (targetsToQuery >= QUERY_TARGET_LIMIT) {
-                if (DEBUG) Log.d(TAG, "queryTargets hit query target limit " + QUERY_TARGET_LIMIT);
+            if (targetsToQuery >= QUERY_TARGET_SERVICE_LIMIT) {
+                if (DEBUG) Log.d(TAG, "queryTargets hit query target limit "
+                        + QUERY_TARGET_SERVICE_LIMIT);
                 break;
             }
         }
@@ -303,6 +375,43 @@
         mTargetResultHandler.removeMessages(CHOOSER_TARGET_SERVICE_WATCHDOG_TIMEOUT);
     }
 
+    void onRefinementResult(TargetInfo selectedTarget, Intent matchingIntent) {
+        if (mRefinementResultReceiver != null) {
+            mRefinementResultReceiver.destroy();
+            mRefinementResultReceiver = null;
+        }
+
+        if (selectedTarget == null) {
+            Log.e(TAG, "Refinement result intent did not match any known targets; canceling");
+        } else if (!checkTargetSourceIntent(selectedTarget, matchingIntent)) {
+            Log.e(TAG, "onRefinementResult: Selected target " + selectedTarget
+                    + " cannot match refined source intent " + matchingIntent);
+        } else if (super.onTargetSelected(selectedTarget.cloneFilledIn(matchingIntent, 0), false)) {
+            finish();
+            return;
+        }
+        onRefinementCanceled();
+    }
+
+    void onRefinementCanceled() {
+        if (mRefinementResultReceiver != null) {
+            mRefinementResultReceiver.destroy();
+            mRefinementResultReceiver = null;
+        }
+        finish();
+    }
+
+    boolean checkTargetSourceIntent(TargetInfo target, Intent matchingIntent) {
+        final List<Intent> targetIntents = target.getAllSourceIntents();
+        for (int i = 0, N = targetIntents.size(); i < N; i++) {
+            final Intent targetIntent = targetIntents.get(i);
+            if (targetIntent.filterEquals(matchingIntent)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     @Override
     ResolveListAdapter createAdapter(Context context, Intent[] initialIntents,
             List<ResolveInfo> rList, int launchedFromUid, boolean filterLastUsed) {
@@ -313,17 +422,19 @@
         return adapter;
     }
 
-    class ChooserTargetInfo implements TargetInfo {
-        private final TargetInfo mSourceInfo;
+    final class ChooserTargetInfo implements TargetInfo {
+        private final DisplayResolveInfo mSourceInfo;
         private final ResolveInfo mBackupResolveInfo;
         private final ChooserTarget mChooserTarget;
         private final Drawable mDisplayIcon;
+        private final Intent mFillInIntent;
+        private final int mFillInFlags;
 
         public ChooserTargetInfo(ChooserTarget target) {
             this(null, target);
         }
 
-        public ChooserTargetInfo(TargetInfo sourceInfo, ChooserTarget chooserTarget) {
+        public ChooserTargetInfo(DisplayResolveInfo sourceInfo, ChooserTarget chooserTarget) {
             mSourceInfo = sourceInfo;
             mChooserTarget = chooserTarget;
             mDisplayIcon = new BitmapDrawable(getResources(), chooserTarget.getIcon());
@@ -333,6 +444,18 @@
             } else {
                 mBackupResolveInfo = getPackageManager().resolveActivity(getResolvedIntent(), 0);
             }
+
+            mFillInIntent = null;
+            mFillInFlags = 0;
+        }
+
+        private ChooserTargetInfo(ChooserTargetInfo other, Intent fillInIntent, int flags) {
+            mSourceInfo = other.mSourceInfo;
+            mBackupResolveInfo = other.mBackupResolveInfo;
+            mChooserTarget = other.mChooserTarget;
+            mDisplayIcon = other.mDisplayIcon;
+            mFillInIntent = fillInIntent;
+            mFillInFlags = flags;
         }
 
         @Override
@@ -358,22 +481,42 @@
         }
 
         private Intent getFillInIntent() {
-            return mSourceInfo != null ? mSourceInfo.getResolvedIntent() : getTargetIntent();
+            Intent result = mSourceInfo != null
+                    ? mSourceInfo.getResolvedIntent() : getTargetIntent();
+            if (result == null) {
+                Log.e(TAG, "ChooserTargetInfo#getFillInIntent: no fillIn intent available");
+            } else if (mFillInIntent != null) {
+                result = new Intent(result);
+                result.fillIn(mFillInIntent, mFillInFlags);
+            }
+            return result;
         }
 
         @Override
         public boolean start(Activity activity, Bundle options) {
-            return mChooserTarget.sendIntent(activity, getFillInIntent());
+            final Intent intent = getFillInIntent();
+            if (intent == null) {
+                return false;
+            }
+            return mChooserTarget.sendIntent(activity, intent);
         }
 
         @Override
         public boolean startAsCaller(Activity activity, Bundle options, int userId) {
-            return mChooserTarget.sendIntentAsCaller(activity, getFillInIntent(), userId);
+            final Intent intent = getFillInIntent();
+            if (intent == null) {
+                return false;
+            }
+            return mChooserTarget.sendIntentAsCaller(activity, intent, userId);
         }
 
         @Override
         public boolean startAsUser(Activity activity, Bundle options, UserHandle user) {
-            return mChooserTarget.sendIntentAsUser(activity, getFillInIntent(), user);
+            final Intent intent = getFillInIntent();
+            if (intent == null) {
+                return false;
+            }
+            return mChooserTarget.sendIntentAsUser(activity, intent, user);
         }
 
         @Override
@@ -395,6 +538,21 @@
         public Drawable getDisplayIcon() {
             return mDisplayIcon;
         }
+
+        @Override
+        public TargetInfo cloneFilledIn(Intent fillInIntent, int flags) {
+            return new ChooserTargetInfo(this, fillInIntent, flags);
+        }
+
+        @Override
+        public List<Intent> getAllSourceIntents() {
+            final List<Intent> results = new ArrayList<>();
+            if (mSourceInfo != null) {
+                // We only queried the service for the first one in our sourceinfo.
+                results.add(mSourceInfo.getAllSourceIntents().get(0));
+            }
+            return results;
+        }
     }
 
     public class ChooserListAdapter extends ResolveListAdapter {
@@ -542,4 +700,53 @@
             connection = c;
         }
     }
+
+    static class RefinementResultReceiver extends ResultReceiver {
+        private ChooserActivity mChooserActivity;
+        private TargetInfo mSelectedTarget;
+
+        public RefinementResultReceiver(ChooserActivity host, TargetInfo target,
+                Handler handler) {
+            super(handler);
+            mChooserActivity = host;
+            mSelectedTarget = target;
+        }
+
+        @Override
+        protected void onReceiveResult(int resultCode, Bundle resultData) {
+            if (mChooserActivity == null) {
+                Log.e(TAG, "Destroyed RefinementResultReceiver received a result");
+                return;
+            }
+            if (resultData == null) {
+                Log.e(TAG, "RefinementResultReceiver received null resultData");
+                return;
+            }
+
+            switch (resultCode) {
+                case RESULT_CANCELED:
+                    mChooserActivity.onRefinementCanceled();
+                    break;
+                case RESULT_OK:
+                    Parcelable intentParcelable = resultData.getParcelable(Intent.EXTRA_INTENT);
+                    if (intentParcelable instanceof Intent) {
+                        mChooserActivity.onRefinementResult(mSelectedTarget,
+                                (Intent) intentParcelable);
+                    } else {
+                        Log.e(TAG, "RefinementResultReceiver received RESULT_OK but no Intent"
+                                + " in resultData with key Intent.EXTRA_INTENT");
+                    }
+                    break;
+                default:
+                    Log.w(TAG, "Unknown result code " + resultCode
+                            + " sent to RefinementResultReceiver");
+                    break;
+            }
+        }
+
+        public void destroy() {
+            mChooserActivity = null;
+            mSelectedTarget = null;
+        }
+    }
 }
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index 4c6db24..644adb6 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -97,6 +97,12 @@
     void showSessionForActiveService(IVoiceInteractionSessionShowCallback showCallback);
 
     /**
+     * Notifies the active service that a launch was requested from the Keyguard. This will only
+     * be called if {@link #activeServiceSupportsLaunchFromKeyguard()} returns true.
+     */
+    void launchVoiceAssistFromKeyguard();
+
+    /**
      * Indicates whether there is a voice session running (but not necessarily showing).
      */
     boolean isSessionRunning();
@@ -106,4 +112,10 @@
      * assist gesture.
      */
     boolean activeServiceSupportsAssist();
+
+    /**
+     * Indicates whether the currently active voice interaction service is capable of being launched
+     * from the lockscreen.
+     */
+    boolean activeServiceSupportsLaunchFromKeyguard();
 }
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 8dd7836..20486643 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -102,7 +102,7 @@
     private int mLastSelected = AbsListView.INVALID_POSITION;
     private boolean mResolvingHome = false;
     private int mProfileSwitchMessageId = -1;
-    private Intent mIntent;
+    private final ArrayList<Intent> mIntents = new ArrayList<>();
 
     private UsageStatsManager mUsm;
     private Map<String, UsageStats> mStats;
@@ -229,7 +229,7 @@
         final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
         mIconDpi = am.getLauncherLargeIconDensity();
 
-        mIntent = new Intent(intent);
+        mIntents.add(0, new Intent(intent));
         mAdapter = createAdapter(this, initialIntents, rList, mLaunchedFromUid, alwaysUseOption);
 
         final int layoutId;
@@ -250,7 +250,7 @@
             return;
         }
 
-        int count = mAdapter.mList.size();
+        int count = mAdapter.mDisplayList.size();
         if (count > 1 || (count == 1 && mAdapter.getOtherProfile() != null)) {
             setContentView(layoutId);
             mAdapterView = (AbsListView) findViewById(R.id.resolver_list);
@@ -376,8 +376,16 @@
         }
     }
 
+    protected final void setAdditionalTargets(Intent[] intents) {
+        if (intents != null) {
+            for (Intent intent : intents) {
+                mIntents.add(intent);
+            }
+        }
+    }
+
     public Intent getTargetIntent() {
-        return mIntent;
+        return mIntents.isEmpty() ? null : mIntents.get(0);
     }
 
     private String getReferrerPackageName() {
@@ -630,8 +638,9 @@
         }
 
         TargetInfo target = mAdapter.targetInfoForPosition(which, filtered);
-        onTargetSelected(target, always);
-        finish();
+        if (onTargetSelected(target, always)) {
+            finish();
+        }
     }
 
     /**
@@ -641,7 +650,7 @@
         return defIntent;
     }
 
-    protected void onTargetSelected(TargetInfo target, boolean alwaysCheck) {
+    protected boolean onTargetSelected(TargetInfo target, boolean alwaysCheck) {
         final ResolveInfo ri = target.getResolveInfo();
         final Intent intent = target != null ? target.getResolvedIntent() : null;
 
@@ -728,7 +737,7 @@
                 ComponentName[] set = new ComponentName[N];
                 int bestMatch = 0;
                 for (int i=0; i<N; i++) {
-                    ResolveInfo r = mAdapter.mOrigResolveList.get(i);
+                    ResolveInfo r = mAdapter.mOrigResolveList.get(i).getResolveInfoAt(0);
                     set[i] = new ComponentName(r.activityInfo.packageName,
                             r.activityInfo.name);
                     if (r.match > bestMatch) bestMatch = r.match;
@@ -774,6 +783,7 @@
         if (target != null) {
             safelyStartActivity(target);
         }
+        return true;
     }
 
     void safelyStartActivity(TargetInfo cti) {
@@ -837,15 +847,17 @@
         private Drawable mDisplayIcon;
         private final CharSequence mExtendedInfo;
         private final Intent mResolvedIntent;
+        private final List<Intent> mSourceIntents = new ArrayList<>();
 
-        DisplayResolveInfo(ResolveInfo pri, CharSequence pLabel,
+        DisplayResolveInfo(Intent originalIntent, ResolveInfo pri, CharSequence pLabel,
                 CharSequence pInfo, Intent pOrigIntent) {
+            mSourceIntents.add(originalIntent);
             mResolveInfo = pri;
             mDisplayLabel = pLabel;
             mExtendedInfo = pInfo;
 
             final Intent intent = new Intent(pOrigIntent != null ? pOrigIntent :
-                    getReplacementIntent(pri.activityInfo, mIntent));
+                    getReplacementIntent(pri.activityInfo, getTargetIntent()));
             intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT
                     | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
             final ActivityInfo ai = mResolveInfo.activityInfo;
@@ -854,6 +866,16 @@
             mResolvedIntent = intent;
         }
 
+        private DisplayResolveInfo(DisplayResolveInfo other, Intent fillInIntent, int flags) {
+            mSourceIntents.addAll(other.getAllSourceIntents());
+            mResolveInfo = other.mResolveInfo;
+            mDisplayLabel = other.mDisplayLabel;
+            mDisplayIcon = other.mDisplayIcon;
+            mExtendedInfo = other.mExtendedInfo;
+            mResolvedIntent = new Intent(other.mResolvedIntent);
+            mResolvedIntent.fillIn(fillInIntent, flags);
+        }
+
         public ResolveInfo getResolveInfo() {
             return mResolveInfo;
         }
@@ -866,6 +888,20 @@
             return mDisplayIcon;
         }
 
+        @Override
+        public TargetInfo cloneFilledIn(Intent fillInIntent, int flags) {
+            return new DisplayResolveInfo(this, fillInIntent, flags);
+        }
+
+        @Override
+        public List<Intent> getAllSourceIntents() {
+            return mSourceIntents;
+        }
+
+        public void addAlternateSourceIntent(Intent alt) {
+            mSourceIntents.add(alt);
+        }
+
         public void setDisplayIcon(Drawable icon) {
             mDisplayIcon = icon;
         }
@@ -986,6 +1022,16 @@
          * @return The drawable that should be used to represent this target
          */
         public Drawable getDisplayIcon();
+
+        /**
+         * Clone this target with the given fill-in information.
+         */
+        public TargetInfo cloneFilledIn(Intent fillInIntent, int flags);
+
+        /**
+         * @return the list of supported source intents deduped against this single target
+         */
+        public List<Intent> getAllSourceIntents();
     }
 
     class ResolveListAdapter extends BaseAdapter {
@@ -998,8 +1044,8 @@
 
         protected final LayoutInflater mInflater;
 
-        List<DisplayResolveInfo> mList;
-        List<ResolveInfo> mOrigResolveList;
+        List<DisplayResolveInfo> mDisplayList;
+        List<ResolvedComponentInfo> mOrigResolveList;
 
         private int mLastChosenPosition = -1;
         private boolean mFilterLastUsed;
@@ -1010,7 +1056,7 @@
             mBaseResolveList = rList;
             mLaunchedFromUid = launchedFromUid;
             mInflater = LayoutInflater.from(context);
-            mList = new ArrayList<>();
+            mDisplayList = new ArrayList<>();
             mFilterLastUsed = filterLastUsed;
             rebuildList();
         }
@@ -1027,7 +1073,7 @@
         public DisplayResolveInfo getFilteredItem() {
             if (mFilterLastUsed && mLastChosenPosition >= 0) {
                 // Not using getItem since it offsets to dodge this position for the list
-                return mList.get(mLastChosenPosition);
+                return mDisplayList.get(mLastChosenPosition);
             }
             return null;
         }
@@ -1048,11 +1094,12 @@
         }
 
         private void rebuildList() {
-            List<ResolveInfo> currentResolveList;
+            List<ResolvedComponentInfo> currentResolveList = null;
 
             try {
+                final Intent primaryIntent = getTargetIntent();
                 mLastChosen = AppGlobals.getPackageManager().getLastChosenActivity(
-                        mIntent, mIntent.resolveTypeIfNeeded(getContentResolver()),
+                        primaryIntent, primaryIntent.resolveTypeIfNeeded(getContentResolver()),
                         PackageManager.MATCH_DEFAULT_ONLY);
             } catch (RemoteException re) {
                 Log.d(TAG, "Error calling setLastChosenActivity\n" + re);
@@ -1060,15 +1107,27 @@
 
             // Clear the value of mOtherProfile from previous call.
             mOtherProfile = null;
-            mList.clear();
+            mDisplayList.clear();
             if (mBaseResolveList != null) {
-                currentResolveList = mOrigResolveList = mBaseResolveList;
+                currentResolveList = mOrigResolveList = new ArrayList<>();
+                addResolveListDedupe(currentResolveList, getTargetIntent(), mBaseResolveList);
             } else {
-                currentResolveList = mOrigResolveList = mPm.queryIntentActivities(mIntent,
-                        PackageManager.MATCH_DEFAULT_ONLY
-                        | (shouldGetResolvedFilter() ? PackageManager.GET_RESOLVED_FILTER : 0)
-                        | (shouldGetActivityMetadata() ? PackageManager.GET_META_DATA : 0)
-                );
+                final boolean shouldGetResolvedFilter = shouldGetResolvedFilter();
+                final boolean shouldGetActivityMetadata = shouldGetActivityMetadata();
+                for (int i = 0, N = mIntents.size(); i < N; i++) {
+                    final Intent intent = mIntents.get(i);
+                    final List<ResolveInfo> infos = mPm.queryIntentActivities(intent,
+                            PackageManager.MATCH_DEFAULT_ONLY
+                            | (shouldGetResolvedFilter ? PackageManager.GET_RESOLVED_FILTER : 0)
+                            | (shouldGetActivityMetadata ? PackageManager.GET_META_DATA : 0));
+                    if (infos != null) {
+                        if (currentResolveList == null) {
+                            currentResolveList = mOrigResolveList = new ArrayList<>();
+                        }
+                        addResolveListDedupe(currentResolveList, intent, infos);
+                    }
+                }
+
                 // Filter out any activities that the launched uid does not
                 // have permission for.  We don't do this when we have an explicit
                 // list of resolved activities, because that only happens when
@@ -1076,14 +1135,15 @@
                 // they gave us.
                 if (currentResolveList != null) {
                     for (int i=currentResolveList.size()-1; i >= 0; i--) {
-                        ActivityInfo ai = currentResolveList.get(i).activityInfo;
+                        ActivityInfo ai = currentResolveList.get(i)
+                                .getResolveInfoAt(0).activityInfo;
                         int granted = ActivityManager.checkComponentPermission(
                                 ai.permission, mLaunchedFromUid,
                                 ai.applicationInfo.uid, ai.exported);
                         if (granted != PackageManager.PERMISSION_GRANTED) {
                             // Access not allowed!
                             if (mOrigResolveList == currentResolveList) {
-                                mOrigResolveList = new ArrayList<ResolveInfo>(mOrigResolveList);
+                                mOrigResolveList = new ArrayList<>(mOrigResolveList);
                             }
                             currentResolveList.remove(i);
                         }
@@ -1094,9 +1154,10 @@
             if ((currentResolveList != null) && ((N = currentResolveList.size()) > 0)) {
                 // Only display the first matches that are either of equal
                 // priority or have asked to be default options.
-                ResolveInfo r0 = currentResolveList.get(0);
+                ResolvedComponentInfo rci0 = currentResolveList.get(0);
+                ResolveInfo r0 = rci0.getResolveInfoAt(0);
                 for (int i=1; i<N; i++) {
-                    ResolveInfo ri = currentResolveList.get(i);
+                    ResolveInfo ri = currentResolveList.get(i).getResolveInfoAt(0);
                     if (DEBUG) Log.v(
                         TAG,
                         r0.activityInfo.name + "=" +
@@ -1107,7 +1168,7 @@
                         r0.isDefault != ri.isDefault) {
                         while (i < N) {
                             if (mOrigResolveList == currentResolveList) {
-                                mOrigResolveList = new ArrayList<ResolveInfo>(mOrigResolveList);
+                                mOrigResolveList = new ArrayList<>(mOrigResolveList);
                             }
                             currentResolveList.remove(i);
                             N--;
@@ -1115,9 +1176,8 @@
                     }
                 }
                 if (N > 1) {
-                    Comparator<ResolveInfo> rComparator =
-                            new ResolverComparator(ResolverActivity.this, mIntent);
-                    Collections.sort(currentResolveList, rComparator);
+                    Collections.sort(currentResolveList,
+                            new ResolverComparator(ResolverActivity.this, getTargetIntent()));
                 }
                 // First put the initial items at the top.
                 if (mInitialIntents != null) {
@@ -1146,14 +1206,15 @@
                             ri.nonLocalizedLabel = li.getNonLocalizedLabel();
                             ri.icon = li.getIconResource();
                         }
-                        addResolveInfo(new DisplayResolveInfo(ri,
+                        addResolveInfo(new DisplayResolveInfo(ii, ri,
                                 ri.loadLabel(getPackageManager()), null, ii));
                     }
                 }
 
                 // Check for applications with same name and use application name or
                 // package name if necessary
-                r0 = currentResolveList.get(0);
+                rci0 = currentResolveList.get(0);
+                r0 = rci0.getResolveInfoAt(0);
                 int start = 0;
                 CharSequence r0Label =  r0.loadLabel(mPm);
                 mHasExtendedInfo = false;
@@ -1161,7 +1222,8 @@
                     if (r0Label == null) {
                         r0Label = r0.activityInfo.packageName;
                     }
-                    ResolveInfo ri = currentResolveList.get(i);
+                    ResolvedComponentInfo rci = currentResolveList.get(i);
+                    ResolveInfo ri = rci.getResolveInfoAt(0);
                     CharSequence riLabel = ri.loadLabel(mPm);
                     if (riLabel == null) {
                         riLabel = ri.activityInfo.packageName;
@@ -1169,13 +1231,14 @@
                     if (riLabel.equals(r0Label)) {
                         continue;
                     }
-                    processGroup(currentResolveList, start, (i-1), r0, r0Label);
+                    processGroup(currentResolveList, start, (i-1), rci0, r0Label);
+                    rci0 = rci;
                     r0 = ri;
                     r0Label = riLabel;
                     start = i;
                 }
                 // Process last group
-                processGroup(currentResolveList, start, (N-1), r0, r0Label);
+                processGroup(currentResolveList, start, (N-1), rci0, r0Label);
             }
 
             // Layout doesn't handle both profile button and last chosen
@@ -1188,6 +1251,36 @@
             onListRebuilt();
         }
 
+        private void addResolveListDedupe(List<ResolvedComponentInfo> into, Intent intent,
+                List<ResolveInfo> from) {
+            final int fromCount = from.size();
+            final int intoCount = into.size();
+            for (int i = 0; i < fromCount; i++) {
+                final ResolveInfo newInfo = from.get(i);
+                boolean found = false;
+                // Only loop to the end of into as it was before we started; no dupes in from.
+                for (int j = 0; j < intoCount; j++) {
+                    final ResolvedComponentInfo rci = into.get(i);
+                    if (isSameResolvedComponent(newInfo, rci)) {
+                        found = true;
+                        rci.add(intent, newInfo);
+                        break;
+                    }
+                }
+                if (!found) {
+                    into.add(new ResolvedComponentInfo(new ComponentName(
+                            newInfo.activityInfo.packageName, newInfo.activityInfo.name),
+                            intent, newInfo));
+                }
+            }
+        }
+
+        private boolean isSameResolvedComponent(ResolveInfo a, ResolvedComponentInfo b) {
+            final ActivityInfo ai = a.activityInfo;
+            return ai.packageName.equals(b.name.getPackageName())
+                    && ai.name.equals(b.name.getClassName());
+        }
+
         public void onListRebuilt() {
             // This space for rent
         }
@@ -1196,18 +1289,18 @@
             return mFilterLastUsed;
         }
 
-        private void processGroup(List<ResolveInfo> rList, int start, int end, ResolveInfo ro,
-                CharSequence roLabel) {
+        private void processGroup(List<ResolvedComponentInfo> rList, int start, int end,
+                ResolvedComponentInfo ro, CharSequence roLabel) {
             // Process labels from start to i
             int num = end - start+1;
             if (num == 1) {
                 // No duplicate labels. Use label for entry at start
-                addResolveInfo(new DisplayResolveInfo(ro, roLabel, null, null));
-                updateLastChosenPosition(ro);
+                addResolveInfoWithAlternates(ro, null, roLabel);
             } else {
                 mHasExtendedInfo = true;
                 boolean usePkg = false;
-                CharSequence startApp = ro.activityInfo.applicationInfo.loadLabel(mPm);
+                CharSequence startApp = ro.getResolveInfoAt(0).activityInfo.applicationInfo
+                        .loadLabel(mPm);
                 if (startApp == null) {
                     usePkg = true;
                 }
@@ -1217,7 +1310,7 @@
                         new HashSet<CharSequence>();
                     duplicates.add(startApp);
                     for (int j = start+1; j <= end ; j++) {
-                        ResolveInfo jRi = rList.get(j);
+                        ResolveInfo jRi = rList.get(j).getResolveInfoAt(0);
                         CharSequence jApp = jRi.activityInfo.applicationInfo.loadLabel(mPm);
                         if ( (jApp == null) || (duplicates.contains(jApp))) {
                             usePkg = true;
@@ -1230,26 +1323,46 @@
                     duplicates.clear();
                 }
                 for (int k = start; k <= end; k++) {
-                    ResolveInfo add = rList.get(k);
+                    final ResolvedComponentInfo rci = rList.get(k);
+                    final ResolveInfo add = rci.getResolveInfoAt(0);
+                    final CharSequence extraInfo;
                     if (usePkg) {
-                        // Use application name for all entries from start to end-1
-                        addResolveInfo(new DisplayResolveInfo(add, roLabel,
-                                add.activityInfo.packageName, null));
-                    } else {
                         // Use package name for all entries from start to end-1
-                        addResolveInfo(new DisplayResolveInfo(add, roLabel,
-                                add.activityInfo.applicationInfo.loadLabel(mPm), null));
+                        extraInfo = add.activityInfo.packageName;
+                    } else {
+                        // Use application name for all entries from start to end-1
+                        extraInfo = add.activityInfo.applicationInfo.loadLabel(mPm);
                     }
-                    updateLastChosenPosition(add);
+                    addResolveInfoWithAlternates(rci, extraInfo, roLabel);
                 }
             }
         }
 
+        private void addResolveInfoWithAlternates(ResolvedComponentInfo rci,
+                CharSequence extraInfo, CharSequence roLabel) {
+            final int count = rci.getCount();
+            final Intent intent = rci.getIntentAt(0);
+            final ResolveInfo add = rci.getResolveInfoAt(0);
+            final Intent replaceIntent = getReplacementIntent(add.activityInfo, intent);
+            final DisplayResolveInfo dri = new DisplayResolveInfo(intent, add, roLabel,
+                    extraInfo, replaceIntent);
+            addResolveInfo(dri);
+            if (replaceIntent == intent) {
+                // Only add alternates if we didn't get a specific replacement from
+                // the caller. If we have one it trumps potential alternates.
+                for (int i = 1, N = count; i < N; i++) {
+                    final Intent altIntent = rci.getIntentAt(i);
+                    dri.addAlternateSourceIntent(altIntent);
+                }
+            }
+            updateLastChosenPosition(add);
+        }
+
         private void updateLastChosenPosition(ResolveInfo info) {
             if (mLastChosen != null
                     && mLastChosen.activityInfo.packageName.equals(info.activityInfo.packageName)
                     && mLastChosen.activityInfo.name.equals(info.activityInfo.name)) {
-                mLastChosenPosition = mList.size() - 1;
+                mLastChosenPosition = mDisplayList.size() - 1;
             }
         }
 
@@ -1259,20 +1372,21 @@
                 // The first one we see gets special treatment.
                 mOtherProfile = dri;
             } else {
-                mList.add(dri);
+                mDisplayList.add(dri);
             }
         }
 
         public ResolveInfo resolveInfoForPosition(int position, boolean filtered) {
-            return (filtered ? getItem(position) : mList.get(position)).getResolveInfo();
+            return (filtered ? getItem(position) : mDisplayList.get(position))
+                    .getResolveInfo();
         }
 
         public TargetInfo targetInfoForPosition(int position, boolean filtered) {
-            return filtered ? getItem(position) : mList.get(position);
+            return filtered ? getItem(position) : mDisplayList.get(position);
         }
 
         public int getCount() {
-            int result = mList.size();
+            int result = mDisplayList.size();
             if (mFilterLastUsed && mLastChosenPosition >= 0) {
                 result--;
             }
@@ -1283,7 +1397,7 @@
             if (mFilterLastUsed && mLastChosenPosition >= 0 && position >= mLastChosenPosition) {
                 position++;
             }
-            return mList.get(position);
+            return mDisplayList.get(position);
         }
 
         public long getItemId(int position) {
@@ -1295,8 +1409,8 @@
         }
 
         public boolean hasResolvedTarget(ResolveInfo info) {
-            for (int i = 0, N = mList.size(); i < N; i++) {
-                if (info.equals(mList.get(i).getResolveInfo())) {
+            for (int i = 0, N = mDisplayList.size(); i < N; i++) {
+                if (info.equals(mDisplayList.get(i).getResolveInfo())) {
                     return true;
                 }
             }
@@ -1304,11 +1418,12 @@
         }
 
         protected int getDisplayResolveInfoCount() {
-            return mList.size();
+            return mDisplayList.size();
         }
 
         protected DisplayResolveInfo getDisplayResolveInfo(int index) {
-            return mList.get(index);
+            // Used to query services. We only query services for primary targets, not alternates.
+            return mDisplayList.get(index);
         }
 
         public final View getView(int position, View convertView, ViewGroup parent) {
@@ -1349,6 +1464,52 @@
         }
     }
 
+    static final class ResolvedComponentInfo {
+        public final ComponentName name;
+        private final List<Intent> mIntents = new ArrayList<>();
+        private final List<ResolveInfo> mResolveInfos = new ArrayList<>();
+
+        public ResolvedComponentInfo(ComponentName name, Intent intent, ResolveInfo info) {
+            this.name = name;
+            add(intent, info);
+        }
+
+        public void add(Intent intent, ResolveInfo info) {
+            mIntents.add(intent);
+            mResolveInfos.add(info);
+        }
+
+        public int getCount() {
+            return mIntents.size();
+        }
+
+        public Intent getIntentAt(int index) {
+            return index >= 0 ? mIntents.get(index) : null;
+        }
+
+        public ResolveInfo getResolveInfoAt(int index) {
+            return index >= 0 ? mResolveInfos.get(index) : null;
+        }
+
+        public int findIntent(Intent intent) {
+            for (int i = 0, N = mIntents.size(); i < N; i++) {
+                if (intent.equals(mIntents.get(i))) {
+                    return i;
+                }
+            }
+            return -1;
+        }
+
+        public int findResolveInfo(ResolveInfo info) {
+            for (int i = 0, N = mResolveInfos.size(); i < N; i++) {
+                if (info.equals(mResolveInfos.get(i))) {
+                    return i;
+                }
+            }
+            return -1;
+        }
+    }
+
     static class ViewHolder {
         public TextView text;
         public TextView text2;
@@ -1435,7 +1596,7 @@
                 && match <= IntentFilter.MATCH_CATEGORY_PATH;
     }
 
-    class ResolverComparator implements Comparator<ResolveInfo> {
+    class ResolverComparator implements Comparator<ResolvedComponentInfo> {
         private final Collator mCollator;
         private final boolean mHttp;
 
@@ -1446,7 +1607,10 @@
         }
 
         @Override
-        public int compare(ResolveInfo lhs, ResolveInfo rhs) {
+        public int compare(ResolvedComponentInfo lhsp, ResolvedComponentInfo rhsp) {
+            final ResolveInfo lhs = lhsp.getResolveInfoAt(0);
+            final ResolveInfo rhs = rhsp.getResolveInfoAt(0);
+
             // We want to put the one targeted to another user at the end of the dialog.
             if (lhs.targetUserId != UserHandle.USER_CURRENT) {
                 return 1;
@@ -1487,7 +1651,6 @@
                 if (stats != null) {
                     return stats.getTotalTimeInForeground();
                 }
-
             }
             return 0;
         }
diff --git a/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java b/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java
index 52485dd..ce94727 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodSubtypeSwitchingController.java
@@ -196,7 +196,7 @@
         }
 
         public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeList(
-                boolean showSubtypes, boolean inputShown, boolean isScreenLocked) {
+                boolean showSubtypes, boolean includeAuxiliarySubtypes, boolean isScreenLocked) {
             final ArrayList<ImeSubtypeListItem> imList =
                     new ArrayList<ImeSubtypeListItem>();
             final HashMap<InputMethodInfo, List<InputMethodSubtype>> immis =
@@ -205,6 +205,12 @@
             if (immis == null || immis.size() == 0) {
                 return Collections.emptyList();
             }
+            if (isScreenLocked && includeAuxiliarySubtypes) {
+                if (DEBUG) {
+                    Slog.w(TAG, "Auxiliary subtypes are not allowed to be shown in lock screen.");
+                }
+                includeAuxiliarySubtypes = false;
+            }
             mSortedImmis.clear();
             mSortedImmis.putAll(immis);
             for (InputMethodInfo imi : mSortedImmis.keySet()) {
@@ -227,7 +233,7 @@
                         final String subtypeHashCode = String.valueOf(subtype.hashCode());
                         // We show all enabled IMEs and subtypes when an IME is shown.
                         if (enabledSubtypeSet.contains(subtypeHashCode)
-                                && ((inputShown && !isScreenLocked) || !subtype.isAuxiliary())) {
+                                && (includeAuxiliarySubtypes || !subtype.isAuxiliary())) {
                             final CharSequence subtypeLabel =
                                     subtype.overridesImplicitlyEnabledSubtype() ? null : subtype
                                             .getDisplayName(mContext, imi.getPackageName(),
@@ -516,8 +522,8 @@
     }
 
     public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeListLocked(boolean showSubtypes,
-            boolean inputShown, boolean isScreenLocked) {
+            boolean includingAuxiliarySubtypes, boolean isScreenLocked) {
         return mSubtypeList.getSortedInputMethodAndSubtypeList(
-                showSubtypes, inputShown, isScreenLocked);
+                showSubtypes, includingAuxiliarySubtypes, isScreenLocked);
     }
 }
diff --git a/core/java/com/android/internal/logging/MetricsLogger.java b/core/java/com/android/internal/logging/MetricsLogger.java
index 6173832..9277f9b 100644
--- a/core/java/com/android/internal/logging/MetricsLogger.java
+++ b/core/java/com/android/internal/logging/MetricsLogger.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.os.Build;
+import android.view.View;
 
 /**
  * Log all the things.
@@ -33,6 +34,10 @@
     public static final int ACTION_BAN_APP_NOTES = 146;
     public static final int NOTIFICATION_ZEN_MODE_EVENT_RULE = 147;
     public static final int ACTION_DISMISS_ALL_NOTES = 148;
+    public static final int QS_DND_DETAILS = 149;
+    public static final int QS_BLUETOOTH_DETAILS = 150;
+    public static final int QS_CAST_DETAILS = 151;
+    public static final int QS_WIFI_DETAILS = 152;
 
     public static void visible(Context context, int category) throws IllegalArgumentException {
         if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) {
@@ -41,13 +46,27 @@
         EventLogTags.writeSysuiViewVisibility(category, 100);
     }
 
-    public static void hidden(Context context, int category) {
+    public static void hidden(Context context, int category) throws IllegalArgumentException {
         if (Build.IS_DEBUGGABLE && category == VIEW_UNKNOWN) {
             throw new IllegalArgumentException("Must define metric category");
         }
         EventLogTags.writeSysuiViewVisibility(category, 0);
     }
 
+    public static void visibility(Context context, int category, boolean visibile)
+            throws IllegalArgumentException {
+        if (visibile) {
+            visible(context, category);
+        } else {
+            hidden(context, category);
+        }
+    }
+
+    public static void visibility(Context context, int category, int vis)
+            throws IllegalArgumentException {
+        visibility(context, category, vis == View.VISIBLE);
+    }
+
     public static void action(Context context, int category) {
         action(context, category, "");
     }
diff --git a/core/java/com/android/internal/os/BinderInternal.java b/core/java/com/android/internal/os/BinderInternal.java
index 240d9df..d77b998 100644
--- a/core/java/com/android/internal/os/BinderInternal.java
+++ b/core/java/com/android/internal/os/BinderInternal.java
@@ -20,6 +20,8 @@
 import android.os.SystemClock;
 import android.util.EventLog;
 
+import dalvik.system.VMRuntime;
+
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 
@@ -96,7 +98,7 @@
     
     public static void forceGc(String reason) {
         EventLog.writeEvent(2741, reason);
-        Runtime.getRuntime().gc();
+        VMRuntime.getRuntime().requestConcurrentGC();
     }
     
     static void forceBinderGc() {
diff --git a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
index 9711c3b..8586d76 100644
--- a/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
+++ b/core/java/com/android/internal/os/MobileRadioPowerCalculator.java
@@ -52,7 +52,7 @@
     public MobileRadioPowerCalculator(PowerProfile profile, BatteryStats stats) {
         mPowerRadioOn = profile.getAveragePower(PowerProfile.POWER_RADIO_ACTIVE);
         for (int i = 0; i < mPowerBins.length; i++) {
-            mPowerBins[i] = profile.getAveragePower(PowerProfile.POWER_RADIO_ACTIVE, i);
+            mPowerBins[i] = profile.getAveragePower(PowerProfile.POWER_RADIO_ON, i);
         }
         mPowerScan = profile.getAveragePower(PowerProfile.POWER_RADIO_SCANNING);
         mStats = stats;
@@ -128,7 +128,9 @@
         }
 
         if (power != 0) {
-            app.noCoveragePercent = noCoverageTimeMs * 100.0 / signalTimeMs;
+            if (signalTimeMs != 0) {
+                app.noCoveragePercent = noCoverageTimeMs * 100.0 / signalTimeMs;
+            }
             app.mobileActive = remainingActiveTimeMs;
             app.mobileActiveCount = stats.getMobileRadioActiveUnknownCount(statsType);
             app.mobileRadioPowerMah = power;
diff --git a/core/java/android/view/PhoneFallbackEventHandler.java b/core/java/com/android/internal/policy/PhoneFallbackEventHandler.java
similarity index 98%
rename from core/java/android/view/PhoneFallbackEventHandler.java
rename to core/java/com/android/internal/policy/PhoneFallbackEventHandler.java
index 350650d..2cb9c25 100644
--- a/core/java/android/view/PhoneFallbackEventHandler.java
+++ b/core/java/com/android/internal/policy/PhoneFallbackEventHandler.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.view;
+package com.android.internal.policy;
 
 import android.app.KeyguardManager;
 import android.app.SearchManager;
@@ -28,10 +28,11 @@
 import android.provider.Settings;
 import android.telephony.TelephonyManager;
 import android.util.Log;
-import android.view.View;
-import android.view.HapticFeedbackConstants;
 import android.view.FallbackEventHandler;
+import android.view.HapticFeedbackConstants;
 import android.view.KeyEvent;
+import android.view.View;
+import com.android.internal.policy.PhoneWindow;
 
 /**
  * @hide
diff --git a/core/java/android/view/PhoneLayoutInflater.java b/core/java/com/android/internal/policy/PhoneLayoutInflater.java
similarity index 95%
rename from core/java/android/view/PhoneLayoutInflater.java
rename to core/java/com/android/internal/policy/PhoneLayoutInflater.java
index 7d89a0b..991b6bb 100644
--- a/core/java/android/view/PhoneLayoutInflater.java
+++ b/core/java/com/android/internal/policy/PhoneLayoutInflater.java
@@ -14,10 +14,12 @@
  * limitations under the License.
  */
 
-package android.view;
+package com.android.internal.policy;
 
 import android.content.Context;
 import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
 
 /**
  * @hide
diff --git a/core/java/android/view/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
similarity index 98%
rename from core/java/android/view/PhoneWindow.java
rename to core/java/com/android/internal/policy/PhoneWindow.java
index a3e7a10..a578a6e 100644
--- a/core/java/android/view/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.view;
+package com.android.internal.policy;
 
 import static android.view.View.MeasureSpec.AT_MOST;
 import static android.view.View.MeasureSpec.EXACTLY;
@@ -27,6 +27,34 @@
 import android.app.SearchManager;
 import android.os.UserHandle;
 
+import android.view.ActionMode;
+import android.view.ContextThemeWrapper;
+import android.view.Display;
+import android.view.Gravity;
+import android.view.IRotationWatcher.Stub;
+import android.view.IWindowManager;
+import android.view.InputDevice;
+import android.view.InputEvent;
+import android.view.InputQueue;
+import android.view.KeyCharacterMap;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.SearchEvent;
+import android.view.SurfaceHolder.Callback2;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.ViewManager;
+import android.view.ViewParent;
+import android.view.ViewRootImpl;
+import android.view.ViewStub;
+import android.view.ViewTreeObserver.OnPreDrawListener;
+import android.view.Window;
+import android.view.WindowInsets;
+import android.view.WindowManager;
 import com.android.internal.R;
 import com.android.internal.util.ScreenShapeHelper;
 import com.android.internal.view.FloatingActionMode;
@@ -67,7 +95,6 @@
 import android.os.Parcelable;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemProperties;
 import android.transition.Scene;
 import android.transition.Transition;
 import android.transition.TransitionInflater;
@@ -140,7 +167,7 @@
 
     private ViewGroup mContentRoot;
 
-    SurfaceHolder.Callback2 mTakeSurfaceCallback;
+    Callback2 mTakeSurfaceCallback;
 
     InputQueue.Callback mTakeInputQueueCallback;
 
@@ -427,7 +454,7 @@
     }
 
     @Override
-    public void takeSurface(SurfaceHolder.Callback2 callback) {
+    public void takeSurface(Callback2 callback) {
         mTakeSurfaceCallback = callback;
     }
 
@@ -2181,7 +2208,7 @@
         private ActionBarContextView mPrimaryActionModeView;
         private PopupWindow mPrimaryActionModePopup;
         private Runnable mShowPrimaryActionModePopup;
-        private ViewTreeObserver.OnPreDrawListener mFloatingToolbarPreDrawListener;
+        private OnPreDrawListener mFloatingToolbarPreDrawListener;
         private View mFloatingActionModeOriginatingView;
         private FloatingToolbar mFloatingToolbar;
 
@@ -3354,7 +3381,7 @@
                     mContext, callback, originatingView, mFloatingToolbar);
             mFloatingActionModeOriginatingView = originatingView;
             mFloatingToolbarPreDrawListener =
-                new ViewTreeObserver.OnPreDrawListener() {
+                new OnPreDrawListener() {
                     @Override
                     public boolean onPreDraw() {
                         mode.updateViewLocationInWindow();
@@ -4718,7 +4745,7 @@
 
     }
 
-    static class RotationWatcher extends IRotationWatcher.Stub {
+    static class RotationWatcher extends Stub {
         private Handler mHandler;
         private final Runnable mRotationChanged = new Runnable() {
             public void run() {
diff --git a/core/java/com/android/internal/transition/EpicenterClipReveal.java b/core/java/com/android/internal/transition/EpicenterClipReveal.java
deleted file mode 100644
index 1a6736a..0000000
--- a/core/java/com/android/internal/transition/EpicenterClipReveal.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * 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.internal.transition;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.animation.RectEvaluator;
-import android.animation.TimeInterpolator;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Rect;
-import android.transition.TransitionValues;
-import android.transition.Visibility;
-import android.util.AttributeSet;
-import android.util.Property;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-import android.view.animation.PathInterpolator;
-
-import com.android.internal.R;
-
-/**
- * EpicenterClipReveal captures the {@link View#getClipBounds()} before and
- * after the scene change and animates between those and the epicenter bounds
- * during a visibility transition.
- */
-public class EpicenterClipReveal extends Visibility {
-    private static final String PROPNAME_CLIP = "android:epicenterReveal:clip";
-    private static final String PROPNAME_BOUNDS = "android:epicenterReveal:bounds";
-
-    private final TimeInterpolator mInterpolatorX;
-    private final TimeInterpolator mInterpolatorY;
-    private final boolean mCenterClipBounds;
-
-    public EpicenterClipReveal() {
-        mInterpolatorX = null;
-        mInterpolatorY = null;
-        mCenterClipBounds = false;
-    }
-
-    public EpicenterClipReveal(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        final TypedArray a = context.obtainStyledAttributes(attrs,
-                R.styleable.EpicenterClipReveal, 0, 0);
-
-        mCenterClipBounds = a.getBoolean(R.styleable.EpicenterClipReveal_centerClipBounds, false);
-
-        final int interpolatorX = a.getResourceId(R.styleable.EpicenterClipReveal_interpolatorX, 0);
-        if (interpolatorX != 0) {
-            mInterpolatorX = AnimationUtils.loadInterpolator(context, interpolatorX);
-        } else {
-            mInterpolatorX = TransitionConstants.LINEAR_OUT_SLOW_IN;
-        }
-
-        final int interpolatorY = a.getResourceId(R.styleable.EpicenterClipReveal_interpolatorY, 0);
-        if (interpolatorY != 0) {
-            mInterpolatorY = AnimationUtils.loadInterpolator(context, interpolatorY);
-        } else {
-            mInterpolatorY = TransitionConstants.FAST_OUT_SLOW_IN;
-        }
-
-        a.recycle();
-    }
-
-    @Override
-    public void captureStartValues(TransitionValues transitionValues) {
-        super.captureStartValues(transitionValues);
-        captureValues(transitionValues);
-    }
-
-    @Override
-    public void captureEndValues(TransitionValues transitionValues) {
-        super.captureEndValues(transitionValues);
-        captureValues(transitionValues);
-    }
-
-    private void captureValues(TransitionValues values) {
-        final View view = values.view;
-        if (view.getVisibility() == View.GONE) {
-            return;
-        }
-
-        final Rect clip = view.getClipBounds();
-        values.values.put(PROPNAME_CLIP, clip);
-
-        if (clip == null) {
-            final Rect bounds = new Rect(0, 0, view.getWidth(), view.getHeight());
-            values.values.put(PROPNAME_BOUNDS, bounds);
-        }
-    }
-
-    @Override
-    public Animator onAppear(ViewGroup sceneRoot, View view,
-            TransitionValues startValues, TransitionValues endValues) {
-        if (endValues == null) {
-            return null;
-        }
-
-        final Rect end = getBestRect(endValues);
-        final Rect start = getEpicenterOrCenter(end);
-
-        // Prepare the view.
-        view.setClipBounds(start);
-
-        return createRectAnimator(view, start, end, endValues, mInterpolatorX, mInterpolatorY);
-    }
-
-    @Override
-    public Animator onDisappear(ViewGroup sceneRoot, View view,
-            TransitionValues startValues, TransitionValues endValues) {
-        if (startValues == null) {
-            return null;
-        }
-
-        final Rect start = getBestRect(startValues);
-        final Rect end = getEpicenterOrCenter(start);
-
-        // Prepare the view.
-        view.setClipBounds(start);
-
-        return createRectAnimator(view, start, end, endValues, mInterpolatorX, mInterpolatorY);
-    }
-
-    private Rect getEpicenterOrCenter(Rect bestRect) {
-        final Rect epicenter = getEpicenter();
-        if (epicenter != null) {
-            // Translate the clip bounds to be centered within the target bounds.
-            if (mCenterClipBounds) {
-                final int offsetX = bestRect.centerX() - epicenter.centerX();
-                final int offsetY = bestRect.centerY() - epicenter.centerY();
-                epicenter.offset(offsetX, offsetY);
-            }
-            return epicenter;
-        }
-
-        final int centerX = bestRect.centerX();
-        final int centerY = bestRect.centerY();
-        return new Rect(centerX, centerY, centerX, centerY);
-    }
-
-    private Rect getBestRect(TransitionValues values) {
-        final Rect clipRect = (Rect) values.values.get(PROPNAME_CLIP);
-        if (clipRect == null) {
-            return (Rect) values.values.get(PROPNAME_BOUNDS);
-        }
-        return clipRect;
-    }
-
-    private static Animator createRectAnimator(final View view, Rect start, Rect end,
-            TransitionValues endValues, TimeInterpolator interpolatorX,
-            TimeInterpolator interpolatorY) {
-        final RectEvaluator evaluator = new RectEvaluator(new Rect());
-        final Rect terminalClip = (Rect) endValues.values.get(PROPNAME_CLIP);
-
-        final ClipDimenProperty propX = new ClipDimenProperty(ClipDimenProperty.TARGET_X);
-        final ObjectAnimator animX = ObjectAnimator.ofObject(view, propX, evaluator, start, end);
-        if (interpolatorX != null) {
-            animX.setInterpolator(interpolatorX);
-        }
-
-        final ClipDimenProperty propY = new ClipDimenProperty(ClipDimenProperty.TARGET_Y);
-        final ObjectAnimator animY = ObjectAnimator.ofObject(view, propY, evaluator, start, end);
-        if (interpolatorY != null) {
-            animY.setInterpolator(interpolatorY);
-        }
-
-        final AnimatorSet animSet = new AnimatorSet();
-        animSet.playTogether(animX, animY);
-        animSet.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                view.setClipBounds(terminalClip);
-            }
-        });
-        return animSet;
-    }
-
-    private static class ClipDimenProperty extends Property<View, Rect> {
-        public static final char TARGET_X = 'x';
-        public static final char TARGET_Y = 'y';
-
-        private final Rect mTempRect = new Rect();
-
-        private final int mTargetDimension;
-
-        public ClipDimenProperty(char targetDimension) {
-            super(Rect.class, "clip_bounds_" + targetDimension);
-
-            mTargetDimension = targetDimension;
-        }
-
-        @Override
-        public Rect get(View object) {
-            final Rect tempRect = mTempRect;
-            if (!object.getClipBounds(tempRect)) {
-                tempRect.setEmpty();
-            }
-            return tempRect;
-        }
-
-        @Override
-        public void set(View object, Rect value) {
-            final Rect tempRect = mTempRect;
-            if (object.getClipBounds(tempRect)) {
-                if (mTargetDimension == TARGET_X) {
-                    tempRect.left = value.left;
-                    tempRect.right = value.right;
-                } else {
-                    tempRect.top = value.top;
-                    tempRect.bottom = value.bottom;
-                }
-                object.setClipBounds(tempRect);
-            }
-        }
-    }
-}
diff --git a/core/java/com/android/internal/transition/EpicenterTranslate.java b/core/java/com/android/internal/transition/EpicenterTranslate.java
deleted file mode 100644
index eac3ff8..0000000
--- a/core/java/com/android/internal/transition/EpicenterTranslate.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * 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.internal.transition;
-
-import com.android.internal.R;
-
-import android.animation.Animator;
-import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
-import android.animation.TimeInterpolator;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Rect;
-import android.transition.TransitionValues;
-import android.transition.Visibility;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.animation.AnimationUtils;
-
-/**
- * EpicenterTranslate captures the {@link View#getTranslationX()} and
- * {@link View#getTranslationY()} before and after the scene change and
- * animates between those and the epicenter's center during a visibility
- * transition.
- */
-public class EpicenterTranslate extends Visibility {
-    private static final String PROPNAME_BOUNDS = "android:epicenterReveal:bounds";
-    private static final String PROPNAME_TRANSLATE_X = "android:epicenterReveal:translateX";
-    private static final String PROPNAME_TRANSLATE_Y = "android:epicenterReveal:translateY";
-    private static final String PROPNAME_TRANSLATE_Z = "android:epicenterReveal:translateZ";
-    private static final String PROPNAME_Z = "android:epicenterReveal:z";
-
-    private final TimeInterpolator mInterpolatorX;
-    private final TimeInterpolator mInterpolatorY;
-    private final TimeInterpolator mInterpolatorZ;
-
-    public EpicenterTranslate() {
-        mInterpolatorX = null;
-        mInterpolatorY = null;
-        mInterpolatorZ = null;
-    }
-
-    public EpicenterTranslate(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        final TypedArray a = context.obtainStyledAttributes(attrs,
-                R.styleable.EpicenterTranslate, 0, 0);
-
-        final int interpolatorX = a.getResourceId(R.styleable.EpicenterTranslate_interpolatorX, 0);
-        if (interpolatorX != 0) {
-            mInterpolatorX = AnimationUtils.loadInterpolator(context, interpolatorX);
-        } else {
-            mInterpolatorX = TransitionConstants.FAST_OUT_SLOW_IN;
-        }
-
-        final int interpolatorY = a.getResourceId(R.styleable.EpicenterTranslate_interpolatorY, 0);
-        if (interpolatorY != 0) {
-            mInterpolatorY = AnimationUtils.loadInterpolator(context, interpolatorY);
-        } else {
-            mInterpolatorY = TransitionConstants.FAST_OUT_SLOW_IN;
-        }
-
-        final int interpolatorZ = a.getResourceId(R.styleable.EpicenterTranslate_interpolatorZ, 0);
-        if (interpolatorZ != 0) {
-            mInterpolatorZ = AnimationUtils.loadInterpolator(context, interpolatorZ);
-        } else {
-            mInterpolatorZ = TransitionConstants.FAST_OUT_SLOW_IN;
-        }
-
-        a.recycle();
-    }
-
-    @Override
-    public void captureStartValues(TransitionValues transitionValues) {
-        super.captureStartValues(transitionValues);
-        captureValues(transitionValues);
-    }
-
-    @Override
-    public void captureEndValues(TransitionValues transitionValues) {
-        super.captureEndValues(transitionValues);
-        captureValues(transitionValues);
-    }
-
-    private void captureValues(TransitionValues values) {
-        final View view = values.view;
-        if (view.getVisibility() == View.GONE) {
-            return;
-        }
-
-        final Rect bounds = new Rect(0, 0, view.getWidth(), view.getHeight());
-        values.values.put(PROPNAME_BOUNDS, bounds);
-        values.values.put(PROPNAME_TRANSLATE_X, view.getTranslationX());
-        values.values.put(PROPNAME_TRANSLATE_Y, view.getTranslationY());
-        values.values.put(PROPNAME_TRANSLATE_Z, view.getTranslationZ());
-        values.values.put(PROPNAME_Z, view.getZ());
-    }
-
-    @Override
-    public Animator onAppear(ViewGroup sceneRoot, View view,
-            TransitionValues startValues, TransitionValues endValues) {
-        if (endValues == null) {
-            return null;
-        }
-
-        final Rect end = (Rect) endValues.values.get(PROPNAME_BOUNDS);
-        final Rect start = getEpicenterOrCenter(end);
-        final float startX = start.centerX() - end.centerX();
-        final float startY = start.centerY() - end.centerY();
-        final float startZ = 0 - (float) endValues.values.get(PROPNAME_Z);
-
-        // Translate the view to be centered on the epicenter.
-        view.setTranslationX(startX);
-        view.setTranslationY(startY);
-        view.setTranslationZ(startZ);
-
-        final float endX = (float) endValues.values.get(PROPNAME_TRANSLATE_X);
-        final float endY = (float) endValues.values.get(PROPNAME_TRANSLATE_Y);
-        final float endZ = (float) endValues.values.get(PROPNAME_TRANSLATE_Z);
-        return createAnimator(view, startX, startY, startZ, endX, endY, endZ,
-                mInterpolatorX, mInterpolatorY, mInterpolatorZ);
-    }
-
-    @Override
-    public Animator onDisappear(ViewGroup sceneRoot, View view,
-            TransitionValues startValues, TransitionValues endValues) {
-        if (startValues == null) {
-            return null;
-        }
-
-        final Rect start = (Rect) endValues.values.get(PROPNAME_BOUNDS);
-        final Rect end = getEpicenterOrCenter(start);
-        final float endX = end.centerX() - start.centerX();
-        final float endY = end.centerY() - start.centerY();
-        final float endZ = 0 - (float) startValues.values.get(PROPNAME_Z);
-
-        final float startX = (float) endValues.values.get(PROPNAME_TRANSLATE_X);
-        final float startY = (float) endValues.values.get(PROPNAME_TRANSLATE_Y);
-        final float startZ = (float) endValues.values.get(PROPNAME_TRANSLATE_Z);
-        return createAnimator(view, startX, startY, startZ, endX, endY, endZ,
-                mInterpolatorX, mInterpolatorY, mInterpolatorZ);
-    }
-
-    private Rect getEpicenterOrCenter(Rect bestRect) {
-        final Rect epicenter = getEpicenter();
-        if (epicenter != null) {
-            return epicenter;
-        }
-
-        final int centerX = bestRect.centerX();
-        final int centerY = bestRect.centerY();
-        return new Rect(centerX, centerY, centerX, centerY);
-    }
-
-    private static Animator createAnimator(final View view, float startX, float startY,
-            float startZ, float endX, float endY, float endZ, TimeInterpolator interpolatorX,
-            TimeInterpolator interpolatorY, TimeInterpolator interpolatorZ) {
-        final ObjectAnimator animX = ObjectAnimator.ofFloat(view, View.TRANSLATION_X, startX, endX);
-        if (interpolatorX != null) {
-            animX.setInterpolator(interpolatorX);
-        }
-
-        final ObjectAnimator animY = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, startY, endY);
-        if (interpolatorY != null) {
-            animY.setInterpolator(interpolatorY);
-        }
-
-        final ObjectAnimator animZ = ObjectAnimator.ofFloat(view, View.TRANSLATION_Z, startZ, endZ);
-        if (interpolatorZ != null) {
-            animZ.setInterpolator(interpolatorZ);
-        }
-
-        final AnimatorSet animSet = new AnimatorSet();
-        animSet.playTogether(animX, animY, animZ);
-        return animSet;
-    }
-}
diff --git a/core/java/com/android/internal/transition/EpicenterTranslateClipReveal.java b/core/java/com/android/internal/transition/EpicenterTranslateClipReveal.java
new file mode 100644
index 0000000..2c10297
--- /dev/null
+++ b/core/java/com/android/internal/transition/EpicenterTranslateClipReveal.java
@@ -0,0 +1,328 @@
+/*
+ * 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.internal.transition;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.TimeInterpolator;
+import android.animation.TypeEvaluator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Rect;
+import android.transition.TransitionValues;
+import android.transition.Visibility;
+import android.util.AttributeSet;
+import android.util.Property;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.AnimationUtils;
+
+import com.android.internal.R;
+
+/**
+ * EpicenterTranslateClipReveal captures the clip bounds and translation values
+ * before and after the scene change and animates between those and the
+ * epicenter bounds during a visibility transition.
+ */
+public class EpicenterTranslateClipReveal extends Visibility {
+    private static final String PROPNAME_CLIP = "android:epicenterReveal:clip";
+    private static final String PROPNAME_BOUNDS = "android:epicenterReveal:bounds";
+    private static final String PROPNAME_TRANSLATE_X = "android:epicenterReveal:translateX";
+    private static final String PROPNAME_TRANSLATE_Y = "android:epicenterReveal:translateY";
+    private static final String PROPNAME_TRANSLATE_Z = "android:epicenterReveal:translateZ";
+    private static final String PROPNAME_Z = "android:epicenterReveal:z";
+
+    private final TimeInterpolator mInterpolatorX;
+    private final TimeInterpolator mInterpolatorY;
+    private final TimeInterpolator mInterpolatorZ;
+
+    public EpicenterTranslateClipReveal() {
+        mInterpolatorX = null;
+        mInterpolatorY = null;
+        mInterpolatorZ = null;
+    }
+
+    public EpicenterTranslateClipReveal(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        final TypedArray a = context.obtainStyledAttributes(attrs,
+                R.styleable.EpicenterTranslateClipReveal, 0, 0);
+
+        final int interpolatorX = a.getResourceId(
+                R.styleable.EpicenterTranslateClipReveal_interpolatorX, 0);
+        if (interpolatorX != 0) {
+            mInterpolatorX = AnimationUtils.loadInterpolator(context, interpolatorX);
+        } else {
+            mInterpolatorX = TransitionConstants.LINEAR_OUT_SLOW_IN;
+        }
+
+        final int interpolatorY = a.getResourceId(
+                R.styleable.EpicenterTranslateClipReveal_interpolatorY, 0);
+        if (interpolatorY != 0) {
+            mInterpolatorY = AnimationUtils.loadInterpolator(context, interpolatorY);
+        } else {
+            mInterpolatorY = TransitionConstants.FAST_OUT_SLOW_IN;
+        }
+
+        final int interpolatorZ = a.getResourceId(
+                R.styleable.EpicenterTranslateClipReveal_interpolatorZ, 0);
+        if (interpolatorZ != 0) {
+            mInterpolatorZ = AnimationUtils.loadInterpolator(context, interpolatorZ);
+        } else {
+            mInterpolatorZ = TransitionConstants.FAST_OUT_SLOW_IN;
+        }
+
+        a.recycle();
+    }
+
+    @Override
+    public void captureStartValues(TransitionValues transitionValues) {
+        super.captureStartValues(transitionValues);
+        captureValues(transitionValues);
+    }
+
+    @Override
+    public void captureEndValues(TransitionValues transitionValues) {
+        super.captureEndValues(transitionValues);
+        captureValues(transitionValues);
+    }
+
+    private void captureValues(TransitionValues values) {
+        final View view = values.view;
+        if (view.getVisibility() == View.GONE) {
+            return;
+        }
+
+        final Rect bounds = new Rect(0, 0, view.getWidth(), view.getHeight());
+        values.values.put(PROPNAME_BOUNDS, bounds);
+        values.values.put(PROPNAME_TRANSLATE_X, view.getTranslationX());
+        values.values.put(PROPNAME_TRANSLATE_Y, view.getTranslationY());
+        values.values.put(PROPNAME_TRANSLATE_Z, view.getTranslationZ());
+        values.values.put(PROPNAME_Z, view.getZ());
+
+        final Rect clip = view.getClipBounds();
+        values.values.put(PROPNAME_CLIP, clip);
+    }
+
+    @Override
+    public Animator onAppear(ViewGroup sceneRoot, View view,
+            TransitionValues startValues, TransitionValues endValues) {
+        if (endValues == null) {
+            return null;
+        }
+
+        final Rect endBounds = (Rect) endValues.values.get(PROPNAME_BOUNDS);
+        final Rect startBounds = getEpicenterOrCenter(endBounds);
+        final float startX = startBounds.centerX() - endBounds.centerX();
+        final float startY = startBounds.centerY() - endBounds.centerY();
+        final float startZ = 0 - (float) endValues.values.get(PROPNAME_Z);
+
+        // Translate the view to be centered on the epicenter.
+        view.setTranslationX(startX);
+        view.setTranslationY(startY);
+        view.setTranslationZ(startZ);
+
+        final float endX = (float) endValues.values.get(PROPNAME_TRANSLATE_X);
+        final float endY = (float) endValues.values.get(PROPNAME_TRANSLATE_Y);
+        final float endZ = (float) endValues.values.get(PROPNAME_TRANSLATE_Z);
+
+        final Rect endClip = getBestRect(endValues);
+        final Rect startClip = getEpicenterOrCenter(endClip);
+
+        // Prepare the view.
+        view.setClipBounds(startClip);
+
+        final State startStateX = new State(startClip.left, startClip.right, startX);
+        final State endStateX = new State(endClip.left, endClip.right, endX);
+        final State startStateY = new State(startClip.top, startClip.bottom, startY);
+        final State endStateY = new State(endClip.top, endClip.bottom, endY);
+
+        return createRectAnimator(view, startStateX, startStateY, startZ, endStateX, endStateY,
+                endZ, endValues, mInterpolatorX, mInterpolatorY, mInterpolatorZ);
+    }
+
+    @Override
+    public Animator onDisappear(ViewGroup sceneRoot, View view,
+            TransitionValues startValues, TransitionValues endValues) {
+        if (startValues == null) {
+            return null;
+        }
+
+        final Rect startBounds = (Rect) endValues.values.get(PROPNAME_BOUNDS);
+        final Rect endBounds = getEpicenterOrCenter(startBounds);
+        final float endX = endBounds.centerX() - startBounds.centerX();
+        final float endY = endBounds.centerY() - startBounds.centerY();
+        final float endZ = 0 - (float) startValues.values.get(PROPNAME_Z);
+
+        final float startX = (float) endValues.values.get(PROPNAME_TRANSLATE_X);
+        final float startY = (float) endValues.values.get(PROPNAME_TRANSLATE_Y);
+        final float startZ = (float) endValues.values.get(PROPNAME_TRANSLATE_Z);
+
+        final Rect startClip = getBestRect(startValues);
+        final Rect endClip = getEpicenterOrCenter(startClip);
+
+        // Prepare the view.
+        view.setClipBounds(startClip);
+
+        final State startStateX = new State(startClip.left, startClip.right, startX);
+        final State endStateX = new State(endClip.left, endClip.right, endX);
+        final State startStateY = new State(startClip.top, startClip.bottom, startY);
+        final State endStateY = new State(endClip.top, endClip.bottom, endY);
+
+        return createRectAnimator(view, startStateX, startStateY, startZ, endStateX, endStateY,
+                endZ, endValues, mInterpolatorX, mInterpolatorY, mInterpolatorZ);
+    }
+
+    private Rect getEpicenterOrCenter(Rect bestRect) {
+        final Rect epicenter = getEpicenter();
+        if (epicenter != null) {
+            return epicenter;
+        }
+
+        final int centerX = bestRect.centerX();
+        final int centerY = bestRect.centerY();
+        return new Rect(centerX, centerY, centerX, centerY);
+    }
+
+    private Rect getBestRect(TransitionValues values) {
+        final Rect clipRect = (Rect) values.values.get(PROPNAME_CLIP);
+        if (clipRect == null) {
+            return (Rect) values.values.get(PROPNAME_BOUNDS);
+        }
+        return clipRect;
+    }
+
+    private static Animator createRectAnimator(final View view, State startX, State startY,
+            float startZ, State endX, State endY, float endZ, TransitionValues endValues,
+            TimeInterpolator interpolatorX, TimeInterpolator interpolatorY,
+            TimeInterpolator interpolatorZ) {
+        final StateEvaluator evaluator = new StateEvaluator();
+
+        final ObjectAnimator animZ = ObjectAnimator.ofFloat(view, View.TRANSLATION_Z, startZ, endZ);
+        if (interpolatorZ != null) {
+            animZ.setInterpolator(interpolatorZ);
+        }
+
+        final StateProperty propX = new StateProperty(StateProperty.TARGET_X);
+        final ObjectAnimator animX = ObjectAnimator.ofObject(view, propX, evaluator, startX, endX);
+        if (interpolatorX != null) {
+            animX.setInterpolator(interpolatorX);
+        }
+
+        final StateProperty propY = new StateProperty(StateProperty.TARGET_Y);
+        final ObjectAnimator animY = ObjectAnimator.ofObject(view, propY, evaluator, startY, endY);
+        if (interpolatorY != null) {
+            animY.setInterpolator(interpolatorY);
+        }
+
+        final Rect terminalClip = (Rect) endValues.values.get(PROPNAME_CLIP);
+        final AnimatorListenerAdapter animatorListener = new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                view.setClipBounds(terminalClip);
+            }
+        };
+
+        final AnimatorSet animSet = new AnimatorSet();
+        animSet.playTogether(animX, animY, animZ);
+        animSet.addListener(animatorListener);
+        return animSet;
+    }
+
+    private static class State {
+        int lower;
+        int upper;
+        float trans;
+
+        public State() {}
+
+        public State(int lower, int upper, float trans) {
+            this.lower = lower;
+            this.upper = upper;
+            this.trans = trans;
+        }
+    }
+
+    private static class StateEvaluator implements TypeEvaluator<State> {
+        private final State mTemp = new State();
+
+        @Override
+        public State evaluate(float fraction, State startValue, State endValue) {
+            mTemp.upper = startValue.upper + (int) ((endValue.upper - startValue.upper) * fraction);
+            mTemp.lower = startValue.lower + (int) ((endValue.lower - startValue.lower) * fraction);
+            mTemp.trans = startValue.trans + (int) ((endValue.trans - startValue.trans) * fraction);
+            return mTemp;
+        }
+    }
+
+    private static class StateProperty extends Property<View, State> {
+        public static final char TARGET_X = 'x';
+        public static final char TARGET_Y = 'y';
+
+        private final Rect mTempRect = new Rect();
+        private final State mTempState = new State();
+
+        private final int mTargetDimension;
+
+        public StateProperty(char targetDimension) {
+            super(State.class, "state_" + targetDimension);
+
+            mTargetDimension = targetDimension;
+        }
+
+        @Override
+        public State get(View object) {
+            final Rect tempRect = mTempRect;
+            if (!object.getClipBounds(tempRect)) {
+                tempRect.setEmpty();
+            }
+            final State tempState = mTempState;
+            if (mTargetDimension == TARGET_X) {
+                tempState.trans = object.getTranslationX();
+                tempState.lower = tempRect.left + (int) tempState.trans;
+                tempState.upper = tempRect.right + (int) tempState.trans;
+            } else {
+                tempState.trans = object.getTranslationY();
+                tempState.lower = tempRect.top + (int) tempState.trans;
+                tempState.upper = tempRect.bottom + (int) tempState.trans;
+            }
+            return tempState;
+        }
+
+        @Override
+        public void set(View object, State value) {
+            final Rect tempRect = mTempRect;
+            if (object.getClipBounds(tempRect)) {
+                if (mTargetDimension == TARGET_X) {
+                    tempRect.left = value.lower - (int) value.trans;
+                    tempRect.right = value.upper - (int) value.trans;
+                } else {
+                    tempRect.top = value.lower - (int) value.trans;
+                    tempRect.bottom = value.upper - (int) value.trans;
+                }
+                object.setClipBounds(tempRect);
+            }
+
+            if (mTargetDimension == TARGET_X) {
+                object.setTranslationX(value.trans);
+            } else {
+                object.setTranslationY(value.trans);
+            }
+        }
+    }
+}
diff --git a/core/java/com/android/internal/util/AsyncChannel.java b/core/java/com/android/internal/util/AsyncChannel.java
index 34f62ba..bd0e6ce 100644
--- a/core/java/com/android/internal/util/AsyncChannel.java
+++ b/core/java/com/android/internal/util/AsyncChannel.java
@@ -462,10 +462,8 @@
         } catch(Exception e) {
         }
         // Tell source we're disconnected.
-        if (mSrcHandler != null) {
-            replyDisconnected(STATUS_SUCCESSFUL);
-            mSrcHandler = null;
-        }
+        replyDisconnected(STATUS_SUCCESSFUL);
+        mSrcHandler = null;
         // Unlink only when bindService isn't used
         if (mConnection == null && mDstMessenger != null && mDeathMonitor!= null) {
             mDstMessenger.getBinder().unlinkToDeath(mDeathMonitor, 0);
@@ -871,6 +869,8 @@
      * @param status to be stored in msg.arg1
      */
     private void replyDisconnected(int status) {
+        // Can't reply if already disconnected. Avoid NullPointerException.
+        if (mSrcHandler == null) return;
         Message msg = mSrcHandler.obtainMessage(CMD_CHANNEL_DISCONNECTED);
         msg.arg1 = status;
         msg.obj = this;
diff --git a/core/java/com/android/internal/util/CallbackRegistry.java b/core/java/com/android/internal/util/CallbackRegistry.java
new file mode 100644
index 0000000..0f228d4
--- /dev/null
+++ b/core/java/com/android/internal/util/CallbackRegistry.java
@@ -0,0 +1,395 @@
+/*
+ * 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.internal.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tracks callbacks for the event. This class supports reentrant modification
+ * of the callbacks during notification without adversely disrupting notifications.
+ * A common pattern for callbacks is to receive a notification and then remove
+ * themselves. This class handles this behavior with constant memory under
+ * most circumstances.
+ *
+ * <p>A subclass of {@link CallbackRegistry.NotifierCallback} must be passed to
+ * the constructor to define how notifications should be called. That implementation
+ * does the actual notification on the listener.</p>
+ *
+ * <p>This class supports only callbacks with at most two parameters.
+ * Typically, these are the notification originator and a parameter, but these may
+ * be used as required. If more than two parameters are required or primitive types
+ * must be used, <code>A</code> should be some kind of containing structure that
+ * the subclass may reuse between notifications.</p>
+ *
+ * @param <C> The callback type.
+ * @param <T> The notification sender type. Typically this is the containing class.
+ * @param <A> Opaque argument used to pass additional data beyond an int.
+ */
+public class CallbackRegistry<C, T, A> implements Cloneable {
+    private static final String TAG = "CallbackRegistry";
+
+    /** An ordered collection of listeners waiting to be notified. */
+    private List<C> mCallbacks = new ArrayList<C>();
+
+    /**
+     * A bit flag for the first 64 listeners that are removed during notification.
+     * The lowest significant bit corresponds to the 0th index into mCallbacks.
+     * For a small number of callbacks, no additional array of objects needs to
+     * be allocated.
+     */
+    private long mFirst64Removed = 0x0;
+
+    /**
+     * Bit flags for the remaining callbacks that are removed during notification.
+     * When there are more than 64 callbacks and one is marked for removal, a dynamic
+     * array of bits are allocated for the callbacks.
+     */
+    private long[] mRemainderRemoved;
+
+    /**
+     * The reentrancy level of the notification. When we notify a callback, it may cause
+     * further notifications. The reentrancy level must be tracked to let us clean up
+     * the callback state when all notifications have been processed.
+     */
+    private int mNotificationLevel;
+
+    /** The notification mechanism for notifying an event. */
+    private final NotifierCallback<C, T, A> mNotifier;
+
+    /**
+     * Creates an EventRegistry that notifies the event with notifier.
+     * @param notifier The class to use to notify events.
+     */
+    public CallbackRegistry(NotifierCallback<C, T, A> notifier) {
+        mNotifier = notifier;
+    }
+
+    /**
+     * Notify all callbacks.
+     *
+     * @param sender The originator. This is an opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg2 An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     */
+    public synchronized void notifyCallbacks(T sender, int arg, A arg2) {
+        mNotificationLevel++;
+        notifyRecurseLocked(sender, arg, arg2);
+        mNotificationLevel--;
+        if (mNotificationLevel == 0) {
+            if (mRemainderRemoved != null) {
+                for (int i = mRemainderRemoved.length - 1; i >= 0; i--) {
+                    final long removedBits = mRemainderRemoved[i];
+                    if (removedBits != 0) {
+                        removeRemovedCallbacks((i + 1) * Long.SIZE, removedBits);
+                        mRemainderRemoved[i] = 0;
+                    }
+                }
+            }
+            if (mFirst64Removed != 0) {
+                removeRemovedCallbacks(0, mFirst64Removed);
+                mFirst64Removed = 0;
+            }
+        }
+    }
+
+    /**
+     * Notify up to the first Long.SIZE callbacks that don't have a bit set in <code>removed</code>.
+     *
+     * @param sender The originator. This is an opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg2 An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     */
+    private void notifyFirst64Locked(T sender, int arg, A arg2) {
+        final int maxNotified = Math.min(Long.SIZE, mCallbacks.size());
+        notifyCallbacksLocked(sender, arg, arg2, 0, maxNotified, mFirst64Removed);
+    }
+
+    /**
+     * Notify all callbacks using a recursive algorithm to avoid allocating on the heap.
+     * This part captures the callbacks beyond Long.SIZE that have no bits allocated for
+     * removal before it recurses into {@link #notifyRemainderLocked(Object, int, A, int)}.
+     * <p>
+     * Recursion is used to avoid allocating temporary state on the heap. Each stack has one
+     * long (64 callbacks) worth of information of which has been removed.
+     *
+     * @param sender The originator. This is an opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg2 An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     */
+    private void notifyRecurseLocked(T sender, int arg, A arg2) {
+        final int callbackCount = mCallbacks.size();
+        final int remainderIndex = mRemainderRemoved == null ? -1 : mRemainderRemoved.length - 1;
+
+        // Now we've got all callbacks that have no mRemainderRemoved value, so notify the
+        // others.
+        notifyRemainderLocked(sender, arg, arg2, remainderIndex);
+
+        // notifyRemainderLocked notifies all at maxIndex, so we'd normally start at maxIndex + 1
+        // However, we must also keep track of those in mFirst64Removed, so we add 2 instead:
+        final int startCallbackIndex = (remainderIndex + 2) * Long.SIZE;
+
+        // The remaining have no bit set
+        notifyCallbacksLocked(sender, arg, arg2, startCallbackIndex, callbackCount, 0);
+    }
+
+    /**
+     * Notify callbacks that have mRemainderRemoved bits set for remainderIndex. If
+     * remainderIndex is -1, the first 64 will be notified instead.
+     *
+     * @param sender The originator. This is an opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg2 An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param remainderIndex The index into mRemainderRemoved that should be notified.
+     */
+    private void notifyRemainderLocked(T sender, int arg, A arg2, int remainderIndex) {
+        if (remainderIndex < 0) {
+            notifyFirst64Locked(sender, arg, arg2);
+        } else {
+            final long bits = mRemainderRemoved[remainderIndex];
+            final int startIndex = (remainderIndex + 1) * Long.SIZE;
+            final int endIndex = Math.min(mCallbacks.size(), startIndex + Long.SIZE);
+            notifyRemainderLocked(sender, arg, arg2, remainderIndex - 1);
+            notifyCallbacksLocked(sender, arg, arg2, startIndex, endIndex, bits);
+        }
+    }
+
+    /**
+     * Notify callbacks from startIndex to endIndex, using bits as the bit status
+     * for whether they have been removed or not. bits should be from mRemainderRemoved or
+     * mFirst64Removed. bits set to 0 indicates that all callbacks from startIndex to
+     * endIndex should be notified.
+     *
+     * @param sender The originator. This is an opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param arg2 An opaque parameter passed to
+     *      {@link CallbackRegistry.NotifierCallback#onNotifyCallback(Object, Object, int, A)}
+     * @param startIndex The index into the mCallbacks to start notifying.
+     * @param endIndex One past the last index into mCallbacks to notify.
+     * @param bits A bit field indicating which callbacks have been removed and shouldn't
+     *             be notified.
+     */
+    private void notifyCallbacksLocked(T sender, int arg, A arg2, final int startIndex,
+            final int endIndex, final long bits) {
+        long bitMask = 1;
+        for (int i = startIndex; i < endIndex; i++) {
+            if ((bits & bitMask) == 0) {
+                mNotifier.onNotifyCallback(mCallbacks.get(i), sender, arg, arg2);
+            }
+            bitMask <<= 1;
+        }
+    }
+
+    /**
+     * Add a callback to be notified. If the callback is already in the list, another won't
+     * be added. This does not affect current notifications.
+     * @param callback The callback to add.
+     */
+    public synchronized void add(C callback) {
+        int index = mCallbacks.lastIndexOf(callback);
+        if (index < 0 || isRemovedLocked(index)) {
+            mCallbacks.add(callback);
+        }
+    }
+
+    /**
+     * Returns true if the callback at index has been marked for removal.
+     *
+     * @param index The index into mCallbacks to check.
+     * @return true if the callback at index has been marked for removal.
+     */
+    private boolean isRemovedLocked(int index) {
+        if (index < Long.SIZE) {
+            // It is in the first 64 callbacks, just check the bit.
+            final long bitMask = 1L << index;
+            return (mFirst64Removed & bitMask) != 0;
+        } else if (mRemainderRemoved == null) {
+            // It is after the first 64 callbacks, but nothing else was marked for removal.
+            return false;
+        } else {
+            final int maskIndex = (index / Long.SIZE) - 1;
+            if (maskIndex >= mRemainderRemoved.length) {
+                // There are some items in mRemainderRemoved, but nothing at the given index.
+                return false;
+            } else {
+                // There is something marked for removal, so we have to check the bit.
+                final long bits = mRemainderRemoved[maskIndex];
+                final long bitMask = 1L << (index % Long.SIZE);
+                return (bits & bitMask) != 0;
+            }
+        }
+    }
+
+    /**
+     * Removes callbacks from startIndex to startIndex + Long.SIZE, based
+     * on the bits set in removed.
+     * @param startIndex The index into the mCallbacks to start removing callbacks.
+     * @param removed The bits indicating removal, where each bit is set for one callback
+     *                to be removed.
+     */
+    private void removeRemovedCallbacks(int startIndex, long removed) {
+        // The naive approach should be fine. There may be a better bit-twiddling approach.
+        final int endIndex = startIndex + Long.SIZE;
+
+        long bitMask = 1L << (Long.SIZE - 1);
+        for (int i = endIndex - 1; i >= startIndex; i--) {
+            if ((removed & bitMask) != 0) {
+                mCallbacks.remove(i);
+            }
+            bitMask >>>= 1;
+        }
+    }
+
+    /**
+     * Remove a callback. This callback won't be notified after this call completes.
+     * @param callback The callback to remove.
+     */
+    public synchronized void remove(C callback) {
+        if (mNotificationLevel == 0) {
+            mCallbacks.remove(callback);
+        } else {
+            int index = mCallbacks.lastIndexOf(callback);
+            if (index >= 0) {
+                setRemovalBitLocked(index);
+            }
+        }
+    }
+
+    private void setRemovalBitLocked(int index) {
+        if (index < Long.SIZE) {
+            // It is in the first 64 callbacks, just check the bit.
+            final long bitMask = 1L << index;
+            mFirst64Removed |= bitMask;
+        } else {
+            final int remainderIndex = (index / Long.SIZE) - 1;
+            if (mRemainderRemoved == null) {
+                mRemainderRemoved = new long[mCallbacks.size() / Long.SIZE];
+            } else if (mRemainderRemoved.length < remainderIndex) {
+                // need to make it bigger
+                long[] newRemainders = new long[mCallbacks.size() / Long.SIZE];
+                System.arraycopy(mRemainderRemoved, 0, newRemainders, 0, mRemainderRemoved.length);
+                mRemainderRemoved = newRemainders;
+            }
+            final long bitMask = 1L << (index % Long.SIZE);
+            mRemainderRemoved[remainderIndex] |= bitMask;
+        }
+    }
+
+    /**
+     * Makes a copy of the registered callbacks and returns it.
+     *
+     * @return a copy of the registered callbacks.
+     */
+    public synchronized ArrayList<C> copyListeners() {
+        ArrayList<C> callbacks = new ArrayList<C>(mCallbacks.size());
+        int numListeners = mCallbacks.size();
+        for (int i = 0; i < numListeners; i++) {
+            if (!isRemovedLocked(i)) {
+                callbacks.add(mCallbacks.get(i));
+            }
+        }
+        return callbacks;
+    }
+
+    /**
+     * Returns true if there are no registered callbacks or false otherwise.
+     *
+     * @return true if there are no registered callbacks or false otherwise.
+     */
+    public synchronized boolean isEmpty() {
+        if (mCallbacks.isEmpty()) {
+            return true;
+        } else if (mNotificationLevel == 0) {
+            return false;
+        } else {
+            int numListeners = mCallbacks.size();
+            for (int i = 0; i < numListeners; i++) {
+                if (!isRemovedLocked(i)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    /**
+     * Removes all callbacks from the list.
+     */
+    public synchronized void clear() {
+        if (mNotificationLevel == 0) {
+            mCallbacks.clear();
+        } else if (!mCallbacks.isEmpty()) {
+            for (int i = mCallbacks.size() - 1; i >= 0; i--) {
+                setRemovalBitLocked(i);
+            }
+        }
+    }
+
+    public synchronized CallbackRegistry<C, T, A> clone() {
+        CallbackRegistry<C, T, A> clone = null;
+        try {
+            clone = (CallbackRegistry<C, T, A>) super.clone();
+            clone.mFirst64Removed = 0;
+            clone.mRemainderRemoved = null;
+            clone.mNotificationLevel = 0;
+            clone.mCallbacks = new ArrayList<C>();
+            final int numListeners = mCallbacks.size();
+            for (int i = 0; i < numListeners; i++) {
+                if (!isRemovedLocked(i)) {
+                    clone.mCallbacks.add(mCallbacks.get(i));
+                }
+            }
+        } catch (CloneNotSupportedException e) {
+            e.printStackTrace();
+        }
+        return clone;
+    }
+
+    /**
+     * Class used to notify events from CallbackRegistry.
+     *
+     * @param <C> The callback type.
+     * @param <T> The notification sender type. Typically this is the containing class.
+     * @param <A> An opaque argument to pass to the notifier
+     */
+    public abstract static class NotifierCallback<C, T, A> {
+        /**
+         * Used to notify the callback.
+         *
+         * @param callback The callback to notify.
+         * @param sender The opaque sender object.
+         * @param arg The opaque notification parameter.
+         * @param arg2 An opaque argument passed in
+         *        {@link CallbackRegistry#notifyCallbacks}
+         * @see CallbackRegistry#CallbackRegistry(CallbackRegistry.NotifierCallback)
+         */
+        public abstract void onNotifyCallback(C callback, T sender, int arg, A arg2);
+    }
+}
diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl
index 6f104dd..60c5e42 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -59,7 +59,8 @@
             int controlFlags, int softInputMode, int windowFlags,
             in EditorInfo attribute, IInputContext inputContext);
 
-    void showInputMethodPickerFromClient(in IInputMethodClient client);
+    void showInputMethodPickerFromClient(in IInputMethodClient client,
+            int auxiliarySubtypeMode);
     void showInputMethodAndSubtypeEnablerFromClient(in IInputMethodClient client, String topId);
     void setInputMethod(in IBinder token, String id);
     void setInputMethodAndSubtype(in IBinder token, String id, in InputMethodSubtype subtype);
diff --git a/core/java/com/android/internal/widget/ButtonBarLayout.java b/core/java/com/android/internal/widget/ButtonBarLayout.java
index 64e6c69..f58ab03 100644
--- a/core/java/com/android/internal/widget/ButtonBarLayout.java
+++ b/core/java/com/android/internal/widget/ButtonBarLayout.java
@@ -17,6 +17,7 @@
 package com.android.internal.widget;
 
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.util.AttributeSet;
 import android.view.Gravity;
 import android.view.View;
@@ -29,37 +30,39 @@
  * orientation when it can't fit its child views horizontally.
  */
 public class ButtonBarLayout extends LinearLayout {
-    /** Spacer used in horizontal orientation. */
-    private final View mSpacer;
-
     /** Whether the current configuration allows stacking. */
-    private final boolean mAllowStacked;
+    private final boolean mAllowStacking;
 
     /** Whether the layout is currently stacked. */
     private boolean mStacked;
 
+    private int mLastWidthSize = -1;
+
     public ButtonBarLayout(Context context, AttributeSet attrs) {
         super(context, attrs);
 
-        mAllowStacked = context.getResources().getBoolean(R.bool.allow_stacked_button_bar);
-        mSpacer = findViewById(R.id.spacer);
-    }
+        final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ButtonBarLayout);
+        mAllowStacking = ta.getBoolean(R.styleable.ButtonBarLayout_allowStacking, false);
+        ta.recycle();
 
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        super.onSizeChanged(w, h, oldw, oldh);
-
-        // Maybe we can fit the content now?
-        if (w > oldw && mStacked) {
-            setStacked(false);
-        }
+        mStacked = getOrientation() == VERTICAL;
     }
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (mAllowStacking) {
+            final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
+            if (widthSize > mLastWidthSize && mStacked) {
+                // We're being measured wider this time, try un-stacking.
+                setStacked(false);
+            }
+
+            mLastWidthSize = widthSize;
+        }
+
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 
-        if (mAllowStacked && getOrientation() == LinearLayout.HORIZONTAL) {
+        if (mAllowStacking && !mStacked) {
             final int measuredWidth = getMeasuredWidthAndState();
             final int measuredWidthState = measuredWidth & MEASURED_STATE_MASK;
             if (measuredWidthState == MEASURED_STATE_TOO_SMALL) {
@@ -75,8 +78,9 @@
         setOrientation(stacked ? LinearLayout.VERTICAL : LinearLayout.HORIZONTAL);
         setGravity(stacked ? Gravity.RIGHT : Gravity.BOTTOM);
 
-        if (mSpacer != null) {
-            mSpacer.setVisibility(stacked ? View.GONE : View.INVISIBLE);
+        final View spacer = findViewById(R.id.spacer);
+        if (spacer != null) {
+            spacer.setVisibility(stacked ? View.GONE : View.INVISIBLE);
         }
 
         // Reverse the child order. This is specific to the Material button
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index bbdd860..5448214 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -132,6 +132,7 @@
     android_media_AudioRecord.cpp \
     android_media_AudioSystem.cpp \
     android_media_AudioTrack.cpp \
+    android_media_DeviceCallback.cpp \
     android_media_JetPlayer.cpp \
     android_media_RemoteDisplay.cpp \
     android_media_ToneGenerator.cpp \
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp
index 5c95f8a..2785c48 100755
--- a/core/jni/android/graphics/Bitmap.cpp
+++ b/core/jni/android/graphics/Bitmap.cpp
@@ -1,3 +1,7 @@
+#define LOG_TAG "Bitmap"
+
+#include "Bitmap.h"
+
 #include "Paint.h"
 #include "SkBitmap.h"
 #include "SkPixelRef.h"
@@ -14,11 +18,339 @@
 #include "android_util_Binder.h"
 #include "android_nio_utils.h"
 #include "CreateJavaOutputStreamAdaptor.h"
+#include <Caches.h>
 
 #include "core_jni_helpers.h"
 
 #include <jni.h>
 
+namespace android {
+
+class WrappedPixelRef : public SkPixelRef {
+public:
+    WrappedPixelRef(Bitmap* wrapper, void* storage,
+            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
+            : SkPixelRef(info)
+            , mBitmap(*wrapper)
+            , mStorage(storage) {
+        reconfigure(info, rowBytes, ctable);
+    }
+
+    ~WrappedPixelRef() {
+        // Tell SkRefCnt that everything is as it expects by forcing
+        // the refcnt to 1
+        internal_dispose_restore_refcnt_to_1();
+        SkSafeUnref(mColorTable);
+    }
+
+    void reconfigure(const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable) {
+        if (kIndex_8_SkColorType != info.colorType()) {
+            ctable = nullptr;
+        }
+        mRowBytes = rowBytes;
+        if (mColorTable != ctable) {
+            SkSafeUnref(mColorTable);
+            mColorTable = ctable;
+            SkSafeRef(mColorTable);
+        }
+        // Dirty hack is dirty
+        // TODO: Figure something out here, Skia's current design makes this
+        // really hard to work with. Skia really, really wants immutable objects,
+        // but with the nested-ref-count hackery going on that's just not
+        // feasible without going insane trying to figure it out
+        SkImageInfo* myInfo = const_cast<SkImageInfo*>(&this->info());
+        *myInfo = info;
+
+        // Docs say to only call this in the ctor, but we're going to call
+        // it anyway even if this isn't always the ctor.
+        // TODO: Fix this too as part of the above TODO
+        setPreLocked(mStorage, mRowBytes, mColorTable);
+    }
+
+    // Can't mark as override since SkPixelRef::rowBytes isn't virtual
+    // but that's OK since we just want BitmapWrapper to be able to rely
+    // on calling rowBytes() on an unlocked pixelref, which it will be
+    // doing on a WrappedPixelRef type, not a SkPixelRef, so static
+    // dispatching will do what we want.
+    size_t rowBytes() const { return mRowBytes; }
+    SkColorTable* colorTable() const { return mColorTable; }
+
+    bool hasHardwareMipMap() const {
+        return mHasHardwareMipMap;
+    }
+
+    void setHasHardwareMipMap(bool hasMipMap) {
+        mHasHardwareMipMap = hasMipMap;
+    }
+
+protected:
+    virtual bool onNewLockPixels(LockRec* rec) override {
+        rec->fPixels = mStorage;
+        rec->fRowBytes = mRowBytes;
+        rec->fColorTable = mColorTable;
+        return true;
+    }
+
+    virtual void onUnlockPixels() override {
+        // nothing
+    }
+
+    virtual size_t getAllocatedSizeInBytes() const override {
+        return info().getSafeSize(mRowBytes);
+    }
+
+private:
+    Bitmap& mBitmap;
+    void* mStorage;
+    size_t mRowBytes = 0;
+    SkColorTable* mColorTable = nullptr;
+    bool mHasHardwareMipMap = false;
+
+    virtual void internal_dispose() const override {
+        mBitmap.onStrongRefDestroyed();
+    }
+};
+
+Bitmap::Bitmap(JNIEnv* env, jbyteArray storageObj, void* address,
+            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
+        : mPixelStorageType(PixelStorageType::Java) {
+    env->GetJavaVM(&mPixelStorage.java.jvm);
+    mPixelStorage.java.jweakRef = env->NewWeakGlobalRef(storageObj);
+    mPixelStorage.java.jstrongRef = nullptr;
+    mPixelRef.reset(new WrappedPixelRef(this, address, info, rowBytes, ctable));
+    // Note: this will trigger a call to onStrongRefDestroyed(), but
+    // we want the pixel ref to have a ref count of 0 at this point
+    mPixelRef->unref();
+}
+
+Bitmap::Bitmap(void* address, void* context, FreeFunc freeFunc,
+            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable)
+        : mPixelStorageType(PixelStorageType::External) {
+    mPixelStorage.external.address = address;
+    mPixelStorage.external.context = context;
+    mPixelStorage.external.freeFunc = freeFunc;
+    mPixelRef.reset(new WrappedPixelRef(this, address, info, rowBytes, ctable));
+    // Note: this will trigger a call to onStrongRefDestroyed(), but
+    // we want the pixel ref to have a ref count of 0 at this point
+    mPixelRef->unref();
+}
+
+Bitmap::~Bitmap() {
+    doFreePixels();
+}
+
+void Bitmap::freePixels() {
+    AutoMutex _lock(mLock);
+    if (mPinnedRefCount == 0) {
+        doFreePixels();
+        mPixelStorageType = PixelStorageType::Invalid;
+    }
+}
+
+void Bitmap::doFreePixels() {
+    switch (mPixelStorageType) {
+    case PixelStorageType::Invalid:
+        // already free'd, nothing to do
+        break;
+    case PixelStorageType::External:
+        mPixelStorage.external.freeFunc(mPixelStorage.external.address,
+                mPixelStorage.external.context);
+        break;
+    case PixelStorageType::Java:
+        JNIEnv* env = jniEnv();
+        LOG_ALWAYS_FATAL_IF(mPixelStorage.java.jstrongRef,
+                "Deleting a bitmap wrapper while there are outstanding strong "
+                "references! mPinnedRefCount = %d", mPinnedRefCount);
+        env->DeleteWeakGlobalRef(mPixelStorage.java.jweakRef);
+        break;
+    }
+
+    if (android::uirenderer::Caches::hasInstance()) {
+        android::uirenderer::Caches::getInstance().textureCache.releaseTexture(
+                mPixelRef->getStableID());
+    }
+}
+
+bool Bitmap::hasHardwareMipMap() {
+    return mPixelRef->hasHardwareMipMap();
+}
+
+void Bitmap::setHasHardwareMipMap(bool hasMipMap) {
+    mPixelRef->setHasHardwareMipMap(hasMipMap);
+}
+
+const SkImageInfo& Bitmap::info() const {
+    assertValid();
+    return mPixelRef->info();
+}
+
+size_t Bitmap::rowBytes() const {
+    return mPixelRef->rowBytes();
+}
+
+SkPixelRef* Bitmap::peekAtPixelRef() const {
+    assertValid();
+    return mPixelRef.get();
+}
+
+SkPixelRef* Bitmap::refPixelRef() {
+    assertValid();
+    android::AutoMutex _lock(mLock);
+    return refPixelRefLocked();
+}
+
+SkPixelRef* Bitmap::refPixelRefLocked() {
+    mPixelRef->ref();
+    if (mPixelRef->unique()) {
+        // We just restored this from 0, pin the pixels and inc the strong count
+        // Note that there *might be* an incoming onStrongRefDestroyed from whatever
+        // last unref'd
+        pinPixelsLocked();
+        mPinnedRefCount++;
+    }
+    return mPixelRef.get();
+}
+
+void Bitmap::reconfigure(const SkImageInfo& info, size_t rowBytes,
+        SkColorTable* ctable) {
+    {
+        android::AutoMutex _lock(mLock);
+        if (mPinnedRefCount) {
+            ALOGW("Called reconfigure on a bitmap that is in use! This may"
+                    " cause graphical corruption!");
+        }
+    }
+    mPixelRef->reconfigure(info, rowBytes, ctable);
+}
+
+void Bitmap::reconfigure(const SkImageInfo& info) {
+    reconfigure(info, info.minRowBytes(), nullptr);
+}
+
+void Bitmap::detachFromJava() {
+    bool disposeSelf;
+    {
+        android::AutoMutex _lock(mLock);
+        mAttachedToJava = false;
+        disposeSelf = shouldDisposeSelfLocked();
+    }
+    if (disposeSelf) {
+        delete this;
+    }
+}
+
+bool Bitmap::shouldDisposeSelfLocked() {
+    return mPinnedRefCount == 0 && !mAttachedToJava;
+}
+
+JNIEnv* Bitmap::jniEnv() {
+    JNIEnv* env;
+    auto success = mPixelStorage.java.jvm->GetEnv((void**)&env, JNI_VERSION_1_6);
+    LOG_ALWAYS_FATAL_IF(success != JNI_OK,
+        "Failed to get JNIEnv* from JVM: %p", mPixelStorage.java.jvm);
+    return env;
+}
+
+void Bitmap::onStrongRefDestroyed() {
+    bool disposeSelf = false;
+    {
+        android::AutoMutex _lock(mLock);
+        if (mPinnedRefCount > 0) {
+            mPinnedRefCount--;
+            if (mPinnedRefCount == 0) {
+                unpinPixelsLocked();
+                disposeSelf = shouldDisposeSelfLocked();
+            }
+        }
+    }
+    if (disposeSelf) {
+        delete this;
+    }
+}
+
+void Bitmap::pinPixelsLocked() {
+    switch (mPixelStorageType) {
+    case PixelStorageType::Invalid:
+        LOG_ALWAYS_FATAL("Cannot pin invalid pixels!");
+        break;
+    case PixelStorageType::External:
+        // Nothing to do
+        break;
+    case PixelStorageType::Java: {
+        JNIEnv* env = jniEnv();
+        if (!mPixelStorage.java.jstrongRef) {
+            mPixelStorage.java.jstrongRef = reinterpret_cast<jbyteArray>(
+                    env->NewGlobalRef(mPixelStorage.java.jweakRef));
+            if (!mPixelStorage.java.jstrongRef) {
+                LOG_ALWAYS_FATAL("Failed to acquire strong reference to pixels");
+            }
+        }
+        break;
+    }
+    }
+}
+
+void Bitmap::unpinPixelsLocked() {
+    switch (mPixelStorageType) {
+    case PixelStorageType::Invalid:
+        LOG_ALWAYS_FATAL("Cannot unpin invalid pixels!");
+        break;
+    case PixelStorageType::External:
+        // Don't need to do anything
+        break;
+    case PixelStorageType::Java: {
+        JNIEnv* env = jniEnv();
+        if (mPixelStorage.java.jstrongRef) {
+            env->DeleteGlobalRef(mPixelStorage.java.jstrongRef);
+            mPixelStorage.java.jstrongRef = nullptr;
+        }
+        break;
+    }
+    }
+}
+
+void Bitmap::getSkBitmap(SkBitmap* outBitmap) {
+    assertValid();
+    android::AutoMutex _lock(mLock);
+    // Safe because mPixelRef is a WrappedPixelRef type, otherwise rowBytes()
+    // would require locking the pixels first.
+    outBitmap->setInfo(mPixelRef->info(), mPixelRef->rowBytes());
+    outBitmap->setPixelRef(refPixelRefLocked())->unref();
+    outBitmap->setHasHardwareMipMap(hasHardwareMipMap());
+}
+
+void Bitmap::assertValid() const {
+    LOG_ALWAYS_FATAL_IF(mPixelStorageType == PixelStorageType::Invalid,
+            "Error, cannot access an invalid/free'd bitmap here!");
+}
+
+} // namespace android
+
+using namespace android;
+
+// Convenience class that does not take a global ref on the pixels, relying
+// on the caller already having a local JNI ref
+class LocalScopedBitmap {
+public:
+    LocalScopedBitmap(jlong bitmapHandle)
+            : mBitmap(reinterpret_cast<Bitmap*>(bitmapHandle)) {}
+
+    Bitmap* operator->() {
+        return mBitmap;
+    }
+
+    void* pixels() {
+        return mBitmap->peekAtPixelRef()->pixels();
+    }
+
+    bool valid() {
+        return mBitmap && mBitmap->valid();
+    }
+
+private:
+    Bitmap* mBitmap;
+};
+
 ///////////////////////////////////////////////////////////////////////////////
 // Conversions to/from SkColor, for get/setPixels, and the create method, which
 // is basically like setPixels
@@ -328,8 +660,8 @@
     SkBitmap bitmap;
     bitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType));
 
-    jbyteArray buff = GraphicsJNI::allocateJavaPixelRef(env, &bitmap, NULL);
-    if (NULL == buff) {
+    Bitmap* nativeBitmap = GraphicsJNI::allocateJavaPixelRef(env, &bitmap, NULL);
+    if (!nativeBitmap) {
         return NULL;
     }
 
@@ -338,39 +670,41 @@
                 0, 0, width, height, bitmap);
     }
 
-    return GraphicsJNI::createBitmap(env, new SkBitmap(bitmap), buff,
-            getPremulBitmapCreateFlags(isMutable), NULL, NULL);
+    return GraphicsJNI::createBitmap(env, nativeBitmap,
+            getPremulBitmapCreateFlags(isMutable));
 }
 
 static jobject Bitmap_copy(JNIEnv* env, jobject, jlong srcHandle,
                            jint dstConfigHandle, jboolean isMutable) {
-    const SkBitmap* src = reinterpret_cast<SkBitmap*>(srcHandle);
+    SkBitmap src;
+    reinterpret_cast<Bitmap*>(srcHandle)->getSkBitmap(&src);
     SkColorType dstCT = GraphicsJNI::legacyBitmapConfigToColorType(dstConfigHandle);
     SkBitmap            result;
     JavaPixelAllocator  allocator(env);
 
-    if (!src->copyTo(&result, dstCT, &allocator)) {
+    if (!src.copyTo(&result, dstCT, &allocator)) {
         return NULL;
     }
-    return GraphicsJNI::createBitmap(env, new SkBitmap(result), allocator.getStorageObj(),
-            getPremulBitmapCreateFlags(isMutable), NULL, NULL);
+    Bitmap* bitmap = allocator.getStorageObjAndReset();
+    return GraphicsJNI::createBitmap(env, bitmap,
+            getPremulBitmapCreateFlags(isMutable));
 }
 
 static void Bitmap_destructor(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    delete bitmap;
+    LocalScopedBitmap bitmap(bitmapHandle);
+    bitmap->detachFromJava();
 }
 
 static jboolean Bitmap_recycle(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    bitmap->setPixels(NULL, NULL);
+    LocalScopedBitmap bitmap(bitmapHandle);
+    bitmap->freePixels();
     return JNI_TRUE;
 }
 
 static void Bitmap_reconfigure(JNIEnv* env, jobject clazz, jlong bitmapHandle,
         jint width, jint height, jint configHandle, jint allocSize,
         jboolean requestPremul) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    LocalScopedBitmap bitmap(bitmapHandle);
     SkColorType colorType = GraphicsJNI::legacyBitmapConfigToColorType(configHandle);
 
     // ARGB_4444 is a deprecated format, convert automatically to 8888
@@ -383,11 +717,9 @@
         doThrowIAE(env, "Bitmap not large enough to support new configuration");
         return;
     }
-    SkPixelRef* ref = bitmap->pixelRef();
-    ref->ref();
     SkAlphaType alphaType;
-    if (bitmap->colorType() != kRGB_565_SkColorType
-            && bitmap->alphaType() == kOpaque_SkAlphaType) {
+    if (bitmap->info().colorType() != kRGB_565_SkColorType
+            && bitmap->info().alphaType() == kOpaque_SkAlphaType) {
         // If the original bitmap was set to opaque, keep that setting, unless it
         // was 565, which is required to be opaque.
         alphaType = kOpaque_SkAlphaType;
@@ -395,22 +727,7 @@
         // Otherwise respect the premultiplied request.
         alphaType = requestPremul ? kPremul_SkAlphaType : kUnpremul_SkAlphaType;
     }
-    bitmap->setInfo(SkImageInfo::Make(width, height, colorType, alphaType));
-    // FIXME: Skia thinks of an SkPixelRef as having a constant SkImageInfo (except for
-    // its alphatype), so it would make more sense from Skia's perspective to create a
-    // new SkPixelRef. That said, libhwui uses the pointer to the SkPixelRef as a key
-    // for its cache, so it won't realize this is the same Java Bitmap.
-    SkImageInfo& info = const_cast<SkImageInfo&>(ref->info());
-    // Use the updated from the SkBitmap, which may have corrected an invalid alphatype.
-    // (e.g. 565 non-opaque)
-    info = bitmap->info();
-    bitmap->setPixelRef(ref);
-
-    // notifyPixelsChanged will increment the generation ID even though the actual pixel data
-    // hasn't been touched. This signals the renderer that the bitmap (including width, height,
-    // colortype and alphatype) has changed.
-    ref->notifyPixelsChanged();
-    ref->unref();
+    bitmap->reconfigure(SkImageInfo::Make(width, height, colorType, alphaType));
 }
 
 // These must match the int values in Bitmap.java
@@ -423,7 +740,8 @@
 static jboolean Bitmap_compress(JNIEnv* env, jobject clazz, jlong bitmapHandle,
                                 jint format, jint quality,
                                 jobject jstream, jbyteArray jstorage) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+
+    LocalScopedBitmap bitmap(bitmapHandle);
     SkImageEncoder::Type fm;
 
     switch (format) {
@@ -440,92 +758,92 @@
         return JNI_FALSE;
     }
 
+    if (!bitmap.valid()) {
+        return JNI_FALSE;
+    }
+
     bool success = false;
-    if (NULL != bitmap) {
-        SkAutoLockPixels alp(*bitmap);
 
-        if (NULL == bitmap->getPixels()) {
-            return JNI_FALSE;
-        }
+    std::unique_ptr<SkWStream> strm(CreateJavaOutputStreamAdaptor(env, jstream, jstorage));
+    if (!strm.get()) {
+        return JNI_FALSE;
+    }
 
-        SkWStream* strm = CreateJavaOutputStreamAdaptor(env, jstream, jstorage);
-        if (NULL == strm) {
-            return JNI_FALSE;
-        }
-
-        SkImageEncoder* encoder = SkImageEncoder::Create(fm);
-        if (NULL != encoder) {
-            success = encoder->encodeStream(strm, *bitmap, quality);
-            delete encoder;
-        }
-        delete strm;
+    std::unique_ptr<SkImageEncoder> encoder(SkImageEncoder::Create(fm));
+    if (encoder.get()) {
+        SkBitmap skbitmap;
+        bitmap->getSkBitmap(&skbitmap);
+        success = encoder->encodeStream(strm.get(), skbitmap, quality);
     }
     return success ? JNI_TRUE : JNI_FALSE;
 }
 
 static void Bitmap_erase(JNIEnv* env, jobject, jlong bitmapHandle, jint color) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    bitmap->eraseColor(color);
+    LocalScopedBitmap bitmap(bitmapHandle);
+    SkBitmap skBitmap;
+    bitmap->getSkBitmap(&skBitmap);
+    skBitmap.eraseColor(color);
 }
 
 static jint Bitmap_rowBytes(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    LocalScopedBitmap bitmap(bitmapHandle);
     return static_cast<jint>(bitmap->rowBytes());
 }
 
 static jint Bitmap_config(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    return GraphicsJNI::colorTypeToLegacyBitmapConfig(bitmap->colorType());
+    LocalScopedBitmap bitmap(bitmapHandle);
+    return GraphicsJNI::colorTypeToLegacyBitmapConfig(bitmap->info().colorType());
 }
 
 static jint Bitmap_getGenerationId(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    return static_cast<jint>(bitmap->getGenerationID());
+    LocalScopedBitmap bitmap(bitmapHandle);
+    return static_cast<jint>(bitmap->peekAtPixelRef()->getGenerationID());
 }
 
 static jboolean Bitmap_isPremultiplied(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    if (bitmap->alphaType() == kPremul_SkAlphaType) {
+    LocalScopedBitmap bitmap(bitmapHandle);
+    if (bitmap->info().alphaType() == kPremul_SkAlphaType) {
         return JNI_TRUE;
     }
     return JNI_FALSE;
 }
 
 static jboolean Bitmap_hasAlpha(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    return !bitmap->isOpaque() ? JNI_TRUE : JNI_FALSE;
+    LocalScopedBitmap bitmap(bitmapHandle);
+    return !bitmap->info().isOpaque() ? JNI_TRUE : JNI_FALSE;
 }
 
 static void Bitmap_setHasAlpha(JNIEnv* env, jobject, jlong bitmapHandle,
         jboolean hasAlpha, jboolean requestPremul) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    LocalScopedBitmap bitmap(bitmapHandle);
     if (hasAlpha) {
-        bitmap->setAlphaType(requestPremul ? kPremul_SkAlphaType : kUnpremul_SkAlphaType);
+        bitmap->peekAtPixelRef()->changeAlphaType(
+                requestPremul ? kPremul_SkAlphaType : kUnpremul_SkAlphaType);
     } else {
-        bitmap->setAlphaType(kOpaque_SkAlphaType);
+        bitmap->peekAtPixelRef()->changeAlphaType(kOpaque_SkAlphaType);
     }
 }
 
 static void Bitmap_setPremultiplied(JNIEnv* env, jobject, jlong bitmapHandle,
         jboolean isPremul) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    if (!bitmap->isOpaque()) {
+    LocalScopedBitmap bitmap(bitmapHandle);
+    if (!bitmap->info().isOpaque()) {
         if (isPremul) {
-            bitmap->setAlphaType(kPremul_SkAlphaType);
+            bitmap->peekAtPixelRef()->changeAlphaType(kPremul_SkAlphaType);
         } else {
-            bitmap->setAlphaType(kUnpremul_SkAlphaType);
+            bitmap->peekAtPixelRef()->changeAlphaType(kUnpremul_SkAlphaType);
         }
     }
 }
 
 static jboolean Bitmap_hasMipMap(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    LocalScopedBitmap bitmap(bitmapHandle);
     return bitmap->hasHardwareMipMap() ? JNI_TRUE : JNI_FALSE;
 }
 
 static void Bitmap_setHasMipMap(JNIEnv* env, jobject, jlong bitmapHandle,
                                 jboolean hasMipMap) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    LocalScopedBitmap bitmap(bitmapHandle);
     bitmap->setHasHardwareMipMap(hasMipMap);
 }
 
@@ -580,8 +898,8 @@
         }
     }
 
-    jbyteArray buffer = GraphicsJNI::allocateJavaPixelRef(env, bitmap.get(), ctable);
-    if (NULL == buffer) {
+    android::Bitmap* nativeBitmap = GraphicsJNI::allocateJavaPixelRef(env, bitmap.get(), ctable);
+    if (!nativeBitmap) {
         SkSafeUnref(ctable);
         return NULL;
     }
@@ -593,6 +911,7 @@
     android::Parcel::ReadableBlob blob;
     android::status_t status = p->readBlob(size, &blob);
     if (status) {
+        nativeBitmap->detachFromJava();
         doThrowRE(env, "Could not read bitmap from parcel blob.");
         return NULL;
     }
@@ -603,7 +922,7 @@
 
     blob.release();
 
-    return GraphicsJNI::createBitmap(env, bitmap.release(), buffer,
+    return GraphicsJNI::createBitmap(env, nativeBitmap,
             getPremulBitmapCreateFlags(isMutable), NULL, NULL, density);
 }
 
@@ -611,24 +930,25 @@
                                      jlong bitmapHandle,
                                      jboolean isMutable, jint density,
                                      jobject parcel) {
-    const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
     if (parcel == NULL) {
         SkDebugf("------- writeToParcel null parcel\n");
         return JNI_FALSE;
     }
 
     android::Parcel* p = android::parcelForJavaObject(env, parcel);
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
 
     p->writeInt32(isMutable);
-    p->writeInt32(bitmap->colorType());
-    p->writeInt32(bitmap->alphaType());
-    p->writeInt32(bitmap->width());
-    p->writeInt32(bitmap->height());
-    p->writeInt32(bitmap->rowBytes());
+    p->writeInt32(bitmap.colorType());
+    p->writeInt32(bitmap.alphaType());
+    p->writeInt32(bitmap.width());
+    p->writeInt32(bitmap.height());
+    p->writeInt32(bitmap.rowBytes());
     p->writeInt32(density);
 
-    if (bitmap->colorType() == kIndex_8_SkColorType) {
-        SkColorTable* ctable = bitmap->getColorTable();
+    if (bitmap.colorType() == kIndex_8_SkColorType) {
+        SkColorTable* ctable = bitmap.getColorTable();
         if (ctable != NULL) {
             int count = ctable->count();
             p->writeInt32(count);
@@ -639,7 +959,7 @@
         }
     }
 
-    size_t size = bitmap->getSize();
+    size_t size = bitmap.getSize();
 
     android::Parcel::WritableBlob blob;
     android::status_t status = p->writeBlob(size, &blob);
@@ -648,14 +968,14 @@
         return JNI_FALSE;
     }
 
-    bitmap->lockPixels();
-    const void* pSrc =  bitmap->getPixels();
+    bitmap.lockPixels();
+    const void* pSrc =  bitmap.getPixels();
     if (pSrc == NULL) {
         memset(blob.data(), 0, size);
     } else {
         memcpy(blob.data(), pSrc, size);
     }
-    bitmap->unlockPixels();
+    bitmap.unlockPixels();
 
     blob.release();
     return JNI_TRUE;
@@ -664,17 +984,17 @@
 static jobject Bitmap_extractAlpha(JNIEnv* env, jobject clazz,
                                    jlong srcHandle, jlong paintHandle,
                                    jintArray offsetXY) {
-    const SkBitmap* src = reinterpret_cast<SkBitmap*>(srcHandle);
+    SkBitmap src;
+    reinterpret_cast<Bitmap*>(srcHandle)->getSkBitmap(&src);
     const android::Paint* paint = reinterpret_cast<android::Paint*>(paintHandle);
     SkIPoint  offset;
-    SkBitmap* dst = new SkBitmap;
+    SkBitmap dst;
     JavaPixelAllocator allocator(env);
 
-    src->extractAlpha(dst, paint, &allocator, &offset);
+    src.extractAlpha(&dst, paint, &allocator, &offset);
     // If Skia can't allocate pixels for destination bitmap, it resets
     // it, that is set its pixels buffer to NULL, and zero width and height.
-    if (dst->getPixels() == NULL && src->getPixels() != NULL) {
-        delete dst;
+    if (dst.getPixels() == NULL && src.getPixels() != NULL) {
         doThrowOOME(env, "failed to allocate pixels for alpha");
         return NULL;
     }
@@ -685,53 +1005,55 @@
         env->ReleaseIntArrayElements(offsetXY, array, 0);
     }
 
-    return GraphicsJNI::createBitmap(env, dst, allocator.getStorageObj(),
-            getPremulBitmapCreateFlags(true), NULL, NULL);
+    return GraphicsJNI::createBitmap(env, allocator.getStorageObjAndReset(),
+            getPremulBitmapCreateFlags(true));
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 
 static jint Bitmap_getPixel(JNIEnv* env, jobject, jlong bitmapHandle,
         jint x, jint y) {
-    const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    SkAutoLockPixels alp(*bitmap);
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
+    SkAutoLockPixels alp(bitmap);
 
-    ToColorProc proc = ChooseToColorProc(*bitmap);
+    ToColorProc proc = ChooseToColorProc(bitmap);
     if (NULL == proc) {
         return 0;
     }
-    const void* src = bitmap->getAddr(x, y);
+    const void* src = bitmap.getAddr(x, y);
     if (NULL == src) {
         return 0;
     }
 
     SkColor dst[1];
-    proc(dst, src, 1, bitmap->getColorTable());
+    proc(dst, src, 1, bitmap.getColorTable());
     return static_cast<jint>(dst[0]);
 }
 
 static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle,
         jintArray pixelArray, jint offset, jint stride,
         jint x, jint y, jint width, jint height) {
-    const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    SkAutoLockPixels alp(*bitmap);
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
+    SkAutoLockPixels alp(bitmap);
 
-    ToColorProc proc = ChooseToColorProc(*bitmap);
+    ToColorProc proc = ChooseToColorProc(bitmap);
     if (NULL == proc) {
         return;
     }
-    const void* src = bitmap->getAddr(x, y);
+    const void* src = bitmap.getAddr(x, y);
     if (NULL == src) {
         return;
     }
 
-    SkColorTable* ctable = bitmap->getColorTable();
+    SkColorTable* ctable = bitmap.getColorTable();
     jint* dst = env->GetIntArrayElements(pixelArray, NULL);
     SkColor* d = (SkColor*)dst + offset;
     while (--height >= 0) {
         proc(d, src, width, ctable);
         d += stride;
-        src = (void*)((const char*)src + bitmap->rowBytes());
+        src = (void*)((const char*)src + bitmap.rowBytes());
     }
     env->ReleaseIntArrayElements(pixelArray, dst, 0);
 }
@@ -740,79 +1062,85 @@
 
 static void Bitmap_setPixel(JNIEnv* env, jobject, jlong bitmapHandle,
         jint x, jint y, jint colorHandle) {
-    const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
     SkColor color = static_cast<SkColor>(colorHandle);
-    SkAutoLockPixels alp(*bitmap);
-    if (NULL == bitmap->getPixels()) {
+    SkAutoLockPixels alp(bitmap);
+    if (NULL == bitmap.getPixels()) {
         return;
     }
 
-    FromColorProc proc = ChooseFromColorProc(*bitmap);
+    FromColorProc proc = ChooseFromColorProc(bitmap);
     if (NULL == proc) {
         return;
     }
 
-    proc(bitmap->getAddr(x, y), &color, 1, x, y);
-    bitmap->notifyPixelsChanged();
+    proc(bitmap.getAddr(x, y), &color, 1, x, y);
+    bitmap.notifyPixelsChanged();
 }
 
 static void Bitmap_setPixels(JNIEnv* env, jobject, jlong bitmapHandle,
         jintArray pixelArray, jint offset, jint stride,
         jint x, jint y, jint width, jint height) {
-    const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
     GraphicsJNI::SetPixels(env, pixelArray, offset, stride,
-            x, y, width, height, *bitmap);
+            x, y, width, height, bitmap);
 }
 
 static void Bitmap_copyPixelsToBuffer(JNIEnv* env, jobject,
                                       jlong bitmapHandle, jobject jbuffer) {
-    const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    SkAutoLockPixels alp(*bitmap);
-    const void* src = bitmap->getPixels();
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
+    SkAutoLockPixels alp(bitmap);
+    const void* src = bitmap.getPixels();
 
     if (NULL != src) {
         android::AutoBufferPointer abp(env, jbuffer, JNI_TRUE);
 
         // the java side has already checked that buffer is large enough
-        memcpy(abp.pointer(), src, bitmap->getSize());
+        memcpy(abp.pointer(), src, bitmap.getSize());
     }
 }
 
 static void Bitmap_copyPixelsFromBuffer(JNIEnv* env, jobject,
                                         jlong bitmapHandle, jobject jbuffer) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    SkAutoLockPixels alp(*bitmap);
-    void* dst = bitmap->getPixels();
+    SkBitmap bitmap;
+    reinterpret_cast<Bitmap*>(bitmapHandle)->getSkBitmap(&bitmap);
+    SkAutoLockPixels alp(bitmap);
+    void* dst = bitmap.getPixels();
 
     if (NULL != dst) {
         android::AutoBufferPointer abp(env, jbuffer, JNI_FALSE);
         // the java side has already checked that buffer is large enough
-        memcpy(dst, abp.pointer(), bitmap->getSize());
-        bitmap->notifyPixelsChanged();
+        memcpy(dst, abp.pointer(), bitmap.getSize());
+        bitmap.notifyPixelsChanged();
     }
 }
 
 static jboolean Bitmap_sameAs(JNIEnv* env, jobject, jlong bm0Handle,
                               jlong bm1Handle) {
-    const SkBitmap* bm0 = reinterpret_cast<SkBitmap*>(bm0Handle);
-    const SkBitmap* bm1 = reinterpret_cast<SkBitmap*>(bm1Handle);
-    if (bm0->width() != bm1->width() ||
-        bm0->height() != bm1->height() ||
-        bm0->colorType() != bm1->colorType()) {
+    SkBitmap bm0;
+    SkBitmap bm1;
+    reinterpret_cast<Bitmap*>(bm0Handle)->getSkBitmap(&bm0);
+    reinterpret_cast<Bitmap*>(bm1Handle)->getSkBitmap(&bm1);
+    if (bm0.width() != bm1.width() ||
+        bm0.height() != bm1.height() ||
+        bm0.colorType() != bm1.colorType()) {
         return JNI_FALSE;
     }
 
-    SkAutoLockPixels alp0(*bm0);
-    SkAutoLockPixels alp1(*bm1);
+    SkAutoLockPixels alp0(bm0);
+    SkAutoLockPixels alp1(bm1);
 
     // if we can't load the pixels, return false
-    if (NULL == bm0->getPixels() || NULL == bm1->getPixels()) {
+    if (NULL == bm0.getPixels() || NULL == bm1.getPixels()) {
         return JNI_FALSE;
     }
 
-    if (bm0->colorType() == kIndex_8_SkColorType) {
-        SkColorTable* ct0 = bm0->getColorTable();
-        SkColorTable* ct1 = bm1->getColorTable();
+    if (bm0.colorType() == kIndex_8_SkColorType) {
+        SkColorTable* ct0 = bm0.getColorTable();
+        SkColorTable* ct1 = bm1.getColorTable();
         if (NULL == ct0 || NULL == ct1) {
             return JNI_FALSE;
         }
@@ -829,16 +1157,16 @@
     // now compare each scanline. We can't do the entire buffer at once,
     // since we don't care about the pixel values that might extend beyond
     // the width (since the scanline might be larger than the logical width)
-    const int h = bm0->height();
-    const size_t size = bm0->width() * bm0->bytesPerPixel();
+    const int h = bm0.height();
+    const size_t size = bm0.width() * bm0.bytesPerPixel();
     for (int y = 0; y < h; y++) {
         // SkBitmap::getAddr(int, int) may return NULL due to unrecognized config
         // (ex: kRLE_Index8_Config). This will cause memcmp method to crash. Since bm0
         // and bm1 both have pixel data() (have passed NULL == getPixels() check),
         // those 2 bitmaps should be valid (only unrecognized), we return JNI_FALSE
         // to warn user those 2 unrecognized config bitmaps may be different.
-        void *bm0Addr = bm0->getAddr(0, y);
-        void *bm1Addr = bm1->getAddr(0, y);
+        void *bm0Addr = bm0.getAddr(0, y);
+        void *bm1Addr = bm1.getAddr(0, y);
 
         if(bm0Addr == NULL || bm1Addr == NULL) {
             return JNI_FALSE;
@@ -851,15 +1179,9 @@
     return JNI_TRUE;
 }
 
-static void Bitmap_prepareToDraw(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    bitmap->lockPixels();
-    bitmap->unlockPixels();
-}
-
 static jlong Bitmap_refPixelRef(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    SkPixelRef* pixelRef = bitmap ? bitmap->pixelRef() : nullptr;
+    LocalScopedBitmap bitmap(bitmapHandle);
+    SkPixelRef* pixelRef = bitmap.valid() ? bitmap->peekAtPixelRef() : nullptr;
     SkSafeRef(pixelRef);
     return reinterpret_cast<jlong>(pixelRef);
 }
@@ -902,7 +1224,6 @@
     {   "nativeCopyPixelsFromBuffer", "(JLjava/nio/Buffer;)V",
                                             (void*)Bitmap_copyPixelsFromBuffer },
     {   "nativeSameAs",             "(JJ)Z", (void*)Bitmap_sameAs },
-    {   "nativePrepareToDraw",      "(J)V", (void*)Bitmap_prepareToDraw },
     {   "nativeRefPixelRef",        "(J)J", (void*)Bitmap_refPixelRef },
 };
 
diff --git a/core/jni/android/graphics/Bitmap.h b/core/jni/android/graphics/Bitmap.h
new file mode 100644
index 0000000..efeb898
--- /dev/null
+++ b/core/jni/android/graphics/Bitmap.h
@@ -0,0 +1,116 @@
+/*
+ * 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.
+ */
+#ifndef BITMAP_H_
+#define BITMAP_H_
+
+#include <jni.h>
+#include <SkBitmap.h>
+#include <SkColorTable.h>
+#include <SkImageInfo.h>
+#include <utils/Mutex.h>
+#include <memory>
+
+namespace android {
+
+enum class PixelStorageType {
+    Invalid,
+    External,
+    Java,
+};
+
+class WrappedPixelRef;
+
+typedef void (*FreeFunc)(void* addr, void* context);
+
+/**
+ * Glue-thingy that deals with managing the interaction between the Java
+ * Bitmap object & SkBitmap along with trying to map a notion of strong/weak
+ * lifecycles onto SkPixelRef which only has strong counts to avoid requiring
+ * two GC passes to free the byte[] that backs a Bitmap.
+ *
+ * Since not all Bitmaps are byte[]-backed it also supports external allocations,
+ * which currently is used by screenshots to wrap a gralloc buffer.
+ */
+class Bitmap {
+public:
+    Bitmap(JNIEnv* env, jbyteArray storageObj, void* address,
+            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
+    Bitmap(void* address, void* context, FreeFunc freeFunc,
+            const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
+
+    const SkImageInfo& info() const;
+
+    // Returns nullptr if it is not backed by a jbyteArray
+    jbyteArray javaByteArray() const {
+        return mPixelStorageType == PixelStorageType::Java
+                ? mPixelStorage.java.jstrongRef : nullptr;
+    }
+
+    int width() const { return info().width(); }
+    int height() const { return info().height(); }
+    size_t rowBytes() const;
+    SkPixelRef* peekAtPixelRef() const;
+    SkPixelRef* refPixelRef();
+    bool valid() const { return mPixelStorageType != PixelStorageType::Invalid; }
+
+    void reconfigure(const SkImageInfo& info, size_t rowBytes, SkColorTable* ctable);
+    void reconfigure(const SkImageInfo& info);
+
+    void getSkBitmap(SkBitmap* outBitmap);
+    void detachFromJava();
+
+    void freePixels();
+
+    bool hasHardwareMipMap();
+    void setHasHardwareMipMap(bool hasMipMap);
+
+private:
+    friend class WrappedPixelRef;
+
+    ~Bitmap();
+    void doFreePixels();
+    void onStrongRefDestroyed();
+
+    void pinPixelsLocked();
+    void unpinPixelsLocked();
+    JNIEnv* jniEnv();
+    bool shouldDisposeSelfLocked();
+    void assertValid() const;
+    SkPixelRef* refPixelRefLocked();
+
+    android::Mutex mLock;
+    int mPinnedRefCount = 0;
+    std::unique_ptr<WrappedPixelRef> mPixelRef;
+    PixelStorageType mPixelStorageType;
+    bool mAttachedToJava = true;
+
+    union {
+        struct {
+            void* address;
+            void* context;
+            FreeFunc freeFunc;
+        } external;
+        struct {
+            JavaVM* jvm;
+            jweak jweakRef;
+            jbyteArray jstrongRef;
+        } java;
+    } mPixelStorage;
+};
+
+} // namespace android
+
+#endif /* BITMAP_H_ */
diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp
index d4069a1..3ca4e72 100644
--- a/core/jni/android/graphics/BitmapFactory.cpp
+++ b/core/jni/android/graphics/BitmapFactory.cpp
@@ -156,13 +156,11 @@
 
 class RecyclingPixelAllocator : public SkBitmap::Allocator {
 public:
-    RecyclingPixelAllocator(SkPixelRef* pixelRef, unsigned int size)
-            : mPixelRef(pixelRef), mSize(size) {
-        SkSafeRef(mPixelRef);
+    RecyclingPixelAllocator(android::Bitmap* bitmap, unsigned int size)
+            : mBitmap(bitmap), mSize(size) {
     }
 
     ~RecyclingPixelAllocator() {
-        SkSafeUnref(mPixelRef);
     }
 
     virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) {
@@ -185,11 +183,9 @@
             return false;
         }
 
-        // Create a new pixelref with the new ctable that wraps the previous pixelref
-        SkPixelRef* pr = new AndroidPixelRef(*static_cast<AndroidPixelRef*>(mPixelRef),
-                info, bitmap->rowBytes(), ctable);
+        mBitmap->reconfigure(info, bitmap->rowBytes(), ctable);
+        bitmap->setPixelRef(mBitmap->refPixelRef())->unref();
 
-        bitmap->setPixelRef(pr)->unref();
         // since we're already allocated, we lockPixels right away
         // HeapAllocator/JavaPixelAllocator behaves this way too
         bitmap->lockPixels();
@@ -197,7 +193,7 @@
     }
 
 private:
-    SkPixelRef* const mPixelRef;
+    android::Bitmap* const mBitmap;
     const unsigned int mSize;
 };
 
@@ -258,27 +254,24 @@
     decoder->setPreferQualityOverSpeed(preferQualityOverSpeed);
     decoder->setRequireUnpremultipliedColors(requireUnpremultiplied);
 
-    SkBitmap* outputBitmap = NULL;
+    android::Bitmap* reuseBitmap = nullptr;
     unsigned int existingBufferSize = 0;
     if (javaBitmap != NULL) {
-        outputBitmap = GraphicsJNI::getSkBitmapDeprecated(env, javaBitmap);
-        if (outputBitmap->isImmutable()) {
+        reuseBitmap = GraphicsJNI::getBitmap(env, javaBitmap);
+        if (reuseBitmap->peekAtPixelRef()->isImmutable()) {
             ALOGW("Unable to reuse an immutable bitmap as an image decoder target.");
             javaBitmap = NULL;
-            outputBitmap = NULL;
+            reuseBitmap = nullptr;
         } else {
             existingBufferSize = GraphicsJNI::getBitmapAllocationByteCount(env, javaBitmap);
         }
     }
 
-    SkAutoTDelete<SkBitmap> adb(outputBitmap == NULL ? new SkBitmap : NULL);
-    if (outputBitmap == NULL) outputBitmap = adb.get();
-
     NinePatchPeeker peeker(decoder);
     decoder->setPeeker(&peeker);
 
     JavaPixelAllocator javaAllocator(env);
-    RecyclingPixelAllocator recyclingAllocator(outputBitmap->pixelRef(), existingBufferSize);
+    RecyclingPixelAllocator recyclingAllocator(reuseBitmap, existingBufferSize);
     ScaleCheckingAllocator scaleCheckingAllocator(scale, existingBufferSize);
     SkBitmap::Allocator* outputAllocator = (javaBitmap != NULL) ?
             (SkBitmap::Allocator*)&recyclingAllocator : (SkBitmap::Allocator*)&javaAllocator;
@@ -374,6 +367,7 @@
         }
     }
 
+    SkBitmap outputBitmap;
     if (willScale) {
         // This is weird so let me explain: we could use the scale parameter
         // directly, but for historical reasons this is how the corresponding
@@ -388,26 +382,27 @@
         // FIXME: If the alphaType is kUnpremul and the image has alpha, the
         // colors may not be correct, since Skia does not yet support drawing
         // to/from unpremultiplied bitmaps.
-        outputBitmap->setInfo(SkImageInfo::Make(scaledWidth, scaledHeight,
+        outputBitmap.setInfo(SkImageInfo::Make(scaledWidth, scaledHeight,
                 colorType, decodingBitmap.alphaType()));
-        if (!outputBitmap->tryAllocPixels(outputAllocator, NULL)) {
+        if (!outputBitmap.tryAllocPixels(outputAllocator, NULL)) {
             return nullObjectReturn("allocation failed for scaled bitmap");
         }
 
         // If outputBitmap's pixels are newly allocated by Java, there is no need
         // to erase to 0, since the pixels were initialized to 0.
         if (outputAllocator != &javaAllocator) {
-            outputBitmap->eraseColor(0);
+            outputBitmap.eraseColor(0);
         }
 
         SkPaint paint;
         paint.setFilterQuality(kLow_SkFilterQuality);
 
-        SkCanvas canvas(*outputBitmap);
+        SkCanvas canvas(outputBitmap);
         canvas.scale(sx, sy);
+        canvas.drawARGB(0x00, 0x00, 0x00, 0x00);
         canvas.drawBitmap(decodingBitmap, 0.0f, 0.0f, &paint);
     } else {
-        outputBitmap->swap(decodingBitmap);
+        outputBitmap.swap(decodingBitmap);
     }
 
     if (padding) {
@@ -422,22 +417,19 @@
 
     // if we get here, we're in kDecodePixels_Mode and will therefore
     // already have a pixelref installed.
-    if (outputBitmap->pixelRef() == NULL) {
+    if (outputBitmap.pixelRef() == NULL) {
         return nullObjectReturn("Got null SkPixelRef");
     }
 
     if (!isMutable && javaBitmap == NULL) {
         // promise we will never change our pixels (great for sharing and pictures)
-        outputBitmap->setImmutable();
+        outputBitmap.setImmutable();
     }
 
-    // detach bitmap from its autodeleter, since we want to own it now
-    adb.detach();
-
     if (javaBitmap != NULL) {
         bool isPremultiplied = !requireUnpremultiplied;
-        GraphicsJNI::reinitBitmap(env, javaBitmap, outputBitmap, isPremultiplied);
-        outputBitmap->notifyPixelsChanged();
+        GraphicsJNI::reinitBitmap(env, javaBitmap, outputBitmap.info(), isPremultiplied);
+        outputBitmap.notifyPixelsChanged();
         // If a java bitmap was passed in for reuse, pass it back
         return javaBitmap;
     }
@@ -447,7 +439,7 @@
     if (!requireUnpremultiplied) bitmapCreateFlags |= GraphicsJNI::kBitmapCreateFlag_Premultiplied;
 
     // now create the java bitmap
-    return GraphicsJNI::createBitmap(env, outputBitmap, javaAllocator.getStorageObj(),
+    return GraphicsJNI::createBitmap(env, javaAllocator.getStorageObjAndReset(),
             bitmapCreateFlags, ninePatchChunk, ninePatchInsets, -1);
 }
 
diff --git a/core/jni/android/graphics/BitmapRegionDecoder.cpp b/core/jni/android/graphics/BitmapRegionDecoder.cpp
index aeea808..08a3f6f 100644
--- a/core/jni/android/graphics/BitmapRegionDecoder.cpp
+++ b/core/jni/android/graphics/BitmapRegionDecoder.cpp
@@ -212,26 +212,21 @@
     region.fTop = start_y;
     region.fRight = start_x + width;
     region.fBottom = start_y + height;
-    SkBitmap* bitmap = NULL;
-    SkAutoTDelete<SkBitmap> adb;
+    SkBitmap bitmap;
 
     if (tileBitmap != NULL) {
         // Re-use bitmap.
-        bitmap = GraphicsJNI::getSkBitmapDeprecated(env, tileBitmap);
-    }
-    if (bitmap == NULL) {
-        bitmap = new SkBitmap;
-        adb.reset(bitmap);
+        GraphicsJNI::getSkBitmap(env, tileBitmap, &bitmap);
     }
 
-    if (!brd->decodeRegion(bitmap, region, prefColorType, sampleSize)) {
+    if (!brd->decodeRegion(&bitmap, region, prefColorType, sampleSize)) {
         return nullObjectReturn("decoder->decodeRegion returned false");
     }
 
     // update options (if any)
     if (NULL != options) {
-        env->SetIntField(options, gOptions_widthFieldID, bitmap->width());
-        env->SetIntField(options, gOptions_heightFieldID, bitmap->height());
+        env->SetIntField(options, gOptions_widthFieldID, bitmap.width());
+        env->SetIntField(options, gOptions_heightFieldID, bitmap.height());
         // TODO: set the mimeType field with the data from the codec.
         // but how to reuse a set of strings, rather than allocating new one
         // each time?
@@ -240,19 +235,16 @@
     }
 
     if (tileBitmap != NULL) {
-        bitmap->notifyPixelsChanged();
+        bitmap.notifyPixelsChanged();
         return tileBitmap;
     }
 
-    // detach bitmap from its autodeleter, since we want to own it now
-    adb.detach();
-
     JavaPixelAllocator* allocator = (JavaPixelAllocator*) decoder->getAllocator();
-    jbyteArray buff = allocator->getStorageObjAndReset();
 
     int bitmapCreateFlags = 0;
     if (!requireUnpremultiplied) bitmapCreateFlags |= GraphicsJNI::kBitmapCreateFlag_Premultiplied;
-    return GraphicsJNI::createBitmap(env, bitmap, buff, bitmapCreateFlags, NULL, NULL, -1);
+    return GraphicsJNI::createBitmap(env, allocator->getStorageObjAndReset(),
+            bitmapCreateFlags);
 }
 
 static jint nativeGetHeight(JNIEnv* env, jobject, jlong brdHandle) {
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp
index f793df1..1c6f7de 100644
--- a/core/jni/android/graphics/Graphics.cpp
+++ b/core/jni/android/graphics/Graphics.cpp
@@ -154,7 +154,7 @@
 static jfieldID gPointF_yFieldID;
 
 static jclass   gBitmap_class;
-static jfieldID gBitmap_skBitmapPtr;
+static jfieldID gBitmap_nativePtr;
 static jmethodID gBitmap_constructorMethodID;
 static jmethodID gBitmap_reinitMethodID;
 static jmethodID gBitmap_getAllocationByteCountMethodID;
@@ -338,27 +338,22 @@
     return static_cast<SkColorType>(gConfig2ColorType[legacyConfig]);
 }
 
-SkBitmap* GraphicsJNI::getSkBitmapDeprecated(JNIEnv* env, jobject bitmap) {
+android::Bitmap* GraphicsJNI::getBitmap(JNIEnv* env, jobject bitmap) {
     SkASSERT(env);
     SkASSERT(bitmap);
     SkASSERT(env->IsInstanceOf(bitmap, gBitmap_class));
-    jlong bitmapHandle = env->GetLongField(bitmap, gBitmap_skBitmapPtr);
-    SkBitmap* b = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    jlong bitmapHandle = env->GetLongField(bitmap, gBitmap_nativePtr);
+    android::Bitmap* b = reinterpret_cast<android::Bitmap*>(bitmapHandle);
     SkASSERT(b);
     return b;
 }
 
 void GraphicsJNI::getSkBitmap(JNIEnv* env, jobject bitmap, SkBitmap* outBitmap) {
-    // TODO: We have to copy from the existing bitmap due to rowBytes not
-    // being updated on the SkPixelRef at reconfigure time. This is a short term
-    // problem that will be fixed with the specialized wrapper
-    *outBitmap = *getSkBitmapDeprecated(env, bitmap);
+    getBitmap(env, bitmap)->getSkBitmap(outBitmap);
 }
 
-SkPixelRef* GraphicsJNI::getSkPixelRef(JNIEnv* env, jobject bitmap) {
-    jlong bitmapHandle = env->GetLongField(bitmap, gBitmap_skBitmapPtr);
-    SkBitmap* b = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    return b->pixelRef();
+SkPixelRef* GraphicsJNI::refSkPixelRef(JNIEnv* env, jobject bitmap) {
+    return getBitmap(env, bitmap)->refPixelRef();
 }
 
 SkColorType GraphicsJNI::getNativeBitmapColorType(JNIEnv* env, jobject jconfig) {
@@ -396,47 +391,43 @@
 ///////////////////////////////////////////////////////////////////////////////////////////
 
 // Assert that bitmap's SkAlphaType is consistent with isPremultiplied.
-static void assert_premultiplied(const SkBitmap& bitmap, bool isPremultiplied) {
+static void assert_premultiplied(const SkImageInfo& info, bool isPremultiplied) {
     // kOpaque_SkAlphaType and kIgnore_SkAlphaType mean that isPremultiplied is
     // irrelevant. This just tests to ensure that the SkAlphaType is not
     // opposite of isPremultiplied.
     if (isPremultiplied) {
-        SkASSERT(bitmap.alphaType() != kUnpremul_SkAlphaType);
+        SkASSERT(info.alphaType() != kUnpremul_SkAlphaType);
     } else {
-        SkASSERT(bitmap.alphaType() != kPremul_SkAlphaType);
+        SkASSERT(info.alphaType() != kPremul_SkAlphaType);
     }
 }
 
-jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buffer,
-        int bitmapCreateFlags, jbyteArray ninePatchChunk, jobject ninePatchInsets, int density)
-{
-    SkASSERT(bitmap);
-    SkASSERT(bitmap->pixelRef());
-    SkASSERT(!env->ExceptionCheck());
+jobject GraphicsJNI::createBitmap(JNIEnv* env, android::Bitmap* bitmap,
+        int bitmapCreateFlags, jbyteArray ninePatchChunk, jobject ninePatchInsets,
+        int density) {
     bool isMutable = bitmapCreateFlags & kBitmapCreateFlag_Mutable;
     bool isPremultiplied = bitmapCreateFlags & kBitmapCreateFlag_Premultiplied;
-
     // The caller needs to have already set the alpha type properly, so the
     // native SkBitmap stays in sync with the Java Bitmap.
-    assert_premultiplied(*bitmap, isPremultiplied);
+    assert_premultiplied(bitmap->info(), isPremultiplied);
 
     jobject obj = env->NewObject(gBitmap_class, gBitmap_constructorMethodID,
-            reinterpret_cast<jlong>(bitmap), buffer,
+            reinterpret_cast<jlong>(bitmap), bitmap->javaByteArray(),
             bitmap->width(), bitmap->height(), density, isMutable, isPremultiplied,
             ninePatchChunk, ninePatchInsets);
     hasException(env); // For the side effect of logging.
     return obj;
 }
 
-void GraphicsJNI::reinitBitmap(JNIEnv* env, jobject javaBitmap, SkBitmap* bitmap,
+void GraphicsJNI::reinitBitmap(JNIEnv* env, jobject javaBitmap, const SkImageInfo& info,
         bool isPremultiplied)
 {
     // The caller needs to have already set the alpha type properly, so the
     // native SkBitmap stays in sync with the Java Bitmap.
-    assert_premultiplied(*bitmap, isPremultiplied);
+    assert_premultiplied(info, isPremultiplied);
 
     env->CallVoidMethod(javaBitmap, gBitmap_reinitMethodID,
-            bitmap->width(), bitmap->height(), isPremultiplied);
+            info.width(), info.height(), isPremultiplied);
 }
 
 int GraphicsJNI::getBitmapAllocationByteCount(JNIEnv* env, jobject javaBitmap)
@@ -477,51 +468,6 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-AndroidPixelRef::AndroidPixelRef(JNIEnv* env, const SkImageInfo& info, void* storage,
-        size_t rowBytes, jbyteArray storageObj, SkColorTable* ctable) :
-        SkMallocPixelRef(info, storage, rowBytes, ctable, (storageObj == NULL)),
-        fWrappedPixelRef(NULL) {
-    SkASSERT(storage);
-    SkASSERT(storageObj);
-    SkASSERT(env);
-
-    if (env->GetJavaVM(&fVM) != JNI_OK) {
-        SkDebugf("------ [%p] env->GetJavaVM failed\n", env);
-        sk_throw();
-    }
-
-    fStorageObj = (jbyteArray) env->NewGlobalRef(storageObj);
-}
-
-AndroidPixelRef::AndroidPixelRef(AndroidPixelRef& wrappedPixelRef, const SkImageInfo& info,
-        size_t rowBytes, SkColorTable* ctable) :
-        SkMallocPixelRef(info, wrappedPixelRef.getAddr(), rowBytes, ctable, false),
-        fWrappedPixelRef(wrappedPixelRef.fWrappedPixelRef ?
-                wrappedPixelRef.fWrappedPixelRef : &wrappedPixelRef)
-{
-    SkASSERT(fWrappedPixelRef);
-    SkSafeRef(fWrappedPixelRef);
-
-    // don't need to initialize this, as all the relevant logic delegates to the wrapped ref
-    fStorageObj = NULL;
-}
-
-AndroidPixelRef::~AndroidPixelRef() {
-    if (fWrappedPixelRef) {
-        SkSafeUnref(fWrappedPixelRef);
-    } else {
-        SkASSERT(fStorageObj);
-        JNIEnv* env = vm2env(fVM);
-        env->DeleteGlobalRef(fStorageObj);
-    }
-
-    if (android::uirenderer::Caches::hasInstance()) {
-        android::uirenderer::Caches::getInstance().textureCache.releaseTexture(getStableID());
-    }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
 static bool computeAllocationSize(const SkBitmap& bitmap, size_t* size) {
     int32_t rowBytes32 = SkToS32(bitmap.rowBytes());
     int64_t bigSize = (int64_t)bitmap.height() * rowBytes32;
@@ -533,7 +479,7 @@
     return true;
 }
 
-jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
+android::Bitmap* GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
                                              SkColorTable* ctable) {
     const SkImageInfo& info = bitmap->info();
     if (info.fColorType == kUnknown_SkColorType) {
@@ -562,13 +508,14 @@
         return NULL;
     }
     SkASSERT(addr);
-    SkPixelRef* pr = new AndroidPixelRef(env, info, (void*) addr, rowBytes, arrayObj, ctable);
-    bitmap->setPixelRef(pr)->unref();
+    android::Bitmap* wrapper = new android::Bitmap(env, arrayObj, (void*) addr,
+            info, rowBytes, ctable);
+    wrapper->getSkBitmap(bitmap);
     // since we're already allocated, we lockPixels right away
     // HeapAllocator behaves this way too
     bitmap->lockPixels();
 
-    return arrayObj;
+    return wrapper;
 }
 
 struct AndroidPixelRefContext {
@@ -627,21 +574,22 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-JavaPixelAllocator::JavaPixelAllocator(JNIEnv* env)
-    : fStorageObj(NULL),
-      fAllocCount(0) {
-    if (env->GetJavaVM(&fVM) != JNI_OK) {
-        SkDebugf("------ [%p] env->GetJavaVM failed\n", env);
-        sk_throw();
+JavaPixelAllocator::JavaPixelAllocator(JNIEnv* env) {
+    LOG_ALWAYS_FATAL_IF(env->GetJavaVM(&mJavaVM) != JNI_OK,
+            "env->GetJavaVM failed");
+}
+
+JavaPixelAllocator::~JavaPixelAllocator() {
+    if (mStorage) {
+        mStorage->detachFromJava();
     }
 }
 
 bool JavaPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) {
-    JNIEnv* env = vm2env(fVM);
+    JNIEnv* env = vm2env(mJavaVM);
 
-    fStorageObj = GraphicsJNI::allocateJavaPixelRef(env, bitmap, ctable);
-    fAllocCount += 1;
-    return fStorageObj != NULL;
+    mStorage = GraphicsJNI::allocateJavaPixelRef(env, bitmap, ctable);
+    return mStorage != nullptr;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -687,7 +635,7 @@
     gPointF_yFieldID = getFieldIDCheck(env, gPointF_class, "y", "F");
 
     gBitmap_class = make_globalref(env, "android/graphics/Bitmap");
-    gBitmap_skBitmapPtr = getFieldIDCheck(env, gBitmap_class, "mSkBitmapPtr", "J");
+    gBitmap_nativePtr = getFieldIDCheck(env, gBitmap_class, "mNativePtr", "J");
     gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", "(J[BIIIZZ[BLandroid/graphics/NinePatch$InsetStruct;)V");
     gBitmap_reinitMethodID = env->GetMethodID(gBitmap_class, "reinit", "(IIZ)V");
     gBitmap_getAllocationByteCountMethodID = env->GetMethodID(gBitmap_class, "getAllocationByteCount", "()I");
diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h
index 8eb43f8..ef9c2a9 100644
--- a/core/jni/android/graphics/GraphicsJNI.h
+++ b/core/jni/android/graphics/GraphicsJNI.h
@@ -1,6 +1,7 @@
 #ifndef _ANDROID_GRAPHICS_GRAPHICS_JNI_H_
 #define _ANDROID_GRAPHICS_GRAPHICS_JNI_H_
 
+#include "Bitmap.h"
 #include "SkBitmap.h"
 #include "SkDevice.h"
 #include "SkPixelRef.h"
@@ -49,9 +50,9 @@
     static void point_to_jpointf(const SkPoint& point, JNIEnv*, jobject jpointf);
 
     static android::Canvas* getNativeCanvas(JNIEnv*, jobject canvas);
-    static SkBitmap* getSkBitmapDeprecated(JNIEnv*, jobject bitmap);
+    static android::Bitmap* getBitmap(JNIEnv*, jobject bitmap);
     static void getSkBitmap(JNIEnv*, jobject bitmap, SkBitmap* outBitmap);
-    static SkPixelRef* getSkPixelRef(JNIEnv*, jobject bitmap);
+    static SkPixelRef* refSkPixelRef(JNIEnv*, jobject bitmap);
     static SkRegion* getNativeRegion(JNIEnv*, jobject region);
 
     // Given the 'native' long held by the Rasterizer.java object, return a
@@ -71,22 +72,18 @@
     */
     static SkColorType getNativeBitmapColorType(JNIEnv*, jobject jconfig);
 
-    /** Create a java Bitmap object given the native bitmap (required) and optional
-        storage array (may be null).
-        bitmap's SkAlphaType must already be in sync with bitmapCreateFlags.
+    /*
+     * Create a java Bitmap object given the native bitmap
+     * bitmap's SkAlphaType must already be in sync with bitmapCreateFlags.
     */
-    static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, jbyteArray buffer,
-            int bitmapCreateFlags, jbyteArray ninePatch, jobject ninePatchInsets, int density = -1);
-
-    static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, int bitmapCreateFlags,
-            jbyteArray ninePatch, int density = -1) {
-        return createBitmap(env, bitmap, NULL, bitmapCreateFlags, ninePatch, NULL, density);
-    }
+    static jobject createBitmap(JNIEnv* env, android::Bitmap* bitmap,
+            int bitmapCreateFlags, jbyteArray ninePatchChunk = NULL,
+            jobject ninePatchInsets = NULL, int density = -1);
 
     /** Reinitialize a bitmap. bitmap must already have its SkAlphaType set in
         sync with isPremultiplied
     */
-    static void reinitBitmap(JNIEnv* env, jobject javaBitmap, SkBitmap* bitmap,
+    static void reinitBitmap(JNIEnv* env, jobject javaBitmap, const SkImageInfo& info,
             bool isPremultiplied);
 
     static int getBitmapAllocationByteCount(JNIEnv* env, jobject javaBitmap);
@@ -95,7 +92,7 @@
 
     static jobject createBitmapRegionDecoder(JNIEnv* env, SkBitmapRegionDecoder* bitmap);
 
-    static jbyteArray allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
+    static android::Bitmap* allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap,
             SkColorTable* ctable);
 
     /**
@@ -113,30 +110,6 @@
     static bool SetPixels(JNIEnv* env, jintArray colors, int srcOffset,
             int srcStride, int x, int y, int width, int height,
             const SkBitmap& dstBitmap);
-
-    static jbyteArray getBitmapStorageObj(SkPixelRef *pixref);
-};
-
-class AndroidPixelRef : public SkMallocPixelRef {
-public:
-    AndroidPixelRef(JNIEnv* env, const SkImageInfo& info, void* storage, size_t rowBytes,
-            jbyteArray storageObj, SkColorTable* ctable);
-
-    /**
-     * Creates an AndroidPixelRef that wraps (and refs) another to reuse/share
-     * the same storage and java byte array refcounting, yet have a different
-     * color table.
-     */
-    AndroidPixelRef(AndroidPixelRef& wrappedPixelRef, const SkImageInfo& info,
-            size_t rowBytes, SkColorTable* ctable);
-
-    virtual ~AndroidPixelRef();
-
-private:
-    AndroidPixelRef* const fWrappedPixelRef; // if set, delegate memory management calls to this
-
-    JavaVM* fVM;
-    jbyteArray fStorageObj; // The Java byte[] object used as the bitmap backing store
 };
 
 /** Allocator which allocates the backing buffer in the Java heap.
@@ -147,30 +120,22 @@
 class JavaPixelAllocator : public SkBitmap::Allocator {
 public:
     JavaPixelAllocator(JNIEnv* env);
-    // overrides
-    virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable);
+    ~JavaPixelAllocator();
 
-    /** Return the Java array object created for the last allocation.
-     *  This returns a local JNI reference which the caller is responsible
-     *  for storing appropriately (usually by passing it to the Bitmap
-     *  constructor).
-     */
-    jbyteArray getStorageObj() { return fStorageObj; }
+    virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) override;
 
-    /** Same as getStorageObj(), but also resets the allocator so that it
-     *  can allocate again.
+    /**
+     * Fetches the backing allocation object. Must be called!
      */
-    jbyteArray getStorageObjAndReset() {
-        jbyteArray result = fStorageObj;
-        fStorageObj = NULL;
-        fAllocCount = 0;
+    android::Bitmap* getStorageObjAndReset() {
+        android::Bitmap* result = mStorage;
+        mStorage = NULL;
         return result;
     };
 
 private:
-    JavaVM* fVM;
-    jbyteArray fStorageObj;
-    int fAllocCount;
+    JavaVM* mJavaVM;
+    android::Bitmap* mStorage = nullptr;
 };
 
 enum JNIAccess {
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 6afb226..87b81d5 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -30,6 +30,7 @@
 
 #include "android_media_AudioFormat.h"
 #include "android_media_AudioErrors.h"
+#include "android_media_DeviceCallback.h"
 
 // ----------------------------------------------------------------------------
 
@@ -44,6 +45,7 @@
     jmethodID postNativeEventInJava; //... event post callback method
     jfieldID  nativeRecorderInJavaObj; // provides access to the C++ AudioRecord object
     jfieldID  nativeCallbackCookie;    // provides access to the AudioRecord callback data
+    jfieldID  nativeDeviceCallback;    // provides access to the JNIDeviceCallback instance
 };
 struct audio_attributes_fields_t {
     jfieldID  fieldRecSource;    // AudioAttributes.mSource
@@ -120,6 +122,33 @@
     }
 }
 
+static sp<JNIDeviceCallback> getJniDeviceCallback(JNIEnv* env, jobject thiz)
+{
+    Mutex::Autolock l(sLock);
+    JNIDeviceCallback* const cb =
+            (JNIDeviceCallback*)env->GetLongField(thiz,
+                                                  javaAudioRecordFields.nativeDeviceCallback);
+    return sp<JNIDeviceCallback>(cb);
+}
+
+static sp<JNIDeviceCallback> setJniDeviceCallback(JNIEnv* env,
+                                                  jobject thiz,
+                                                  const sp<JNIDeviceCallback>& cb)
+{
+    Mutex::Autolock l(sLock);
+    sp<JNIDeviceCallback> old =
+            (JNIDeviceCallback*)env->GetLongField(thiz,
+                                                  javaAudioRecordFields.nativeDeviceCallback);
+    if (cb.get()) {
+        cb->incStrong((void*)setJniDeviceCallback);
+    }
+    if (old != 0) {
+        old->decStrong((void*)setJniDeviceCallback);
+    }
+    env->SetLongField(thiz, javaAudioRecordFields.nativeDeviceCallback, (jlong)cb.get());
+    return old;
+}
+
 // ----------------------------------------------------------------------------
 static sp<AudioRecord> getAudioRecord(JNIEnv* env, jobject thiz)
 {
@@ -252,6 +281,7 @@
         sessionId,
         AudioRecord::TRANSFER_DEFAULT,
         flags,
+        -1, -1,        // default uid, pid
         paa);
 
     if (status != NO_ERROR) {
@@ -592,9 +622,63 @@
         JNIEnv *env,  jobject thiz, jint device_id) {
 
     sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+    if (lpRecorder == 0) {
+        return 0;
+    }
     return lpRecorder->setInputDevice(device_id) == NO_ERROR;
 }
 
+static jint android_media_AudioRecord_getRoutedDeviceId(
+                JNIEnv *env,  jobject thiz) {
+
+    sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+    if (lpRecorder == 0) {
+        return 0;
+    }
+    return (jint)lpRecorder->getRoutedDeviceId();
+}
+
+static void android_media_AudioRecord_enableDeviceCallback(
+                JNIEnv *env,  jobject thiz) {
+
+    sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+    if (lpRecorder == 0) {
+        return;
+    }
+    sp<JNIDeviceCallback> cb = getJniDeviceCallback(env, thiz);
+    if (cb != 0) {
+        return;
+    }
+    audiorecord_callback_cookie *cookie =
+            (audiorecord_callback_cookie *)env->GetLongField(thiz,
+                                                     javaAudioRecordFields.nativeCallbackCookie);
+    if (cookie == NULL) {
+        return;
+    }
+
+    cb = new JNIDeviceCallback(env, thiz, cookie->audioRecord_ref,
+                               javaAudioRecordFields.postNativeEventInJava);
+    status_t status = lpRecorder->addAudioDeviceCallback(cb);
+    if (status == NO_ERROR) {
+        setJniDeviceCallback(env, thiz, cb);
+    }
+}
+
+static void android_media_AudioRecord_disableDeviceCallback(
+                JNIEnv *env,  jobject thiz) {
+
+    sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+    if (lpRecorder == 0) {
+        return;
+    }
+    sp<JNIDeviceCallback> cb = setJniDeviceCallback(env, thiz, 0);
+    if (cb != 0) {
+        lpRecorder->removeAudioDeviceCallback(cb);
+    }
+}
+
+
+
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 static JNINativeMethod gMethods[] = {
@@ -627,12 +711,17 @@
     {"native_get_min_buff_size",
                              "(III)I",   (void *)android_media_AudioRecord_get_min_buff_size},
     {"native_setInputDevice", "(I)Z", (void *)android_media_AudioRecord_setInputDevice},
+    {"native_getRoutedDeviceId", "()I", (void *)android_media_AudioRecord_getRoutedDeviceId},
+    {"native_enableDeviceCallback", "()V", (void *)android_media_AudioRecord_enableDeviceCallback},
+    {"native_disableDeviceCallback", "()V",
+                                        (void *)android_media_AudioRecord_disableDeviceCallback},
 };
 
 // field names found in android/media/AudioRecord.java
 #define JAVA_POSTEVENT_CALLBACK_NAME  "postEventFromNative"
 #define JAVA_NATIVERECORDERINJAVAOBJ_FIELD_NAME  "mNativeRecorderInJavaObj"
 #define JAVA_NATIVECALLBACKINFO_FIELD_NAME       "mNativeCallbackCookie"
+#define JAVA_NATIVEDEVICECALLBACK_FIELD_NAME       "mNativeDeviceCallback"
 
 // ----------------------------------------------------------------------------
 int register_android_media_AudioRecord(JNIEnv *env)
@@ -640,6 +729,7 @@
     javaAudioRecordFields.postNativeEventInJava = NULL;
     javaAudioRecordFields.nativeRecorderInJavaObj = NULL;
     javaAudioRecordFields.nativeCallbackCookie = NULL;
+    javaAudioRecordFields.nativeDeviceCallback = NULL;
 
 
     // Get the AudioRecord class
@@ -657,6 +747,9 @@
     javaAudioRecordFields.nativeCallbackCookie = GetFieldIDOrDie(env,
             audioRecordClass, JAVA_NATIVECALLBACKINFO_FIELD_NAME, "J");
 
+    javaAudioRecordFields.nativeDeviceCallback = GetFieldIDOrDie(env,
+            audioRecordClass, JAVA_NATIVEDEVICECALLBACK_FIELD_NAME, "J");
+
     // Get the AudioAttributes class and fields
     jclass audioAttrClass = FindClassOrDie(env, kAudioAttributesClassPathName);
     javaAudioAttrFields.fieldRecSource = GetFieldIDOrDie(env, audioAttrClass, "mSource", "I");
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 3655adc..eab5668 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -937,7 +937,8 @@
     } else if (nAudioPort->type == AUDIO_PORT_TYPE_MIX) {
         ALOGV("convertAudioPortFromNative is a mix");
         *jAudioPort = env->NewObject(gAudioMixPortClass, gAudioMixPortCstor,
-                                     jHandle, nAudioPort->role, jDeviceName,
+                                     jHandle, nAudioPort->ext.mix.handle,
+                                     nAudioPort->role, jDeviceName,
                                      jSamplingRates, jChannelMasks,
                                      jFormats, jGains);
     } else {
@@ -1670,7 +1671,7 @@
     jclass audioMixPortClass = FindClassOrDie(env, "android/media/AudioMixPort");
     gAudioMixPortClass = MakeGlobalRefOrDie(env, audioMixPortClass);
     gAudioMixPortCstor = GetMethodIDOrDie(env, audioMixPortClass, "<init>",
-            "(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[Landroid/media/AudioGain;)V");
+            "(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[Landroid/media/AudioGain;)V");
 
     jclass audioGainClass = FindClassOrDie(env, "android/media/AudioGain");
     gAudioGainClass = MakeGlobalRefOrDie(env, audioGainClass);
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 26b82c5..662ecd3 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -36,6 +36,7 @@
 #include "android_media_AudioFormat.h"
 #include "android_media_AudioErrors.h"
 #include "android_media_PlaybackSettings.h"
+#include "android_media_DeviceCallback.h"
 
 // ----------------------------------------------------------------------------
 
@@ -79,6 +80,7 @@
         sp<MemoryHeapBase>         mMemHeap;
         sp<MemoryBase>             mMemBase;
         audiotrack_callback_cookie mCallbackData;
+        sp<JNIDeviceCallback>      mDeviceCallback;
 
     AudioTrackJniStorage() {
         mCallbackData.audioTrack_class = 0;
@@ -977,6 +979,51 @@
     return lpTrack->setOutputDevice(device_id) == NO_ERROR;
 }
 
+static jint android_media_AudioTrack_getRoutedDeviceId(
+                JNIEnv *env,  jobject thiz) {
+
+    sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
+    if (lpTrack == NULL) {
+        return 0;
+    }
+    return (jint)lpTrack->getRoutedDeviceId();
+}
+
+static void android_media_AudioTrack_enableDeviceCallback(
+                JNIEnv *env,  jobject thiz) {
+
+    sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
+    if (lpTrack == NULL) {
+        return;
+    }
+    AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetLongField(
+        thiz, javaAudioTrackFields.jniData);
+    if (pJniStorage == NULL || pJniStorage->mDeviceCallback != 0) {
+        return;
+    }
+    pJniStorage->mDeviceCallback =
+    new JNIDeviceCallback(env, thiz, pJniStorage->mCallbackData.audioTrack_ref,
+                          javaAudioTrackFields.postNativeEventInJava);
+    lpTrack->addAudioDeviceCallback(pJniStorage->mDeviceCallback);
+}
+
+static void android_media_AudioTrack_disableDeviceCallback(
+                JNIEnv *env,  jobject thiz) {
+
+    sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
+    if (lpTrack == NULL) {
+        return;
+    }
+    AudioTrackJniStorage* pJniStorage = (AudioTrackJniStorage *)env->GetLongField(
+        thiz, javaAudioTrackFields.jniData);
+    if (pJniStorage == NULL || pJniStorage->mDeviceCallback == 0) {
+        return;
+    }
+    lpTrack->removeAudioDeviceCallback(pJniStorage->mDeviceCallback);
+    pJniStorage->mDeviceCallback.clear();
+}
+
+
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 static JNINativeMethod gMethods[] = {
@@ -1030,6 +1077,9 @@
                              "(I)I",     (void *)android_media_AudioTrack_attachAuxEffect},
     {"native_setOutputDevice", "(I)Z",
                              (void *)android_media_AudioTrack_setOutputDevice},
+    {"native_getRoutedDeviceId", "()I", (void *)android_media_AudioTrack_getRoutedDeviceId},
+    {"native_enableDeviceCallback", "()V", (void *)android_media_AudioTrack_enableDeviceCallback},
+    {"native_disableDeviceCallback", "()V", (void *)android_media_AudioTrack_disableDeviceCallback},
 };
 
 
diff --git a/core/jni/android_media_DeviceCallback.cpp b/core/jni/android_media_DeviceCallback.cpp
new file mode 100644
index 0000000..e159373
--- /dev/null
+++ b/core/jni/android_media_DeviceCallback.cpp
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+//#define LOG_NDEBUG 0
+
+#define LOG_TAG "AudioDeviceCallback-JNI"
+
+#include <utils/Log.h>
+#include <JNIHelp.h>
+#include <JniConstants.h>
+#include "core_jni_helpers.h"
+#include <media/AudioSystem.h>
+
+#include "android_media_DeviceCallback.h"
+
+
+// ----------------------------------------------------------------------------
+
+using namespace android;
+
+JNIDeviceCallback::JNIDeviceCallback(JNIEnv* env, jobject thiz, jobject weak_thiz,
+                                     jmethodID postEventFromNative)
+{
+
+    // Hold onto the AudioTrack/AudioRecord class for use in calling the static method
+    // that posts events to the application thread.
+    jclass clazz = env->GetObjectClass(thiz);
+    if (clazz == NULL) {
+        return;
+    }
+    mClass = (jclass)env->NewGlobalRef(clazz);
+
+    // We use a weak reference so the AudioTrack/AudioRecord object can be garbage collected.
+    // The reference is only used as a proxy for callbacks.
+    mObject  = env->NewGlobalRef(weak_thiz);
+
+    mPostEventFromNative = postEventFromNative;
+}
+
+JNIDeviceCallback::~JNIDeviceCallback()
+{
+    // remove global references
+    JNIEnv *env = AndroidRuntime::getJNIEnv();
+    if (env == NULL) {
+        return;
+    }
+    env->DeleteGlobalRef(mObject);
+    env->DeleteGlobalRef(mClass);
+}
+
+void JNIDeviceCallback::onAudioDeviceUpdate(audio_io_handle_t audioIo,
+                                            audio_port_handle_t deviceId)
+{
+    JNIEnv *env = AndroidRuntime::getJNIEnv();
+    if (env == NULL) {
+        return;
+    }
+
+    ALOGV("%s audioIo %d deviceId %d", __FUNCTION__, audioIo, deviceId);
+    env->CallStaticVoidMethod(mClass,
+                              mPostEventFromNative,
+                              mObject,
+                              AUDIO_NATIVE_EVENT_ROUTING_CHANGE, deviceId, 0, NULL);
+    if (env->ExceptionCheck()) {
+        ALOGW("An exception occurred while notifying an event.");
+        env->ExceptionClear();
+    }
+}
+
diff --git a/core/jni/android_media_DeviceCallback.h b/core/jni/android_media_DeviceCallback.h
new file mode 100644
index 0000000..7ae788e
--- /dev/null
+++ b/core/jni/android_media_DeviceCallback.h
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+#ifndef ANDROID_MEDIA_DEVICE_CALLBACK_H
+#define ANDROID_MEDIA_DEVICE_CALLBACK_H
+
+#include <system/audio.h>
+#include <media/AudioSystem.h>
+
+namespace android {
+
+// keep in sync with AudioSystem.java
+#define AUDIO_NATIVE_EVENT_ROUTING_CHANGE      1000
+
+class JNIDeviceCallback: public AudioSystem::AudioDeviceCallback
+{
+public:
+    JNIDeviceCallback(JNIEnv* env, jobject thiz, jobject weak_thiz, jmethodID postEventFromNative);
+    ~JNIDeviceCallback();
+
+    virtual void onAudioDeviceUpdate(audio_io_handle_t audioIo,
+                                     audio_port_handle_t deviceId);
+
+private:
+    void sendEvent(int event);
+
+    jclass      mClass;     // Reference to AudioTrack/AudioRecord class
+    jobject     mObject;    // Weak ref to AudioTrack/AudioRecord Java object to call on
+    jmethodID   mPostEventFromNative; // postEventFromNative method ID.
+};
+
+}; // namespace android
+
+#endif // ANDROID_MEDIA_DEVICE_CALLBACK_H
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index daf5a61..74a9e4e 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -976,6 +976,12 @@
     dest->setTo(*src);
 }
 
+static void android_content_AssetManager_clearTheme(JNIEnv* env, jobject clazz, jlong themeHandle)
+{
+    ResTable::Theme* theme = reinterpret_cast<ResTable::Theme*>(themeHandle);
+    theme->clear();
+}
+
 static jint android_content_AssetManager_loadThemeAttributeValue(
     JNIEnv* env, jobject clazz, jlong themeHandle, jint ident, jobject outValue, jboolean resolve)
 {
@@ -999,6 +1005,13 @@
     return block >= 0 ? copyValue(env, outValue, &res, value, ref, block, typeSpecFlags) : block;
 }
 
+static jint android_content_AssetManager_getThemeChangingConfigurations(JNIEnv* env, jobject clazz,
+                                                                        jlong themeHandle)
+{
+    ResTable::Theme* theme = reinterpret_cast<ResTable::Theme*>(themeHandle);
+    return theme->getChangingConfigurations();
+}
+
 static void android_content_AssetManager_dumpTheme(JNIEnv* env, jobject clazz,
                                                    jlong themeHandle, jint pri,
                                                    jstring tag, jstring prefix)
@@ -2101,8 +2114,12 @@
         (void*) android_content_AssetManager_applyThemeStyle },
     { "copyTheme", "(JJ)V",
         (void*) android_content_AssetManager_copyTheme },
+    { "clearTheme", "(J)V",
+        (void*) android_content_AssetManager_clearTheme },
     { "loadThemeAttributeValue", "(JILandroid/util/TypedValue;Z)I",
         (void*) android_content_AssetManager_loadThemeAttributeValue },
+    { "getThemeChangingConfigurations", "(J)I",
+        (void*) android_content_AssetManager_getThemeChangingConfigurations },
     { "dumpTheme", "(JILjava/lang/String;Ljava/lang/String;)V",
         (void*) android_content_AssetManager_dumpTheme },
     { "applyStyle","(JIIJ[I[I[I)Z",
diff --git a/core/jni/android_view_DisplayListCanvas.cpp b/core/jni/android_view_DisplayListCanvas.cpp
index 39449b0..bb8ef83 100644
--- a/core/jni/android_view_DisplayListCanvas.cpp
+++ b/core/jni/android_view_DisplayListCanvas.cpp
@@ -86,24 +86,6 @@
     renderer->finish();
 }
 
-static void android_view_DisplayListCanvas_setProperty(JNIEnv* env,
-        jobject clazz, jstring name, jstring value) {
-    if (!Caches::hasInstance()) {
-        ALOGW("can't set property, no Caches instance");
-        return;
-    }
-
-    if (name == NULL || value == NULL) {
-        ALOGW("can't set prop, null passed");
-    }
-
-    const char* nameCharArray = env->GetStringUTFChars(name, NULL);
-    const char* valueCharArray = env->GetStringUTFChars(value, NULL);
-    Caches::getInstance().setTempProperty(nameCharArray, valueCharArray);
-    env->ReleaseStringUTFChars(name, nameCharArray);
-    env->ReleaseStringUTFChars(name, valueCharArray);
-}
-
 // ----------------------------------------------------------------------------
 // Functor
 // ----------------------------------------------------------------------------
@@ -268,8 +250,6 @@
     { "nPrepare",           "(J)V",            (void*) android_view_DisplayListCanvas_prepare },
     { "nPrepareDirty",      "(JIIII)V",        (void*) android_view_DisplayListCanvas_prepareDirty },
     { "nFinish",            "(J)V",            (void*) android_view_DisplayListCanvas_finish },
-    { "nSetProperty",       "(Ljava/lang/String;Ljava/lang/String;)V",
-            (void*) android_view_DisplayListCanvas_setProperty },
 
     { "nCallDrawGLFunction", "(JJ)V",          (void*) android_view_DisplayListCanvas_callDrawGLFunction },
 
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index a8355c2..77af341 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -23,6 +23,7 @@
 
 #include "android_os_Parcel.h"
 #include "android_util_Binder.h"
+#include "android/graphics/Bitmap.h"
 #include "android/graphics/GraphicsJNI.h"
 #include "android/graphics/Region.h"
 
@@ -168,22 +169,19 @@
         }
     }
 
-    const ssize_t rowBytes =
+    const size_t rowBytes =
             screenshot->getStride() * android::bytesPerPixel(screenshot->getFormat());
 
-    SkBitmap* bitmap = new SkBitmap();
-    bitmap->setInfo(screenshotInfo, (size_t)rowBytes);
-    if (screenshotInfo.fWidth > 0 && screenshotInfo.fHeight > 0) {
-        // takes ownership of ScreenshotClient
-        SkMallocPixelRef* pixels = SkMallocPixelRef::NewWithProc(screenshotInfo,
-                (size_t) rowBytes, NULL, (void*) screenshot->getPixels(), &DeleteScreenshot,
-                (void*) (screenshot.get()));
-        screenshot.detach();
-        pixels->setImmutable();
-        bitmap->setPixelRef(pixels)->unref();
-        bitmap->lockPixels();
+    if (!screenshotInfo.fWidth || !screenshotInfo.fHeight) {
+        return NULL;
     }
 
+    Bitmap* bitmap = new Bitmap(
+            (void*) screenshot->getPixels(), (void*) screenshot.get(), DeleteScreenshot,
+            screenshotInfo, rowBytes, nullptr);
+    screenshot.detach();
+    bitmap->peekAtPixelRef()->setImmutable();
+
     return GraphicsJNI::createBitmap(env, bitmap,
             GraphicsJNI::kBitmapCreateFlag_Premultiplied, NULL);
 }
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 4ccbb41..5d5465b 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -388,6 +388,15 @@
     RenderProxy::trimMemory(level);
 }
 
+static void android_view_ThreadedRenderer_overrideProperty(JNIEnv* env, jobject clazz,
+        jstring name, jstring value) {
+    const char* nameCharArray = env->GetStringUTFChars(name, NULL);
+    const char* valueCharArray = env->GetStringUTFChars(value, NULL);
+    RenderProxy::overrideProperty(nameCharArray, valueCharArray);
+    env->ReleaseStringUTFChars(name, nameCharArray);
+    env->ReleaseStringUTFChars(name, valueCharArray);
+}
+
 static void android_view_ThreadedRenderer_fence(JNIEnv* env, jobject clazz,
         jlong proxyPtr) {
     RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
@@ -466,6 +475,7 @@
     { "nDetachSurfaceTexture", "(JJ)V", (void*) android_view_ThreadedRenderer_detachSurfaceTexture },
     { "nDestroyHardwareResources", "(J)V", (void*) android_view_ThreadedRenderer_destroyHardwareResources },
     { "nTrimMemory", "(I)V", (void*) android_view_ThreadedRenderer_trimMemory },
+    { "nOverrideProperty", "(Ljava/lang/String;Ljava/lang/String;)V",  (void*) android_view_ThreadedRenderer_overrideProperty },
     { "nFence", "(J)V", (void*) android_view_ThreadedRenderer_fence },
     { "nStopDrawing", "(J)V", (void*) android_view_ThreadedRenderer_stopDrawing },
     { "nNotifyFramePending", "(J)V", (void*) android_view_ThreadedRenderer_notifyFramePending },
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 942e6a6..5669b91 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -2352,11 +2352,6 @@
     <permission android:name="android.permission.BIND_CONDITION_PROVIDER_SERVICE"
         android:protectionLevel="signature" />
 
-    <!-- Must be required by a {@link android.media.routing.MediaRouteService},
-         to ensure that only the system can bind to it. -->
-    <permission android:name="android.permission.BIND_MEDIA_ROUTE_SERVICE"
-        android:protectionLevel="signature" />
-
     <!-- Must be required by an {@link android.service.dreams.DreamService},
          to ensure that only the system can bind to it. -->
     <permission android:name="android.permission.BIND_DREAM_SERVICE"
@@ -2433,6 +2428,12 @@
     <permission android:name="android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT"
                 android:protectionLevel="signature" />
 
+    <!-- @SystemApi Allows applications to kill UIDs.
+        <p>Not for use by third-party applications.
+         @hide -->
+    <permission android:name="android.permission.KILL_UID"
+                android:protectionLevel="signature" />
+
     <!-- The system process is explicitly the only one allowed to launch the
          confirmation UI for full backup/restore -->
     <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/>
@@ -2445,7 +2446,8 @@
                  android:backupAgent="com.android.server.backup.SystemBackupAgent"
                  android:killAfterRestore="false"
                  android:icon="@drawable/ic_launcher_android"
-                 android:supportsRtl="true">
+                 android:supportsRtl="true"
+                 android:theme="@style/Theme.Material.DayNight.DarkActionBar">
         <activity android:name="com.android.internal.app.ChooserActivity"
                 android:theme="@style/Theme.DeviceDefault.Resolver"
                 android:finishOnCloseSystemDialogs="true"
@@ -2478,7 +2480,7 @@
                 android:label="@string/managed_profile_label">
         </activity-alias>
         <activity android:name="com.android.internal.app.HeavyWeightSwitcherActivity"
-                android:theme="@style/Theme.Material.Light.Dialog"
+                android:theme="@style/Theme.Material.DayNight.Dialog"
                 android:label="@string/heavy_weight_switcher_title"
                 android:finishOnCloseSystemDialogs="true"
                 android:excludeFromRecents="true"
@@ -2511,7 +2513,7 @@
         <activity android:name="android.accounts.ChooseAccountActivity"
                 android:excludeFromRecents="true"
                 android:exported="true"
-                android:theme="@style/Theme.Material.Light.Dialog"
+                android:theme="@style/Theme.Material.DayNight.Dialog"
                 android:label="@string/choose_account_label"
                 android:process=":ui">
         </activity>
@@ -2519,14 +2521,14 @@
         <activity android:name="android.accounts.ChooseTypeAndAccountActivity"
                 android:excludeFromRecents="true"
                 android:exported="true"
-                android:theme="@style/Theme.Material.Light.Dialog"
+                android:theme="@style/Theme.Material.DayNight.Dialog"
                 android:label="@string/choose_account_label"
                 android:process=":ui">
         </activity>
 
         <activity android:name="android.accounts.ChooseAccountTypeActivity"
                 android:excludeFromRecents="true"
-                android:theme="@style/Theme.Material.Light.Dialog"
+                android:theme="@style/Theme.Material.DayNight.Dialog"
                 android:label="@string/choose_account_label"
                 android:process=":ui">
         </activity>
@@ -2534,19 +2536,19 @@
         <activity android:name="android.accounts.CantAddAccountActivity"
                 android:excludeFromRecents="true"
                 android:exported="true"
-                android:theme="@style/Theme.Material.Light.Dialog.NoActionBar"
+                android:theme="@style/Theme.Material.DayNight.Dialog.NoActionBar"
                 android:process=":ui">
         </activity>
 
         <activity android:name="android.accounts.GrantCredentialsPermissionActivity"
                 android:excludeFromRecents="true"
                 android:exported="true"
-                android:theme="@style/Theme.Material.Light.DialogWhenLarge"
+                android:theme="@style/Theme.Material.DayNight.DialogWhenLarge"
                 android:process=":ui">
         </activity>
 
         <activity android:name="android.content.SyncActivityTooManyDeletes"
-               android:theme="@style/Theme.Material.Light.Dialog"
+               android:theme="@style/Theme.Material.DayNight.Dialog"
                android:label="@string/sync_too_many_deletes"
                android:process=":ui">
         </activity>
@@ -2566,13 +2568,13 @@
         </activity>
 
         <activity android:name="com.android.internal.app.NetInitiatedActivity"
-                android:theme="@style/Theme.Material.Light.Dialog.Alert"
+                android:theme="@style/Theme.Material.DayNight.Dialog.Alert"
                 android:excludeFromRecents="true"
                 android:process=":ui">
         </activity>
 
         <activity android:name="com.android.internal.app.RestrictionsPinActivity"
-                android:theme="@style/Theme.Material.Light.Dialog.Alert"
+                android:theme="@style/Theme.Material.DayNight.Dialog.Alert"
                 android:excludeFromRecents="true"
                 android:windowSoftInputMode="adjustPan"
                 android:process=":ui">
diff --git a/core/res/res/anim/ic_checkbox_unchecked_box_inner_merged_animation.xml b/core/res/res/anim/ic_checkbox_to_checked_box_inner_merged_animation.xml
similarity index 93%
rename from core/res/res/anim/ic_checkbox_unchecked_box_inner_merged_animation.xml
rename to core/res/res/anim/ic_checkbox_to_checked_box_inner_merged_animation.xml
index b5ad5e9d..e522453 100644
--- a/core/res/res/anim/ic_checkbox_unchecked_box_inner_merged_animation.xml
+++ b/core/res/res/anim/ic_checkbox_to_checked_box_inner_merged_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,8 +14,7 @@
      limitations under the License.
 -->
 
-<set
-    xmlns:android="http://schemas.android.com/apk/res/android" >
+<set xmlns:android="http://schemas.android.com/apk/res/android">
     <objectAnimator
         android:duration="166"
         android:propertyName="pathData"
@@ -24,8 +22,7 @@
         android:valueTo="M 0.0,-0.05 l 0.0,0.0 c 0.02761423749,0.0 0.05,0.02238576251 0.05,0.05 l 0.0,0.0 c 0.0,0.02761423749 -0.02238576251,0.05 -0.05,0.05 l 0.0,0.0 c -0.02761423749,0.0 -0.05,-0.02238576251 -0.05,-0.05 l 0.0,0.0 c 0.0,-0.02761423749 0.02238576251,-0.05 0.05,-0.05 Z M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z"
         android:valueType="pathType"
         android:interpolator="@interpolator/ic_checkbox_unchecked_animation_interpolator_1" />
-    <set
-        android:ordering="sequentially" >
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="166"
             android:propertyName="fillAlpha"
diff --git a/core/res/res/anim/ic_checkbox_unchecked_box_outer_merged_animation.xml b/core/res/res/anim/ic_checkbox_to_checked_box_outer_merged_animation.xml
similarity index 95%
rename from core/res/res/anim/ic_checkbox_unchecked_box_outer_merged_animation.xml
rename to core/res/res/anim/ic_checkbox_to_checked_box_outer_merged_animation.xml
index 066971a..628e967 100644
--- a/core/res/res/anim/ic_checkbox_unchecked_box_outer_merged_animation.xml
+++ b/core/res/res/anim/ic_checkbox_to_checked_box_outer_merged_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,10 +14,8 @@
      limitations under the License.
 -->
 
-<set
-    xmlns:android="http://schemas.android.com/apk/res/android" >
-    <set
-        android:ordering="sequentially" >
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="200"
             android:propertyName="pathData"
@@ -34,8 +31,7 @@
             android:valueType="pathType"
             android:interpolator="@interpolator/ic_checkbox_unchecked_animation_interpolator_1" />
     </set>
-    <set
-        android:ordering="sequentially" >
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="166"
             android:propertyName="fillAlpha"
diff --git a/core/res/res/anim/ic_checkbox_unchecked_icon_null_animation.xml b/core/res/res/anim/ic_checkbox_to_checked_icon_null_animation.xml
similarity index 88%
rename from core/res/res/anim/ic_checkbox_unchecked_icon_null_animation.xml
rename to core/res/res/anim/ic_checkbox_to_checked_icon_null_animation.xml
index fc40d47..6fa3fd5 100644
--- a/core/res/res/anim/ic_checkbox_unchecked_icon_null_animation.xml
+++ b/core/res/res/anim/ic_checkbox_to_checked_icon_null_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,10 +14,8 @@
      limitations under the License.
 -->
 
-<set
-    xmlns:android="http://schemas.android.com/apk/res/android" >
-    <set
-        android:ordering="sequentially" >
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="200"
             android:propertyName="scaleX"
@@ -32,8 +29,7 @@
             android:valueTo="0.2"
             android:interpolator="@interpolator/ic_checkbox_unchecked_animation_interpolator_1" />
     </set>
-    <set
-        android:ordering="sequentially" >
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="200"
             android:propertyName="scaleY"
diff --git a/core/res/res/anim/ic_checkbox_checked_box_inner_merged_animation.xml b/core/res/res/anim/ic_checkbox_to_unchecked_box_inner_merged_animation.xml
similarity index 94%
rename from core/res/res/anim/ic_checkbox_checked_box_inner_merged_animation.xml
rename to core/res/res/anim/ic_checkbox_to_unchecked_box_inner_merged_animation.xml
index 7be32af..d35b426 100644
--- a/core/res/res/anim/ic_checkbox_checked_box_inner_merged_animation.xml
+++ b/core/res/res/anim/ic_checkbox_to_unchecked_box_inner_merged_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,10 +14,8 @@
      limitations under the License.
 -->
 
-<set
-    xmlns:android="http://schemas.android.com/apk/res/android" >
-    <set
-        android:ordering="sequentially" >
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="166"
             android:propertyName="pathData"
@@ -34,8 +31,7 @@
             android:valueType="pathType"
             android:interpolator="@interpolator/ic_checkbox_checked_animation_interpolator_1" />
     </set>
-    <set
-        android:ordering="sequentially" >
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="133"
             android:propertyName="fillAlpha"
diff --git a/core/res/res/anim/ic_checkbox_checked_check_path_merged_animation.xml b/core/res/res/anim/ic_checkbox_to_unchecked_check_path_merged_animation.xml
similarity index 94%
rename from core/res/res/anim/ic_checkbox_checked_check_path_merged_animation.xml
rename to core/res/res/anim/ic_checkbox_to_unchecked_check_path_merged_animation.xml
index fcba2c8..a5d814e 100644
--- a/core/res/res/anim/ic_checkbox_checked_check_path_merged_animation.xml
+++ b/core/res/res/anim/ic_checkbox_to_unchecked_check_path_merged_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,8 +14,7 @@
      limitations under the License.
 -->
 
-<set
-    xmlns:android="http://schemas.android.com/apk/res/android" >
+<set xmlns:android="http://schemas.android.com/apk/res/android">
     <objectAnimator
         android:duration="166"
         android:propertyName="pathData"
@@ -24,8 +22,7 @@
         android:valueTo="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M 0.0,1.42500305176 c 0.0,0.0 -1.4234161377,-1.40159606934 -1.4234161377,-1.40159606934 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 0.00932312011719,-0.0124053955078 0.00932312011719,-0.0124053955078 c 0.0,0.0 0.0234069824219,-0.0235137939453 0.0234069824219,-0.0235137939453 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -1.4375,1.43751525879 -1.4375,1.43751525879 Z"
         android:valueType="pathType"
         android:interpolator="@interpolator/ic_checkbox_checked_animation_interpolator_1" />
-    <set
-        android:ordering="sequentially" >
+    <set android:ordering="sequentially" >
         <objectAnimator
             android:duration="133"
             android:propertyName="fillAlpha"
diff --git a/core/res/res/anim/ic_checkbox_checked_icon_null_animation.xml b/core/res/res/anim/ic_checkbox_to_unchecked_icon_null_animation.xml
similarity index 88%
rename from core/res/res/anim/ic_checkbox_checked_icon_null_animation.xml
rename to core/res/res/anim/ic_checkbox_to_unchecked_icon_null_animation.xml
index 312003f..0f07b0e 100644
--- a/core/res/res/anim/ic_checkbox_checked_icon_null_animation.xml
+++ b/core/res/res/anim/ic_checkbox_to_unchecked_icon_null_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,10 +14,8 @@
      limitations under the License.
 -->
 
-<set
-    xmlns:android="http://schemas.android.com/apk/res/android" >
-    <set
-        android:ordering="sequentially" >
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="166"
             android:propertyName="scaleX"
@@ -32,8 +29,7 @@
             android:valueTo="0.2"
             android:interpolator="@interpolator/ic_checkbox_checked_animation_interpolator_1" />
     </set>
-    <set
-        android:ordering="sequentially" >
+    <set android:ordering="sequentially">
         <objectAnimator
             android:duration="166"
             android:propertyName="scaleY"
diff --git a/core/res/res/drawable-hdpi/text_cursor_mtrl_alpha.9.png b/core/res/res/drawable-hdpi/text_cursor_mtrl_alpha.9.png
deleted file mode 100644
index 0179433..0000000
--- a/core/res/res/drawable-hdpi/text_cursor_mtrl_alpha.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/text_cursor_mtrl_alpha.9.png b/core/res/res/drawable-mdpi/text_cursor_mtrl_alpha.9.png
deleted file mode 100644
index e5760be..0000000
--- a/core/res/res/drawable-mdpi/text_cursor_mtrl_alpha.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/text_cursor_mtrl_alpha.9.png b/core/res/res/drawable-xhdpi/text_cursor_mtrl_alpha.9.png
deleted file mode 100644
index 3939214..0000000
--- a/core/res/res/drawable-xhdpi/text_cursor_mtrl_alpha.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/text_cursor_mtrl_alpha.9.png b/core/res/res/drawable-xxhdpi/text_cursor_mtrl_alpha.9.png
deleted file mode 100644
index 432c3859..0000000
--- a/core/res/res/drawable-xxhdpi/text_cursor_mtrl_alpha.9.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable/btn_check_material_anim.xml b/core/res/res/drawable/btn_check_material_anim.xml
index 7cb1b89..710a291 100644
--- a/core/res/res/drawable/btn_check_material_anim.xml
+++ b/core/res/res/drawable/btn_check_material_anim.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
@@ -15,24 +15,19 @@
 -->
 
 <animated-selector xmlns:android="http://schemas.android.com/apk/res/android">
-
     <item
-        android:id="@+id/on"
+        android:id="@+id/checked"
         android:state_checked="true"
         android:drawable="@drawable/ic_checkbox_checked" />
-
     <item
-        android:id="@+id/off"
+        android:id="@+id/unchecked"
         android:drawable="@drawable/ic_checkbox_unchecked" />
-
     <transition
-        android:fromId="@+id/off"
-        android:toId="@+id/on"
-        android:drawable="@drawable/ic_checkbox_unchecked_animation" />
-
+        android:fromId="@+id/unchecked"
+        android:toId="@+id/checked"
+        android:drawable="@drawable/ic_checkbox_unchecked_to_checked_animation" />
     <transition
-        android:fromId="@+id/on"
-        android:toId="@+id/off"
-        android:drawable="@drawable/ic_checkbox_checked_animation" />
-
+        android:fromId="@+id/checked"
+        android:toId="@+id/unchecked"
+        android:drawable="@drawable/ic_checkbox_checked_to_unchecked_animation" />
 </animated-selector>
diff --git a/core/res/res/drawable/ic_checkbox_checked.xml b/core/res/res/drawable/ic_checkbox_checked.xml
index cc7b5df..ecde414 100644
--- a/core/res/res/drawable/ic_checkbox_checked.xml
+++ b/core/res/res/drawable/ic_checkbox_checked.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,24 +14,23 @@
      limitations under the License.
 -->
 
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:name="ic_checkbox_checked"
-    android:width="32dp"
-    android:viewportWidth="48"
-    android:height="32dp"
-    android:viewportHeight="48"
-    android:tint="?attr/colorControlActivated" >
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:name="ic_checkbox_checked"
+        android:width="32dp"
+        android:viewportWidth="48"
+        android:height="32dp"
+        android:viewportHeight="48"
+        android:tint="@color/control_checkable_material">
     <group
         android:name="icon_null"
         android:translateX="24"
         android:translateY="24"
         android:scaleX="0.2"
-        android:scaleY="0.2" >
+        android:scaleY="0.2">
         <group
             android:name="check"
             android:scaleX="7.5"
-            android:scaleY="7.5" >
+            android:scaleY="7.5">
             <path
                 android:name="check_path_merged"
                 android:pathData="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M -2.0,5.00001525879 c 0.0,0.0 -5.0,-5.00001525879 -5.0,-5.00001525879 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 3.58590698242,3.58601379395 3.58590698242,3.58601379395 c 0.0,0.0 7.58590698242,-7.58601379395 7.58590698242,-7.58601379395 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -9.0,9.00001525879 -9.0,9.00001525879 Z"
@@ -41,7 +39,7 @@
         <group
             android:name="box_dilate"
             android:scaleX="7.5"
-            android:scaleY="7.5" >
+            android:scaleY="7.5">
             <path
                 android:name="box_inner_merged"
                 android:pathData="M 0.0,-1.0 l 0.0,0.0 c 0.5522847498,0.0 1.0,0.4477152502 1.0,1.0 l 0.0,0.0 c 0.0,0.5522847498 -0.4477152502,1.0 -1.0,1.0 l 0.0,0.0 c -0.5522847498,0.0 -1.0,-0.4477152502 -1.0,-1.0 l 0.0,0.0 c 0.0,-0.5522847498 0.4477152502,-1.0 1.0,-1.0 Z M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z"
diff --git a/core/res/res/drawable/ic_checkbox_checked_animation.xml b/core/res/res/drawable/ic_checkbox_checked_to_unchecked_animation.xml
similarity index 63%
rename from core/res/res/drawable/ic_checkbox_checked_animation.xml
rename to core/res/res/drawable/ic_checkbox_checked_to_unchecked_animation.xml
index af5eeee..fad2233 100644
--- a/core/res/res/drawable/ic_checkbox_checked_animation.xml
+++ b/core/res/res/drawable/ic_checkbox_checked_to_unchecked_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,16 +14,15 @@
      limitations under the License.
 -->
 
-<animated-vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/ic_checkbox_checked" >
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:drawable="@drawable/ic_checkbox_checked">
     <target
         android:name="icon_null"
-        android:animation="@anim/ic_checkbox_checked_icon_null_animation" />
+        android:animation="@anim/ic_checkbox_to_unchecked_icon_null_animation" />
     <target
         android:name="check_path_merged"
-        android:animation="@anim/ic_checkbox_checked_check_path_merged_animation" />
+        android:animation="@anim/ic_checkbox_to_unchecked_check_path_merged_animation" />
     <target
         android:name="box_inner_merged"
-        android:animation="@anim/ic_checkbox_checked_box_inner_merged_animation" />
+        android:animation="@anim/ic_checkbox_to_unchecked_box_inner_merged_animation" />
 </animated-vector>
diff --git a/core/res/res/drawable/ic_checkbox_unchecked.xml b/core/res/res/drawable/ic_checkbox_unchecked.xml
index 410f0bc..3329b46 100644
--- a/core/res/res/drawable/ic_checkbox_unchecked.xml
+++ b/core/res/res/drawable/ic_checkbox_unchecked.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,24 +14,23 @@
      limitations under the License.
 -->
 
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:name="ic_checkbox_unchecked"
-    android:width="32dp"
-    android:viewportWidth="48"
-    android:height="32dp"
-    android:viewportHeight="48"
-    android:tint="?attr/colorControlNormal" >
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:name="ic_checkbox_unchecked"
+        android:width="32dp"
+        android:viewportWidth="48"
+        android:height="32dp"
+        android:viewportHeight="48"
+        android:tint="@color/control_checkable_material">
     <group
         android:name="icon_null"
         android:translateX="24"
         android:translateY="24"
         android:scaleX="0.2"
-        android:scaleY="0.2" >
+        android:scaleY="0.2">
         <group
             android:name="check"
             android:scaleX="7.5"
-            android:scaleY="7.5" >
+            android:scaleY="7.5">
             <path
                 android:name="box_outer_merged"
                 android:pathData="M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M -2.0,5.00001525879 c 0.0,0.0 -1.4234161377,-1.40159606934 -1.4234161377,-1.40159606934 c 0.0,0.0 1.41409301758,-1.41409301758 1.41409301758,-1.41409301758 c 0.0,0.0 0.00932312011719,-0.0124053955078 0.00932312011719,-0.0124053955078 c 0.0,0.0 0.0234069824219,-0.0235137939453 0.0234069824219,-0.0235137939453 c 0.0,0.0 1.41409301758,1.41409301758 1.41409301758,1.41409301758 c 0.0,0.0 -1.4375,1.43751525879 -1.4375,1.43751525879 Z"
@@ -42,7 +40,7 @@
         <group
             android:name="box_dilate"
             android:scaleX="7.5"
-            android:scaleY="7.5" >
+            android:scaleY="7.5">
             <path
                 android:name="box_inner_merged"
                 android:pathData="M -7.0,-7.0 l 14.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,14.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l -14.0,0.0 c 0.0,0.0 0.0,0.0 0.0,0.0 l 0.0,-14.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z M 7.0,-9.0 c 0.0,0.0 -14.0,0.0 -14.0,0.0 c -1.1044921875,0.0 -2.0,0.8955078125 -2.0,2.0 c 0.0,0.0 0.0,14.0 0.0,14.0 c 0.0,1.1044921875 0.8955078125,2.0 2.0,2.0 c 0.0,0.0 14.0,0.0 14.0,0.0 c 1.1044921875,0.0 2.0,-0.8955078125 2.0,-2.0 c 0.0,0.0 0.0,-14.0 0.0,-14.0 c 0.0,-1.1044921875 -0.8955078125,-2.0 -2.0,-2.0 c 0.0,0.0 0.0,0.0 0.0,0.0 Z"
diff --git a/core/res/res/drawable/ic_checkbox_unchecked_animation.xml b/core/res/res/drawable/ic_checkbox_unchecked_to_checked_animation.xml
similarity index 63%
rename from core/res/res/drawable/ic_checkbox_unchecked_animation.xml
rename to core/res/res/drawable/ic_checkbox_unchecked_to_checked_animation.xml
index 605fce1..68351701 100644
--- a/core/res/res/drawable/ic_checkbox_unchecked_animation.xml
+++ b/core/res/res/drawable/ic_checkbox_unchecked_to_checked_animation.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2015 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.
@@ -15,16 +14,15 @@
      limitations under the License.
 -->
 
-<animated-vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/ic_checkbox_unchecked" >
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:drawable="@drawable/ic_checkbox_unchecked">
     <target
         android:name="icon_null"
-        android:animation="@anim/ic_checkbox_unchecked_icon_null_animation" />
+        android:animation="@anim/ic_checkbox_to_checked_icon_null_animation" />
     <target
         android:name="box_outer_merged"
-        android:animation="@anim/ic_checkbox_unchecked_box_outer_merged_animation" />
+        android:animation="@anim/ic_checkbox_to_checked_box_outer_merged_animation" />
     <target
         android:name="box_inner_merged"
-        android:animation="@anim/ic_checkbox_unchecked_box_inner_merged_animation" />
+        android:animation="@anim/ic_checkbox_to_checked_box_inner_merged_animation" />
 </animated-vector>
diff --git a/core/res/res/drawable/scroll_indicator_material.xml b/core/res/res/drawable/scroll_indicator_material.xml
new file mode 100644
index 0000000..63cd584
--- /dev/null
+++ b/core/res/res/drawable/scroll_indicator_material.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:tint="?attr/colorForeground">
+    <solid android:color="#1f000000" />
+    <size
+        android:height="1dp"
+        android:width="1dp" />
+</shape>
diff --git a/core/res/res/drawable/text_cursor_material.xml b/core/res/res/drawable/text_cursor_material.xml
index a350c47..0bedaa9 100644
--- a/core/res/res/drawable/text_cursor_material.xml
+++ b/core/res/res/drawable/text_cursor_material.xml
@@ -14,6 +14,15 @@
      limitations under the License.
 -->
 
-<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/text_cursor_mtrl_alpha"
-    android:tint="?attr/colorControlActivated" />
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+       android:inset="2dp">
+    <shape
+        android:tint="?attr/colorControlActivated"
+        android:shape="rectangle">
+        <size
+            android:height="2dp"
+            android:width="2dp" />
+        <solid
+            android:color="@color/white" />
+    </shape>
+</inset>
diff --git a/core/res/res/layout-land/time_picker_material.xml b/core/res/res/layout-land/time_picker_material.xml
index 89c3749..4b544d2 100644
--- a/core/res/res/layout-land/time_picker_material.xml
+++ b/core/res/res/layout-land/time_picker_material.xml
@@ -16,7 +16,6 @@
 -->
 
 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
 
@@ -27,8 +26,7 @@
         android:layout_column="0"
         android:layout_row="0"
         android:layout_rowSpan="3"
-        android:layout_gravity="center|fill"
-        tools:background="@color/accent_material_light" />
+        android:layout_gravity="center|fill" />
 
     <RelativeLayout
         android:layout_width="wrap_content"
@@ -56,20 +54,14 @@
                 android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
                 android:singleLine="true"
                 android:ellipsize="none"
-                android:gravity="right"
-                tools:text="23"
-                tools:textSize="@dimen/timepicker_time_label_size"
-                tools:textColor="@color/white" />
+                android:gravity="right" />
 
             <TextView
                 android:id="@+id/separator"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
-                android:importantForAccessibility="no"
-                tools:text=":"
-                tools:textSize="@dimen/timepicker_time_label_size"
-                tools:textColor="@color/white" />
+                android:importantForAccessibility="no" />
 
             <!-- The minutes should always be to the right of the separator,
                  regardless of the current locale's layout direction. -->
@@ -80,10 +72,7 @@
                 android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
                 android:singleLine="true"
                 android:ellipsize="none"
-                android:gravity="left"
-                tools:text="59"
-                tools:textSize="@dimen/timepicker_time_label_size"
-                tools:textColor="@color/white" />
+                android:gravity="left" />
         </LinearLayout>
 
         <!-- The layout alignment of this view will switch between toRightOf
@@ -106,10 +95,7 @@
                 android:paddingTop="@dimen/timepicker_am_top_padding"
                 android:lines="1"
                 android:ellipsize="none"
-                android:includeFontPadding="false"
-                tools:text="AM"
-                tools:textSize="@dimen/timepicker_ampm_label_size"
-                tools:textColor="@color/white" />
+                android:includeFontPadding="false" />
 
             <CheckedTextView
                 android:id="@+id/pm_label"
@@ -121,10 +107,7 @@
                 android:paddingTop="@dimen/timepicker_pm_top_padding"
                 android:lines="1"
                 android:ellipsize="none"
-                android:includeFontPadding="false"
-                tools:text="PM"
-                tools:textSize="@dimen/timepicker_ampm_label_size"
-                tools:textColor="@color/white" />
+                android:includeFontPadding="false" />
         </LinearLayout>
     </RelativeLayout>
 
diff --git a/core/res/res/layout/alert_dialog_button_bar_material.xml b/core/res/res/layout/alert_dialog_button_bar_material.xml
index 1eea4e1..6e102f3 100644
--- a/core/res/res/layout/alert_dialog_button_bar_material.xml
+++ b/core/res/res/layout/alert_dialog_button_bar_material.xml
@@ -27,6 +27,7 @@
     android:paddingTop="4dp"
     android:paddingBottom="4dp"
     android:gravity="bottom"
+    android:allowStacking="@bool/allow_stacked_button_bar"
     style="?attr/buttonBarStyle">
 
     <Button
@@ -53,4 +54,4 @@
         style="?attr/buttonBarPositiveButtonStyle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
-</com.android.internal.widget.ButtonBarLayout>
\ No newline at end of file
+</com.android.internal.widget.ButtonBarLayout>
diff --git a/core/res/res/layout/alert_dialog_material.xml b/core/res/res/layout/alert_dialog_material.xml
index bf1e383..95c2459 100644
--- a/core/res/res/layout/alert_dialog_material.xml
+++ b/core/res/res/layout/alert_dialog_material.xml
@@ -24,52 +24,51 @@
 
     <include layout="@layout/alert_dialog_title_material" />
 
-    <FrameLayout android:id="@+id/contentPanel"
+    <FrameLayout
+        android:id="@+id/contentPanel"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:minHeight="48dp">
-        <View android:id="@+id/scrollIndicatorUp"
-            android:visibility="gone"
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:layout_gravity="top"
-            android:background="@drawable/list_divider_material"/>
-        <ScrollView android:id="@+id/scrollView"
+
+        <ScrollView
+            android:id="@+id/scrollView"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:paddingTop="@dimen/dialog_padding_top_material"
             android:clipToPadding="false">
+
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical">
-                <TextView android:id="@+id/message"
-                          style="@style/TextAppearance.Material.Subhead"
-                          android:layout_width="match_parent"
-                          android:layout_height="wrap_content"
-                          android:paddingStart="?attr/dialogPreferredPadding"
-                          android:paddingTop="@dimen/dialog_padding_top_material"
-                          android:paddingEnd="?attr/dialogPreferredPadding" />
-                <Space android:id="@+id/textSpacerNoButtons"
-                       android:visibility="gone"
-                       android:layout_width="0dp"
-                       android:layout_height="@dimen/dialog_padding_top_material" />
+
+                <TextView
+                    android:id="@+id/message"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingEnd="?attr/dialogPreferredPadding"
+                    android:paddingStart="?attr/dialogPreferredPadding"
+                    style="@style/TextAppearance.Material.Subhead" />
+
+                <Space
+                    android:id="@+id/textSpacerNoButtons"
+                    android:visibility="gone"
+                    android:layout_width="0dp"
+                    android:layout_height="@dimen/dialog_padding_top_material" />
             </LinearLayout>
         </ScrollView>
-        <View android:id="@+id/scrollIndicatorDown"
-            android:visibility="gone"
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:layout_gravity="bottom"
-            android:background="@drawable/list_divider_material"/>
     </FrameLayout>
 
-    <FrameLayout android:id="@+id/customPanel"
+    <FrameLayout
+        android:id="@+id/customPanel"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:minHeight="48dp">
-        <FrameLayout android:id="@+id/custom"
+
+        <FrameLayout
+            android:id="@+id/custom"
             android:layout_width="match_parent"
             android:layout_height="wrap_content" />
     </FrameLayout>
diff --git a/core/res/res/layout/date_picker_header_material.xml b/core/res/res/layout/date_picker_header_material.xml
index 2150341..a4388f6 100644
--- a/core/res/res/layout/date_picker_header_material.xml
+++ b/core/res/res/layout/date_picker_header_material.xml
@@ -16,17 +16,13 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              xmlns:tools="http://schemas.android.com/tools"
               android:id="@+id/date_picker_header"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:paddingBottom="18dp"
               android:paddingStart="?attr/dialogPreferredPadding"
               android:paddingEnd="?attr/dialogPreferredPadding"
-              android:orientation="vertical"
-              tools:background="@color/accent_material_light"
-              tools:paddingStart="24dp"
-              tools:paddingEnd="24dp">
+              android:orientation="vertical">
 
     <!-- Top padding should stay on this view so that
          the touch target is a bit larger. -->
@@ -35,10 +31,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:paddingTop="16dp"
-        android:textAppearance="@style/TextAppearance.Material.DatePicker.YearLabel"
-        tools:text="2015"
-        tools:textSize="@dimen/date_picker_year_label_size"
-        tools:textColor="@color/white" />
+        android:textAppearance="@style/TextAppearance.Material.DatePicker.YearLabel" />
 
     <TextView
         android:id="@+id/date_picker_header_date"
@@ -47,9 +40,6 @@
         android:textAppearance="@style/TextAppearance.Material.DatePicker.DateLabel"
         android:gravity="start"
         android:maxLines="2"
-        android:ellipsize="none"
-        tools:text="Thu, Sep 30"
-        tools:textSize="@dimen/date_picker_date_label_size"
-        tools:textColor="@color/white" />
+        android:ellipsize="none" />
 
 </LinearLayout>
diff --git a/core/res/res/layout/time_picker_header_material.xml b/core/res/res/layout/time_picker_header_material.xml
index be9e443..3f5e300 100644
--- a/core/res/res/layout/time_picker_header_material.xml
+++ b/core/res/res/layout/time_picker_header_material.xml
@@ -18,13 +18,11 @@
 <!-- This layout is duplicated in land/time_picker_material.xml, so any
      changes made here need to be manually copied over. -->
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:tools="http://schemas.android.com/tools"
                 android:id="@+id/time_header"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:orientation="horizontal"
-                android:padding="@dimen/timepicker_separator_padding"
-                tools:background="@color/accent_material_light">
+                android:padding="@dimen/timepicker_separator_padding">
 
     <!-- The hour should always be to the left of the separator,
          regardless of the current locale's layout direction. -->
@@ -37,10 +35,7 @@
         android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
         android:singleLine="true"
         android:ellipsize="none"
-        android:gravity="right"
-        tools:text="23"
-        tools:textSize="@dimen/timepicker_time_label_size"
-        tools:textColor="@color/white" />
+        android:gravity="right" />
 
     <TextView
         android:id="@+id/separator"
@@ -50,10 +45,7 @@
         android:layout_marginRight="@dimen/timepicker_separator_padding"
         android:layout_centerInParent="true"
         android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
-        android:importantForAccessibility="no"
-        tools:text=":"
-        tools:textSize="@dimen/timepicker_time_label_size"
-        tools:textColor="@color/white" />
+        android:importantForAccessibility="no" />
 
     <!-- The minutes should always be to the left of the separator,
          regardless of the current locale's layout direction. -->
@@ -66,10 +58,7 @@
         android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
         android:singleLine="true"
         android:ellipsize="none"
-        android:gravity="left"
-        tools:text="59"
-        tools:textSize="@dimen/timepicker_time_label_size"
-        tools:textColor="@color/white" />
+        android:gravity="left" />
 
     <!-- The layout alignment of this view will switch between toRightOf
          @id/minutes and toLeftOf @id/hours depending on the locale. -->
@@ -90,10 +79,7 @@
             android:paddingTop="@dimen/timepicker_am_top_padding"
             android:textAppearance="@style/TextAppearance.Material.TimePicker.AmPmLabel"
             android:lines="1"
-            android:ellipsize="none"
-            tools:text="AM"
-            tools:textSize="@dimen/timepicker_ampm_label_size"
-            tools:textColor="@color/white" />
+            android:ellipsize="none" />
         <CheckedTextView
             android:id="@+id/pm_label"
             android:layout_width="wrap_content"
@@ -103,9 +89,6 @@
             android:paddingTop="@dimen/timepicker_pm_top_padding"
             android:textAppearance="@style/TextAppearance.Material.TimePicker.AmPmLabel"
             android:lines="1"
-            android:ellipsize="none"
-            tools:text="PM"
-            tools:textSize="@dimen/timepicker_ampm_label_size"
-            tools:textColor="@color/white" />
+            android:ellipsize="none" />
     </LinearLayout>
 </RelativeLayout>
diff --git a/core/res/res/transition/popup_window_enter.xml b/core/res/res/transition/popup_window_enter.xml
index 38c41f0..c4c8dac 100644
--- a/core/res/res/transition/popup_window_enter.xml
+++ b/core/res/res/transition/popup_window_enter.xml
@@ -16,17 +16,14 @@
 
 <transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
                android:transitionOrdering="together">
-    <!-- Start from location of epicenter, move to popup location. -->
-    <transition
-        class="com.android.internal.transition.EpicenterTranslate"
-        android:duration="300" />
-
     <!-- Start from size of epicenter, expand to full width/height. -->
     <transition
-        class="com.android.internal.transition.EpicenterClipReveal"
-        android:centerClipBounds="true"
-        android:duration="300" />
+        class="com.android.internal.transition.EpicenterTranslateClipReveal"
+        android:duration="250" />
 
     <!-- Quickly fade in. -->
-    <fade android:duration="100" />
+    <fade
+        android:duration="100"
+        android:fromAlpha="0.1"
+        android:toAlpha="1.0" />
 </transitionSet>
diff --git a/core/res/res/values-mcc311-mnc480/config.xml b/core/res/res/values-mcc311-mnc480/config.xml
index 39ea2bf..a986b75 100755
--- a/core/res/res/values-mcc311-mnc480/config.xml
+++ b/core/res/res/values-mcc311-mnc480/config.xml
@@ -46,7 +46,7 @@
     <!-- Flag specifying whether VT should be available for carrier: independent of
          carrier provisioning. If false: hard disabled. If true: then depends on carrier
          provisioning, availability etc -->
-    <bool name="config_carrier_vt_available">true</bool>
+    <bool name="config_carrier_vt_available">false</bool>
 
     <!-- Flag specifying whether VoLTE availability is based on provisioning -->
     <bool name="config_carrier_volte_provisioned">true</bool>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index fe5862b..eaa6278 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -1998,6 +1998,13 @@
         <attr name="needsDefaultBackgrounds" format="boolean" />
     </declare-styleable>
 
+    <!-- @hide -->
+    <declare-styleable name="ButtonBarLayout">
+        <!-- Whether to automatically stack the buttons when there is not
+             enough space to lay them out side-by-side. -->
+        <attr name="allowStacking" format="boolean" />
+    </declare-styleable>
+
     <!-- Fragment animation class attributes. -->
     <declare-styleable name="FragmentAnimation">
         <attr name="fragmentOpenEnterAnimation" format="reference" />
@@ -2715,6 +2722,28 @@
             <enum name="add" value="16" />
         </attr>
 
+        <!-- Defines which scroll indicators should be displayed when the view
+             can be scrolled. Multiple values may be combined using logical OR,
+             for example "top|bottom". -->
+        <attr name="scrollIndicators">
+            <!-- No scroll indicators are displayed. -->
+            <flag name="none" value="0x0000" />
+            <!-- Displays top scroll indicator when view can be scrolled up. -->
+            <flag name="top" value="0x0100" />
+            <!-- Displays bottom scroll indicator when vew can be scrolled down. -->
+            <flag name="bottom" value="0x0200" />
+            <!-- Displays left scroll indicator when vew can be scrolled left. -->
+            <flag name="left" value="0x0400" />
+            <!-- Displays right scroll indicator when vew can be scrolled right. -->
+            <flag name="right" value="0x0800" />
+            <!-- Displays right scroll indicator when vew can be scrolled in the
+                 start direction. -->
+            <flag name="start" value="0x1000" />
+            <!-- Displays right scroll indicator when vew can be scrolled in the
+                 end direction. -->
+            <flag name="end" value="0x2000" />
+        </attr>
+
     </declare-styleable>
 
     <!-- Attributes that can be assigned to a tag for a particular View. -->
@@ -5848,16 +5877,9 @@
     </declare-styleable>
 
     <!-- @hide For internal use only. Use only as directed. -->
-    <declare-styleable name="EpicenterClipReveal">
-        <attr name="centerClipBounds" format="boolean" />
+    <declare-styleable name="EpicenterTranslateClipReveal">
         <attr name="interpolatorX" format="reference" />
         <attr name="interpolatorY" format="reference" />
-    </declare-styleable>
-
-    <!-- @hide For internal use only. Use only as directed. -->
-    <declare-styleable name="EpicenterTranslate">
-        <attr name="interpolatorX" />
-        <attr name="interpolatorY" />
         <attr name="interpolatorZ" format="reference" />
     </declare-styleable>
 
@@ -7306,6 +7328,9 @@
         <!-- Flag indicating whether this voice interaction service is capable of handling the
              assist action. -->
         <attr name="supportsAssist" format="boolean" />
+        <!-- Flag indicating whether this voice interaction service is capable of being launched
+             from the keyguard. -->
+        <attr name="supportsLaunchVoiceAssistFromKeyguard" format="boolean" />
     </declare-styleable>
 
     <!-- Use <code>voice-enrollment-application</code>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 91c3d2e..297b302 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2623,7 +2623,6 @@
   <public type="attr" name="fullBackupContent" />
 
   <public type="style" name="Widget.Material.Button.Colored" />
-
   <public type="style" name="Theme.Material.DayNight" />
   <public type="style" name="Theme.Material.DayNight.DarkActionBar" />
   <public type="style" name="Theme.Material.DayNight.Dialog" />
@@ -2685,4 +2684,6 @@
 
   <public type="attr" name="assistBlocked" />
   <public type="attr" name="stylusButtonPressable" />
+  <public type="attr" name="supportsLaunchVoiceAssistFromKeyguard" />
+  <public type="attr" name="scrollIndicators" />
 </resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index f36d448..55b32e1 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -255,6 +255,8 @@
     <string-array name="wfcOperatorErrorNotificationMessages" />
     <!-- Template for showing cellular network operator name while WFC is active -->
     <string name="wfcSpnFormat">%s</string>
+    <!-- Template for showing operator name for data connection while WFC is active -->
+    <string name="wfcDataSpnFormat">%s</string>
     <!-- WFC, summary for Disabled -->
     <string name="wifi_calling_off_summary">Off</string>
     <!-- WFC, summary for Wi-Fi Preferred -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index f8d276f..28ffbfa 100755
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -773,6 +773,7 @@
   <java-symbol type="array" name="wfcOperatorErrorAlertMessages" />
   <java-symbol type="array" name="wfcOperatorErrorNotificationMessages" />
   <java-symbol type="string" name="wfcSpnFormat" />
+  <java-symbol type="string" name="wfcDataSpnFormat" />
   <java-symbol type="string" name="wifi_calling_off_summary" />
   <java-symbol type="string" name="wfc_mode_wifi_preferred_summary" />
   <java-symbol type="string" name="wfc_mode_cellular_preferred_summary" />
@@ -2179,8 +2180,6 @@
   <java-symbol type="bool" name="config_defaultWindowFeatureContextMenu" />
 
   <java-symbol type="layout" name="simple_account_item" />
-  <java-symbol type="id" name="scrollIndicatorUp" />
-  <java-symbol type="id" name="scrollIndicatorDown" />
   <java-symbol type="array" name="config_sms_convert_destination_number_support" />
   <java-symbol type="string" name="prohibit_manual_network_selection_in_gobal_mode" />
   <java-symbol type="id" name="profile_button" />
@@ -2203,7 +2202,6 @@
   <java-symbol type="string" name="usb_midi_peripheral_manufacturer_name" />
   <java-symbol type="string" name="usb_midi_peripheral_product_name" />
 
-  <java-symbol type="bool" name="allow_stacked_button_bar" />
   <java-symbol type="id" name="spacer" />
 
   <java-symbol type="xml" name="bookmarks" />
@@ -2257,4 +2255,5 @@
   <java-symbol type="id" name="title_icon" />
   <java-symbol type="id" name="day_picker_view_pager" />
   <java-symbol type="layout" name="day_picker_content_material" />
+  <java-symbol type="drawable" name="scroll_indicator_material" />
 </resources>
diff --git a/core/res/res/values/themes_material.xml b/core/res/res/values/themes_material.xml
index e679e0a..f02fed1 100644
--- a/core/res/res/values/themes_material.xml
+++ b/core/res/res/values/themes_material.xml
@@ -207,8 +207,8 @@
 
         <!-- Scrollbar attributes -->
         <item name="scrollbarFadeDuration">250</item>
-        <item name="scrollbarDefaultDelayBeforeFade">300</item>
-        <item name="scrollbarSize">10dip</item>
+        <item name="scrollbarDefaultDelayBeforeFade">400</item>
+        <item name="scrollbarSize">10dp</item>
         <item name="scrollbarThumbHorizontal">@drawable/scrollbar_handle_material</item>
         <item name="scrollbarThumbVertical">@drawable/scrollbar_handle_material</item>
         <item name="scrollbarTrackHorizontal">@null</item>
@@ -563,8 +563,8 @@
 
         <!-- Scrollbar attributes -->
         <item name="scrollbarFadeDuration">250</item>
-        <item name="scrollbarDefaultDelayBeforeFade">300</item>
-        <item name="scrollbarSize">10dip</item>
+        <item name="scrollbarDefaultDelayBeforeFade">400</item>
+        <item name="scrollbarSize">10dp</item>
         <item name="scrollbarThumbHorizontal">@drawable/scrollbar_handle_material</item>
         <item name="scrollbarThumbVertical">@drawable/scrollbar_handle_material</item>
         <item name="scrollbarTrackHorizontal">@null</item>
diff --git a/core/tests/coretests/src/android/util/FloatMathTest.java b/core/tests/coretests/src/android/util/FloatMathTest.java
deleted file mode 100644
index f479e2b..0000000
--- a/core/tests/coretests/src/android/util/FloatMathTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2007 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.util;
-
-import junit.framework.TestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-public class FloatMathTest extends TestCase {
-
-    @SmallTest
-    public void testSqrt() {
-        assertEquals(7, FloatMath.sqrt(49), 0);
-        assertEquals(10, FloatMath.sqrt(100), 0);
-        assertEquals(0, FloatMath.sqrt(0), 0);
-        assertEquals(1, FloatMath.sqrt(1), 0);
-    }
-
-    @SmallTest
-    public void testFloor() {
-        assertEquals(78, FloatMath.floor(78.89f), 0);
-        assertEquals(-79, FloatMath.floor(-78.89f), 0);
-    }
-
-    @SmallTest
-    public void testCeil() {
-        assertEquals(79, FloatMath.ceil(78.89f), 0);
-        assertEquals(-78, FloatMath.ceil(-78.89f), 0);
-    }
-
-    @SmallTest
-    public void testSin() {
-        assertEquals(0.0, FloatMath.sin(0), 0);
-        assertEquals(0.8414709848078965f, FloatMath.sin(1), 0);
-    }
-
-    @SmallTest
-    public void testCos() {
-        assertEquals(1.0f, FloatMath.cos(0), 0);
-        assertEquals(0.5403023058681398f, FloatMath.cos(1), 0);
-    }
-}
diff --git a/core/tests/coretests/src/com/android/internal/util/CallbackRegistryTest.java b/core/tests/coretests/src/com/android/internal/util/CallbackRegistryTest.java
new file mode 100644
index 0000000..c53f4cc
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/CallbackRegistryTest.java
@@ -0,0 +1,305 @@
+/*
+ * 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.internal.util;
+
+import junit.framework.TestCase;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+public class CallbackRegistryTest extends TestCase {
+
+    final Integer callback1 = 1;
+    final Integer callback2 = 2;
+    final Integer callback3 = 3;
+    CallbackRegistry<Integer, CallbackRegistryTest, Integer> registry;
+    int notify1;
+    int notify2;
+    int notify3;
+    int[] deepNotifyCount = new int[300];
+    Integer argValue;
+
+    private void addNotifyCount(Integer callback) {
+        if (callback == callback1) {
+            notify1++;
+        } else if (callback == callback2) {
+            notify2++;
+        } else if (callback == callback3) {
+            notify3++;
+        }
+        deepNotifyCount[callback]++;
+    }
+
+    public void testAddListener() {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg, Integer arg2) {
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        Integer callback = 0;
+
+        assertNotNull(registry.copyListeners());
+        assertEquals(0, registry.copyListeners().size());
+
+        registry.add(callback);
+        ArrayList<Integer> callbacks = registry.copyListeners();
+        assertEquals(1, callbacks.size());
+        assertEquals(callback, callbacks.get(0));
+
+        registry.add(callback);
+        callbacks = registry.copyListeners();
+        assertEquals(1, callbacks.size());
+        assertEquals(callback, callbacks.get(0));
+
+        Integer otherListener = 1;
+        registry.add(otherListener);
+        callbacks = registry.copyListeners();
+        assertEquals(2, callbacks.size());
+        assertEquals(callback, callbacks.get(0));
+        assertEquals(otherListener, callbacks.get(1));
+
+        registry.remove(callback);
+        registry.add(callback);
+        callbacks = registry.copyListeners();
+        assertEquals(2, callbacks.size());
+        assertEquals(callback, callbacks.get(1));
+        assertEquals(otherListener, callbacks.get(0));
+    }
+
+    public void testSimpleNotify() {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        assertEquals(arg1, (int) arg);
+                        addNotifyCount(callback);
+                        argValue = arg;
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        registry.add(callback2);
+        Integer arg = 1;
+        registry.notifyCallbacks(this, arg, arg);
+        assertEquals(arg, argValue);
+        assertEquals(1, notify2);
+    }
+
+    public void testRemoveWhileNotifying() {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        addNotifyCount(callback);
+                        if (callback == callback1) {
+                            registry.remove(callback1);
+                            registry.remove(callback2);
+                        }
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        registry.add(callback1);
+        registry.add(callback2);
+        registry.add(callback3);
+        registry.notifyCallbacks(this, 0, null);
+        assertEquals(1, notify1);
+        assertEquals(1, notify2);
+        assertEquals(1, notify3);
+
+        ArrayList<Integer> callbacks = registry.copyListeners();
+        assertEquals(1, callbacks.size());
+        assertEquals(callback3, callbacks.get(0));
+    }
+
+    public void testDeepRemoveWhileNotifying() {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        addNotifyCount(callback);
+                        registry.remove(callback);
+                        registry.notifyCallbacks(CallbackRegistryTest.this, arg1, null);
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        registry.add(callback1);
+        registry.add(callback2);
+        registry.add(callback3);
+        registry.notifyCallbacks(this, 0, null);
+        assertEquals(1, notify1);
+        assertEquals(2, notify2);
+        assertEquals(3, notify3);
+
+        ArrayList<Integer> callbacks = registry.copyListeners();
+        assertEquals(0, callbacks.size());
+    }
+
+    public void testAddRemovedListener() {
+
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        addNotifyCount(callback);
+                        if (callback == callback1) {
+                            registry.remove(callback2);
+                        } else if (callback == callback3) {
+                            registry.add(callback2);
+                        }
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+
+        registry.add(callback1);
+        registry.add(callback2);
+        registry.add(callback3);
+        registry.notifyCallbacks(this, 0, null);
+
+        ArrayList<Integer> callbacks = registry.copyListeners();
+        assertEquals(3, callbacks.size());
+        assertEquals(callback1, callbacks.get(0));
+        assertEquals(callback3, callbacks.get(1));
+        assertEquals(callback2, callbacks.get(2));
+        assertEquals(1, notify1);
+        assertEquals(1, notify2);
+        assertEquals(1, notify3);
+    }
+
+    public void testVeryDeepRemoveWhileNotifying() {
+        final Integer[] callbacks = new Integer[deepNotifyCount.length];
+        for (int i = 0; i < callbacks.length; i++) {
+            callbacks[i] = i;
+        }
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        addNotifyCount(callback);
+                        registry.remove(callback);
+                        registry.remove(callbacks[callbacks.length - callback - 1]);
+                        registry.notifyCallbacks(CallbackRegistryTest.this, arg1, null);
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        for (int i = 0; i < callbacks.length; i++) {
+            registry.add(callbacks[i]);
+        }
+        registry.notifyCallbacks(this, 0, null);
+        for (int i = 0; i < deepNotifyCount.length; i++) {
+            int expectedCount = Math.min(i + 1, deepNotifyCount.length - i);
+            assertEquals(expectedCount, deepNotifyCount[i]);
+        }
+
+        ArrayList<Integer> callbackList = registry.copyListeners();
+        assertEquals(0, callbackList.size());
+    }
+
+    public void testClear() {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        addNotifyCount(callback);
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        for (int i = 0; i < deepNotifyCount.length; i++) {
+            registry.add(i);
+        }
+        registry.clear();
+
+        ArrayList<Integer> callbackList = registry.copyListeners();
+        assertEquals(0, callbackList.size());
+
+        registry.notifyCallbacks(this, 0, null);
+        for (int i = 0; i < deepNotifyCount.length; i++) {
+            assertEquals(0, deepNotifyCount[i]);
+        }
+    }
+
+    public void testNestedClear() {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg1, Integer arg) {
+                        addNotifyCount(callback);
+                        registry.clear();
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        for (int i = 0; i < deepNotifyCount.length; i++) {
+            registry.add(i);
+        }
+        registry.notifyCallbacks(this, 0, null);
+        for (int i = 0; i < deepNotifyCount.length; i++) {
+            assertEquals(1, deepNotifyCount[i]);
+        }
+
+        ArrayList<Integer> callbackList = registry.copyListeners();
+        assertEquals(0, callbackList.size());
+    }
+
+    public void testIsEmpty() throws Exception {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg, Integer arg2) {
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+        Integer callback = 0;
+
+        assertTrue(registry.isEmpty());
+        registry.add(callback);
+        assertFalse(registry.isEmpty());
+    }
+
+    public void testClone() throws Exception {
+        CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer> notifier =
+                new CallbackRegistry.NotifierCallback<Integer, CallbackRegistryTest, Integer>() {
+                    @Override
+                    public void onNotifyCallback(Integer callback, CallbackRegistryTest sender,
+                            int arg, Integer arg2) {
+                    }
+                };
+        registry = new CallbackRegistry<Integer, CallbackRegistryTest, Integer>(notifier);
+
+        assertTrue(registry.isEmpty());
+        CallbackRegistry<Integer, CallbackRegistryTest, Integer> registry2 = registry.clone();
+        Integer callback = 0;
+        registry.add(callback);
+        assertFalse(registry.isEmpty());
+        assertTrue(registry2.isEmpty());
+        registry2 = registry.clone();
+        assertFalse(registry2.isEmpty());
+    }
+}
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 8d010a1..f3f2e5e 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -357,8 +357,61 @@
               <li><a href="<?cs var:toroot ?>guide/topics/renderscript/advanced.html">
                     <span class="en">Advanced RenderScript</span></a>
                   </li>
-              <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference.html">
-                    <span class="en">Runtime API Reference</span></a>
+              <li class="nav-section">
+                <div class="nav-section-header">
+                  <a href="<?cs var:toroot ?>guide/topics/renderscript/reference/overview.html">
+                    <span class="en">Runtime API Reference</span>
+                  </a></div>
+                <ul>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_value_types.html">
+                    <span class="en">Numerical Types</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_object_types.html">
+                    <span class="en">Object Types</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_convert.html">
+                    <span class="en">Conversion Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_math.html">
+                    <span class="en">Mathematical Constants and Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_vector_math.html">
+                    <span class="en">Vector Math Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_matrix.html">
+                    <span class="en">Matrix Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_quaternion.html">
+                    <span class="en">Quaternion Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_atomic.html">
+                    <span class="en">Atomic Update Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_time.html">
+                    <span class="en">Time Functions and Types</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_allocation_data.html">
+                    <span class="en">Allocation Data Access Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_object_info.html">
+                    <span class="en">Object Characteristics Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_for_each.html">
+                    <span class="en">Kernel Invocation Functions and Types</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_io.html">
+                    <span class="en">Input/Output Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_debug.html">
+                    <span class="en">Debugging Functions</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/rs_graphics.html">
+                    <span class="en">Graphics Functions and Types</span>
+                  </a></li>
+                  <li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference/index.html">
+                    <span class="en">Index</span>
+                  </a></li>
+                </ul>
               </li>
              </ul>
    </li>
@@ -588,4 +641,3 @@
     changeNavLang(getLangPref());
 //-->
 </script>
-
diff --git a/docs/html/guide/topics/renderscript/reference/index.jd b/docs/html/guide/topics/renderscript/reference/index.jd
new file mode 100644
index 0000000..9221bfc
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/index.jd
@@ -0,0 +1,2837 @@
+page.title=RenderScript Index
+
+@jd:body
+
+<div class='renderscript'>
+<h2 style='margin-bottom: 0px;'>Constants</h2>
+<table class='jd-sumtable'><tbody>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_1_PI'>M_1_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      1 / pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_2_PI'>M_2_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 / pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_2_SQRTPI'>M_2_SQRTPI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 / sqrt(pi), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_E'>M_E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LN10'>M_LN10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_e(10), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LN2'>M_LN2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_e(2), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LOG10E'>M_LOG10E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_10(e), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LOG2E'>M_LOG2E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_2(e), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI'>M_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI_2'>M_PI_2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi / 2, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI_4'>M_PI_4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi / 4, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_SQRT1_2'>M_SQRT1_2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      1 / sqrt(2), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_SQRT2'>M_SQRT2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      sqrt(2), as a 32 bit float
+    </td>
+  </tr>
+</tbody></table>
+<h2 style='margin-bottom: 0px;'>Types</h2>
+<table class='jd-sumtable'><tbody>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char2'>char2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char3'>char3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char4'>char4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double2'>double2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double3'>double3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double4'>double4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float2'>float2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float3'>float3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float4'>float4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int16_t'>int16_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int2'>int2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int3'>int3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int4'>int4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int64_t'>int64_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int8_t'>int8_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long2'>long2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long3'>long3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long4'>long4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation_cubemap_face'>rs_allocation_cubemap_face</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Enum for selecting cube map faces
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation_usage_type'>rs_allocation_usage_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Bitfield to specify how an allocation is used
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Element data kind
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Element basic data type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_element'>rs_element</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to an element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rs_for_each_strategy_t'>rs_for_each_strategy_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Suggested cell processing order
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2x2 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      3x3 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      4x4 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap T value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_script'>rs_script</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Script
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rs_script_call_t'>rs_script_call_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cell iteration information
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rs_time_t'>rs_time_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Seconds since January 1, 1970
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rs_tm'>rs_tm</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Date and time structure
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_type'>rs_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short2'>short2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short3'>short3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short4'>short4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:size_t'>size_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Unsigned size type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ssize_t'>ssize_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Signed size type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar'>uchar</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint'>uint</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint16_t'>uint16_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint2'>uint2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint3'>uint3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint4'>uint4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint64_t'>uint64_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint8_t'>uint8_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong'>ulong</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort'>ushort</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 16 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 16 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 16 bit unsigned integers
+    </td>
+  </tr>
+</tbody></table>
+<h2 style='margin-bottom: 0px;'>Functions</h2>
+<table class='jd-sumtable'><tbody>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:abs'>abs</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Absolute value of an integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acos'>acos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acosh'>acosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acospi'>acospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse cosine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asin'>asin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asinh'>asinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asinpi'>asinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse sine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan'>atan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan2'>atan2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent of a ratio
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan2pi'>atan2pi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent of a ratio, divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atanh'>atanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atanpi'>atanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cbrt'>cbrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cube root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ceil'>ceil</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Smallest integer not less than a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:clamp'>clamp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Restrain a value to a range
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:clz'>clz</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Number of leading 0 bits
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:convert'>convert</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert numerical vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:copysign'>copysign</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copies the sign of a number to another
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cos'>cos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cosh'>cosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hypebolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cospi'>cospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cosine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:cross'>cross</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cross product of two vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:degrees'>degrees</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Converts radians into degrees
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:distance'>distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:dot'>dot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Dot product of two vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:erf'>erf</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mathematical error function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:erfc'>erfc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mathematical complementary error function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp'>exp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp10'>exp10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      10 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp2'>exp2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:expm1'>expm1</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e raised to a number minus one
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fabs'>fabs</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Absolute value of a float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_distance'>fast_distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_length'>fast_length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_normalize'>fast_normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate normalized vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fdim'>fdim</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive difference between two values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:floor'>floor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Smallest integer not greater than a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fma'>fma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply and add
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmax'>fmax</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Maximum of two floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmin'>fmin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Minimum of two floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmod'>fmod</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Modulo
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fract'>fract</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive fractional part
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:frexp'>frexp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Binary mantissa and exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_recip'>half_recip</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_rsqrt'>half_rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal of a square root computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_sqrt'>half_sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Square root computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:hypot'>hypot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hypotenuse
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ilogb'>ilogb</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base two exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ldexp'>ldexp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Creates a floating point from mantissa and exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:length'>length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:lgamma'>lgamma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm of the gamma function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log'>log</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log10'>log10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base 10 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log1p'>log1p</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm of a value plus 1
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log2'>log2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base 2 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:logb'>logb</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base two exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:mad'>mad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply and add
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:max'>max</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Maximum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:min'>min</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Minimum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:mix'>mix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mixes two values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:modf'>modf</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Integral and fractional components
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:nan'>nan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Not a Number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acos'>native_acos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acosh'>native_acosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acospi'>native_acospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse cosine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asin'>native_asin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asinh'>native_asinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asinpi'>native_asinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse sine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan'>native_atan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan2'>native_atan2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent of a ratio
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan2pi'>native_atan2pi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent of a ratio, divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atanh'>native_atanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atanpi'>native_atanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cbrt'>native_cbrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cube root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cos'>native_cos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cosh'>native_cosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hypebolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cospi'>native_cospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cosine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_distance'>native_distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_divide'>native_divide</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp'>native_exp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate e raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp10'>native_exp10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate 10 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp2'>native_exp2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate 2 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_expm1'>native_expm1</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate e raised to a number minus one
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_hypot'>native_hypot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hypotenuse
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_length'>native_length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log'>native_log</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate natural logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log10'>native_log10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate base 10 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log1p'>native_log1p</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate natural logarithm of a value plus 1
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log2'>native_log2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate base 2 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_normalize'>native_normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximately normalize a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_powr'>native_powr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate positive base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_recip'>native_recip</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate reciprocal
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_rootn'>native_rootn</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate nth root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_rsqrt'>native_rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate reciprocal of a square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sin'>native_sin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sincos'>native_sincos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine and cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sinh'>native_sinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sinpi'>native_sinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sqrt'>native_sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tan'>native_tan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tanh'>native_tanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tanpi'>native_tanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate tangent of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:nextafter'>nextafter</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Next floating point number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:normalize'>normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Normalize a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:pow'>pow</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:pown'>pown</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base raised to an integer exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:powr'>powr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:radians'>radians</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Converts degrees into radians
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:remainder'>remainder</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Remainder of a division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:remquo'>remquo</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Remainder and quotient of a division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rint'>rint</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Round to even
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rootn'>rootn</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Nth root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:round'>round</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Round away from zero
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationCopy1DRange'>rsAllocationCopy1DRange</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copy consecutive cells between allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationCopy2DRange'>rsAllocationCopy2DRange</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copy a rectangular region of cells between allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimFaces'>rsAllocationGetDimFaces</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Presence of more than one face
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimLOD'>rsAllocationGetDimLOD</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Presence of levels of detail
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimX'>rsAllocationGetDimX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the X dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimY'>rsAllocationGetDimY</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the Y dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimZ'>rsAllocationGetDimZ</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the Z dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetElement'>rsAllocationGetElement</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the object that describes the cell of an Allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsAllocationIoReceive'>rsAllocationIoReceive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Receive new content from the queue
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsAllocationIoSend'>rsAllocationIoSend</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send new content to the queue
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationVLoadX'>rsAllocationVLoadX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get a vector from an allocation of scalars
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationVStoreX'>rsAllocationVStoreX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Store a vector into an allocation of scalars
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicAdd'>rsAtomicAdd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe addition
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicAnd'>rsAtomicAnd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise and
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicCas'>rsAtomicCas</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe compare and set
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicDec'>rsAtomicDec</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe decrement
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicInc'>rsAtomicInc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe increment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicMax'>rsAtomicMax</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe maximum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicMin'>rsAtomicMin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe minimum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicOr'>rsAtomicOr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise or
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicSub'>rsAtomicSub</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe subtraction
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicXor'>rsAtomicXor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise exclusive or
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsClearObject'>rsClearObject</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Release an object
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_debug.html#android_rs:rsDebug'>rsDebug</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Log a message and values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetBytesSize'>rsElementGetBytesSize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetDataKind'>rsElementGetDataKind</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Kind of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetDataType'>rsElementGetDataType</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Data type of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElement'>rsElementGetSubElement</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sub-element of a complex Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementArraySize'>rsElementGetSubElementArraySize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Array size of a sub-element of a complex Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementCount'>rsElementGetSubElementCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Number of sub-elements
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementName'>rsElementGetSubElementName</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Name of a sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementNameLength'>rsElementGetSubElementNameLength</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Length of the name of a sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementOffsetBytes'>rsElementGetSubElementOffsetBytes</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Offset of the instantiated sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetVectorSize'>rsElementGetVectorSize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Vector size of the Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsExtractFrustumPlanes'>rsExtractFrustumPlanes</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Compute frustum planes
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rsForEach'>rsForEach</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Invoke the root kernel of a script
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsGetDt'>rsGetDt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Elapsed time since last call
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Return a cell from an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_U'>rsGetElementAtYuv_uchar_U</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the U component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_V'>rsGetElementAtYuv_uchar_V</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the V component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_Y'>rsGetElementAtYuv_uchar_Y</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the Y component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsIsObject'>rsIsObject</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Check for an empty handle
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsIsSphereInFrustum'>rsIsSphereInFrustum</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Checks if a sphere is within the frustum planes
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsLocaltime'>rsLocaltime</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert to local time
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixGet'>rsMatrixGet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get one element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixInverse'>rsMatrixInverse</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverts a matrix in place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixInverseTranspose'>rsMatrixInverseTranspose</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverts and transpose a matrix in place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoad'>rsMatrixLoad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load or copy a matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadFrustum'>rsMatrixLoadFrustum</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a frustum projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadIdentity'>rsMatrixLoadIdentity</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load identity matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadMultiply'>rsMatrixLoadMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply two matrices
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadOrtho'>rsMatrixLoadOrtho</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load an orthographic projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadPerspective'>rsMatrixLoadPerspective</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a perspective projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadRotate'>rsMatrixLoadRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a rotation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadScale'>rsMatrixLoadScale</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a scaling matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadTranslate'>rsMatrixLoadTranslate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a translation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply a matrix by a vector or another matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixRotate'>rsMatrixRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a rotation to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixScale'>rsMatrixScale</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a scaling to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixSet'>rsMatrixSet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Set one element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a translation to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixTranspose'>rsMatrixTranspose</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Transpose a matrix place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsPackColorTo8888'>rsPackColorTo8888</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a uchar4 RGBA from floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionAdd'>rsQuaternionAdd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Add two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionConjugate'>rsQuaternionConjugate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Conjugate a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionDot'>rsQuaternionDot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Dot product of two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionGetMatrixUnit'>rsQuaternionGetMatrixUnit</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get a rotation matrix from a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionLoadRotate'>rsQuaternionLoadRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a rotation quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionLoadRotateUnit'>rsQuaternionLoadRotateUnit</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Quaternion that represents a rotation about an arbitrary unit vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionMultiply'>rsQuaternionMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply a quaternion by a scalar or another quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionNormalize'>rsQuaternionNormalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Normalize a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionSet'>rsQuaternionSet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionSlerp'>rsQuaternionSlerp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Spherical linear interpolation between two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsRand'>rsRand</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Pseudo-random number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsSample'>rsSample</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sample a value from a texture allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetAnisotropy'>rsSamplerGetAnisotropy</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Anisotropy of the Sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetMagnification'>rsSamplerGetMagnification</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler magnification value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetMinification'>rsSamplerGetMinification</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler minification value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetWrapS'>rsSamplerGetWrapS</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap S value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetWrapT'>rsSamplerGetWrapT</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap T value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsSendToClient'>rsSendToClient</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send a message to the client, non-blocking
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsSendToClientBlocking'>rsSendToClientBlocking</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send a message to the client, blocking
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsSetElementAt'>rsSetElementAt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Set a cell of an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsTime'>rsTime</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Seconds since January 1, 1970
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsUnpackColor8888'>rsUnpackColor8888</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a float4 RGBA from uchar4
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsUptimeMillis'>rsUptimeMillis</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      System uptime in milliseconds
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsUptimeNanos'>rsUptimeNanos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      System uptime in nanoseconds
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsYuvToRGBA'>rsYuvToRGBA</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert a YUV value to RGBA
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsqrt'>rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal of a square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sign'>sign</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sign of a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sin'>sin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sincos'>sincos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine and cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sinh'>sinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sinpi'>sinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sqrt'>sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:step'>step</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      0 if less than a value, 0 otherwise
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tan'>tan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tanh'>tanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tanpi'>tanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Tangent of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tgamma'>tgamma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Gamma function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:trunc'>trunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Truncates a floating point
+    </td>
+  </tr>
+</tbody></table>
+<h2 style='margin-bottom: 0px;'>Deprecated Types</h2>
+<table class='jd-sumtable'><tbody>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_blend_dst_func'>rs_blend_dst_func</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Blend destination function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_blend_src_func'>rs_blend_src_func</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Blend source function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_cull_mode'>rs_cull_mode</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Culling mode
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_depth_func'>rs_depth_func</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Depth function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_font'>rs_font</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a Font
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a Mesh
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_primitive'>rs_primitive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  How to intepret mesh vertex data
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramFragment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramRaster
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramStore
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_vertex'>rs_program_vertex</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramVertex
+    </td>
+  </tr>
+</tbody></table>
+<h2 style='margin-bottom: 0px;'>Deprecated Functions</h2>
+<table class='jd-sumtable'><tbody>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsClamp'>rsClamp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Restrain a value to a range
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsFrac'>rsFrac</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Returns the fractional part of a float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsGetAllocation'>rsGetAllocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the Allocation for a given pointer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgAllocationSyncAll'>rsgAllocationSyncAll</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Sync the contents of an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindColorTarget'>rsgBindColorTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the color target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindConstant'>rsgBindConstant</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a constant allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindDepthTarget'>rsgBindDepthTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the depth target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindFont'>rsgBindFont</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a font object
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramFragment'>rsgBindProgramFragment</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramFragment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramRaster'>rsgBindProgramRaster</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramRaster
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramStore'>rsgBindProgramStore</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramStore
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramVertex'>rsgBindProgramVertex</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramVertex
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindSampler'>rsgBindSampler</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindTexture'>rsgBindTexture</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a texture allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearAllRenderTargets'>rsgClearAllRenderTargets</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear all color and depth targets
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearColor'>rsgClearColor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the specified color from the surface
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearColorTarget'>rsgClearColorTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the color target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearDepth'>rsgClearDepth</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the depth surface
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearDepthTarget'>rsgClearDepthTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the depth target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawMesh'>rsgDrawMesh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a mesh
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawQuad'>rsgDrawQuad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a quad
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawQuadTexCoords'>rsgDrawQuadTexCoords</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a textured quad
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawRect'>rsgDrawRect</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a rectangle
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawSpriteScreenspace'>rsgDrawSpriteScreenspace</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw rectangles in screenspace
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawText'>rsgDrawText</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a text string
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgFinish'>rsgFinish</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  End rendering commands
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgFontColor'>rsgFontColor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the font color
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgGetHeight'>rsgGetHeight</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the surface height
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgGetWidth'>rsgGetWidth</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the surface width
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeasureText'>rsgMeasureText</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the bounding box for a text string
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshComputeBoundingBox'>rsgMeshComputeBoundingBox</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Compute a bounding box
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetIndexAllocation'>rsgMeshGetIndexAllocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return an allocation containing index data
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetPrimitive'>rsgMeshGetPrimitive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the primitive
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetPrimitiveCount'>rsgMeshGetPrimitiveCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the number of index sets
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetVertexAllocation'>rsgMeshGetVertexAllocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return a vertex allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetVertexAllocationCount'>rsgMeshGetVertexAllocationCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the number of vertex allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramFragmentConstantColor'>rsgProgramFragmentConstantColor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the constant color for a fixed function emulation program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramRasterGetCullMode'>rsgProgramRasterGetCullMode</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program raster cull mode
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramRasterIsPointSpriteEnabled'>rsgProgramRasterIsPointSpriteEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program raster point sprite state
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreGetBlendDstFunc'>rsgProgramStoreGetBlendDstFunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store blend destination function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreGetBlendSrcFunc'>rsgProgramStoreGetBlendSrcFunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store blend source function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreGetDepthFunc'>rsgProgramStoreGetDepthFunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store depth function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskAlphaEnabled'>rsgProgramStoreIsColorMaskAlphaEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store alpha component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskBlueEnabled'>rsgProgramStoreIsColorMaskBlueEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store blur component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskGreenEnabled'>rsgProgramStoreIsColorMaskGreenEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store green component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskRedEnabled'>rsgProgramStoreIsColorMaskRedEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store red component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsDepthMaskEnabled'>rsgProgramStoreIsDepthMaskEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store depth mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsDitherEnabled'>rsgProgramStoreIsDitherEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store dither state
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexGetProjectionMatrix'>rsgProgramVertexGetProjectionMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the projection matrix for a fixed function vertex program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexLoadModelMatrix'>rsgProgramVertexLoadModelMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Load the model matrix for a bound fixed function vertex program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexLoadProjectionMatrix'>rsgProgramVertexLoadProjectionMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Load the projection matrix for a bound fixed function vertex program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexLoadTextureMatrix'>rsgProgramVertexLoadTextureMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Load the texture matrix for a bound fixed function vertex program
+    </td>
+  </tr>
+</tbody></table>
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/overview.jd b/docs/html/guide/topics/renderscript/reference/overview.jd
new file mode 100644
index 0000000..f85b843
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/overview.jd
@@ -0,0 +1,2676 @@
+page.title=RenderScript Runtime API Reference
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> RenderScript is a high-performance runtime that provides compute operations at the native level.
+RenderScript code is compiled on devices at runtime to allow platform-independence as well.
+</p>
+
+<p> This reference documentation describes the RenderScript runtime APIs, which you can utilize
+to write RenderScript code in C99. The RenderScript compute header files are automatically
+included for you.
+</p>
+
+<p> To use RenderScript, you need to utilize the RenderScript runtime APIs documented here as well
+as the Android framework APIs for RenderScript.  For documentation on the Android framework
+APIs, see the <a target="_parent" href="http://developer.android.com/reference/android/renderscript/package-summary.html">android.renderscript</a> package reference.
+</p>
+
+<p> For more information on how to develop with RenderScript and how the runtime and Android
+framework APIs interact, see the <a target="_parent" href="http://developer.android.com/guide/topics/renderscript/index.html">RenderScript developer guide</a> and the <a target="_parent" href="http://developer.android.com/resources/samples/RenderScript/index.html">RenderScript samples</a>.
+</p>
+<h2>Numerical Types</h2>
+<p> <h5>Scalars:</h5>
+</p>
+
+<p> RenderScript supports the following scalar numerical types:
+<table>
+<tr><td>                 </td>  <td>8 bits        </td>   <td>16 bits         </td>   <td>32 bits       </td>   <td>64 bits</td></tr>
+<tr><td>Integer:         </td>  <td>char, <a href='rs_value_types.html#android_rs:int8_t'>int8_t</a>  </td>   <td>short, <a href='rs_value_types.html#android_rs:int16_t'>int16_t</a>  </td>   <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>       </td>   <td>long, long long, <a href='rs_value_types.html#android_rs:int64_t'>int64_t</a></td></tr>
+<tr><td>Unsigned integer:</td>  <td>uchar, <a href='rs_value_types.html#android_rs:uint8_t'>uint8_t</a></td>   <td>ushort, <a href='rs_value_types.html#android_rs:uint16_t'>uint16_t</a></td>   <td>uint, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a></td>   <td>ulong, <a href='rs_value_types.html#android_rs:uint64_t'>uint64_t</a></td></tr>
+<tr><td>Floating point:  </td>  <td>              </td>   <td>                </td>   <td>float         </td>   <td>double</td></tr>
+</table>
+</p>
+
+<p> <h5>Vectors:</h5>
+</p>
+
+<p> RenderScript supports fixed size vectors of length 2, 3, and 4.
+Vectors are declared using the common type name followed by a 2, 3, or 4.
+E.g. <a href='rs_value_types.html#android_rs:float4'>float4</a>, <a href='rs_value_types.html#android_rs:int3'>int3</a>, <a href='rs_value_types.html#android_rs:double2'>double2</a>, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a>.
+</p>
+
+<p> To create vector literals, use the vector type followed by the values enclosed
+between parentheses, e.g. <code>(float3)(1.0f, 2.0f, 3.0f)</code>.
+</p>
+
+<p> Entries of a vector can be accessed using different naming styles.
+</p>
+
+<p> Single entries can be accessed by following the variable name with a dot and:<ul>
+<li>The letters x, y, z, and w,</li>
+<li>The letters r, g, b, and a,</li>
+<li>The letter s or S, followed by a zero based index.</li></ul>
+</p>
+
+<p> For example, with <code>int4 myVar;</code> the following are equivalent:<code><br/>
+  myVar.x == myVar.r == myVar.s0 == myVar.S0<br/>
+  myVar.y == myVar.g == myVar.s1 == myVar.S1<br/>
+  myVar.z == myVar.b == myVar.s2 == myVar.S2<br/>
+  myVar.w == myVar.a == myVar.s3 == myVar.S3</code>
+</p>
+
+<p> Multiple entries of a vector can be accessed at once by using an identifier that is
+the concatenation of multiple letters or indices.  The resulting vector has a size
+equal to the number of entries named.
+</p>
+
+<p> With the example above, the middle two entries can be accessed using
+<code>myVar.yz</code>, <code>myVar.gb</code>, <code>myVar.s12</code>, and <code>myVar.S12</code>.
+</p>
+
+<p> The entries don't have to be contiguous or in increasing order.  Entries can even be
+repeated, as long as we're not trying to assign to it.  You also can't mix the naming
+styles.
+</p>
+
+<p> Here are examples of what can or can't be done:<code><br/>
+float4 v4;<br/>
+float3 v3;<br/>
+float2 v2;<br/>
+v2 = v4.xx; // Valid<br/>
+v3 = v4.zxw; // Valid<br/>
+v3 = v4.bba; // Valid<br/>
+v3 = v4.s032; // Valid<br/>
+v3.s120 = v4.S233; // Valid<br/>
+v4.yz = v3.rg; // Valid<br/>
+v4.yzx = v3.rg; // Invalid: mismatched sizes<br/>
+v4.yzz = v3; // Invalid: z appears twice in an assignment<br/>
+v3 = v3.xas0; // Invalid: can't mix xyzw with rgba nor s0...<br/>
+v3 = v4.s034; // Invalid: the digit can only be 0, 1, 2, or 3<br/>
+</code>
+</p>
+
+<p> <h5>Matrices and Quaternions:</h5>
+</p>
+
+<p> RenderScript supports fixed size square matrices of floats of size 2x2, 3x3, and 4x4.
+The types are named <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>, <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>, and <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>.  See
+<a href='rs_matrix.html'>Matrix Functions</a> for the list of operations.
+</p>
+
+<p> Quaternions are also supported via <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>.  See <a href='rs_quaternion.html'>Quaterion Functions</a> for the list
+of operations.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char2'>char2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char3'>char3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char4'>char4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double2'>double2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double3'>double3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double4'>double4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float2'>float2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float3'>float3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float4'>float4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int16_t'>int16_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int2'>int2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int3'>int3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int4'>int4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int64_t'>int64_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int8_t'>int8_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long2'>long2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long3'>long3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long4'>long4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2x2 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      3x3 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      4x4 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short2'>short2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short3'>short3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short4'>short4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:size_t'>size_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Unsigned size type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ssize_t'>ssize_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Signed size type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar'>uchar</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint'>uint</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint16_t'>uint16_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint2'>uint2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint3'>uint3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint4'>uint4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint64_t'>uint64_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint8_t'>uint8_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong'>ulong</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort'>ushort</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 16 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 16 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 16 bit unsigned integers
+    </td>
+  </tr>
+</tbody></table>
+<h2>Object Types</h2>
+<p> The types below are used to manipulate RenderScript objects like allocations, samplers,
+elements, and scripts.  Most of these object are created using the Java RenderScript APIs.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation_cubemap_face'>rs_allocation_cubemap_face</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Enum for selecting cube map faces
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation_usage_type'>rs_allocation_usage_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Bitfield to specify how an allocation is used
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Element data kind
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Element basic data type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_element'>rs_element</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to an element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap T value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_script'>rs_script</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Script
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_type'>rs_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Type
+    </td>
+  </tr>
+</tbody></table>
+<h2>Conversion Functions</h2>
+<p> The functions below convert from a numerical vector type to another, of from one color
+representation to another.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:convert'>convert</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert numerical vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsPackColorTo8888'>rsPackColorTo8888</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a uchar4 RGBA from floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsUnpackColor8888'>rsUnpackColor8888</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a float4 RGBA from uchar4
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsYuvToRGBA'>rsYuvToRGBA</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert a YUV value to RGBA
+    </td>
+  </tr>
+</tbody></table>
+<h2>Mathematical Constants and Functions</h2>
+<p> The mathematical functions below can be applied to scalars and vectors.   When applied
+to vectors, the returned value is a vector of the function applied to each entry of the input.
+</p>
+
+<p> For example:<code><br/>
+float3 a, b;<br/>
+// The following call sets<br/>
+//   a.x to sin(b.x),<br/>
+//   a.y to sin(b.y), and<br/>
+//   a.z to sin(b.z).<br/>
+a = sin(b);<br/>
+</code>
+</p>
+
+<p> See <a href='rs_vector_math.html'>Vector Math Functions</a> for functions like <a href='rs_vector_math.html#android_rs:distance'>distance</a>() and <a href='rs_vector_math.html#android_rs:length'>length</a>() that interpret
+instead the input as a single vector in n-dimensional space.
+</p>
+
+<p> The precision of the mathematical operations on 32 bit floats is affected by the pragmas
+rs_fp_relaxed and rs_fp_full.  Under rs_fp_relaxed, subnormal values may be flushed to zero and
+rounding may be done towards zero.  In comparison, rs_fp_full requires correct handling of
+subnormal values, i.e. smaller than 1.17549435e-38f.  rs_fp_rull also requires round to nearest
+with ties to even.
+</p>
+
+<p> Different precision/speed tradeoffs can be achieved by using variants of the common math
+functions.  Functions with a name starting with<ul>
+<li>native_: May have custom hardware implementations with weaker precision.  Additionally,
+  subnormal values may be flushed to zero, rounding towards zero may be used, and NaN and
+  infinity input may not be handled correctly.</li>
+<li>half_: May perform internal computations using 16 bit floats.  Additionally, subnormal
+  values may be flushed to zero, and rounding towards zero may be used.</li>
+</ul>
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Constants</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_1_PI'>M_1_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      1 / pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_2_PI'>M_2_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 / pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_2_SQRTPI'>M_2_SQRTPI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 / sqrt(pi), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_E'>M_E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LN10'>M_LN10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_e(10), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LN2'>M_LN2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_e(2), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LOG10E'>M_LOG10E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_10(e), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LOG2E'>M_LOG2E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_2(e), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI'>M_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI_2'>M_PI_2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi / 2, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI_4'>M_PI_4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi / 4, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_SQRT1_2'>M_SQRT1_2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      1 / sqrt(2), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_SQRT2'>M_SQRT2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      sqrt(2), as a 32 bit float
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:abs'>abs</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Absolute value of an integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acos'>acos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acosh'>acosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acospi'>acospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse cosine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asin'>asin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asinh'>asinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asinpi'>asinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse sine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan'>atan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan2'>atan2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent of a ratio
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan2pi'>atan2pi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent of a ratio, divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atanh'>atanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atanpi'>atanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cbrt'>cbrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cube root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ceil'>ceil</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Smallest integer not less than a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:clamp'>clamp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Restrain a value to a range
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:clz'>clz</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Number of leading 0 bits
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:copysign'>copysign</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copies the sign of a number to another
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cos'>cos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cosh'>cosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hypebolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cospi'>cospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cosine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:degrees'>degrees</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Converts radians into degrees
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:erf'>erf</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mathematical error function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:erfc'>erfc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mathematical complementary error function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp'>exp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp10'>exp10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      10 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp2'>exp2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:expm1'>expm1</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e raised to a number minus one
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fabs'>fabs</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Absolute value of a float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fdim'>fdim</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive difference between two values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:floor'>floor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Smallest integer not greater than a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fma'>fma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply and add
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmax'>fmax</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Maximum of two floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmin'>fmin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Minimum of two floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmod'>fmod</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Modulo
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fract'>fract</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive fractional part
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:frexp'>frexp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Binary mantissa and exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_recip'>half_recip</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_rsqrt'>half_rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal of a square root computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_sqrt'>half_sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Square root computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:hypot'>hypot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hypotenuse
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ilogb'>ilogb</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base two exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ldexp'>ldexp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Creates a floating point from mantissa and exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:lgamma'>lgamma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm of the gamma function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log'>log</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log10'>log10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base 10 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log1p'>log1p</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm of a value plus 1
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log2'>log2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base 2 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:logb'>logb</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base two exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:mad'>mad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply and add
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:max'>max</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Maximum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:min'>min</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Minimum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:mix'>mix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mixes two values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:modf'>modf</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Integral and fractional components
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:nan'>nan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Not a Number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acos'>native_acos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acosh'>native_acosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acospi'>native_acospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse cosine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asin'>native_asin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asinh'>native_asinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asinpi'>native_asinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse sine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan'>native_atan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan2'>native_atan2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent of a ratio
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan2pi'>native_atan2pi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent of a ratio, divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atanh'>native_atanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atanpi'>native_atanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cbrt'>native_cbrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cube root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cos'>native_cos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cosh'>native_cosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hypebolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cospi'>native_cospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cosine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_divide'>native_divide</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp'>native_exp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate e raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp10'>native_exp10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate 10 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp2'>native_exp2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate 2 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_expm1'>native_expm1</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate e raised to a number minus one
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_hypot'>native_hypot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hypotenuse
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log'>native_log</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate natural logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log10'>native_log10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate base 10 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log1p'>native_log1p</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate natural logarithm of a value plus 1
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log2'>native_log2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate base 2 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_powr'>native_powr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate positive base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_recip'>native_recip</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate reciprocal
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_rootn'>native_rootn</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate nth root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_rsqrt'>native_rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate reciprocal of a square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sin'>native_sin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sincos'>native_sincos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine and cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sinh'>native_sinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sinpi'>native_sinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sqrt'>native_sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tan'>native_tan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tanh'>native_tanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tanpi'>native_tanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate tangent of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:nextafter'>nextafter</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Next floating point number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:pow'>pow</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:pown'>pown</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base raised to an integer exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:powr'>powr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:radians'>radians</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Converts degrees into radians
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:remainder'>remainder</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Remainder of a division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:remquo'>remquo</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Remainder and quotient of a division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rint'>rint</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Round to even
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rootn'>rootn</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Nth root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:round'>round</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Round away from zero
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsRand'>rsRand</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Pseudo-random number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsqrt'>rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal of a square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sign'>sign</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sign of a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sin'>sin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sincos'>sincos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine and cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sinh'>sinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sinpi'>sinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sqrt'>sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:step'>step</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      0 if less than a value, 0 otherwise
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tan'>tan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tanh'>tanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tanpi'>tanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Tangent of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tgamma'>tgamma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Gamma function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:trunc'>trunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Truncates a floating point
+    </td>
+  </tr>
+</tbody></table>
+<h2>Vector Math Functions</h2>
+<p> These functions interpret the input arguments as representation of vectors in
+n-dimensional space.
+</p>
+
+<p> The precision of the mathematical operations on 32 bit floats is affected by the pragmas
+rs_fp_relaxed and rs_fp_full.  See <a href='rs_math.html'>Mathematical Constants and Functions</a> for details.
+</p>
+
+<p> Different precision/speed tradeoffs can be achieved by using variants of the common math
+functions.  Functions with a name starting with<ul>
+<li>native_: May have custom hardware implementations with weaker precision.  Additionally,
+  subnormal values may be flushed to zero, rounding towards zero may be used, and NaN and
+  infinity input may not be handled correctly.</li>
+<li>fast_: May perform internal computations using 16 bit floats.  Additionally, subnormal
+  values may be flushed to zero, and rounding towards zero may be used.</li>
+</ul>
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:cross'>cross</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cross product of two vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:distance'>distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:dot'>dot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Dot product of two vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_distance'>fast_distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_length'>fast_length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_normalize'>fast_normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate normalized vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:length'>length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_distance'>native_distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_length'>native_length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_normalize'>native_normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximately normalize a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:normalize'>normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Normalize a vector
+    </td>
+  </tr>
+</tbody></table>
+<h2>Matrix Functions</h2>
+<p> These functions let you manipulate square matrices of rank 2x2, 3x3, and 4x4.
+They are particularly useful for graphical transformations and are compatible
+with OpenGL.
+</p>
+
+<p> We use a zero-based index for rows and columns.  E.g. the last element of a
+<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a> is found at (3, 3).
+</p>
+
+<p> RenderScript uses column-major matrices and column-based vectors.  Transforming
+a vector is done by postmultiplying the vector, e.g. <code>(matrix * vector)</code>,
+as provided by <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+
+<p> To create a transformation matrix that performs two transformations at once,
+multiply the two source matrices, with the first transformation as the right
+argument.  E.g. to create a transformation matrix that applies the
+transformation s1 followed by s2, call <code>rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1)</code>.
+This derives from <code>s2 * (s1 * v)</code>, which is <code>(s2 * s1) * v</code>.
+</p>
+
+<p> We have two style of functions to create transformation matrices:
+rsMatrixLoad<i>Transformation</i> and rsMatrix<i>Transformation</i>.  The former
+style simply stores the transformation matrix in the first argument.  The latter
+modifies a pre-existing transformation matrix so that the new transformation
+happens first.  E.g. if you call <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>() on a matrix that already
+does a scaling, the resulting matrix when applied to a vector will first do the
+translation then the scaling.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsExtractFrustumPlanes'>rsExtractFrustumPlanes</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Compute frustum planes
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsIsSphereInFrustum'>rsIsSphereInFrustum</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Checks if a sphere is within the frustum planes
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixGet'>rsMatrixGet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get one element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixInverse'>rsMatrixInverse</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverts a matrix in place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixInverseTranspose'>rsMatrixInverseTranspose</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverts and transpose a matrix in place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoad'>rsMatrixLoad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load or copy a matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadFrustum'>rsMatrixLoadFrustum</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a frustum projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadIdentity'>rsMatrixLoadIdentity</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load identity matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadMultiply'>rsMatrixLoadMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply two matrices
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadOrtho'>rsMatrixLoadOrtho</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load an orthographic projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadPerspective'>rsMatrixLoadPerspective</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a perspective projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadRotate'>rsMatrixLoadRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a rotation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadScale'>rsMatrixLoadScale</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a scaling matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadTranslate'>rsMatrixLoadTranslate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a translation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply a matrix by a vector or another matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixRotate'>rsMatrixRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a rotation to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixScale'>rsMatrixScale</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a scaling to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixSet'>rsMatrixSet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Set one element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a translation to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixTranspose'>rsMatrixTranspose</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Transpose a matrix place
+    </td>
+  </tr>
+</tbody></table>
+<h2>Quaternion Functions</h2>
+<p> The following functions manipulate quaternions.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionAdd'>rsQuaternionAdd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Add two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionConjugate'>rsQuaternionConjugate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Conjugate a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionDot'>rsQuaternionDot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Dot product of two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionGetMatrixUnit'>rsQuaternionGetMatrixUnit</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get a rotation matrix from a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionLoadRotate'>rsQuaternionLoadRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a rotation quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionLoadRotateUnit'>rsQuaternionLoadRotateUnit</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Quaternion that represents a rotation about an arbitrary unit vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionMultiply'>rsQuaternionMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply a quaternion by a scalar or another quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionNormalize'>rsQuaternionNormalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Normalize a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionSet'>rsQuaternionSet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionSlerp'>rsQuaternionSlerp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Spherical linear interpolation between two quaternions
+    </td>
+  </tr>
+</tbody></table>
+<h2>Atomic Update Functions</h2>
+<p> To update values shared between multiple threads, use the functions below.
+They ensure that the values are atomically updated, i.e. that the memory
+reads, the updates, and the memory writes are done in the right order.
+</p>
+
+<p> These functions are slower than their non-atomic equivalents, so use
+them only when synchronization is needed.
+</p>
+
+<p> Note that in RenderScript, your code is likely to be running in separate
+threads even though you did not explicitely create them.  The RenderScript
+runtime will very often split the execution of one kernel across multiple
+threads.  Updating globals should be done with atomic functions.  If possible,
+modify your algorithm to avoid them altogether.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicAdd'>rsAtomicAdd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe addition
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicAnd'>rsAtomicAnd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise and
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicCas'>rsAtomicCas</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe compare and set
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicDec'>rsAtomicDec</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe decrement
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicInc'>rsAtomicInc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe increment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicMax'>rsAtomicMax</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe maximum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicMin'>rsAtomicMin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe minimum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicOr'>rsAtomicOr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise or
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicSub'>rsAtomicSub</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe subtraction
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicXor'>rsAtomicXor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise exclusive or
+    </td>
+  </tr>
+</tbody></table>
+<h2>Time Functions and Types</h2>
+<p> The functions below can be used to tell the current clock time and the current
+system up time.  It is not recommended to call these functions inside of a kernel.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rs_time_t'>rs_time_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Seconds since January 1, 1970
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rs_tm'>rs_tm</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Date and time structure
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsGetDt'>rsGetDt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Elapsed time since last call
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsLocaltime'>rsLocaltime</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert to local time
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsTime'>rsTime</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Seconds since January 1, 1970
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsUptimeMillis'>rsUptimeMillis</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      System uptime in milliseconds
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsUptimeNanos'>rsUptimeNanos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      System uptime in nanoseconds
+    </td>
+  </tr>
+</tbody></table>
+<h2>Allocation Data Access Functions</h2>
+<p> The functions below can be used to get and set the cells that comprise
+an allocation.
+<ul>
+<li>Individual cells are accessed using the rsGetElementAt* and
+  <a href='rs_allocation_data.html#android_rs:rsSetElementAt'>rsSetElementAt</a> functions.</li>
+<li>Multiple cells can be copied using the rsAllocationCopy* and
+  rsAllocationV* functions.</li>
+<li>For getting values through a sampler, use <a href='rs_allocation_data.html#android_rs:rsSample'>rsSample</a>.</li>
+</ul>
+The <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a> and rsSetElement* functions are somewhat misnamed.
+They don't get or set elements, which are akin to data types; they get
+or set cells.  Think of them as rsGetCellAt and and rsSetCellAt.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationCopy1DRange'>rsAllocationCopy1DRange</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copy consecutive cells between allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationCopy2DRange'>rsAllocationCopy2DRange</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copy a rectangular region of cells between allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationVLoadX'>rsAllocationVLoadX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get a vector from an allocation of scalars
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationVStoreX'>rsAllocationVStoreX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Store a vector into an allocation of scalars
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Return a cell from an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_U'>rsGetElementAtYuv_uchar_U</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the U component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_V'>rsGetElementAtYuv_uchar_V</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the V component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_Y'>rsGetElementAtYuv_uchar_Y</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the Y component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsSample'>rsSample</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sample a value from a texture allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsSetElementAt'>rsSetElementAt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Set a cell of an allocation
+    </td>
+  </tr>
+</tbody></table>
+<h2>Object Characteristics Functions</h2>
+<p> The functions below can be used to query the characteristics of an Allocation, Element,
+or Sampler object.  These objects are created from Java.  You can't create them from a
+script.
+</p>
+
+<p> <h5>Allocations:</h5>
+</p>
+
+<p> Allocations are the primary method used to pass data to and from RenderScript kernels.
+</p>
+
+<p> They are a structured collection of cells that can be used to store bitmaps, textures,
+arbitrary data points, etc.
+</p>
+
+<p> This collection of cells may have many dimensions (X, Y, Z, Array0, Array1, Array2, Array3),
+faces (for cubemaps), and level of details (for mipmapping).
+</p>
+
+<p> See the <a href='http://developer.android.com/reference/android/renderscript/Allocation.html'>android.renderscript.Allocation</a> for details on to create Allocations.
+</p>
+
+<p> <h5>Elements:</h5>
+</p>
+
+<p> The term "element" is used a bit ambiguously in RenderScript, as both type information
+for the cells of an Allocation and the instantiation of that type.  For example:<ul>
+<li><a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> is a handle to a type specification, and</li>
+<li>In functions like <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a>(), "element" means the instantiation of the type,
+    i.e. a cell of an Allocation.</li></ul>
+</p>
+
+<p> The functions below let you query the characteristics of the type specificiation.
+</p>
+
+<p> An Element can specify a simple data types as found in C, e.g. an integer, float, or
+boolean.  It can also specify a handle to a RenderScript object.  See <a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a> for
+a list of basic types.
+</p>
+
+<p> Elements can specify fixed size vector (of size 2, 3, or 4) versions of the basic types.
+Elements can be grouped together into complex Elements, creating the equivalent of
+C structure definitions.
+</p>
+
+<p> Elements can also have a kind, which is semantic information used to interpret pixel
+data.  See <a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a>.
+</p>
+
+<p> When creating Allocations of common elements, you can simply use one of the many predefined
+Elements like <a href='http://developer.android.com/reference/android/renderscript/Element.html#F32_2(android.renderscript.RenderScript)'>F32_2</a>.
+</p>
+
+<p> To create complex Elements, use the <a href='http://developer.android.com/reference/android/renderscript/Element.Builder.html'>Element.Builder</a> Java class.
+</p>
+
+<p> <h5>Samplers:</h5>
+</p>
+
+<p> Samplers objects define how Allocations can be read as structure within a kernel.
+See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimFaces'>rsAllocationGetDimFaces</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Presence of more than one face
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimLOD'>rsAllocationGetDimLOD</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Presence of levels of detail
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimX'>rsAllocationGetDimX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the X dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimY'>rsAllocationGetDimY</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the Y dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimZ'>rsAllocationGetDimZ</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the Z dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetElement'>rsAllocationGetElement</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the object that describes the cell of an Allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsClearObject'>rsClearObject</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Release an object
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetBytesSize'>rsElementGetBytesSize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetDataKind'>rsElementGetDataKind</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Kind of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetDataType'>rsElementGetDataType</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Data type of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElement'>rsElementGetSubElement</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sub-element of a complex Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementArraySize'>rsElementGetSubElementArraySize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Array size of a sub-element of a complex Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementCount'>rsElementGetSubElementCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Number of sub-elements
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementName'>rsElementGetSubElementName</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Name of a sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementNameLength'>rsElementGetSubElementNameLength</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Length of the name of a sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementOffsetBytes'>rsElementGetSubElementOffsetBytes</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Offset of the instantiated sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetVectorSize'>rsElementGetVectorSize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Vector size of the Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsIsObject'>rsIsObject</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Check for an empty handle
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetAnisotropy'>rsSamplerGetAnisotropy</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Anisotropy of the Sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetMagnification'>rsSamplerGetMagnification</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler magnification value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetMinification'>rsSamplerGetMinification</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler minification value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetWrapS'>rsSamplerGetWrapS</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap S value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetWrapT'>rsSamplerGetWrapT</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap T value
+    </td>
+  </tr>
+</tbody></table>
+<h2>Kernel Invocation Functions and Types</h2>
+<p> The <a href='rs_for_each.html#android_rs:rsForEach'>rsForEach</a>() function can be used to invoke the root kernel of a script.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rs_for_each_strategy_t'>rs_for_each_strategy_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Suggested cell processing order
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rs_script_call_t'>rs_script_call_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cell iteration information
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rsForEach'>rsForEach</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Invoke the root kernel of a script
+    </td>
+  </tr>
+</tbody></table>
+<h2>Input/Output Functions</h2>
+<p> These functions are used to:<ul>
+<li>Send information to the Java client, and</li>
+<li>Send the processed allocation or receive the next allocation to process.</li></ul>
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsAllocationIoReceive'>rsAllocationIoReceive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Receive new content from the queue
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsAllocationIoSend'>rsAllocationIoSend</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send new content to the queue
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsSendToClient'>rsSendToClient</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send a message to the client, non-blocking
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsSendToClientBlocking'>rsSendToClientBlocking</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send a message to the client, blocking
+    </td>
+  </tr>
+</tbody></table>
+<h2>Debugging Functions</h2>
+<p> The functions below are intended to be used during application developement.
+They should not be used in shipping applications.
+</p>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_debug.html#android_rs:rsDebug'>rsDebug</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Log a message and values
+    </td>
+  </tr>
+</tbody></table>
+<h2>Graphics Functions and Types</h2>
+<p> The graphics subsystem of RenderScript has been deprecated.
+</p>
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_allocation_data.jd b/docs/html/guide/topics/renderscript/reference/rs_allocation_data.jd
new file mode 100644
index 0000000..3735cce
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_allocation_data.jd
@@ -0,0 +1,2925 @@
+page.title=RenderScript Allocation Data Access Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The functions below can be used to get and set the cells that comprise
+an allocation.
+<ul>
+<li>Individual cells are accessed using the rsGetElementAt* and
+  <a href='rs_allocation_data.html#android_rs:rsSetElementAt'>rsSetElementAt</a> functions.</li>
+<li>Multiple cells can be copied using the rsAllocationCopy* and
+  rsAllocationV* functions.</li>
+<li>For getting values through a sampler, use <a href='rs_allocation_data.html#android_rs:rsSample'>rsSample</a>.</li>
+</ul>
+The <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a> and rsSetElement* functions are somewhat misnamed.
+They don't get or set elements, which are akin to data types; they get
+or set cells.  Think of them as rsGetCellAt and and rsSetCellAt.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationCopy1DRange'>rsAllocationCopy1DRange</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copy consecutive cells between allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationCopy2DRange'>rsAllocationCopy2DRange</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copy a rectangular region of cells between allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationVLoadX'>rsAllocationVLoadX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get a vector from an allocation of scalars
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsAllocationVStoreX'>rsAllocationVStoreX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Store a vector into an allocation of scalars
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Return a cell from an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_U'>rsGetElementAtYuv_uchar_U</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the U component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_V'>rsGetElementAtYuv_uchar_V</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the V component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_Y'>rsGetElementAtYuv_uchar_Y</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the Y component of an allocation of YUVs
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsSample'>rsSample</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sample a value from a texture allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_allocation_data.html#android_rs:rsSetElementAt'>rsSetElementAt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Set a cell of an allocation
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsAllocationCopy1DRange'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationCopy1DRange</span>
+    <span class='normal'>: Copy consecutive cells between allocations</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsAllocationCopy1DRange(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> dstAlloc, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> dstOff, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> dstMip, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> count, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> srcAlloc, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> srcOff, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> srcMip);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>dstAlloc</th><td>Allocation to copy cells into.</td></tr>
+    <tr><th>dstOff</th><td>Offset in the destination of the first cell to be copied into.</td></tr>
+    <tr><th>dstMip</th><td>Mip level in the destination allocation.  0 if mip mapping is not used.</td></tr>
+    <tr><th>count</th><td>Number of cells to be copied.</td></tr>
+    <tr><th>srcAlloc</th><td>Source allocation.</td></tr>
+    <tr><th>srcOff</th><td>Offset in the source of the first cell to be copied.</td></tr>
+    <tr><th>srcMip</th><td>Mip level in the source allocation.  0 if mip mapping is not used.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Copies the specified number of cells from one allocation to another.
+</p>
+
+<p> The two allocations must be different.  Using this function to copy whithin
+the same allocation yields undefined results.
+</p>
+
+<p> The function does not validate whether the offset plus count exceeds the size
+of either allocation.  Be careful!
+</p>
+
+<p> This function should only be called between 1D allocations.  Calling it
+on other allocations is undefined.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationCopy2DRange'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationCopy2DRange</span>
+    <span class='normal'>: Copy a rectangular region of cells between allocations</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsAllocationCopy2DRange(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> dstAlloc, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> dstXoff, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> dstYoff, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> dstMip, <a href='rs_object_types.html#android_rs:rs_allocation_cubemap_face'>rs_allocation_cubemap_face</a> dstFace, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> width, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> height, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> srcAlloc, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> srcXoff, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> srcYoff, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> srcMip, <a href='rs_object_types.html#android_rs:rs_allocation_cubemap_face'>rs_allocation_cubemap_face</a> srcFace);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>dstAlloc</th><td>Allocation to copy cells into.</td></tr>
+    <tr><th>dstXoff</th><td>X offset in the destination of the region to be set.</td></tr>
+    <tr><th>dstYoff</th><td>Y offset in the destination of the region to be set.</td></tr>
+    <tr><th>dstMip</th><td>Mip level in the destination allocation.  0 if mip mapping is not used.</td></tr>
+    <tr><th>dstFace</th><td>Cubemap face of the destination allocation.  Ignored for allocations that aren't cubemaps.</td></tr>
+    <tr><th>width</th><td>Width of the incoming region to update.</td></tr>
+    <tr><th>height</th><td>Height of the incoming region to update.</td></tr>
+    <tr><th>srcAlloc</th><td>Source allocation.</td></tr>
+    <tr><th>srcXoff</th><td>X offset in the source.</td></tr>
+    <tr><th>srcYoff</th><td>Y offset in the source.</td></tr>
+    <tr><th>srcMip</th><td>Mip level in the source allocation.  0 if mip mapping is not used.</td></tr>
+    <tr><th>srcFace</th><td>Cubemap face of the source allocation.  Ignored for allocations that aren't cubemaps.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Copies a rectangular region of cells from one allocation to another.
+(width * heigth) cells are copied.
+</p>
+
+<p> The two allocations must be different.  Using this function to copy whithin
+the same allocation yields undefined results.
+</p>
+
+<p> The function does not validate whether the the source or destination region
+exceeds the size of its respective allocation.  Be careful!
+</p>
+
+<p> This function should only be called between 2D allocations.  Calling it
+on other allocations is undefined.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationVLoadX'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationVLoadX</span>
+    <span class='normal'>: Get a vector from an allocation of scalars</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> rsAllocationVLoadX_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> rsAllocationVLoadX_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> rsAllocationVLoadX_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> rsAllocationVLoadX_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> rsAllocationVLoadX_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> rsAllocationVLoadX_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> rsAllocationVLoadX_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> rsAllocationVLoadX_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> rsAllocationVLoadX_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> rsAllocationVLoadX_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> rsAllocationVLoadX_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> rsAllocationVLoadX_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> rsAllocationVLoadX_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> rsAllocationVLoadX_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> rsAllocationVLoadX_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> rsAllocationVLoadX_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> rsAllocationVLoadX_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> rsAllocationVLoadX_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsAllocationVLoadX_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsAllocationVLoadX_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsAllocationVLoadX_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsAllocationVLoadX_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsAllocationVLoadX_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsAllocationVLoadX_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsAllocationVLoadX_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsAllocationVLoadX_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsAllocationVLoadX_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> rsAllocationVLoadX_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> rsAllocationVLoadX_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> rsAllocationVLoadX_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> rsAllocationVLoadX_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> rsAllocationVLoadX_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> rsAllocationVLoadX_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> rsAllocationVLoadX_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> rsAllocationVLoadX_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> rsAllocationVLoadX_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> rsAllocationVLoadX_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> rsAllocationVLoadX_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> rsAllocationVLoadX_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> rsAllocationVLoadX_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> rsAllocationVLoadX_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> rsAllocationVLoadX_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> rsAllocationVLoadX_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> rsAllocationVLoadX_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> rsAllocationVLoadX_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> rsAllocationVLoadX_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> rsAllocationVLoadX_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> rsAllocationVLoadX_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> rsAllocationVLoadX_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> rsAllocationVLoadX_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> rsAllocationVLoadX_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> rsAllocationVLoadX_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> rsAllocationVLoadX_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> rsAllocationVLoadX_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> rsAllocationVLoadX_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> rsAllocationVLoadX_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> rsAllocationVLoadX_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> rsAllocationVLoadX_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> rsAllocationVLoadX_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> rsAllocationVLoadX_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsAllocationVLoadX_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsAllocationVLoadX_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsAllocationVLoadX_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> rsAllocationVLoadX_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> rsAllocationVLoadX_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> rsAllocationVLoadX_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> rsAllocationVLoadX_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> rsAllocationVLoadX_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> rsAllocationVLoadX_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> rsAllocationVLoadX_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> rsAllocationVLoadX_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> rsAllocationVLoadX_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> rsAllocationVLoadX_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> rsAllocationVLoadX_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> rsAllocationVLoadX_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> rsAllocationVLoadX_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> rsAllocationVLoadX_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> rsAllocationVLoadX_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> rsAllocationVLoadX_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> rsAllocationVLoadX_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> rsAllocationVLoadX_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> rsAllocationVLoadX_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> rsAllocationVLoadX_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> rsAllocationVLoadX_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> rsAllocationVLoadX_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> rsAllocationVLoadX_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> rsAllocationVLoadX_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> rsAllocationVLoadX_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> rsAllocationVLoadX_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> rsAllocationVLoadX_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>a</th><td>Allocation to get the data from.</td></tr>
+    <tr><th>x</th><td>X offset in the allocation of the first cell to be copied from.</td></tr>
+    <tr><th>y</th><td>Y offset in the allocation of the first cell to be copied from.</td></tr>
+    <tr><th>z</th><td>Z offset in the allocation of the first cell to be copied from.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function returns a vector composed of successive cells of the allocation.
+It assumes that the allocation contains scalars.
+</p>
+
+<p> The "X" in the name indicates that successive values are extracted by
+increasing the X index.  There are currently no functions to get successive
+values incrementing other dimensions.  Use multiple calls to rsGetElementAt()
+instead.
+</p>
+
+<p> For example, when calling rsAllocationVLoadX_int4(a, 20, 30), an int4 composed
+of a[20, 30], a[21, 30], a[22, 30], and a[23, 30] is returned.
+</p>
+
+<p> When retrieving from a three dimensional allocations, use the x, y, z variant.
+Similarly, use the x, y variant for two dimensional allocations and x for the
+mono dimensional allocations.
+</p>
+
+<p> For efficiency, this function does not validate the inputs.  Trying to wrap
+the X index, exceeding the size of the allocation, or using indices incompatible
+with the dimensionality of the allocation yields undefined results.
+</p>
+
+<p> See also <a href='rs_allocation_data.html#android_rs:rsAllocationVStoreX'>rsAllocationVStoreX</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationVStoreX'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationVStoreX</span>
+    <span class='normal'>: Store a vector into an allocation of scalars</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsAllocationVStoreX_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double2'>double2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double2'>double2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double2'>double2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double3'>double3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double3'>double3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double3'>double3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double4'>double4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double4'>double4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double4'>double4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsAllocationVStoreX_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 22</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>a</th><td>Allocation to store the data into.</td></tr>
+    <tr><th>val</th><td>Value to be stored.</td></tr>
+    <tr><th>x</th><td>X offset in the allocation of the first cell to be copied into.</td></tr>
+    <tr><th>y</th><td>Y offset in the allocation of the first cell to be copied into.</td></tr>
+    <tr><th>z</th><td>Z offset in the allocation of the first cell to be copied into.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function stores the entries of a vector into successive cells of an allocation.
+It assumes that the allocation contains scalars.
+</p>
+
+<p> The "X" in the name indicates that successive values are stored by increasing
+the X index.  There are currently no functions to store successive values
+incrementing other dimensions.  Use multiple calls to rsSetElementAt() instead.
+</p>
+
+<p> For example, when calling rsAllocationVStoreX_int3(a, v, 20, 30), v.x is stored
+at a[20, 30], v.y at a[21, 30], and v.z at a[22, 30].
+</p>
+
+<p> When storing into a three dimensional allocations, use the x, y, z variant.
+Similarly, use the x, y variant for two dimensional allocations and x for the
+mono dimensional allocations.
+</p>
+
+<p> For efficiency, this function does not validate the inputs.  Trying to wrap the
+X index, exceeding the size of the allocation, or using indexes incompatible
+with the dimensionality of the allocation yiels undefined results.
+</p>
+
+<p> See also <a href='rs_allocation_data.html#android_rs:rsAllocationVLoadX'>rsAllocationVLoadX</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsGetElementAt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsGetElementAt</span>
+    <span class='normal'>: Return a cell from an allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>char rsGetElementAt_char(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>char rsGetElementAt_char(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>char rsGetElementAt_char(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> rsGetElementAt_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> rsGetElementAt_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> rsGetElementAt_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> rsGetElementAt_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> rsGetElementAt_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> rsGetElementAt_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> rsGetElementAt_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> rsGetElementAt_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> rsGetElementAt_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>const void* rsGetElementAt(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>const void* rsGetElementAt(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>const void* rsGetElementAt(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>double rsGetElementAt_double(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>double rsGetElementAt_double(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>double rsGetElementAt_double(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> rsGetElementAt_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> rsGetElementAt_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> rsGetElementAt_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> rsGetElementAt_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> rsGetElementAt_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> rsGetElementAt_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> rsGetElementAt_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> rsGetElementAt_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> rsGetElementAt_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float rsGetElementAt_float(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float rsGetElementAt_float(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float rsGetElementAt_float(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsGetElementAt_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsGetElementAt_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsGetElementAt_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsGetElementAt_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsGetElementAt_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsGetElementAt_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsGetElementAt_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsGetElementAt_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsGetElementAt_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int rsGetElementAt_int(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int rsGetElementAt_int(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int rsGetElementAt_int(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> rsGetElementAt_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> rsGetElementAt_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> rsGetElementAt_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> rsGetElementAt_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> rsGetElementAt_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> rsGetElementAt_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> rsGetElementAt_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> rsGetElementAt_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> rsGetElementAt_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>long rsGetElementAt_long(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>long rsGetElementAt_long(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>long rsGetElementAt_long(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> rsGetElementAt_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> rsGetElementAt_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> rsGetElementAt_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> rsGetElementAt_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> rsGetElementAt_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> rsGetElementAt_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> rsGetElementAt_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> rsGetElementAt_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> rsGetElementAt_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>short rsGetElementAt_short(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>short rsGetElementAt_short(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>short rsGetElementAt_short(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> rsGetElementAt_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> rsGetElementAt_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> rsGetElementAt_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> rsGetElementAt_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> rsGetElementAt_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> rsGetElementAt_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> rsGetElementAt_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> rsGetElementAt_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> rsGetElementAt_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsGetElementAt_uchar(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsGetElementAt_uchar(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsGetElementAt_uchar(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> rsGetElementAt_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> rsGetElementAt_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> rsGetElementAt_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> rsGetElementAt_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> rsGetElementAt_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> rsGetElementAt_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsGetElementAt_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsGetElementAt_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsGetElementAt_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsGetElementAt_uint(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsGetElementAt_uint(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsGetElementAt_uint(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> rsGetElementAt_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> rsGetElementAt_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> rsGetElementAt_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> rsGetElementAt_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> rsGetElementAt_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> rsGetElementAt_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> rsGetElementAt_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> rsGetElementAt_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> rsGetElementAt_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong'>ulong</a> rsGetElementAt_ulong(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong'>ulong</a> rsGetElementAt_ulong(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong'>ulong</a> rsGetElementAt_ulong(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> rsGetElementAt_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> rsGetElementAt_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> rsGetElementAt_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> rsGetElementAt_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> rsGetElementAt_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> rsGetElementAt_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> rsGetElementAt_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> rsGetElementAt_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> rsGetElementAt_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> rsGetElementAt_ushort(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> rsGetElementAt_ushort(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> rsGetElementAt_ushort(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> rsGetElementAt_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> rsGetElementAt_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> rsGetElementAt_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> rsGetElementAt_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> rsGetElementAt_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> rsGetElementAt_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> rsGetElementAt_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> rsGetElementAt_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> rsGetElementAt_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function extracts a single cell from an allocation.
+</p>
+
+<p> When retrieving from a three dimensional allocations, use the x, y, z variant.
+Similarly, use the x, y variant for two dimensional allocations and x for the
+mono dimensional allocations.
+</p>
+
+<p> This function has two styles.  One returns the address of the value using a void*,
+the other returns the actual value, e.g. rsGetElementAt() vs. rsGetElementAt_int4().
+For primitive types, always use the latter as it is more efficient.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsGetElementAtYuv_uchar_U'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsGetElementAtYuv_uchar_U</span>
+    <span class='normal'>: Get the U component of an allocation of YUVs</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsGetElementAtYuv_uchar_U(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Extracts the U component of a single YUV value from a 2D allocation of YUVs.
+</p>
+
+<p> Inside an allocation, Y, U, and V components may be stored if different planes
+and at different resolutions.  The x, y coordinates provided here are in the
+dimensions of the Y plane.
+</p>
+
+<p> See <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_Y'>rsGetElementAtYuv_uchar_Y</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsGetElementAtYuv_uchar_V'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsGetElementAtYuv_uchar_V</span>
+    <span class='normal'>: Get the V component of an allocation of YUVs</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsGetElementAtYuv_uchar_V(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Extracts the V component of a single YUV value from a 2D allocation of YUVs.
+</p>
+
+<p> Inside an allocation, Y, U, and V components may be stored if different planes
+and at different resolutions.  The x, y coordinates provided here are in the
+dimensions of the Y plane.
+</p>
+
+<p> See <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_Y'>rsGetElementAtYuv_uchar_Y</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsGetElementAtYuv_uchar_Y'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsGetElementAtYuv_uchar_Y</span>
+    <span class='normal'>: Get the Y component of an allocation of YUVs</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsGetElementAtYuv_uchar_Y(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Extracts the Y component of a single YUV value from a 2D allocation of YUVs.
+</p>
+
+<p> Inside an allocation, Y, U, and V components may be stored if different planes
+and at different resolutions.  The x, y coordinates provided here are in the
+dimensions of the Y plane.
+</p>
+
+<p> See <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_U'>rsGetElementAtYuv_uchar_U</a>() and <a href='rs_allocation_data.html#android_rs:rsGetElementAtYuv_uchar_V'>rsGetElementAtYuv_uchar_V</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSample'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSample</span>
+    <span class='normal'>: Sample a value from a texture allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsSample(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s, float location);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsSample(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s, float location, float lod);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsSample(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s, <a href='rs_value_types.html#android_rs:float2'>float2</a> location);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsSample(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s, <a href='rs_value_types.html#android_rs:float2'>float2</a> location, float lod);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>a</th><td>Allocation to sample from.</td></tr>
+    <tr><th>s</th><td>Sampler state.</td></tr>
+    <tr><th>location</th><td>Location to sample from.</td></tr>
+    <tr><th>lod</th><td>Mip level to sample from, for fractional values mip levels will be interpolated if RS_SAMPLER_LINEAR_MIP_LINEAR is used.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fetches a value from a texture allocation in a way described by the sampler.
+</p>
+
+<p> If your allocation is 1D, use the variant with float for location.  For 2D,
+use the float2 variant.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.Sampler</a> for more details.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSetElementAt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSetElementAt</span>
+    <span class='normal'>: Set a cell of an allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsSetElementAt(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, void* ptr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, void* ptr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, char val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, char val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, char val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_char4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, double val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, double val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, double val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double2'>double2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double2'>double2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double2'>double2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double3'>double3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double3'>double3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double3'>double3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double4'>double4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double4'>double4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_double4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:double4'>double4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, float val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, float val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, float val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_float4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, int val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, int val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, int val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_int4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, long val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, long val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, long val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_long4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, short val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, short val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, short val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_short4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uchar4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint'>uint</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint'>uint</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint'>uint</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_uint4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ulong4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort2(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort3(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsSetElementAt_ushort4(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> val, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> x, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> y, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> z);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function stores a value into a single cell of an allocation.
+</p>
+
+<p> When storing into a three dimensional allocations, use the x, y, z variant.
+Similarly, use the x, y variant for two dimensional allocations and x for
+the mono dimensional allocations.
+</p>
+
+<p> This function has two styles.  One passes the value to be stored using a void*,
+the other has the actual value as an argument, e.g. rsSetElementAt() vs.
+rsSetElementAt_int4().  For primitive types, always use the latter as it is
+more efficient.
+</p>
+
+<p> See also <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a>().
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_atomic.jd b/docs/html/guide/topics/renderscript/reference/rs_atomic.jd
new file mode 100644
index 0000000..e7dde80
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_atomic.jd
@@ -0,0 +1,506 @@
+page.title=RenderScript Atomic Update Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> To update values shared between multiple threads, use the functions below.
+They ensure that the values are atomically updated, i.e. that the memory
+reads, the updates, and the memory writes are done in the right order.
+</p>
+
+<p> These functions are slower than their non-atomic equivalents, so use
+them only when synchronization is needed.
+</p>
+
+<p> Note that in RenderScript, your code is likely to be running in separate
+threads even though you did not explicitely create them.  The RenderScript
+runtime will very often split the execution of one kernel across multiple
+threads.  Updating globals should be done with atomic functions.  If possible,
+modify your algorithm to avoid them altogether.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicAdd'>rsAtomicAdd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe addition
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicAnd'>rsAtomicAnd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise and
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicCas'>rsAtomicCas</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe compare and set
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicDec'>rsAtomicDec</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe decrement
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicInc'>rsAtomicInc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe increment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicMax'>rsAtomicMax</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe maximum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicMin'>rsAtomicMin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe minimum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicOr'>rsAtomicOr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise or
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicSub'>rsAtomicSub</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe subtraction
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_atomic.html#android_rs:rsAtomicXor'>rsAtomicXor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Thread-safe bitwise exclusive or
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsAtomicAdd'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicAdd</span>
+    <span class='normal'>: Thread-safe addition</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicAdd(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicAdd(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Amount to add.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly adds a value to the value at addr, i.e. <code>*addr += value</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicAnd'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicAnd</span>
+    <span class='normal'>: Thread-safe bitwise and</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicAnd(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicAnd(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Value to and with.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly performs a bitwise and of two values, storing the result back at addr,
+i.e. <code>*addr &amp;= value</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicCas'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicCas</span>
+    <span class='normal'>: Thread-safe compare and set</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicCas(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> compareValue, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> newValue);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAtomicCas(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> compareValue, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> newValue);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to compare and replace if the test passes.</td></tr>
+    <tr><th>compareValue</th><td>Value to test *addr against.</td></tr>
+    <tr><th>newValue</th><td>Value to write if the test passes.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> If the value at addr matches compareValue then the newValue is written at addr,
+i.e. <code>if (*addr == compareValue) { *addr = newValue; }</code>.
+</p>
+
+<p> You can check that the value was written by checking that the value returned
+by rsAtomicCas() is compareValue.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicDec'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicDec</span>
+    <span class='normal'>: Thread-safe decrement</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicDec(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicDec(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to decrement.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly subtracts one from the value at addr.  This is equivalent to <code><a href='rs_atomic.html#android_rs:rsAtomicSub'>rsAtomicSub</a>(addr, 1)</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicInc'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicInc</span>
+    <span class='normal'>: Thread-safe increment</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicInc(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicInc(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to increment.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly adds one to the value at addr.  This is equivalent to <code><a href='rs_atomic.html#android_rs:rsAtomicAdd'>rsAtomicAdd</a>(addr, 1)</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicMax'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicMax</span>
+    <span class='normal'>: Thread-safe maximum</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicMax(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAtomicMax(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Comparison value.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly sets the value at addr to the maximum of *addr and value, i.e.
+<code>*addr = max(*addr, value)</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicMin'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicMin</span>
+    <span class='normal'>: Thread-safe minimum</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicMin(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAtomicMin(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Comparison value.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly sets the value at addr to the minimum of *addr and value, i.e.
+<code>*addr = min(*addr, value)</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicOr'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicOr</span>
+    <span class='normal'>: Thread-safe bitwise or</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicOr(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicOr(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Value to or with.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly perform a bitwise or two values, storing the result at addr,
+i.e. <code>*addr |= value</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicSub'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicSub</span>
+    <span class='normal'>: Thread-safe subtraction</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicSub(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicSub(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Amount to subtract.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly subtracts a value from the value at addr, i.e. <code>*addr -= value</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAtomicXor'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAtomicXor</span>
+    <span class='normal'>: Thread-safe bitwise exclusive or</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicXor(volatile <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>* addr, <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a> rsAtomicXor(volatile <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>* addr, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>addr</th><td>Address of the value to modify.</td></tr>
+    <tr><th>value</th><td>Value to xor with.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Value of *addr prior to the operation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Atomicly performs a bitwise xor of two values, storing the result at addr,
+i.e. <code>*addr ^= value</code>.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_convert.jd b/docs/html/guide/topics/renderscript/reference/rs_convert.jd
new file mode 100644
index 0000000..bf1f611
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_convert.jd
@@ -0,0 +1,1836 @@
+page.title=RenderScript Conversion Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The functions below convert from a numerical vector type to another, of from one color
+representation to another.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:convert'>convert</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert numerical vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsPackColorTo8888'>rsPackColorTo8888</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a uchar4 RGBA from floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsUnpackColor8888'>rsUnpackColor8888</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a float4 RGBA from uchar4
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_convert.html#android_rs:rsYuvToRGBA'>rsYuvToRGBA</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert a YUV value to RGBA
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:convert'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>convert</span>
+    <span class='normal'>: Convert numerical vectors</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> convert_char2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> convert_char3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> convert_char4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double2'>double2</a> convert_double2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double3'>double3</a> convert_double3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:double4'>double4</a> convert_double4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> convert_float2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> convert_float3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> convert_float4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> convert_int2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> convert_int3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> convert_int4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> convert_long2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> convert_long3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> convert_long4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> convert_short2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> convert_short3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> convert_short4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> convert_uchar2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> convert_uchar3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> convert_uchar4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> convert_uint2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> convert_uint3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> convert_uint4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> convert_ulong2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> convert_ulong3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> convert_ulong4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:double2'>double2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:long2'>long2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> convert_ushort2(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:double3'>double3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:long3'>long3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> convert_ushort3(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:double4'>double4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:long4'>long4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> convert_ushort4(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Converts a vector from one numerical type to another.  The conversion are done entry per entry.
+</p>
+
+<p> E.g calling <code>a = convert_short3(b);</code> is equivalent to doing
+<code>a.x = (short)b.x; a.y = (short)b.y; a.z = (short)b.z;</code>.
+</p>
+
+<p> Converting floating point values to integer types truncates.
+</p>
+
+<p> Converting numbers too large to fit the destination type yields undefined results.
+For example, converting a float that contains 1.0e18 to a short is undefined.
+Use <a href='rs_math.html#android_rs:clamp'>clamp</a>() to avoid this.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsPackColorTo8888'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsPackColorTo8888</span>
+    <span class='normal'>: Create a uchar4 RGBA from floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsPackColorTo8888(float r, float g, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsPackColorTo8888(float r, float g, float b, float a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsPackColorTo8888(<a href='rs_value_types.html#android_rs:float3'>float3</a> color);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsPackColorTo8888(<a href='rs_value_types.html#android_rs:float4'>float4</a> color);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>r</th><td>Red component.</td></tr>
+    <tr><th>g</th><td>Green component.</td></tr>
+    <tr><th>b</th><td>Blue component.</td></tr>
+    <tr><th>a</th><td>Alpha component.</td></tr>
+    <tr><th>color</th><td>Vector of 3 or 4 floats containing the R, G, B, and A values.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Packs three or four floating point RGBA values into a uchar4.  The RGBA values should be
+between 0.0 and 1.0 inclusive.  Values outside of this range are clamped to this range.
+However numbers greater than INT_MAX or less than INT_MIN can result in undefined behavior.
+</p>
+
+<p> If the alpha component is not specified, it is assumed to be 1.0, i.e. the result will
+have an alpha set to 255.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsUnpackColor8888'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsUnpackColor8888</span>
+    <span class='normal'>: Create a float4 RGBA from uchar4</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsUnpackColor8888(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> c);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Unpacks a uchar4 color to float4.  The resulting floats will be between 0.0 and 1.0 inclusive.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsYuvToRGBA'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsYuvToRGBA</span>
+    <span class='normal'>: Convert a YUV value to RGBA</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsYuvToRGBA_float4(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> y, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> u, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> rsYuvToRGBA_uchar4(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> y, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> u, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>y</th><td>Luminance component.</td></tr>
+    <tr><th>u</th><td>U chrominance component.</td></tr>
+    <tr><th>v</th><td>V chrominance component.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Converts a color from a YUV representation to RGBA.
+</p>
+
+<p> We currently don't provide a function to do the reverse conversion.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_debug.jd b/docs/html/guide/topics/renderscript/reference/rs_debug.jd
new file mode 100644
index 0000000..d041309
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_debug.jd
@@ -0,0 +1,301 @@
+page.title=RenderScript Debugging Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The functions below are intended to be used during application developement.
+They should not be used in shipping applications.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_debug.html#android_rs:rsDebug'>rsDebug</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Log a message and values
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsDebug'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsDebug</span>
+    <span class='normal'>: Log a message and values</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsDebug(const char* message, char a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:char2'>char2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:char3'>char3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:char4'>char4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, const void* a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, double a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, float a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, float a, float b, float c);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, float a, float b, float c, float d);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:float2'>float2</a> a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:float3'>float3</a> a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:float4'>float4</a> a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, int a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:int2'>int2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:int3'>int3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:int4'>int4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, long a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, long long a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:long2'>long2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:long3'>long3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:long4'>long4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, short a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:short2'>short2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:short3'>short3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:short4'>short4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uint'>uint</a> a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, unsigned long long a);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsDebug(const char* message, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function prints a message to the standard log, followed by the provided values.
+</p>
+
+<p> This function is intended for debugging only and should not be used in shipping
+applications.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_for_each.jd b/docs/html/guide/topics/renderscript/reference/rs_for_each.jd
new file mode 100644
index 0000000..cad5a21
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_for_each.jd
@@ -0,0 +1,183 @@
+page.title=RenderScript Kernel Invocation Functions and Types
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The <a href='rs_for_each.html#android_rs:rsForEach'>rsForEach</a>() function can be used to invoke the root kernel of a script.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rs_for_each_strategy_t'>rs_for_each_strategy_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Suggested cell processing order
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rs_script_call_t'>rs_script_call_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cell iteration information
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_for_each.html#android_rs:rsForEach'>rsForEach</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Invoke the root kernel of a script
+    </td>
+  </tr>
+</tbody></table>
+<h2>Types</h2>
+<a name='android_rs:rs_for_each_strategy_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_for_each_strategy_t</span>
+    <span class='normal'>: Suggested cell processing order</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_FOR_EACH_STRATEGY_SERIAL = 0</th><td>Prefer contiguous memory regions.</td></tr>
+    <tr><th>RS_FOR_EACH_STRATEGY_DONT_CARE = 1</th><td>No prefrences.</td></tr>
+    <tr><th>RS_FOR_EACH_STRATEGY_DST_LINEAR = 2</th><td>Prefer DST.</td></tr>
+    <tr><th>RS_FOR_EACH_STRATEGY_TILE_SMALL = 3</th><td>Prefer processing small rectangular regions.</td></tr>
+    <tr><th>RS_FOR_EACH_STRATEGY_TILE_MEDIUM = 4</th><td>Prefer processing medium rectangular regions.</td></tr>
+    <tr><th>RS_FOR_EACH_STRATEGY_TILE_LARGE = 5</th><td>Prefer processing large rectangular regions.</td></tr>
+  </tbody></table><br/>
+<p> This type is used to suggest how the invoked kernel should iterate over the cells of the
+allocations.  This is a hint only.  Implementations may not follow the suggestion.
+</p>
+
+<p> This specification can help the caching behavior of the running kernel, e.g. the cache
+locality when the processing is distributed over multiple cores.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_script_call_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_script_call_t</span>
+    <span class='normal'>: Cell iteration information</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A structure with the following fields:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>rs_for_each_strategy_t strategy</th><td>Currently ignored.  In the future, will be suggested cell iteration strategy.</td></tr>
+    <tr><th>uint32_t xStart</th><td>Starting index in the X dimension.</td></tr>
+    <tr><th>uint32_t xEnd</th><td>Ending index (exclusive) in the X dimension.</td></tr>
+    <tr><th>uint32_t yStart</th><td>Starting index in the Y dimension.</td></tr>
+    <tr><th>uint32_t yEnd</th><td>Ending index (exclusive) in the Y dimension.</td></tr>
+    <tr><th>uint32_t zStart</th><td>Starting index in the Z dimension.</td></tr>
+    <tr><th>uint32_t zEnd</th><td>Ending index (exclusive) in the Z dimension.</td></tr>
+    <tr><th>uint32_t arrayStart</th><td>Starting index in the Array0 dimension.</td></tr>
+    <tr><th>uint32_t arrayEnd</th><td>Ending index (exclusive) in the Array0 dimension.</td></tr>
+    <tr><th>uint32_t array1Start</th><td>Starting index in the Array1 dimension.</td></tr>
+    <tr><th>uint32_t array1End</th><td>Ending index (exclusive) in the Array1 dimension.</td></tr>
+    <tr><th>uint32_t array2Start</th><td>Starting index in the Array2 dimension.</td></tr>
+    <tr><th>uint32_t array2End</th><td>Ending index (exclusive) in the Array2 dimension.</td></tr>
+    <tr><th>uint32_t array3Start</th><td>Starting index in the Array3 dimension.</td></tr>
+    <tr><th>uint32_t array3End</th><td>Ending index (exclusive) in the Array3 dimension.</td></tr>
+  </tbody></table><br/>
+<p> This structure is used to provide iteration information to a rsForEach call.
+It is currently used to restrict processing to a subset of cells.  In future
+versions, it will also be used to provide hint on how to best iterate over
+the cells.
+</p>
+
+<p> The Start fields are inclusive and the End fields are exclusive.  E.g. to iterate
+over cells 4, 5, 6, and 7 in the X dimension, set xStart to 4 and xEnd to 8.
+</p>
+  </div>
+</div>
+
+<h2>Functions</h2>
+<a name='android_rs:rsForEach'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsForEach</span>
+    <span class='normal'>: Invoke the root kernel of a script</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsForEach(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a> script, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> input, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> output);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsForEach(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a> script, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> input, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> output, const void* usrData);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsForEach(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a> script, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> input, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> output, const void* usrData, const <a href='rs_for_each.html#android_rs:rs_script_call_t'>rs_script_call_t</a>* sc);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsForEach(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a> script, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> input, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> output, const void* usrData, <a href='rs_value_types.html#android_rs:size_t'>size_t</a> usrDataLen);
+</td>
+        <td>    <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 - 20</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsForEach(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a> script, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> input, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> output, const void* usrData, <a href='rs_value_types.html#android_rs:size_t'>size_t</a> usrDataLen, const <a href='rs_for_each.html#android_rs:rs_script_call_t'>rs_script_call_t</a>* sc);
+</td>
+        <td>    <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 - 20</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>script</th><td>Script to call.</td></tr>
+    <tr><th>input</th><td>Allocation to source data from.</td></tr>
+    <tr><th>output</th><td>Allocation to write date into.</td></tr>
+    <tr><th>usrData</th><td>User defined data to pass to the script.  May be NULL.</td></tr>
+    <tr><th>sc</th><td>Extra control information used to select a sub-region of the allocation to be processed or suggest a walking strategy.  May be NULL.</td></tr>
+    <tr><th>usrDataLen</th><td>Size of the userData structure.  This will be used to perform a shallow copy of the data if necessary.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Invoke the kernel named "root" of the specified script.  Like other kernels, this root()
+function will be invoked repeatedly over the cells of the specificed allocation, filling
+the output allocation with the results.
+</p>
+
+<p> When rsForEach is called, the root script is launched immediately.  rsForEach returns
+only when the script has completed and the output allocation is ready to use.
+</p>
+
+<p> The rs_script argument is typically initialized using a global variable set from Java.
+</p>
+
+<p> The kernel can be invoked with just an input allocation or just an output allocation.
+This can be done by defining an rs_allocation variable and not initializing it.  E.g.<code><br/>
+rs_script gCustomScript;<br/>
+void specializedProcessing(rs_allocation in) {<br/>
+&nbsp;&nbsp;rs_allocation ignoredOut;<br/>
+&nbsp;&nbsp;rsForEach(gCustomScript, in, ignoredOut);<br/>
+}<br/></code>
+</p>
+
+<p> If both input and output allocations are specified, they must have the same dimensions.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_graphics.jd b/docs/html/guide/topics/renderscript/reference/rs_graphics.jd
new file mode 100644
index 0000000..ee50184
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_graphics.jd
@@ -0,0 +1,2085 @@
+page.title=RenderScript Graphics Functions and Types
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The graphics subsystem of RenderScript has been deprecated.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Deprecated Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_blend_dst_func'>rs_blend_dst_func</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Blend destination function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_blend_src_func'>rs_blend_src_func</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Blend source function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_cull_mode'>rs_cull_mode</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Culling mode
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_depth_func'>rs_depth_func</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Depth function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_font'>rs_font</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a Font
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a Mesh
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_primitive'>rs_primitive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  How to intepret mesh vertex data
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramFragment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramRaster
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramStore
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rs_program_vertex'>rs_program_vertex</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Handle to a ProgramVertex
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Deprecated Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgAllocationSyncAll'>rsgAllocationSyncAll</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Sync the contents of an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindColorTarget'>rsgBindColorTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the color target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindConstant'>rsgBindConstant</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a constant allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindDepthTarget'>rsgBindDepthTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the depth target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindFont'>rsgBindFont</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a font object
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramFragment'>rsgBindProgramFragment</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramFragment
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramRaster'>rsgBindProgramRaster</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramRaster
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramStore'>rsgBindProgramStore</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramStore
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindProgramVertex'>rsgBindProgramVertex</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a ProgramVertex
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindSampler'>rsgBindSampler</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgBindTexture'>rsgBindTexture</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Bind a texture allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearAllRenderTargets'>rsgClearAllRenderTargets</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear all color and depth targets
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearColor'>rsgClearColor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the specified color from the surface
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearColorTarget'>rsgClearColorTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the color target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearDepth'>rsgClearDepth</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the depth surface
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgClearDepthTarget'>rsgClearDepthTarget</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Clear the depth target
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawMesh'>rsgDrawMesh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a mesh
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawQuad'>rsgDrawQuad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a quad
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawQuadTexCoords'>rsgDrawQuadTexCoords</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a textured quad
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawRect'>rsgDrawRect</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a rectangle
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawSpriteScreenspace'>rsgDrawSpriteScreenspace</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw rectangles in screenspace
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgDrawText'>rsgDrawText</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Draw a text string
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgFinish'>rsgFinish</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  End rendering commands
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgFontColor'>rsgFontColor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the font color
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgGetHeight'>rsgGetHeight</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the surface height
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgGetWidth'>rsgGetWidth</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the surface width
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeasureText'>rsgMeasureText</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the bounding box for a text string
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshComputeBoundingBox'>rsgMeshComputeBoundingBox</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Compute a bounding box
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetIndexAllocation'>rsgMeshGetIndexAllocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return an allocation containing index data
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetPrimitive'>rsgMeshGetPrimitive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the primitive
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetPrimitiveCount'>rsgMeshGetPrimitiveCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the number of index sets
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetVertexAllocation'>rsgMeshGetVertexAllocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return a vertex allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgMeshGetVertexAllocationCount'>rsgMeshGetVertexAllocationCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the number of vertex allocations
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramFragmentConstantColor'>rsgProgramFragmentConstantColor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Set the constant color for a fixed function emulation program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramRasterGetCullMode'>rsgProgramRasterGetCullMode</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program raster cull mode
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramRasterIsPointSpriteEnabled'>rsgProgramRasterIsPointSpriteEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program raster point sprite state
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreGetBlendDstFunc'>rsgProgramStoreGetBlendDstFunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store blend destination function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreGetBlendSrcFunc'>rsgProgramStoreGetBlendSrcFunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store blend source function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreGetDepthFunc'>rsgProgramStoreGetDepthFunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store depth function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskAlphaEnabled'>rsgProgramStoreIsColorMaskAlphaEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store alpha component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskBlueEnabled'>rsgProgramStoreIsColorMaskBlueEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store blur component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskGreenEnabled'>rsgProgramStoreIsColorMaskGreenEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store green component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsColorMaskRedEnabled'>rsgProgramStoreIsColorMaskRedEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store red component color mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsDepthMaskEnabled'>rsgProgramStoreIsDepthMaskEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store depth mask
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramStoreIsDitherEnabled'>rsgProgramStoreIsDitherEnabled</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get program store dither state
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexGetProjectionMatrix'>rsgProgramVertexGetProjectionMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Get the projection matrix for a fixed function vertex program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexLoadModelMatrix'>rsgProgramVertexLoadModelMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Load the model matrix for a bound fixed function vertex program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexLoadProjectionMatrix'>rsgProgramVertexLoadProjectionMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Load the projection matrix for a bound fixed function vertex program
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_graphics.html#android_rs:rsgProgramVertexLoadTextureMatrix'>rsgProgramVertexLoadTextureMatrix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Load the texture matrix for a bound fixed function vertex program
+    </td>
+  </tr>
+</tbody></table>
+<h2>Types</h2>
+<a name='android_rs:rs_blend_dst_func'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_blend_dst_func</span>
+    <span class='normal'>: Blend destination function</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_BLEND_DST_ZERO = 0</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_ONE = 1</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_SRC_COLOR = 2</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_ONE_MINUS_SRC_COLOR = 3</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_SRC_ALPHA = 4</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_ONE_MINUS_SRC_ALPHA = 5</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_DST_ALPHA = 6</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_ONE_MINUS_DST_ALPHA = 7</th><td></td></tr>
+    <tr><th>RS_BLEND_DST_INVALID = 100</th><td></td></tr>
+  </tbody></table><br/>
+    <p><b>Deprecated.</b>  Do not use.</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_blend_src_func'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_blend_src_func</span>
+    <span class='normal'>: Blend source function</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_BLEND_SRC_ZERO = 0</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_ONE = 1</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_DST_COLOR = 2</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_ONE_MINUS_DST_COLOR = 3</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_SRC_ALPHA = 4</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA = 5</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_DST_ALPHA = 6</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_ONE_MINUS_DST_ALPHA = 7</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_SRC_ALPHA_SATURATE = 8</th><td></td></tr>
+    <tr><th>RS_BLEND_SRC_INVALID = 100</th><td></td></tr>
+  </tbody></table><br/>
+    <p><b>Deprecated.</b>  Do not use.</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_cull_mode'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_cull_mode</span>
+    <span class='normal'>: Culling mode</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_CULL_BACK = 0</th><td></td></tr>
+    <tr><th>RS_CULL_FRONT = 1</th><td></td></tr>
+    <tr><th>RS_CULL_NONE = 2</th><td></td></tr>
+    <tr><th>RS_CULL_INVALID = 100</th><td></td></tr>
+  </tbody></table><br/>
+    <p><b>Deprecated.</b>  Do not use.</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_depth_func'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_depth_func</span>
+    <span class='normal'>: Depth function</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_DEPTH_FUNC_ALWAYS = 0</th><td>Always drawn</td></tr>
+    <tr><th>RS_DEPTH_FUNC_LESS = 1</th><td>Drawn if the incoming depth value is less than that in the depth buffer</td></tr>
+    <tr><th>RS_DEPTH_FUNC_LEQUAL = 2</th><td>Drawn if the incoming depth value is less or equal to that in the depth buffer</td></tr>
+    <tr><th>RS_DEPTH_FUNC_GREATER = 3</th><td>Drawn if the incoming depth value is greater than that in the depth buffer</td></tr>
+    <tr><th>RS_DEPTH_FUNC_GEQUAL = 4</th><td>Drawn if the incoming depth value is greater or equal to that in the depth buffer</td></tr>
+    <tr><th>RS_DEPTH_FUNC_EQUAL = 5</th><td>Drawn if the incoming depth value is equal to that in the depth buffer</td></tr>
+    <tr><th>RS_DEPTH_FUNC_NOTEQUAL = 6</th><td>Drawn if the incoming depth value is not equal to that in the depth buffer</td></tr>
+    <tr><th>RS_DEPTH_FUNC_INVALID = 100</th><td>Invalid depth function</td></tr>
+  </tbody></table><br/>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Specifies conditional drawing depending on the comparison of the incoming
+depth to that found in the depth buffer.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_font'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_font</span>
+    <span class='normal'>: Handle to a Font</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Opaque handle to a RenderScript font object.
+See: android.renderscript.Font
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_mesh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_mesh</span>
+    <span class='normal'>: Handle to a Mesh</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Opaque handle to a RenderScript mesh object.
+See: android.renderscript.Mesh
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_primitive'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_primitive</span>
+    <span class='normal'>: How to intepret mesh vertex data</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_PRIMITIVE_POINT = 0</th><td>Vertex data will be rendered as a series of points</td></tr>
+    <tr><th>RS_PRIMITIVE_LINE = 1</th><td>Vertex pairs will be rendered as lines</td></tr>
+    <tr><th>RS_PRIMITIVE_LINE_STRIP = 2</th><td>Vertex data will be rendered as a connected line strip</td></tr>
+    <tr><th>RS_PRIMITIVE_TRIANGLE = 3</th><td>Vertices will be rendered as individual triangles</td></tr>
+    <tr><th>RS_PRIMITIVE_TRIANGLE_STRIP = 4</th><td>Vertices will be rendered as a connected triangle strip defined by the first three vertices with each additional triangle defined by a new vertex</td></tr>
+    <tr><th>RS_PRIMITIVE_TRIANGLE_FAN = 5</th><td>Vertices will be rendered as a sequence of triangles that all share first vertex as the origin</td></tr>
+    <tr><th>RS_PRIMITIVE_INVALID = 100</th><td>Invalid primitive</td></tr>
+  </tbody></table><br/>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Describes the way mesh vertex data is interpreted when rendering
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_program_fragment'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_program_fragment</span>
+    <span class='normal'>: Handle to a ProgramFragment</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Opaque handle to a RenderScript ProgramFragment object.
+See: android.renderscript.ProgramFragment
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_program_raster'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_program_raster</span>
+    <span class='normal'>: Handle to a ProgramRaster</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Opaque handle to a RenderScript ProgramRaster object.
+See: android.renderscript.ProgramRaster
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_program_store'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_program_store</span>
+    <span class='normal'>: Handle to a ProgramStore</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Opaque handle to a RenderScript ProgramStore object.
+See: android.renderscript.ProgramStore
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_program_vertex'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_program_vertex</span>
+    <span class='normal'>: Handle to a ProgramVertex</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Opaque handle to a RenderScript ProgramVertex object.
+See: android.renderscript.ProgramVertex
+</p>
+  </div>
+</div>
+
+<h2>Functions</h2>
+<a name='android_rs:rsgAllocationSyncAll'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgAllocationSyncAll</span>
+    <span class='normal'>: Sync the contents of an allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgAllocationSyncAll(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> alloc);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgAllocationSyncAll(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> alloc, <a href='rs_object_types.html#android_rs:rs_allocation_usage_type'>rs_allocation_usage_type</a> source);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Sync the contents of an allocation.
+</p>
+
+<p> If the source is specified, sync from memory space specified by source.
+</p>
+
+<p> If the source is not specified, sync from its SCRIPT memory space to its HW
+memory spaces.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindColorTarget'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindColorTarget</span>
+    <span class='normal'>: Set the color target</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindColorTarget(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> colorTarget, <a href='rs_value_types.html#android_rs:uint'>uint</a> slot);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Set the color target used for all subsequent rendering calls
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindConstant'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindConstant</span>
+    <span class='normal'>: Bind a constant allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindConstant(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a> ps, <a href='rs_value_types.html#android_rs:uint'>uint</a> slot, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> c);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgBindConstant(<a href='rs_graphics.html#android_rs:rs_program_vertex'>rs_program_vertex</a> pv, <a href='rs_value_types.html#android_rs:uint'>uint</a> slot, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> c);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program fragment object</td></tr>
+    <tr><th>slot</th><td>index of the constant buffer on the program</td></tr>
+    <tr><th>c</th><td>constants to bind</td></tr>
+    <tr><th>pv</th><td>program vertex object</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new Allocation object to a ProgramFragment or ProgramVertex.
+The Allocation must be a valid constant input for the Program.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindDepthTarget'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindDepthTarget</span>
+    <span class='normal'>: Set the depth target</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindDepthTarget(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> depthTarget);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Set the depth target used for all subsequent rendering calls
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindFont'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindFont</span>
+    <span class='normal'>: Bind a font object</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindFont(<a href='rs_graphics.html#android_rs:rs_font'>rs_font</a> font);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>font</th><td>object to bind</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Binds the font object to be used for all subsequent font rendering calls
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindProgramFragment'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindProgramFragment</span>
+    <span class='normal'>: Bind a ProgramFragment</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindProgramFragment(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a> pf);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new ProgramFragment to the rendering context.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindProgramRaster'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindProgramRaster</span>
+    <span class='normal'>: Bind a ProgramRaster</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindProgramRaster(<a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a> pr);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new ProgramRaster to the rendering context.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindProgramStore'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindProgramStore</span>
+    <span class='normal'>: Bind a ProgramStore</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindProgramStore(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new ProgramStore to the rendering context.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindProgramVertex'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindProgramVertex</span>
+    <span class='normal'>: Bind a ProgramVertex</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindProgramVertex(<a href='rs_graphics.html#android_rs:rs_program_vertex'>rs_program_vertex</a> pv);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new ProgramVertex to the rendering context.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindSampler'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindSampler</span>
+    <span class='normal'>: Bind a sampler</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindSampler(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a> fragment, <a href='rs_value_types.html#android_rs:uint'>uint</a> slot, <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> sampler);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new Sampler object to a ProgramFragment.  The sampler will
+operate on the texture bound at the matching slot.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgBindTexture'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgBindTexture</span>
+    <span class='normal'>: Bind a texture allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgBindTexture(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a> v, <a href='rs_value_types.html#android_rs:uint'>uint</a> slot, <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> alloc);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Bind a new Allocation object to a ProgramFragment.  The
+Allocation must be a valid texture for the Program.  The sampling
+of the texture will be controled by the Sampler bound at the
+matching slot.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgClearAllRenderTargets'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgClearAllRenderTargets</span>
+    <span class='normal'>: Clear all color and depth targets</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgClearAllRenderTargets();
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Clear all color and depth targets and resume rendering into
+the framebuffer
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgClearColor'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgClearColor</span>
+    <span class='normal'>: Clear the specified color from the surface</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgClearColor(float r, float g, float b, float a);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Clears the rendering surface to the specified color.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgClearColorTarget'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgClearColorTarget</span>
+    <span class='normal'>: Clear the color target</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgClearColorTarget(<a href='rs_value_types.html#android_rs:uint'>uint</a> slot);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Clear the previously set color target
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgClearDepth'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgClearDepth</span>
+    <span class='normal'>: Clear the depth surface</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgClearDepth(float value);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Clears the depth suface to the specified value.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgClearDepthTarget'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgClearDepthTarget</span>
+    <span class='normal'>: Clear the depth target</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgClearDepthTarget();
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Clear the previously set depth target
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgDrawMesh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgDrawMesh</span>
+    <span class='normal'>: Draw a mesh</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgDrawMesh(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> ism);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgDrawMesh(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> ism, <a href='rs_value_types.html#android_rs:uint'>uint</a> primitiveIndex);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgDrawMesh(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> ism, <a href='rs_value_types.html#android_rs:uint'>uint</a> primitiveIndex, <a href='rs_value_types.html#android_rs:uint'>uint</a> start, <a href='rs_value_types.html#android_rs:uint'>uint</a> len);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ism</th><td>mesh object to render</td></tr>
+    <tr><th>primitiveIndex</th><td>for meshes that contain multiple primitive groups this parameter specifies the index of the group to draw.</td></tr>
+    <tr><th>start</th><td>starting index in the range</td></tr>
+    <tr><th>len</th><td>number of indices to draw</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Draw a mesh using the current context state.
+</p>
+
+<p> If primitiveIndex is specified, draw part of a mesh using the current context state.
+</p>
+
+<p> If start and len are also specified, draw specified index range of part of a mesh using the current context state.
+</p>
+
+<p> Otherwise the whole mesh is rendered.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgDrawQuad'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgDrawQuad</span>
+    <span class='normal'>: Draw a quad</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgDrawQuad(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Low performance utility function for drawing a simple quad.  Not intended for
+drawing large quantities of geometry.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgDrawQuadTexCoords'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgDrawQuadTexCoords</span>
+    <span class='normal'>: Draw a textured quad</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Low performance utility function for drawing a textured quad.  Not intended
+for drawing large quantities of geometry.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgDrawRect'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgDrawRect</span>
+    <span class='normal'>: Draw a rectangle</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgDrawRect(float x1, float y1, float x2, float y2, float z);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Low performance utility function for drawing a simple rectangle.  Not
+intended for drawing large quantities of geometry.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgDrawSpriteScreenspace'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgDrawSpriteScreenspace</span>
+    <span class='normal'>: Draw rectangles in screenspace</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Low performance function for drawing rectangles in screenspace.  This
+function uses the default passthough ProgramVertex.  Any bound ProgramVertex
+is ignored.  This function has considerable overhead and should not be used
+for drawing in shipping applications.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgDrawText'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgDrawText</span>
+    <span class='normal'>: Draw a text string</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgDrawText(const char* text, int x, int y);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgDrawText(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> alloc, int x, int y);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Draws text given a string and location
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgFinish'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgFinish</span>
+    <span class='normal'>: End rendering commands</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsgFinish();
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Force RenderScript to finish all rendering commands
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgFontColor'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgFontColor</span>
+    <span class='normal'>: Set the font color</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgFontColor(float r, float g, float b, float a);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>r</th><td>red component</td></tr>
+    <tr><th>g</th><td>green component</td></tr>
+    <tr><th>b</th><td>blue component</td></tr>
+    <tr><th>a</th><td>alpha component</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Sets the font color for all subsequent rendering calls
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgGetHeight'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgGetHeight</span>
+    <span class='normal'>: Get the surface height</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsgGetHeight();
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get the height of the current rendering surface.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgGetWidth'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgGetWidth</span>
+    <span class='normal'>: Get the surface width</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsgGetWidth();
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get the width of the current rendering surface.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeasureText'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeasureText</span>
+    <span class='normal'>: Get the bounding box for a text string</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgMeasureText(const char* text, int* left, int* right, int* top, int* bottom);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgMeasureText(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> alloc, int* left, int* right, int* top, int* bottom);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Returns the bounding box of the text relative to (0, 0)
+Any of left, right, top, bottom could be NULL
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeshComputeBoundingBox'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeshComputeBoundingBox</span>
+    <span class='normal'>: Compute a bounding box</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgMeshComputeBoundingBox(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> mesh, float* minX, float* minY, float* min, float* maxX, float* maxY, float* maxZ);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsgMeshComputeBoundingBox(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> mesh, <a href='rs_value_types.html#android_rs:float3'>float3</a>* bBoxMin, <a href='rs_value_types.html#android_rs:float3'>float3</a>* bBoxMax);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Computes an axis aligned bounding box of a mesh object
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeshGetIndexAllocation'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeshGetIndexAllocation</span>
+    <span class='normal'>: Return an allocation containing index data</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> rsgMeshGetIndexAllocation(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>mesh to get data from</td></tr>
+    <tr><th>index</th><td>index of the index allocation</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>allocation containing index data</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Returns an allocation containing index data or a null
+allocation if only the primitive is specified
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeshGetPrimitive'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeshGetPrimitive</span>
+    <span class='normal'>: Return the primitive</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_graphics.html#android_rs:rs_primitive'>rs_primitive</a> rsgMeshGetPrimitive(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>mesh to get data from</td></tr>
+    <tr><th>index</th><td>index of the primitive</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>primitive describing how the mesh is rendered</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Returns the primitive describing how a part of the mesh is
+rendered
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeshGetPrimitiveCount'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeshGetPrimitiveCount</span>
+    <span class='normal'>: Return the number of index sets</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsgMeshGetPrimitiveCount(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> m);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>mesh to get data from</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>number of primitive groups in the mesh. This would include simple primitives as well as allocations containing index data</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Meshes could have multiple index sets, this function returns
+the number.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeshGetVertexAllocation'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeshGetVertexAllocation</span>
+    <span class='normal'>: Return a vertex allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> rsgMeshGetVertexAllocation(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>mesh to get data from</td></tr>
+    <tr><th>index</th><td>index of the vertex allocation</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>allocation containing vertex data</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Returns an allocation that is part of the mesh and contains
+vertex data, e.g. positions, normals, texcoords
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgMeshGetVertexAllocationCount'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgMeshGetVertexAllocationCount</span>
+    <span class='normal'>: Return the number of vertex allocations</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsgMeshGetVertexAllocationCount(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> m);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>mesh to get data from</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>number of allocations in the mesh that contain vertex data</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Returns the number of allocations in the mesh that contain
+vertex data
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramFragmentConstantColor'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramFragmentConstantColor</span>
+    <span class='normal'>: Set the constant color for a fixed function emulation program</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgProgramFragmentConstantColor(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a> pf, float r, float g, float b, float a);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Set the constant color for a fixed function emulation program.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramRasterGetCullMode'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramRasterGetCullMode</span>
+    <span class='normal'>: Get program raster cull mode</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_graphics.html#android_rs:rs_cull_mode'>rs_cull_mode</a> rsgProgramRasterGetCullMode(<a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a> pr);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>pr</th><td>program raster to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program raster cull mode
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramRasterIsPointSpriteEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramRasterIsPointSpriteEnabled</span>
+    <span class='normal'>: Get program raster point sprite state</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramRasterIsPointSpriteEnabled(<a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a> pr);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>pr</th><td>program raster to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program raster point sprite state
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreGetBlendDstFunc'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreGetBlendDstFunc</span>
+    <span class='normal'>: Get program store blend destination function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_graphics.html#android_rs:rs_blend_dst_func'>rs_blend_dst_func</a> rsgProgramStoreGetBlendDstFunc(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store blend destination function
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreGetBlendSrcFunc'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreGetBlendSrcFunc</span>
+    <span class='normal'>: Get program store blend source function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_graphics.html#android_rs:rs_blend_src_func'>rs_blend_src_func</a> rsgProgramStoreGetBlendSrcFunc(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store blend source function
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreGetDepthFunc'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreGetDepthFunc</span>
+    <span class='normal'>: Get program store depth function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_graphics.html#android_rs:rs_depth_func'>rs_depth_func</a> rsgProgramStoreGetDepthFunc(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store depth function
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreIsColorMaskAlphaEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreIsColorMaskAlphaEnabled</span>
+    <span class='normal'>: Get program store alpha component color mask</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramStoreIsColorMaskAlphaEnabled(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store alpha component color mask
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreIsColorMaskBlueEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreIsColorMaskBlueEnabled</span>
+    <span class='normal'>: Get program store blur component color mask</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramStoreIsColorMaskBlueEnabled(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store blur component color mask
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreIsColorMaskGreenEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreIsColorMaskGreenEnabled</span>
+    <span class='normal'>: Get program store green component color mask</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramStoreIsColorMaskGreenEnabled(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store green component color mask
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreIsColorMaskRedEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreIsColorMaskRedEnabled</span>
+    <span class='normal'>: Get program store red component color mask</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramStoreIsColorMaskRedEnabled(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store red component color mask
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreIsDepthMaskEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreIsDepthMaskEnabled</span>
+    <span class='normal'>: Get program store depth mask</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramStoreIsDepthMaskEnabled(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store depth mask
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramStoreIsDitherEnabled'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramStoreIsDitherEnabled</span>
+    <span class='normal'>: Get program store dither state</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsgProgramStoreIsDitherEnabled(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> ps);
+</td>
+        <td>    When compiling for 32 bits. Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>ps</th><td>program store to query</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get program store dither state
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramVertexGetProjectionMatrix'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramVertexGetProjectionMatrix</span>
+    <span class='normal'>: Get the projection matrix for a fixed function vertex program</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgProgramVertexGetProjectionMatrix(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* proj);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>proj</th><td>matrix to store the current projection matrix into</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Get the projection matrix for a currently bound fixed function
+vertex program. Calling this function with a custom vertex shader
+would result in an error.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramVertexLoadModelMatrix'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramVertexLoadModelMatrix</span>
+    <span class='normal'>: Load the model matrix for a bound fixed function vertex program</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgProgramVertexLoadModelMatrix(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* model);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>model</th><td>model matrix</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Load the model matrix for a currently bound fixed function
+vertex program. Calling this function with a custom vertex shader
+would result in an error.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramVertexLoadProjectionMatrix'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramVertexLoadProjectionMatrix</span>
+    <span class='normal'>: Load the projection matrix for a bound fixed function vertex program</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgProgramVertexLoadProjectionMatrix(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* proj);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>proj</th><td>projection matrix</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Load the projection matrix for a currently bound fixed function
+vertex program. Calling this function with a custom vertex shader
+would result in an error.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsgProgramVertexLoadTextureMatrix'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsgProgramVertexLoadTextureMatrix</span>
+    <span class='normal'>: Load the texture matrix for a bound fixed function vertex program</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsgProgramVertexLoadTextureMatrix(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* tex);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>tex</th><td>texture matrix</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Do not use.</p>
+<p> Load the texture matrix for a currently bound fixed function
+vertex program. Calling this function with a custom vertex shader
+would result in an error.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_io.jd b/docs/html/guide/topics/renderscript/reference/rs_io.jd
new file mode 100644
index 0000000..d02c804
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_io.jd
@@ -0,0 +1,185 @@
+page.title=RenderScript Input/Output Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> These functions are used to:<ul>
+<li>Send information to the Java client, and</li>
+<li>Send the processed allocation or receive the next allocation to process.</li></ul>
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsAllocationIoReceive'>rsAllocationIoReceive</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Receive new content from the queue
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsAllocationIoSend'>rsAllocationIoSend</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send new content to the queue
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsSendToClient'>rsSendToClient</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send a message to the client, non-blocking
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_io.html#android_rs:rsSendToClientBlocking'>rsSendToClientBlocking</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Send a message to the client, blocking
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsAllocationIoReceive'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationIoReceive</span>
+    <span class='normal'>: Receive new content from the queue</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsAllocationIoReceive(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>a</th><td>Allocation to work on.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Receive a new set of contents from the queue.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationIoSend'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationIoSend</span>
+    <span class='normal'>: Send new content to the queue</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsAllocationIoSend(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>a</th><td>Allocation to work on.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Send the contents of the Allocation to the queue.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSendToClient'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSendToClient</span>
+    <span class='normal'>: Send a message to the client, non-blocking</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsSendToClient(int cmdID);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>bool rsSendToClient(int cmdID, const void* data, <a href='rs_value_types.html#android_rs:uint'>uint</a> len);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>cmdID</th><td></td></tr>
+    <tr><th>data</th><td>Application specific data.</td></tr>
+    <tr><th>len</th><td>Length of the data, in bytes.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Sends a message back to the client.  This call does not block.
+It returns true if the message was sent and false if the
+message queue is full.
+</p>
+
+<p> A message ID is required.  The data payload is optional.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler.html'>RenderScript.RSMessageHandler</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSendToClientBlocking'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSendToClientBlocking</span>
+    <span class='normal'>: Send a message to the client, blocking</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsSendToClientBlocking(int cmdID);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsSendToClientBlocking(int cmdID, const void* data, <a href='rs_value_types.html#android_rs:uint'>uint</a> len);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>cmdID</th><td></td></tr>
+    <tr><th>data</th><td>Application specific data.</td></tr>
+    <tr><th>len</th><td>Length of the data, in bytes.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Sends a message back to the client.  This function will block
+until there is room on the message queue for this message.
+This function may return before the message was delivered and
+processed by the client.
+</p>
+
+<p> A message ID is required.  The data payload is optional.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler.html'>RenderScript.RSMessageHandler</a>.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_math.jd b/docs/html/guide/topics/renderscript/reference/rs_math.jd
new file mode 100644
index 0000000..13513e9
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_math.jd
@@ -0,0 +1,7251 @@
+page.title=RenderScript Mathematical Constants and Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The mathematical functions below can be applied to scalars and vectors.   When applied
+to vectors, the returned value is a vector of the function applied to each entry of the input.
+</p>
+
+<p> For example:<code><br/>
+float3 a, b;<br/>
+// The following call sets<br/>
+//   a.x to sin(b.x),<br/>
+//   a.y to sin(b.y), and<br/>
+//   a.z to sin(b.z).<br/>
+a = sin(b);<br/>
+</code>
+</p>
+
+<p> See <a href='rs_vector_math.html'>Vector Math Functions</a> for functions like <a href='rs_vector_math.html#android_rs:distance'>distance</a>() and <a href='rs_vector_math.html#android_rs:length'>length</a>() that interpret
+instead the input as a single vector in n-dimensional space.
+</p>
+
+<p> The precision of the mathematical operations on 32 bit floats is affected by the pragmas
+rs_fp_relaxed and rs_fp_full.  Under rs_fp_relaxed, subnormal values may be flushed to zero and
+rounding may be done towards zero.  In comparison, rs_fp_full requires correct handling of
+subnormal values, i.e. smaller than 1.17549435e-38f.  rs_fp_rull also requires round to nearest
+with ties to even.
+</p>
+
+<p> Different precision/speed tradeoffs can be achieved by using variants of the common math
+functions.  Functions with a name starting with<ul>
+<li>native_: May have custom hardware implementations with weaker precision.  Additionally,
+  subnormal values may be flushed to zero, rounding towards zero may be used, and NaN and
+  infinity input may not be handled correctly.</li>
+<li>half_: May perform internal computations using 16 bit floats.  Additionally, subnormal
+  values may be flushed to zero, and rounding towards zero may be used.</li>
+</ul>
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Constants</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_1_PI'>M_1_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      1 / pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_2_PI'>M_2_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 / pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_2_SQRTPI'>M_2_SQRTPI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 / sqrt(pi), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_E'>M_E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LN10'>M_LN10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_e(10), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LN2'>M_LN2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_e(2), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LOG10E'>M_LOG10E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_10(e), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_LOG2E'>M_LOG2E</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      log_2(e), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI'>M_PI</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI_2'>M_PI_2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi / 2, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_PI_4'>M_PI_4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      pi / 4, as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_SQRT1_2'>M_SQRT1_2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      1 / sqrt(2), as a 32 bit float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:M_SQRT2'>M_SQRT2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      sqrt(2), as a 32 bit float
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:abs'>abs</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Absolute value of an integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acos'>acos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acosh'>acosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:acospi'>acospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse cosine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asin'>asin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asinh'>asinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:asinpi'>asinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse sine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan'>atan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan2'>atan2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent of a ratio
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atan2pi'>atan2pi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent of a ratio, divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atanh'>atanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:atanpi'>atanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverse tangent divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cbrt'>cbrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cube root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ceil'>ceil</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Smallest integer not less than a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:clamp'>clamp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Restrain a value to a range
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:clz'>clz</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Number of leading 0 bits
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:copysign'>copysign</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Copies the sign of a number to another
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cos'>cos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cosh'>cosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hypebolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:cospi'>cospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cosine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:degrees'>degrees</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Converts radians into degrees
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:erf'>erf</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mathematical error function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:erfc'>erfc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mathematical complementary error function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp'>exp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp10'>exp10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      10 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:exp2'>exp2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:expm1'>expm1</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      e raised to a number minus one
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fabs'>fabs</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Absolute value of a float
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fdim'>fdim</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive difference between two values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:floor'>floor</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Smallest integer not greater than a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fma'>fma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply and add
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmax'>fmax</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Maximum of two floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmin'>fmin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Minimum of two floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fmod'>fmod</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Modulo
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:fract'>fract</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive fractional part
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:frexp'>frexp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Binary mantissa and exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_recip'>half_recip</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_rsqrt'>half_rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal of a square root computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:half_sqrt'>half_sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Square root computed to 16 bit precision
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:hypot'>hypot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hypotenuse
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ilogb'>ilogb</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base two exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:ldexp'>ldexp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Creates a floating point from mantissa and exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:lgamma'>lgamma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm of the gamma function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log'>log</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log10'>log10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base 10 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log1p'>log1p</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Natural logarithm of a value plus 1
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:log2'>log2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base 2 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:logb'>logb</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base two exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:mad'>mad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply and add
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:max'>max</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Maximum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:min'>min</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Minimum
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:mix'>mix</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Mixes two values
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:modf'>modf</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Integral and fractional components
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:nan'>nan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Not a Number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acos'>native_acos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acosh'>native_acosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_acospi'>native_acospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse cosine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asin'>native_asin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asinh'>native_asinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_asinpi'>native_asinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse sine divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan'>native_atan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan2'>native_atan2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent of a ratio
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atan2pi'>native_atan2pi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent of a ratio, divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atanh'>native_atanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_atanpi'>native_atanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate inverse tangent divided by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cbrt'>native_cbrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cube root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cos'>native_cos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cosh'>native_cosh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hypebolic cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_cospi'>native_cospi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate cosine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_divide'>native_divide</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp'>native_exp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate e raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp10'>native_exp10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate 10 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_exp2'>native_exp2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate 2 raised to a number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_expm1'>native_expm1</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate e raised to a number minus one
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_hypot'>native_hypot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hypotenuse
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log'>native_log</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate natural logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log10'>native_log10</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate base 10 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log1p'>native_log1p</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate natural logarithm of a value plus 1
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_log2'>native_log2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate base 2 logarithm
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_powr'>native_powr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate positive base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_recip'>native_recip</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate reciprocal
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_rootn'>native_rootn</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate nth root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_rsqrt'>native_rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate reciprocal of a square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sin'>native_sin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sincos'>native_sincos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine and cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sinh'>native_sinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sinpi'>native_sinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate sine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_sqrt'>native_sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tan'>native_tan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tanh'>native_tanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:native_tanpi'>native_tanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate tangent of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:nextafter'>nextafter</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Next floating point number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:pow'>pow</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:pown'>pown</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Base raised to an integer exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:powr'>powr</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Positive base raised to an exponent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:radians'>radians</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Converts degrees into radians
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:remainder'>remainder</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Remainder of a division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:remquo'>remquo</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Remainder and quotient of a division
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rint'>rint</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Round to even
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rootn'>rootn</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Nth root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:round'>round</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Round away from zero
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsRand'>rsRand</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Pseudo-random number
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsqrt'>rsqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Reciprocal of a square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sign'>sign</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sign of a value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sin'>sin</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sincos'>sincos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine and cosine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sinh'>sinh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hyperbolic sine
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sinpi'>sinpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sine of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:sqrt'>sqrt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Square root
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:step'>step</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      0 if less than a value, 0 otherwise
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tan'>tan</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tanh'>tanh</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Hyperbolic tangent
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tanpi'>tanpi</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Tangent of a number multiplied by pi
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:tgamma'>tgamma</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Gamma function
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:trunc'>trunc</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Truncates a floating point
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Deprecated Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsClamp'>rsClamp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Restrain a value to a range
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_math.html#android_rs:rsFrac'>rsFrac</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Returns the fractional part of a float
+    </td>
+  </tr>
+</tbody></table>
+<h2>Constants</h2>
+<a name='android_rs:M_1_PI'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_1_PI</span>
+    <span class='normal'>: 1 / pi, as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 0.318309886183790671537767526745028724f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The inverse of pi, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_2_PI'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_2_PI</span>
+    <span class='normal'>: 2 / pi, as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 0.636619772367581343075535053490057448f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> 2 divided by pi, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_2_SQRTPI'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_2_SQRTPI</span>
+    <span class='normal'>: 2 / sqrt(pi), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 1.128379167095512573896158903121545172f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> 2 divided by the square root of pi, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_E'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_E</span>
+    <span class='normal'>: e, as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 2.718281828459045235360287471352662498f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The number e, the base of the natural logarithm, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_LN10'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_LN10</span>
+    <span class='normal'>: log_e(10), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 2.302585092994045684017991454684364208f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The natural logarithm of 10, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_LN2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_LN2</span>
+    <span class='normal'>: log_e(2), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 0.693147180559945309417232121458176568f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The natural logarithm of 2, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_LOG10E'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_LOG10E</span>
+    <span class='normal'>: log_10(e), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 0.434294481903251827651128918916605082f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The logarithm base 10 of e, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_LOG2E'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_LOG2E</span>
+    <span class='normal'>: log_2(e), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 1.442695040888963407359924681001892137f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The logarithm base 2 of e, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_PI'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_PI</span>
+    <span class='normal'>: pi, as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 3.141592653589793238462643383279502884f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The constant pi, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_PI_2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_PI_2</span>
+    <span class='normal'>: pi / 2, as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 1.570796326794896619231321691639751442f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> Pi divided by 2, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_PI_4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_PI_4</span>
+    <span class='normal'>: pi / 4, as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 0.785398163397448309615660845819875721f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> Pi divided by 4, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_SQRT1_2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_SQRT1_2</span>
+    <span class='normal'>: 1 / sqrt(2), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 0.707106781186547524400844362104849039f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The inverse of the square root of 2, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<a name='android_rs:M_SQRT2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>M_SQRT2</span>
+    <span class='normal'>: sqrt(2), as a 32 bit float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr><td>Value: 1.414213562373095048801688724209698079f
+      </td></tr>
+<br/>
+    </tbody></table>
+  </div>
+    <div class='jd-tagdata jd-tagdescr'>
+<p> The square root of 2, as a 32 bit float.
+</p>
+    </div>
+</div>
+
+<h2>Functions</h2>
+<a name='android_rs:abs'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>abs</span>
+    <span class='normal'>: Absolute value of an integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> abs(char v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> abs(<a href='rs_value_types.html#android_rs:char2'>char2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> abs(<a href='rs_value_types.html#android_rs:char3'>char3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> abs(<a href='rs_value_types.html#android_rs:char4'>char4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> abs(int v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> abs(<a href='rs_value_types.html#android_rs:int2'>int2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> abs(<a href='rs_value_types.html#android_rs:int3'>int3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> abs(<a href='rs_value_types.html#android_rs:int4'>int4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> abs(short v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> abs(<a href='rs_value_types.html#android_rs:short2'>short2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> abs(<a href='rs_value_types.html#android_rs:short3'>short3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> abs(<a href='rs_value_types.html#android_rs:short4'>short4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the absolute value of an integer.
+</p>
+
+<p> For floats, use <a href='rs_math.html#android_rs:fabs'>fabs</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:acos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>acos</span>
+    <span class='normal'>: Inverse cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float acos(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> acos(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> acos(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> acos(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse cosine, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_acos'>native_acos</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:acosh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>acosh</span>
+    <span class='normal'>: Inverse hyperbolic cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float acosh(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> acosh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> acosh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> acosh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse hyperbolic cosine, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_acosh'>native_acosh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:acospi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>acospi</span>
+    <span class='normal'>: Inverse cosine divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float acospi(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> acospi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> acospi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> acospi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse cosine in radians, divided by pi.
+</p>
+
+<p> To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_acospi'>native_acospi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:asin'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>asin</span>
+    <span class='normal'>: Inverse sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float asin(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> asin(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> asin(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> asin(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse sine, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_asin'>native_asin</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:asinh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>asinh</span>
+    <span class='normal'>: Inverse hyperbolic sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float asinh(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> asinh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> asinh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> asinh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse hyperbolic sine, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_asinh'>native_asinh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:asinpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>asinpi</span>
+    <span class='normal'>: Inverse sine divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float asinpi(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> asinpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> asinpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> asinpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse sine in radians, divided by pi.
+</p>
+
+<p> To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_asinpi'>native_asinpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:atan'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>atan</span>
+    <span class='normal'>: Inverse tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float atan(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> atan(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> atan(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> atan(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse tangent, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_atan'>native_atan</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:atan2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>atan2</span>
+    <span class='normal'>: Inverse tangent of a ratio</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float atan2(float numerator, float denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> atan2(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> atan2(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> atan2(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>numerator</th><td>Numerator.</td></tr>
+    <tr><th>denominator</th><td>Denominator.  Can be 0.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_atan2'>native_atan2</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:atan2pi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>atan2pi</span>
+    <span class='normal'>: Inverse tangent of a ratio, divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float atan2pi(float numerator, float denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> atan2pi(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> atan2pi(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> atan2pi(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>numerator</th><td>Numerator.</td></tr>
+    <tr><th>denominator</th><td>Denominator.  Can be 0.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
+</p>
+
+<p> To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_atan2pi'>native_atan2pi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:atanh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>atanh</span>
+    <span class='normal'>: Inverse hyperbolic tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float atanh(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> atanh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> atanh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> atanh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse hyperbolic tangent, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_atanh'>native_atanh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:atanpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>atanpi</span>
+    <span class='normal'>: Inverse tangent divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float atanpi(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> atanpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> atanpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> atanpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the inverse tangent in radians, divided by pi.
+</p>
+
+<p> To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_atanpi'>native_atanpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:cbrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>cbrt</span>
+    <span class='normal'>: Cube root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float cbrt(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> cbrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> cbrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> cbrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the cube root.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_cbrt'>native_cbrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ceil'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ceil</span>
+    <span class='normal'>: Smallest integer not less than a value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float ceil(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> ceil(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> ceil(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> ceil(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the smallest integer not less than a value.
+</p>
+
+<p> For example, <code>ceil(1.2f)</code> returns 2.f, and <code>ceil(-1.2f)</code> returns -1.f.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:floor'>floor</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:clamp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>clamp</span>
+    <span class='normal'>: Restrain a value to a range</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>char clamp(char value, char min_value, char max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> clamp(<a href='rs_value_types.html#android_rs:char2'>char2</a> value, char min_value, char max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> clamp(<a href='rs_value_types.html#android_rs:char2'>char2</a> value, <a href='rs_value_types.html#android_rs:char2'>char2</a> min_value, <a href='rs_value_types.html#android_rs:char2'>char2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> clamp(<a href='rs_value_types.html#android_rs:char3'>char3</a> value, char min_value, char max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> clamp(<a href='rs_value_types.html#android_rs:char3'>char3</a> value, <a href='rs_value_types.html#android_rs:char3'>char3</a> min_value, <a href='rs_value_types.html#android_rs:char3'>char3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> clamp(<a href='rs_value_types.html#android_rs:char4'>char4</a> value, char min_value, char max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> clamp(<a href='rs_value_types.html#android_rs:char4'>char4</a> value, <a href='rs_value_types.html#android_rs:char4'>char4</a> min_value, <a href='rs_value_types.html#android_rs:char4'>char4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float clamp(float value, float min_value, float max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> clamp(<a href='rs_value_types.html#android_rs:float2'>float2</a> value, float min_value, float max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> clamp(<a href='rs_value_types.html#android_rs:float2'>float2</a> value, <a href='rs_value_types.html#android_rs:float2'>float2</a> min_value, <a href='rs_value_types.html#android_rs:float2'>float2</a> max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> clamp(<a href='rs_value_types.html#android_rs:float3'>float3</a> value, float min_value, float max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> clamp(<a href='rs_value_types.html#android_rs:float3'>float3</a> value, <a href='rs_value_types.html#android_rs:float3'>float3</a> min_value, <a href='rs_value_types.html#android_rs:float3'>float3</a> max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> clamp(<a href='rs_value_types.html#android_rs:float4'>float4</a> value, float min_value, float max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> clamp(<a href='rs_value_types.html#android_rs:float4'>float4</a> value, <a href='rs_value_types.html#android_rs:float4'>float4</a> min_value, <a href='rs_value_types.html#android_rs:float4'>float4</a> max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int clamp(int value, int min_value, int max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> clamp(<a href='rs_value_types.html#android_rs:int2'>int2</a> value, int min_value, int max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> clamp(<a href='rs_value_types.html#android_rs:int2'>int2</a> value, <a href='rs_value_types.html#android_rs:int2'>int2</a> min_value, <a href='rs_value_types.html#android_rs:int2'>int2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> clamp(<a href='rs_value_types.html#android_rs:int3'>int3</a> value, int min_value, int max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> clamp(<a href='rs_value_types.html#android_rs:int3'>int3</a> value, <a href='rs_value_types.html#android_rs:int3'>int3</a> min_value, <a href='rs_value_types.html#android_rs:int3'>int3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> clamp(<a href='rs_value_types.html#android_rs:int4'>int4</a> value, int min_value, int max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> clamp(<a href='rs_value_types.html#android_rs:int4'>int4</a> value, <a href='rs_value_types.html#android_rs:int4'>int4</a> min_value, <a href='rs_value_types.html#android_rs:int4'>int4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td>long clamp(long value, long min_value, long max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> clamp(<a href='rs_value_types.html#android_rs:long2'>long2</a> value, long min_value, long max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> clamp(<a href='rs_value_types.html#android_rs:long2'>long2</a> value, <a href='rs_value_types.html#android_rs:long2'>long2</a> min_value, <a href='rs_value_types.html#android_rs:long2'>long2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> clamp(<a href='rs_value_types.html#android_rs:long3'>long3</a> value, long min_value, long max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> clamp(<a href='rs_value_types.html#android_rs:long3'>long3</a> value, <a href='rs_value_types.html#android_rs:long3'>long3</a> min_value, <a href='rs_value_types.html#android_rs:long3'>long3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> clamp(<a href='rs_value_types.html#android_rs:long4'>long4</a> value, long min_value, long max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> clamp(<a href='rs_value_types.html#android_rs:long4'>long4</a> value, <a href='rs_value_types.html#android_rs:long4'>long4</a> min_value, <a href='rs_value_types.html#android_rs:long4'>long4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td>short clamp(short value, short min_value, short max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> clamp(<a href='rs_value_types.html#android_rs:short2'>short2</a> value, short min_value, short max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> clamp(<a href='rs_value_types.html#android_rs:short2'>short2</a> value, <a href='rs_value_types.html#android_rs:short2'>short2</a> min_value, <a href='rs_value_types.html#android_rs:short2'>short2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> clamp(<a href='rs_value_types.html#android_rs:short3'>short3</a> value, short min_value, short max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> clamp(<a href='rs_value_types.html#android_rs:short3'>short3</a> value, <a href='rs_value_types.html#android_rs:short3'>short3</a> min_value, <a href='rs_value_types.html#android_rs:short3'>short3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> clamp(<a href='rs_value_types.html#android_rs:short4'>short4</a> value, short min_value, short max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> clamp(<a href='rs_value_types.html#android_rs:short4'>short4</a> value, <a href='rs_value_types.html#android_rs:short4'>short4</a> min_value, <a href='rs_value_types.html#android_rs:short4'>short4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> clamp(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> min_value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> clamp(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> min_value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> clamp(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> value, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> min_value, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> clamp(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> min_value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> clamp(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> value, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> min_value, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> clamp(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> min_value, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> clamp(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> value, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> min_value, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> clamp(<a href='rs_value_types.html#android_rs:uint'>uint</a> value, <a href='rs_value_types.html#android_rs:uint'>uint</a> min_value, <a href='rs_value_types.html#android_rs:uint'>uint</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> clamp(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> value, <a href='rs_value_types.html#android_rs:uint'>uint</a> min_value, <a href='rs_value_types.html#android_rs:uint'>uint</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> clamp(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> value, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> min_value, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> clamp(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> value, <a href='rs_value_types.html#android_rs:uint'>uint</a> min_value, <a href='rs_value_types.html#android_rs:uint'>uint</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> clamp(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> value, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> min_value, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> clamp(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> value, <a href='rs_value_types.html#android_rs:uint'>uint</a> min_value, <a href='rs_value_types.html#android_rs:uint'>uint</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> clamp(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> value, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> min_value, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong'>ulong</a> clamp(<a href='rs_value_types.html#android_rs:ulong'>ulong</a> value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> min_value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> clamp(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> min_value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> clamp(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> value, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> min_value, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> clamp(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> min_value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> clamp(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> value, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> min_value, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> clamp(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> min_value, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> clamp(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> value, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> min_value, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> clamp(<a href='rs_value_types.html#android_rs:ushort'>ushort</a> value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> min_value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> clamp(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> min_value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> clamp(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> value, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> min_value, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> clamp(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> min_value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> clamp(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> value, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> min_value, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> clamp(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> min_value, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> clamp(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> value, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> min_value, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> max_value);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 19</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>value</th><td>Value to be clamped.</td></tr>
+    <tr><th>min_value</th><td>Lower bound, a scalar or matching vector.</td></tr>
+    <tr><th>max_value</th><td>High bound, must match the type of low.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Clamps a value to a specified high and low bound.  clamp() returns min_value
+if value &lt; min_value, max_value if value &gt; max_value, otherwise value.
+</p>
+
+<p> There are two variants of clamp: one where the min and max are scalars applied
+to all entries of the value, the other where the min and max are also vectors.
+</p>
+
+<p> If min_value is greater than max_value, the results are undefined.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:clz'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>clz</span>
+    <span class='normal'>: Number of leading 0 bits</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>char clz(char value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> clz(<a href='rs_value_types.html#android_rs:char2'>char2</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> clz(<a href='rs_value_types.html#android_rs:char3'>char3</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> clz(<a href='rs_value_types.html#android_rs:char4'>char4</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int clz(int value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> clz(<a href='rs_value_types.html#android_rs:int2'>int2</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> clz(<a href='rs_value_types.html#android_rs:int3'>int3</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> clz(<a href='rs_value_types.html#android_rs:int4'>int4</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>short clz(short value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> clz(<a href='rs_value_types.html#android_rs:short2'>short2</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> clz(<a href='rs_value_types.html#android_rs:short3'>short3</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> clz(<a href='rs_value_types.html#android_rs:short4'>short4</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> clz(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> clz(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> clz(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> clz(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> clz(<a href='rs_value_types.html#android_rs:uint'>uint</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> clz(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> clz(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> clz(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> clz(<a href='rs_value_types.html#android_rs:ushort'>ushort</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> clz(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> clz(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> clz(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> value);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the number of leading 0-bits in a value.
+</p>
+
+<p> For example, <code>clz((char)0x03)</code> returns 6.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:copysign'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>copysign</span>
+    <span class='normal'>: Copies the sign of a number to another</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float copysign(float magnitude_value, float sign_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> copysign(<a href='rs_value_types.html#android_rs:float2'>float2</a> magnitude_value, <a href='rs_value_types.html#android_rs:float2'>float2</a> sign_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> copysign(<a href='rs_value_types.html#android_rs:float3'>float3</a> magnitude_value, <a href='rs_value_types.html#android_rs:float3'>float3</a> sign_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> copysign(<a href='rs_value_types.html#android_rs:float4'>float4</a> magnitude_value, <a href='rs_value_types.html#android_rs:float4'>float4</a> sign_value);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Copies the sign from sign_value to magnitude_value.
+</p>
+
+<p> The value returned is either magnitude_value or -magnitude_value.
+</p>
+
+<p> For example, <code>copysign(4.0f, -2.7f)</code> returns -4.0f and <code>copysign(-4.0f, 2.7f)</code> returns 4.0f.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:cos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>cos</span>
+    <span class='normal'>: Cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float cos(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> cos(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> cos(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> cos(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the cosine of an angle measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_cos'>native_cos</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:cosh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>cosh</span>
+    <span class='normal'>: Hypebolic cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float cosh(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> cosh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> cosh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> cosh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the hypebolic cosine of v, where v is measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_cosh'>native_cosh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:cospi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>cospi</span>
+    <span class='normal'>: Cosine of a number multiplied by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float cospi(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> cospi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> cospi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> cospi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the cosine of <code>(v * pi)</code>, where <code>(v * pi)</code> is measured in radians.
+</p>
+
+<p> To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_cospi'>native_cospi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:degrees'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>degrees</span>
+    <span class='normal'>: Converts radians into degrees</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float degrees(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> degrees(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> degrees(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> degrees(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Converts from radians to degrees.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:erf'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>erf</span>
+    <span class='normal'>: Mathematical error function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float erf(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> erf(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> erf(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> erf(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the error function.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:erfc'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>erfc</span>
+    <span class='normal'>: Mathematical complementary error function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float erfc(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> erfc(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> erfc(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> erfc(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the complementary error function.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:exp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>exp</span>
+    <span class='normal'>: e raised to a number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float exp(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> exp(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> exp(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> exp(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns e raised to v, i.e. e ^ v.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_exp'>native_exp</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:exp10'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>exp10</span>
+    <span class='normal'>: 10 raised to a number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float exp10(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> exp10(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> exp10(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> exp10(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns 10 raised to v, i.e. 10.f ^ v.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_exp10'>native_exp10</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:exp2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>exp2</span>
+    <span class='normal'>: 2 raised to a number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float exp2(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> exp2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> exp2(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> exp2(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns 2 raised to v, i.e. 2.f ^ v.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_exp2'>native_exp2</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:expm1'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>expm1</span>
+    <span class='normal'>: e raised to a number minus one</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float expm1(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> expm1(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> expm1(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> expm1(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns e raised to v minus 1, i.e. (e ^ v) - 1.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_expm1'>native_expm1</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fabs'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fabs</span>
+    <span class='normal'>: Absolute value of a float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fabs(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fabs(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fabs(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fabs(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the absolute value of the float v.
+</p>
+
+<p> For integers, use <a href='rs_math.html#android_rs:abs'>abs</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fdim'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fdim</span>
+    <span class='normal'>: Positive difference between two values</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fdim(float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fdim(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fdim(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fdim(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the positive difference between two values.
+</p>
+
+<p> If a &gt; b, returns (a - b) otherwise returns 0f.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:floor'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>floor</span>
+    <span class='normal'>: Smallest integer not greater than a value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float floor(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> floor(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> floor(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> floor(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the smallest integer not greater than a value.
+</p>
+
+<p> For example, <code>floor(1.2f)</code> returns 1.f, and <code>floor(-1.2f)</code> returns -2.f.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:ceil'>ceil</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fma'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fma</span>
+    <span class='normal'>: Multiply and add</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fma(float multiplicand1, float multiplicand2, float offset);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fma(<a href='rs_value_types.html#android_rs:float2'>float2</a> multiplicand1, <a href='rs_value_types.html#android_rs:float2'>float2</a> multiplicand2, <a href='rs_value_types.html#android_rs:float2'>float2</a> offset);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fma(<a href='rs_value_types.html#android_rs:float3'>float3</a> multiplicand1, <a href='rs_value_types.html#android_rs:float3'>float3</a> multiplicand2, <a href='rs_value_types.html#android_rs:float3'>float3</a> offset);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fma(<a href='rs_value_types.html#android_rs:float4'>float4</a> multiplicand1, <a href='rs_value_types.html#android_rs:float4'>float4</a> multiplicand2, <a href='rs_value_types.html#android_rs:float4'>float4</a> offset);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Multiply and add.  Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
+</p>
+
+<p> This function is similar to <a href='rs_math.html#android_rs:mad'>mad</a>().  fma() retains full precision of the multiplied result
+and rounds only after the addition.  <a href='rs_math.html#android_rs:mad'>mad</a>() rounds after the multiplication and the addition.
+This extra precision is not guaranteed in rs_fp_relaxed mode.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fmax'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fmax</span>
+    <span class='normal'>: Maximum of two floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fmax(float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fmax(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fmax(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fmax(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fmax(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fmax(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fmax(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the maximum of a and b, i.e. <code>(a &lt; b ? b : a)</code>.
+</p>
+
+<p> The <a href='rs_math.html#android_rs:max'>max</a>() function returns identical results but can be applied to more data types.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fmin'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fmin</span>
+    <span class='normal'>: Minimum of two floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fmin(float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fmin(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fmin(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fmin(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fmin(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fmin(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fmin(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the minimum of a and b, i.e. <code>(a &gt; b ? b : a)</code>.
+</p>
+
+<p> The <a href='rs_math.html#android_rs:min'>min</a>() function returns identical results but can be applied to more data types.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fmod'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fmod</span>
+    <span class='normal'>: Modulo</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fmod(float numerator, float denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fmod(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fmod(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fmod(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the remainder of (numerator / denominator), where the quotient is rounded towards zero.
+</p>
+
+<p> The function <a href='rs_math.html#android_rs:remainder'>remainder</a>() is similar but rounds toward the closest interger.
+For example, <code>fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
+while <code><a href='rs_math.html#android_rs:remainder'>remainder</a>(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fract'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fract</span>
+    <span class='normal'>: Positive fractional part</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fract(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float fract(float v, float* floor);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fract(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fract(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:float2'>float2</a>* floor);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fract(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fract(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:float3'>float3</a>* floor);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fract(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fract(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:float4'>float4</a>* floor);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td>Input value.</td></tr>
+    <tr><th>floor</th><td>If floor is not null, *floor will be set to the floor of v.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the positive fractional part of v, i.e. <code>v - floor(v)</code>.
+</p>
+
+<p> For example, <code>fract(1.3f, &amp;val)</code> returns 0.3f and sets val to 1.f.
+<code>fract(-1.3f, &amp;val)</code> returns 0.7f and sets val to -2.f.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:frexp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>frexp</span>
+    <span class='normal'>: Binary mantissa and exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float frexp(float v, int* exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> frexp(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:int2'>int2</a>* exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> frexp(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:int3'>int3</a>* exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> frexp(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:int4'>int4</a>* exponent);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td>Input value.</td></tr>
+    <tr><th>exponent</th><td>If exponent is not null, *exponent will be set to the exponent of v.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the binary mantissa and exponent of v, i.e. <code>v == mantissa * 2 ^ exponent</code>.
+</p>
+
+<p> The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
+</p>
+
+<p> See <a href='rs_math.html#android_rs:ldexp'>ldexp</a>() for the reverse operation.  See also <a href='rs_math.html#android_rs:logb'>logb</a>() and <a href='rs_math.html#android_rs:ilogb'>ilogb</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:half_recip'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>half_recip</span>
+    <span class='normal'>: Reciprocal computed to 16 bit precision</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float half_recip(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> half_recip(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> half_recip(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> half_recip(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate reciprocal of a value.
+</p>
+
+<p> The precision is that of a 16 bit floating point value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_recip'>native_recip</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:half_rsqrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>half_rsqrt</span>
+    <span class='normal'>: Reciprocal of a square root computed to 16 bit precision</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float half_rsqrt(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> half_rsqrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> half_rsqrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> half_rsqrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate value of <code>(1.f / sqrt(value))</code>.
+</p>
+
+<p> The precision is that of a 16 bit floating point value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:rsqrt'>rsqrt</a>(), <a href='rs_math.html#android_rs:native_rsqrt'>native_rsqrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:half_sqrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>half_sqrt</span>
+    <span class='normal'>: Square root computed to 16 bit precision</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float half_sqrt(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> half_sqrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> half_sqrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> half_sqrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate square root of a value.
+</p>
+
+<p> The precision is that of a 16 bit floating point value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:sqrt'>sqrt</a>(), <a href='rs_math.html#android_rs:native_sqrt'>native_sqrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:hypot'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>hypot</span>
+    <span class='normal'>: Hypotenuse</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float hypot(float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> hypot(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> hypot(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> hypot(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the hypotenuse, i.e. <code>sqrt(a * a + b * b)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_hypot'>native_hypot</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ilogb'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ilogb</span>
+    <span class='normal'>: Base two exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>int ilogb(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> ilogb(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> ilogb(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> ilogb(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the base two exponent of a value, where the mantissa is between
+1.f (inclusive) and 2.f (exclusive).
+</p>
+
+<p> For example, <code>ilogb(8.5f)</code> returns 3.
+</p>
+
+<p> Because of the difference in mantissa, this number is one less than is returned by <a href='rs_math.html#android_rs:frexp'>frexp</a>().
+</p>
+
+<p> <a href='rs_math.html#android_rs:logb'>logb</a>() is similar but returns a float.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ldexp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ldexp</span>
+    <span class='normal'>: Creates a floating point from mantissa and exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float ldexp(float mantissa, int exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> ldexp(<a href='rs_value_types.html#android_rs:float2'>float2</a> mantissa, int exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> ldexp(<a href='rs_value_types.html#android_rs:float2'>float2</a> mantissa, <a href='rs_value_types.html#android_rs:int2'>int2</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> ldexp(<a href='rs_value_types.html#android_rs:float3'>float3</a> mantissa, int exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> ldexp(<a href='rs_value_types.html#android_rs:float3'>float3</a> mantissa, <a href='rs_value_types.html#android_rs:int3'>int3</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> ldexp(<a href='rs_value_types.html#android_rs:float4'>float4</a> mantissa, int exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> ldexp(<a href='rs_value_types.html#android_rs:float4'>float4</a> mantissa, <a href='rs_value_types.html#android_rs:int4'>int4</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>mantissa</th><td>Mantissa.</td></tr>
+    <tr><th>exponent</th><td>Exponent, a single component or matching vector.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the floating point created from the mantissa and exponent,
+i.e. (mantissa * 2 ^ exponent).
+</p>
+
+<p> See <a href='rs_math.html#android_rs:frexp'>frexp</a>() for the reverse operation.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:lgamma'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>lgamma</span>
+    <span class='normal'>: Natural logarithm of the gamma function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float lgamma(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float lgamma(float v, int* sign_of_gamma);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> lgamma(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> lgamma(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:int2'>int2</a>* sign_of_gamma);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> lgamma(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> lgamma(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:int3'>int3</a>* sign_of_gamma);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> lgamma(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> lgamma(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:int4'>int4</a>* sign_of_gamma);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td></td></tr>
+    <tr><th>sign_of_gamma</th><td>If sign_of_gamma is not null, *sign_of_gamma will be set to -1.f if the gamma of v is negative, otherwise to 1.f.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the natural logarithm of the absolute value of the gamma function,
+i.e. <code><a href='rs_math.html#android_rs:log'>log</a>(<a href='rs_math.html#android_rs:fabs'>fabs</a>(<a href='rs_math.html#android_rs:tgamma'>tgamma</a>(v)))</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:tgamma'>tgamma</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:log'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>log</span>
+    <span class='normal'>: Natural logarithm</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float log(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> log(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> log(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> log(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the natural logarithm.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_log'>native_log</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:log10'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>log10</span>
+    <span class='normal'>: Base 10 logarithm</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float log10(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> log10(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> log10(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> log10(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the base 10 logarithm.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_log10'>native_log10</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:log1p'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>log1p</span>
+    <span class='normal'>: Natural logarithm of a value plus 1</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float log1p(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> log1p(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> log1p(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> log1p(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the natural logarithm of <code>(v + 1.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_log1p'>native_log1p</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:log2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>log2</span>
+    <span class='normal'>: Base 2 logarithm</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float log2(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> log2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> log2(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> log2(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the base 2 logarithm.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_log2'>native_log2</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:logb'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>logb</span>
+    <span class='normal'>: Base two exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float logb(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> logb(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> logb(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> logb(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the base two exponent of a value, where the mantissa is between
+1.f (inclusive) and 2.f (exclusive).
+</p>
+
+<p> For example, <code>logb(8.5f)</code> returns 3.f.
+</p>
+
+<p> Because of the difference in mantissa, this number is one less than is returned by frexp().
+</p>
+
+<p> <a href='rs_math.html#android_rs:ilogb'>ilogb</a>() is similar but returns an integer.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:mad'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>mad</span>
+    <span class='normal'>: Multiply and add</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float mad(float multiplicand1, float multiplicand2, float offset);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> mad(<a href='rs_value_types.html#android_rs:float2'>float2</a> multiplicand1, <a href='rs_value_types.html#android_rs:float2'>float2</a> multiplicand2, <a href='rs_value_types.html#android_rs:float2'>float2</a> offset);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> mad(<a href='rs_value_types.html#android_rs:float3'>float3</a> multiplicand1, <a href='rs_value_types.html#android_rs:float3'>float3</a> multiplicand2, <a href='rs_value_types.html#android_rs:float3'>float3</a> offset);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> mad(<a href='rs_value_types.html#android_rs:float4'>float4</a> multiplicand1, <a href='rs_value_types.html#android_rs:float4'>float4</a> multiplicand2, <a href='rs_value_types.html#android_rs:float4'>float4</a> offset);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Multiply and add.  Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
+</p>
+
+<p> This function is similar to <a href='rs_math.html#android_rs:fma'>fma</a>().  <a href='rs_math.html#android_rs:fma'>fma</a>() retains full precision of the multiplied result
+and rounds only after the addition.  mad() rounds after the multiplication and the addition.
+In rs_fp_relaxed mode, mad() may not do the rounding after multiplicaiton.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:max'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>max</span>
+    <span class='normal'>: Maximum</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>char max(char a, char b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> max(<a href='rs_value_types.html#android_rs:char2'>char2</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> max(<a href='rs_value_types.html#android_rs:char3'>char3</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> max(<a href='rs_value_types.html#android_rs:char4'>char4</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float max(float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> max(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> max(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> max(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int max(int a, int b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> max(<a href='rs_value_types.html#android_rs:int2'>int2</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> max(<a href='rs_value_types.html#android_rs:int3'>int3</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> max(<a href='rs_value_types.html#android_rs:int4'>int4</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>long max(long a, long b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> max(<a href='rs_value_types.html#android_rs:long2'>long2</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> max(<a href='rs_value_types.html#android_rs:long3'>long3</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> max(<a href='rs_value_types.html#android_rs:long4'>long4</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>short max(short a, short b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> max(<a href='rs_value_types.html#android_rs:short2'>short2</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> max(<a href='rs_value_types.html#android_rs:short3'>short3</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> max(<a href='rs_value_types.html#android_rs:short4'>short4</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> max(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> a, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> max(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> max(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> max(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> max(<a href='rs_value_types.html#android_rs:uint'>uint</a> a, <a href='rs_value_types.html#android_rs:uint'>uint</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> max(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> max(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> max(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong'>ulong</a> max(<a href='rs_value_types.html#android_rs:ulong'>ulong</a> a, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> max(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> max(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> max(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> max(<a href='rs_value_types.html#android_rs:ushort'>ushort</a> a, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> max(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> max(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> max(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the maximum value of two arguments.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:min'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>min</span>
+    <span class='normal'>: Minimum</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>char min(char a, char b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char2'>char2</a> min(<a href='rs_value_types.html#android_rs:char2'>char2</a> a, <a href='rs_value_types.html#android_rs:char2'>char2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char3'>char3</a> min(<a href='rs_value_types.html#android_rs:char3'>char3</a> a, <a href='rs_value_types.html#android_rs:char3'>char3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:char4'>char4</a> min(<a href='rs_value_types.html#android_rs:char4'>char4</a> a, <a href='rs_value_types.html#android_rs:char4'>char4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float min(float a, float b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> min(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> min(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> min(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int min(int a, int b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int2'>int2</a> min(<a href='rs_value_types.html#android_rs:int2'>int2</a> a, <a href='rs_value_types.html#android_rs:int2'>int2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int3'>int3</a> min(<a href='rs_value_types.html#android_rs:int3'>int3</a> a, <a href='rs_value_types.html#android_rs:int3'>int3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int4'>int4</a> min(<a href='rs_value_types.html#android_rs:int4'>int4</a> a, <a href='rs_value_types.html#android_rs:int4'>int4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>long min(long a, long b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long2'>long2</a> min(<a href='rs_value_types.html#android_rs:long2'>long2</a> a, <a href='rs_value_types.html#android_rs:long2'>long2</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long3'>long3</a> min(<a href='rs_value_types.html#android_rs:long3'>long3</a> a, <a href='rs_value_types.html#android_rs:long3'>long3</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:long4'>long4</a> min(<a href='rs_value_types.html#android_rs:long4'>long4</a> a, <a href='rs_value_types.html#android_rs:long4'>long4</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>short min(short a, short b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short2'>short2</a> min(<a href='rs_value_types.html#android_rs:short2'>short2</a> a, <a href='rs_value_types.html#android_rs:short2'>short2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short3'>short3</a> min(<a href='rs_value_types.html#android_rs:short3'>short3</a> a, <a href='rs_value_types.html#android_rs:short3'>short3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:short4'>short4</a> min(<a href='rs_value_types.html#android_rs:short4'>short4</a> a, <a href='rs_value_types.html#android_rs:short4'>short4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> min(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> a, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> min(<a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> a, <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> min(<a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> a, <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> min(<a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> a, <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> min(<a href='rs_value_types.html#android_rs:uint'>uint</a> a, <a href='rs_value_types.html#android_rs:uint'>uint</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint2'>uint2</a> min(<a href='rs_value_types.html#android_rs:uint2'>uint2</a> a, <a href='rs_value_types.html#android_rs:uint2'>uint2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint3'>uint3</a> min(<a href='rs_value_types.html#android_rs:uint3'>uint3</a> a, <a href='rs_value_types.html#android_rs:uint3'>uint3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint4'>uint4</a> min(<a href='rs_value_types.html#android_rs:uint4'>uint4</a> a, <a href='rs_value_types.html#android_rs:uint4'>uint4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong'>ulong</a> min(<a href='rs_value_types.html#android_rs:ulong'>ulong</a> a, <a href='rs_value_types.html#android_rs:ulong'>ulong</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> min(<a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> a, <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> min(<a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> a, <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> min(<a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> a, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> min(<a href='rs_value_types.html#android_rs:ushort'>ushort</a> a, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> min(<a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> a, <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> min(<a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> a, <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a> b);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> min(<a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> a, <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a> b);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the minimum value of two arguments.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:mix'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>mix</span>
+    <span class='normal'>: Mixes two values</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float mix(float start, float stop, float fraction);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> mix(<a href='rs_value_types.html#android_rs:float2'>float2</a> start, <a href='rs_value_types.html#android_rs:float2'>float2</a> stop, float fraction);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> mix(<a href='rs_value_types.html#android_rs:float2'>float2</a> start, <a href='rs_value_types.html#android_rs:float2'>float2</a> stop, <a href='rs_value_types.html#android_rs:float2'>float2</a> fraction);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> mix(<a href='rs_value_types.html#android_rs:float3'>float3</a> start, <a href='rs_value_types.html#android_rs:float3'>float3</a> stop, float fraction);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> mix(<a href='rs_value_types.html#android_rs:float3'>float3</a> start, <a href='rs_value_types.html#android_rs:float3'>float3</a> stop, <a href='rs_value_types.html#android_rs:float3'>float3</a> fraction);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> mix(<a href='rs_value_types.html#android_rs:float4'>float4</a> start, <a href='rs_value_types.html#android_rs:float4'>float4</a> stop, float fraction);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> mix(<a href='rs_value_types.html#android_rs:float4'>float4</a> start, <a href='rs_value_types.html#android_rs:float4'>float4</a> stop, <a href='rs_value_types.html#android_rs:float4'>float4</a> fraction);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns start + ((stop - start) * fraction).
+</p>
+
+<p> This can be useful for mixing two values.  For example, to create a new color that is
+40% color1 and 60% color2, use <code>mix(color1, color2, 0.6f)</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:modf'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>modf</span>
+    <span class='normal'>: Integral and fractional components</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float modf(float v, float* integral_part);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> modf(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:float2'>float2</a>* integral_part);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> modf(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:float3'>float3</a>* integral_part);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> modf(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:float4'>float4</a>* integral_part);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td>Source value.</td></tr>
+    <tr><th>integral_part</th><td>*integral_part will be set to the integral portion of the number.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Floating point portion of the value.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the integral and fractional components of a number.
+</p>
+
+<p> Both components will have the same sign as x.  For example, for an input of -3.72f,
+iret will be set to -3.f and .72f will be returned.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:nan'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>nan</span>
+    <span class='normal'>: Not a Number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float nan(<a href='rs_value_types.html#android_rs:uint'>uint</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td>Not used.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns a NaN value (Not a Number).
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_acos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_acos</span>
+    <span class='normal'>: Approximate inverse cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_acos(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_acos(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_acos(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_acos(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse cosine, in radians.
+</p>
+
+<p> This function yields undefined results from input values less than -1 or greater than 1.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:acos'>acos</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_acosh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_acosh</span>
+    <span class='normal'>: Approximate inverse hyperbolic cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_acosh(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_acosh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_acosh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_acosh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse hyperbolic cosine, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:acosh'>acosh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_acospi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_acospi</span>
+    <span class='normal'>: Approximate inverse cosine divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_acospi(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_acospi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_acospi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_acospi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse cosine in radians, divided by pi.
+</p>
+
+<p> To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
+</p>
+
+<p> This function yields undefined results from input values less than -1 or greater than 1.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:acospi'>acospi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_asin'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_asin</span>
+    <span class='normal'>: Approximate inverse sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_asin(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_asin(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_asin(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_asin(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse sine, in radians.
+</p>
+
+<p> This function yields undefined results from input values less than -1 or greater than 1.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:asin'>asin</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_asinh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_asinh</span>
+    <span class='normal'>: Approximate inverse hyperbolic sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_asinh(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_asinh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_asinh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_asinh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse hyperbolic sine, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:asinh'>asinh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_asinpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_asinpi</span>
+    <span class='normal'>: Approximate inverse sine divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_asinpi(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_asinpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_asinpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_asinpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse sine in radians, divided by pi.
+</p>
+
+<p> To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
+</p>
+
+<p> This function yields undefined results from input values less than -1 or greater than 1.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:asinpi'>asinpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_atan'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_atan</span>
+    <span class='normal'>: Approximate inverse tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_atan(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_atan(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_atan(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_atan(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse tangent, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:atan'>atan</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_atan2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_atan2</span>
+    <span class='normal'>: Approximate inverse tangent of a ratio</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_atan2(float numerator, float denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_atan2(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_atan2(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_atan2(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>numerator</th><td>Numerator.</td></tr>
+    <tr><th>denominator</th><td>Denominator.  Can be 0.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:atan2'>atan2</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_atan2pi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_atan2pi</span>
+    <span class='normal'>: Approximate inverse tangent of a ratio, divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_atan2pi(float numerator, float denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_atan2pi(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_atan2pi(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_atan2pi(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>numerator</th><td>Numerator.</td></tr>
+    <tr><th>denominator</th><td>Denominator.  Can be 0.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse tangent of <code>(numerator / denominator)</code>,
+in radians, divided by pi.
+</p>
+
+<p> To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:atan2pi'>atan2pi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_atanh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_atanh</span>
+    <span class='normal'>: Approximate inverse hyperbolic tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_atanh(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_atanh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_atanh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_atanh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse hyperbolic tangent, in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:atanh'>atanh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_atanpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_atanpi</span>
+    <span class='normal'>: Approximate inverse tangent divided by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_atanpi(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_atanpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_atanpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_atanpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate inverse tangent in radians, divided by pi.
+</p>
+
+<p> To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:atanpi'>atanpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_cbrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_cbrt</span>
+    <span class='normal'>: Approximate cube root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_cbrt(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_cbrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_cbrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_cbrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate cubic root.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:cbrt'>cbrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_cos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_cos</span>
+    <span class='normal'>: Approximate cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_cos(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_cos(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_cos(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_cos(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate cosine of an angle measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:cos'>cos</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_cosh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_cosh</span>
+    <span class='normal'>: Approximate hypebolic cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_cosh(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_cosh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_cosh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_cosh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate hypebolic cosine.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:cosh'>cosh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_cospi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_cospi</span>
+    <span class='normal'>: Approximate cosine of a number multiplied by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_cospi(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_cospi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_cospi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_cospi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate cosine of (v * pi), where (v * pi) is measured in radians.
+</p>
+
+<p> To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:cospi'>cospi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_divide'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_divide</span>
+    <span class='normal'>: Approximate division</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_divide(float left_vector, float right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_divide(<a href='rs_value_types.html#android_rs:float2'>float2</a> left_vector, <a href='rs_value_types.html#android_rs:float2'>float2</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_divide(<a href='rs_value_types.html#android_rs:float3'>float3</a> left_vector, <a href='rs_value_types.html#android_rs:float3'>float3</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_divide(<a href='rs_value_types.html#android_rs:float4'>float4</a> left_vector, <a href='rs_value_types.html#android_rs:float4'>float4</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the approximate division of two values.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_exp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_exp</span>
+    <span class='normal'>: Approximate e raised to a number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_exp(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_exp(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_exp(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_exp(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate exp.
+</p>
+
+<p> It is valid for inputs from -86.f to 86.f.  The precision is no worse than what would be
+expected from using 16 bit floating point values.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:exp'>exp</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_exp10'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_exp10</span>
+    <span class='normal'>: Approximate 10 raised to a number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_exp10(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_exp10(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_exp10(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_exp10(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate exp10.
+</p>
+
+<p> It is valid for inputs from -37.f to 37.f.  The precision is no worse than what would be
+expected from using 16 bit floating point values.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:exp10'>exp10</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_exp2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_exp2</span>
+    <span class='normal'>: Approximate 2 raised to a number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_exp2(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_exp2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_exp2(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_exp2(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate exp2.
+</p>
+
+<p> It is valid for inputs from -125.f to 125.f.  The precision is no worse than what would be
+expected from using 16 bit floating point values.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:exp2'>exp2</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_expm1'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_expm1</span>
+    <span class='normal'>: Approximate e raised to a number minus one</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_expm1(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_expm1(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_expm1(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_expm1(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate (e ^ v) - 1.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:expm1'>expm1</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_hypot'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_hypot</span>
+    <span class='normal'>: Approximate hypotenuse</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_hypot(float a, float b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_hypot(<a href='rs_value_types.html#android_rs:float2'>float2</a> a, <a href='rs_value_types.html#android_rs:float2'>float2</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_hypot(<a href='rs_value_types.html#android_rs:float3'>float3</a> a, <a href='rs_value_types.html#android_rs:float3'>float3</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_hypot(<a href='rs_value_types.html#android_rs:float4'>float4</a> a, <a href='rs_value_types.html#android_rs:float4'>float4</a> b);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate native_sqrt(a * a + b * b)
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:hypot'>hypot</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_log'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_log</span>
+    <span class='normal'>: Approximate natural logarithm</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_log(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_log(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_log(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_log(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate log.
+</p>
+
+<p> It is not accurate for values very close to zero.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:log'>log</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_log10'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_log10</span>
+    <span class='normal'>: Approximate base 10 logarithm</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_log10(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_log10(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_log10(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_log10(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate log10.
+</p>
+
+<p> It is not accurate for values very close to zero.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:log10'>log10</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_log1p'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_log1p</span>
+    <span class='normal'>: Approximate natural logarithm of a value plus 1</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_log1p(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_log1p(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_log1p(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_log1p(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate natural logarithm of (v + 1.0f)
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:log1p'>log1p</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_log2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_log2</span>
+    <span class='normal'>: Approximate base 2 logarithm</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_log2(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_log2(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_log2(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_log2(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate log2.
+</p>
+
+<p> It is not accurate for values very close to zero.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:log2'>log2</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_powr'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_powr</span>
+    <span class='normal'>: Approximate positive base raised to an exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_powr(float base, float exponent);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_powr(<a href='rs_value_types.html#android_rs:float2'>float2</a> base, <a href='rs_value_types.html#android_rs:float2'>float2</a> exponent);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_powr(<a href='rs_value_types.html#android_rs:float3'>float3</a> base, <a href='rs_value_types.html#android_rs:float3'>float3</a> exponent);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_powr(<a href='rs_value_types.html#android_rs:float4'>float4</a> base, <a href='rs_value_types.html#android_rs:float4'>float4</a> exponent);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 18</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>base</th><td>Must be between 0.f and 256.f.  The function is not accurate for values very close to zero.</td></tr>
+    <tr><th>exponent</th><td>Must be between -15.f and 15.f.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Fast approximate (base ^ exponent).
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:powr'>powr</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_recip'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_recip</span>
+    <span class='normal'>: Approximate reciprocal</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_recip(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_recip(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_recip(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_recip(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate approximate reciprocal of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:half_recip'>half_recip</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_rootn'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_rootn</span>
+    <span class='normal'>: Approximate nth root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_rootn(float v, int n);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_rootn(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:int2'>int2</a> n);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_rootn(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:int3'>int3</a> n);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_rootn(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:int4'>int4</a> n);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Compute the approximate Nth root of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:rootn'>rootn</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_rsqrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_rsqrt</span>
+    <span class='normal'>: Approximate reciprocal of a square root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_rsqrt(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_rsqrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_rsqrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_rsqrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns approximate (1 / sqrt(v)).
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:rsqrt'>rsqrt</a>(), <a href='rs_math.html#android_rs:half_rsqrt'>half_rsqrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_sin'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_sin</span>
+    <span class='normal'>: Approximate sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_sin(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_sin(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_sin(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_sin(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate sine of an angle measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:sin'>sin</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_sincos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_sincos</span>
+    <span class='normal'>: Approximate sine and cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_sincos(float v, float* cos);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_sincos(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:float2'>float2</a>* cos);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_sincos(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:float3'>float3</a>* cos);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_sincos(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:float4'>float4</a>* cos);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td>Incoming value in radians.</td></tr>
+    <tr><th>cos</th><td>*cos will be set to the cosine value.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Sine.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate sine and cosine of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:sincos'>sincos</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_sinh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_sinh</span>
+    <span class='normal'>: Approximate hyperbolic sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_sinh(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_sinh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_sinh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_sinh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate hyperbolic sine of a value specified in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:sinh'>sinh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_sinpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_sinpi</span>
+    <span class='normal'>: Approximate sine of a number multiplied by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_sinpi(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_sinpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_sinpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_sinpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate sine of (v * pi), where (v * pi) is measured in radians.
+</p>
+
+<p> To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:sinpi'>sinpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_sqrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_sqrt</span>
+    <span class='normal'>: Approximate square root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_sqrt(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_sqrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_sqrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_sqrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate sqrt(v).
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:sqrt'>sqrt</a>(), <a href='rs_math.html#android_rs:half_sqrt'>half_sqrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_tan'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_tan</span>
+    <span class='normal'>: Approximate tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_tan(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_tan(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_tan(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_tan(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate tangent of an angle measured in radians.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_tanh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_tanh</span>
+    <span class='normal'>: Approximate hyperbolic tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_tanh(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_tanh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_tanh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_tanh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate hyperbolic tangent of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:tanh'>tanh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_tanpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_tanpi</span>
+    <span class='normal'>: Approximate tangent of a number multiplied by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_tanpi(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_tanpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_tanpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_tanpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the approximate tangent of (v * pi), where (v * pi) is measured in radians.
+</p>
+
+<p> To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:tanpi'>tanpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:nextafter'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>nextafter</span>
+    <span class='normal'>: Next floating point number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float nextafter(float v, float target);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> nextafter(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:float2'>float2</a> target);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> nextafter(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:float3'>float3</a> target);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> nextafter(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:float4'>float4</a> target);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the next representable floating point number from v towards target.
+</p>
+
+<p> In rs_fp_relaxed mode, a denormalized input value may not yield the next denormalized
+value, as support of denormalized values is optional in relaxed mode.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:pow'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>pow</span>
+    <span class='normal'>: Base raised to an exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float pow(float base, float exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> pow(<a href='rs_value_types.html#android_rs:float2'>float2</a> base, <a href='rs_value_types.html#android_rs:float2'>float2</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> pow(<a href='rs_value_types.html#android_rs:float3'>float3</a> base, <a href='rs_value_types.html#android_rs:float3'>float3</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> pow(<a href='rs_value_types.html#android_rs:float4'>float4</a> base, <a href='rs_value_types.html#android_rs:float4'>float4</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns base raised to the power exponent, i.e. base ^ exponent.
+</p>
+
+<p> <a href='rs_math.html#android_rs:pown'>pown</a>() and <a href='rs_math.html#android_rs:powr'>powr</a>() are similar.  <a href='rs_math.html#android_rs:pown'>pown</a>() takes an integer exponent. <a href='rs_math.html#android_rs:powr'>powr</a>() assumes the
+base to be non-negative.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:pown'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>pown</span>
+    <span class='normal'>: Base raised to an integer exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float pown(float base, int exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> pown(<a href='rs_value_types.html#android_rs:float2'>float2</a> base, <a href='rs_value_types.html#android_rs:int2'>int2</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> pown(<a href='rs_value_types.html#android_rs:float3'>float3</a> base, <a href='rs_value_types.html#android_rs:int3'>int3</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> pown(<a href='rs_value_types.html#android_rs:float4'>float4</a> base, <a href='rs_value_types.html#android_rs:int4'>int4</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns base raised to the power exponent, i.e. base ^ exponent.
+</p>
+
+<p> <a href='rs_math.html#android_rs:pow'>pow</a>() and <a href='rs_math.html#android_rs:powr'>powr</a>() are similar.  The both take a float exponent. <a href='rs_math.html#android_rs:powr'>powr</a>() also assumes the
+base to be non-negative.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:powr'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>powr</span>
+    <span class='normal'>: Positive base raised to an exponent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float powr(float base, float exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> powr(<a href='rs_value_types.html#android_rs:float2'>float2</a> base, <a href='rs_value_types.html#android_rs:float2'>float2</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> powr(<a href='rs_value_types.html#android_rs:float3'>float3</a> base, <a href='rs_value_types.html#android_rs:float3'>float3</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> powr(<a href='rs_value_types.html#android_rs:float4'>float4</a> base, <a href='rs_value_types.html#android_rs:float4'>float4</a> exponent);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns base raised to the power exponent, i.e. base ^ exponent.  base must be &gt;= 0.
+</p>
+
+<p> <a href='rs_math.html#android_rs:pow'>pow</a>() and <a href='rs_math.html#android_rs:pown'>pown</a>() are similar.  They both make no assumptions about the base.
+<a href='rs_math.html#android_rs:pow'>pow</a>() takes a float exponent while <a href='rs_math.html#android_rs:pown'>pown</a>() take an integer.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_powr'>native_powr</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:radians'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>radians</span>
+    <span class='normal'>: Converts degrees into radians</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float radians(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> radians(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> radians(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> radians(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Converts from degrees to radians.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:remainder'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>remainder</span>
+    <span class='normal'>: Remainder of a division</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float remainder(float numerator, float denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> remainder(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> remainder(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> remainder(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the remainder of (numerator / denominator), where the quotient is rounded towards
+the nearest integer.
+</p>
+
+<p> The function <a href='rs_math.html#android_rs:fmod'>fmod</a>() is similar but rounds toward the closest interger.
+For example, <code><a href='rs_math.html#android_rs:fmod'>fmod</a>(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
+while <code>remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
+</p>
+  </div>
+</div>
+
+<a name='android_rs:remquo'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>remquo</span>
+    <span class='normal'>: Remainder and quotient of a division</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float remquo(float numerator, float denominator, int* quotient);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> remquo(<a href='rs_value_types.html#android_rs:float2'>float2</a> numerator, <a href='rs_value_types.html#android_rs:float2'>float2</a> denominator, <a href='rs_value_types.html#android_rs:int2'>int2</a>* quotient);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> remquo(<a href='rs_value_types.html#android_rs:float3'>float3</a> numerator, <a href='rs_value_types.html#android_rs:float3'>float3</a> denominator, <a href='rs_value_types.html#android_rs:int3'>int3</a>* quotient);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> remquo(<a href='rs_value_types.html#android_rs:float4'>float4</a> numerator, <a href='rs_value_types.html#android_rs:float4'>float4</a> denominator, <a href='rs_value_types.html#android_rs:int4'>int4</a>* quotient);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>numerator</th><td>Numerator.</td></tr>
+    <tr><th>denominator</th><td>Denominator.</td></tr>
+    <tr><th>quotient</th><td>*quotient will be set to the integer quotient.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Remainder, precise only for the low three bits.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the quotient and the remainder of (numerator / denominator).
+</p>
+
+<p> Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
+</p>
+
+<p> This function is useful for implementing periodic functions.  The low three bits of the
+quotient gives the quadrant and the remainder the distance within the quadrant.
+For example, an implementation of <a href='rs_math.html#android_rs:sin'>sin</a>(x) could call <code>remquo(x, PI / 2.f, &amp;quadrant)</code>
+to reduce very large value of x to something within a limited range.
+</p>
+
+<p> Example: <code>remquo(-23.5f, 8.f, &amp;quot)</code> sets the lowest three bits of quot to 3
+and the sign negative.  It returns 0.5f.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rint'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rint</span>
+    <span class='normal'>: Round to even</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rint(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rint(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rint(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rint(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Rounds to the nearest integral value.
+</p>
+
+<p> rint() rounds half values to even.  For example, <code>rint(0.5f)</code> returns 0.f and
+<code>rint(1.5f)</code> returns 2.f.  Similarly, <code>rint(-0.5f)</code> returns -0.f and
+<code>rint(-1.5f)</code> returns -2.f.
+</p>
+
+<p> <a href='rs_math.html#android_rs:round'>round</a>() is similar but rounds away from zero.  <a href='rs_math.html#android_rs:trunc'>trunc</a>() truncates the decimal fraction.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rootn'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rootn</span>
+    <span class='normal'>: Nth root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rootn(float v, int n);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rootn(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:int2'>int2</a> n);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rootn(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:int3'>int3</a> n);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rootn(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:int4'>int4</a> n);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Compute the Nth root of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_rootn'>native_rootn</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:round'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>round</span>
+    <span class='normal'>: Round away from zero</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float round(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> round(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> round(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> round(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Round to the nearest integral value.
+</p>
+
+<p> round() rounds half values away from zero.  For example, <code>round(0.5f)</code> returns 1.f
+and <code>round(1.5f)</code> returns 2.f.  Similarly, <code>round(-0.5f)</code> returns -1.f
+and <code>round(-1.5f)</code> returns -2.f.
+</p>
+
+<p> <a href='rs_math.html#android_rs:rint'>rint</a>() is similar but rounds half values toward even.  <a href='rs_math.html#android_rs:trunc'>trunc</a>() truncates the decimal fraction.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsClamp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsClamp</span>
+    <span class='normal'>: Restrain a value to a range</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>char rsClamp(char amount, char low, char high);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int rsClamp(int amount, int low, int high);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>short rsClamp(short amount, short low, short high);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uchar'>uchar</a> rsClamp(<a href='rs_value_types.html#android_rs:uchar'>uchar</a> amount, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> low, <a href='rs_value_types.html#android_rs:uchar'>uchar</a> high);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint'>uint</a> rsClamp(<a href='rs_value_types.html#android_rs:uint'>uint</a> amount, <a href='rs_value_types.html#android_rs:uint'>uint</a> low, <a href='rs_value_types.html#android_rs:uint'>uint</a> high);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:ushort'>ushort</a> rsClamp(<a href='rs_value_types.html#android_rs:ushort'>ushort</a> amount, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> low, <a href='rs_value_types.html#android_rs:ushort'>ushort</a> high);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>amount</th><td>Value to clamp.</td></tr>
+    <tr><th>low</th><td>Lower bound.</td></tr>
+    <tr><th>high</th><td>Upper bound.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Use <a href='rs_math.html#android_rs:clamp'>clamp</a>() instead.</p>
+<p> Clamp a value between low and high.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsFrac'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsFrac</span>
+    <span class='normal'>: Returns the fractional part of a float</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsFrac(float v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  Use <a href='rs_math.html#android_rs:fract'>fract</a>() instead.</p>
+<p> Returns the fractional part of a float
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsRand'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsRand</span>
+    <span class='normal'>: Pseudo-random number</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsRand(float max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float rsRand(float min_value, float max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int rsRand(int max_value);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>int rsRand(int min_value, int max_value);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Return a random value between 0 (or min_value) and max_malue.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsqrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsqrt</span>
+    <span class='normal'>: Reciprocal of a square root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsqrt(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsqrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsqrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsqrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns (1 / sqrt(v)).
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:half_rsqrt'>half_rsqrt</a>(), <a href='rs_math.html#android_rs:native_rsqrt'>native_rsqrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:sign'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>sign</span>
+    <span class='normal'>: Sign of a value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float sign(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> sign(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> sign(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> sign(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the sign of a value.
+</p>
+
+<p> if (v &lt; 0) return -1.f;
+else if (v &gt; 0) return 1.f;
+else return 0.f;
+</p>
+  </div>
+</div>
+
+<a name='android_rs:sin'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>sin</span>
+    <span class='normal'>: Sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float sin(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> sin(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> sin(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> sin(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the sine of an angle measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_sin'>native_sin</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:sincos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>sincos</span>
+    <span class='normal'>: Sine and cosine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float sincos(float v, float* cos);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> sincos(<a href='rs_value_types.html#android_rs:float2'>float2</a> v, <a href='rs_value_types.html#android_rs:float2'>float2</a>* cos);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> sincos(<a href='rs_value_types.html#android_rs:float3'>float3</a> v, <a href='rs_value_types.html#android_rs:float3'>float3</a>* cos);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> sincos(<a href='rs_value_types.html#android_rs:float4'>float4</a> v, <a href='rs_value_types.html#android_rs:float4'>float4</a>* cos);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>v</th><td>Incoming value in radians.</td></tr>
+    <tr><th>cos</th><td>*cos will be set to the cosine value.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Sine of v.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the sine and cosine of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_sincos'>native_sincos</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:sinh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>sinh</span>
+    <span class='normal'>: Hyperbolic sine</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float sinh(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> sinh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> sinh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> sinh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the hyperbolic sine of v, where v is measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_sinh'>native_sinh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:sinpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>sinpi</span>
+    <span class='normal'>: Sine of a number multiplied by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float sinpi(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> sinpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> sinpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> sinpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the sine of (v * pi), where (v * pi) is measured in radians.
+</p>
+
+<p> To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_sinpi'>native_sinpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:sqrt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>sqrt</span>
+    <span class='normal'>: Square root</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float sqrt(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> sqrt(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> sqrt(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> sqrt(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the square root of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:half_sqrt'>half_sqrt</a>(), <a href='rs_math.html#android_rs:native_sqrt'>native_sqrt</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:step'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>step</span>
+    <span class='normal'>: 0 if less than a value, 0 otherwise</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float step(float edge, float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> step(float edge, <a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> step(<a href='rs_value_types.html#android_rs:float2'>float2</a> edge, float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> step(<a href='rs_value_types.html#android_rs:float2'>float2</a> edge, <a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> step(float edge, <a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> step(<a href='rs_value_types.html#android_rs:float3'>float3</a> edge, float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> step(<a href='rs_value_types.html#android_rs:float3'>float3</a> edge, <a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> step(float edge, <a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> step(<a href='rs_value_types.html#android_rs:float4'>float4</a> edge, float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> step(<a href='rs_value_types.html#android_rs:float4'>float4</a> edge, <a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns 0.f if v &lt; edge, 1.f otherwise.
+</p>
+
+<p> This can be useful to create conditional computations without using loops and branching
+instructions.  For example, instead of computing <code>(a[i] &lt; b[i]) ? 0.f : <a href='rs_math.html#android_rs:atan2'>atan2</a>(a[i], b[i])</code>
+for the corresponding elements of a vector, you could instead use <code>step(a, b) * <a href='rs_math.html#android_rs:atan2'>atan2</a>(a, b)</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:tan'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>tan</span>
+    <span class='normal'>: Tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float tan(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> tan(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> tan(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> tan(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the tangent of an angle measured in radians.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_tan'>native_tan</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:tanh'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>tanh</span>
+    <span class='normal'>: Hyperbolic tangent</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float tanh(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> tanh(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> tanh(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> tanh(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the hyperbolic tangent of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_tanh'>native_tanh</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:tanpi'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>tanpi</span>
+    <span class='normal'>: Tangent of a number multiplied by pi</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float tanpi(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> tanpi(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> tanpi(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> tanpi(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the tangent of (v * pi), where (v * pi) is measured in radians.
+</p>
+
+<p> To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:native_tanpi'>native_tanpi</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:tgamma'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>tgamma</span>
+    <span class='normal'>: Gamma function</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float tgamma(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> tgamma(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> tgamma(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> tgamma(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the gamma function of a value.
+</p>
+
+<p> See also <a href='rs_math.html#android_rs:lgamma'>lgamma</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:trunc'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>trunc</span>
+    <span class='normal'>: Truncates a floating point</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float trunc(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> trunc(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> trunc(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> trunc(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Rounds to integral using truncation.
+</p>
+
+<p> For example, <code>trunc(1.7f)</code> returns 1.f and <code>trunc(-1.7f)</code> returns -1.f.
+</p>
+
+<p> See <a href='rs_math.html#android_rs:rint'>rint</a>() and <a href='rs_math.html#android_rs:round'>round</a>() for other rounding options.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_matrix.jd b/docs/html/guide/topics/renderscript/reference/rs_matrix.jd
new file mode 100644
index 0000000..5d0df18
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_matrix.jd
@@ -0,0 +1,1059 @@
+page.title=RenderScript Matrix Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> These functions let you manipulate square matrices of rank 2x2, 3x3, and 4x4.
+They are particularly useful for graphical transformations and are compatible
+with OpenGL.
+</p>
+
+<p> We use a zero-based index for rows and columns.  E.g. the last element of a
+<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a> is found at (3, 3).
+</p>
+
+<p> RenderScript uses column-major matrices and column-based vectors.  Transforming
+a vector is done by postmultiplying the vector, e.g. <code>(matrix * vector)</code>,
+as provided by <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+
+<p> To create a transformation matrix that performs two transformations at once,
+multiply the two source matrices, with the first transformation as the right
+argument.  E.g. to create a transformation matrix that applies the
+transformation s1 followed by s2, call <code>rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1)</code>.
+This derives from <code>s2 * (s1 * v)</code>, which is <code>(s2 * s1) * v</code>.
+</p>
+
+<p> We have two style of functions to create transformation matrices:
+rsMatrixLoad<i>Transformation</i> and rsMatrix<i>Transformation</i>.  The former
+style simply stores the transformation matrix in the first argument.  The latter
+modifies a pre-existing transformation matrix so that the new transformation
+happens first.  E.g. if you call <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>() on a matrix that already
+does a scaling, the resulting matrix when applied to a vector will first do the
+translation then the scaling.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsExtractFrustumPlanes'>rsExtractFrustumPlanes</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Compute frustum planes
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsIsSphereInFrustum'>rsIsSphereInFrustum</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Checks if a sphere is within the frustum planes
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixGet'>rsMatrixGet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get one element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixInverse'>rsMatrixInverse</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverts a matrix in place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixInverseTranspose'>rsMatrixInverseTranspose</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Inverts and transpose a matrix in place
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoad'>rsMatrixLoad</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load or copy a matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadFrustum'>rsMatrixLoadFrustum</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a frustum projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadIdentity'>rsMatrixLoadIdentity</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load identity matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadMultiply'>rsMatrixLoadMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply two matrices
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadOrtho'>rsMatrixLoadOrtho</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load an orthographic projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadPerspective'>rsMatrixLoadPerspective</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a perspective projection matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadRotate'>rsMatrixLoadRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a rotation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadScale'>rsMatrixLoadScale</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a scaling matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixLoadTranslate'>rsMatrixLoadTranslate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Load a translation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply a matrix by a vector or another matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixRotate'>rsMatrixRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a rotation to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixScale'>rsMatrixScale</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a scaling to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixSet'>rsMatrixSet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Set one element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Apply a translation to a transformation matrix
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_matrix.html#android_rs:rsMatrixTranspose'>rsMatrixTranspose</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Transpose a matrix place
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsExtractFrustumPlanes'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsExtractFrustumPlanes</span>
+    <span class='normal'>: Compute frustum planes</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsExtractFrustumPlanes(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* viewProj, <a href='rs_value_types.html#android_rs:float4'>float4</a>* left, <a href='rs_value_types.html#android_rs:float4'>float4</a>* right, <a href='rs_value_types.html#android_rs:float4'>float4</a>* top, <a href='rs_value_types.html#android_rs:float4'>float4</a>* bottom, <a href='rs_value_types.html#android_rs:float4'>float4</a>* near, <a href='rs_value_types.html#android_rs:float4'>float4</a>* far);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>viewProj</th><td>Matrix to extract planes from.</td></tr>
+    <tr><th>left</th><td>Left plane.</td></tr>
+    <tr><th>right</th><td>Right plane.</td></tr>
+    <tr><th>top</th><td>Top plane.</td></tr>
+    <tr><th>bottom</th><td>Bottom plane.</td></tr>
+    <tr><th>near</th><td>Near plane.</td></tr>
+    <tr><th>far</th><td>Far plane.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes 6 frustum planes from the view projection matrix
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsIsSphereInFrustum'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsIsSphereInFrustum</span>
+    <span class='normal'>: Checks if a sphere is within the frustum planes</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsIsSphereInFrustum(<a href='rs_value_types.html#android_rs:float4'>float4</a>* sphere, <a href='rs_value_types.html#android_rs:float4'>float4</a>* left, <a href='rs_value_types.html#android_rs:float4'>float4</a>* right, <a href='rs_value_types.html#android_rs:float4'>float4</a>* top, <a href='rs_value_types.html#android_rs:float4'>float4</a>* bottom, <a href='rs_value_types.html#android_rs:float4'>float4</a>* near, <a href='rs_value_types.html#android_rs:float4'>float4</a>* far);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>sphere</th><td>float4 representing the sphere.</td></tr>
+    <tr><th>left</th><td>Left plane.</td></tr>
+    <tr><th>right</th><td>Right plane.</td></tr>
+    <tr><th>top</th><td>Top plane.</td></tr>
+    <tr><th>bottom</th><td>Bottom plane.</td></tr>
+    <tr><th>near</th><td>Near plane.</td></tr>
+    <tr><th>far</th><td>Far plane.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns true if the sphere is within the 6 frustum planes.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixGet'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixGet</span>
+    <span class='normal'>: Get one element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsMatrixGet(const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float rsMatrixGet(const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float rsMatrixGet(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to extract the element from.</td></tr>
+    <tr><th>col</th><td>Zero-based column of the element to be extracted.</td></tr>
+    <tr><th>row</th><td>Zero-based row of the element to extracted.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns one element of a matrix.
+</p>
+
+<p> <b>Warning:</b> The order of the column and row parameters may be unexpected.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixInverse'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixInverse</span>
+    <span class='normal'>: Inverts a matrix in place</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsMatrixInverse(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to invert.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns true if the matrix was successfully inverted.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixInverseTranspose'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixInverseTranspose</span>
+    <span class='normal'>: Inverts and transpose a matrix in place</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsMatrixInverseTranspose(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to modify.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> The matrix is first inverted then transposed. Returns true if the matrix was
+successfully inverted.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoad'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoad</span>
+    <span class='normal'>: Load or copy a matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* destination, const float* array);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* source);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* destination, const float* array);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* source);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const float* array);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* source);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* source);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* source);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>destination</th><td>Matrix to set.</td></tr>
+    <tr><th>array</th><td>Array of values to set the matrix to. These arrays should be 4, 9, or 16 floats long, depending on the matrix size.</td></tr>
+    <tr><th>source</th><td>Source matrix.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Set the elements of a matrix from an array of floats or from another matrix.
+</p>
+
+<p> If loading from an array, the floats should be in row-major order, i.e. the element a
+<code>row 0, column 0</code> should be first, followed by the element at
+<code>row 0, column 1</code>, etc.
+</p>
+
+<p> If loading from a matrix and the source is smaller than the destination, the rest
+of the destination is filled with elements of the identity matrix.  E.g.
+loading a rs_matrix2x2 into a rs_matrix4x4 will give:
+<table style="max-width:300px">
+<tr><td>m00</td> <td>m01</td> <td>0.0</td> <td>0.0</td></tr>
+<tr><td>m10</td> <td>m11</td> <td>0.0</td> <td>0.0</td></tr>
+<tr><td>0.0</td> <td>0.0</td> <td>1.0</td> <td>0.0</td></tr>
+<tr><td>0.0</td> <td>0.0</td> <td>0.0</td> <td>1.0</td></tr>
+</table>
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadFrustum'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadFrustum</span>
+    <span class='normal'>: Load a frustum projection matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadFrustum(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float left, float right, float bottom, float top, float near, float far);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>left</th><td></td></tr>
+    <tr><th>right</th><td></td></tr>
+    <tr><th>bottom</th><td></td></tr>
+    <tr><th>top</th><td></td></tr>
+    <tr><th>near</th><td></td></tr>
+    <tr><th>far</th><td></td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Constructs a frustum projection matrix, transforming the box identified by
+the six clipping planes <code>left, right, bottom, top, near, far</code>.
+</p>
+
+<p> To apply this projection to a vector, multiply the vector by the created
+matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadIdentity'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadIdentity</span>
+    <span class='normal'>: Load identity matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadIdentity(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoadIdentity(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoadIdentity(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Set the elements of a matrix to the identity matrix.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadMultiply'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadMultiply</span>
+    <span class='normal'>: Multiply two matrices</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadMultiply(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* lhs, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoadMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* lhs, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixLoadMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* lhs, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>lhs</th><td>Left matrix of the product.</td></tr>
+    <tr><th>rhs</th><td>Right matrix of the product.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Sets m to the matrix product of <code>lhs * rhs</code>.
+</p>
+
+<p> To combine two 4x4 transformaton matrices, multiply the second transformation matrix
+by the first transformation matrix.  E.g. to create a transformation matrix that applies
+the transformation s1 followed by s2, call <code>rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1)</code>.
+</p>
+
+<p> <b>Warning:</b> Prior to version 21, storing the result back into right matrix is not supported and
+will result in undefined behavior.  Use rsMatrixMulitply instead.   E.g. instead of doing
+rsMatrixLoadMultiply (&amp;m2r, &amp;m2r, &amp;m2l), use rsMatrixMultiply (&amp;m2r, &amp;m2l).
+rsMatrixLoadMultiply (&amp;m2l, &amp;m2r, &amp;m2l) works as expected.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadOrtho'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadOrtho</span>
+    <span class='normal'>: Load an orthographic projection matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadOrtho(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float left, float right, float bottom, float top, float near, float far);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>left</th><td></td></tr>
+    <tr><th>right</th><td></td></tr>
+    <tr><th>bottom</th><td></td></tr>
+    <tr><th>top</th><td></td></tr>
+    <tr><th>near</th><td></td></tr>
+    <tr><th>far</th><td></td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Constructs an orthographic projection matrix, transforming the box identified by the
+six clipping planes <code>left, right, bottom, top, near, far</code> into a unit cube
+with a corner at <code>(-1, -1, -1)</code> and the opposite at <code>(1, 1, 1)</code>.
+</p>
+
+<p> To apply this projection to a vector, multiply the vector by the created matrix
+using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+
+<p> See https://en.wikipedia.org/wiki/Orthographic_projection .
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadPerspective'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadPerspective</span>
+    <span class='normal'>: Load a perspective projection matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadPerspective(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float fovy, float aspect, float near, float far);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>fovy</th><td>Field of view, in degrees along the Y axis.</td></tr>
+    <tr><th>aspect</th><td>Ratio of x / y.</td></tr>
+    <tr><th>near</th><td>Near clipping plane.</td></tr>
+    <tr><th>far</th><td>Far clipping plane.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Constructs a perspective projection matrix, assuming a symmetrical field of view.
+</p>
+
+<p> To apply this projection to a vector, multiply the vector by the created matrix
+using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadRotate'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadRotate</span>
+    <span class='normal'>: Load a rotation matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadRotate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float rot, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>rot</th><td>How much rotation to do, in degrees.</td></tr>
+    <tr><th>x</th><td>X component of the vector that is the axis of rotation.</td></tr>
+    <tr><th>y</th><td>Y component of the vector that is the axis of rotation.</td></tr>
+    <tr><th>z</th><td>Z component of the vector that is the axis of rotation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function creates a rotation matrix.  The axis of rotation is the <code>(x, y, z)</code> vector.
+</p>
+
+<p> To rotate a vector, multiply the vector by the created matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+
+<p> See http://en.wikipedia.org/wiki/Rotation_matrix .
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadScale'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadScale</span>
+    <span class='normal'>: Load a scaling matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadScale(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>x</th><td>Multiple to scale the x components by.</td></tr>
+    <tr><th>y</th><td>Multiple to scale the y components by.</td></tr>
+    <tr><th>z</th><td>Multiple to scale the z components by.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function creates a scaling matrix, where each component of a vector is multiplied
+by a number.  This number can be negative.
+</p>
+
+<p> To scale a vector, multiply the vector by the created matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixLoadTranslate'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixLoadTranslate</span>
+    <span class='normal'>: Load a translation matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixLoadTranslate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to set.</td></tr>
+    <tr><th>x</th><td>Number to add to each x component.</td></tr>
+    <tr><th>y</th><td>Number to add to each y component.</td></tr>
+    <tr><th>z</th><td>Number to add to each z component.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function creates a translation matrix, where a number is added to each element of
+a vector.
+</p>
+
+<p> To translate a vector, multiply the vector by the created matrix using
+<a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixMultiply'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixMultiply</span>
+    <span class='normal'>: Multiply a matrix by a vector or another matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float4'>float4</a> in);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float4'>float4</a> in);
+</td>
+        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Left matrix of the product and the matrix to be set.</td></tr>
+    <tr><th>rhs</th><td>Right matrix of the product.</td></tr>
+    <tr><th>in</th><td></td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> For the matrix by matrix variant, sets m to the matrix product <code>m * rhs</code>.
+</p>
+
+<p> When combining two 4x4 transformation matrices using this function, the resulting
+matrix will correspond to performing the rhs transformation first followed by
+the original m transformation.
+</p>
+
+<p> For the matrix by vector variant, returns the post-multiplication of the vector
+by the matrix, ie. <code>m * in</code>.
+</p>
+
+<p> When multiplying a float3 to a <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>, the vector is expanded with (1).
+</p>
+
+<p> When multiplying a float2 to a <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>, the vector is expanded with (0, 1).
+</p>
+
+<p> When multiplying a float2 to a <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>, the vector is expanded with (0).
+</p>
+
+<p> Starting with API 14, this function takes a const matrix as the first argument.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixRotate'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixRotate</span>
+    <span class='normal'>: Apply a rotation to a transformation matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixRotate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float rot, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to modify.</td></tr>
+    <tr><th>rot</th><td>How much rotation to do, in degrees.</td></tr>
+    <tr><th>x</th><td>X component of the vector that is the axis of rotation.</td></tr>
+    <tr><th>y</th><td>Y component of the vector that is the axis of rotation.</td></tr>
+    <tr><th>z</th><td>Z component of the vector that is the axis of rotation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Multiply the matrix m with a rotation matrix.
+</p>
+
+<p> This function modifies a transformation matrix to first do a rotation.  The axis of
+rotation is the <code>(x, y, z)</code> vector.
+</p>
+
+<p> To apply this combined transformation to a vector, multiply the vector by the created
+matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixScale'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixScale</span>
+    <span class='normal'>: Apply a scaling to a transformation matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixScale(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to modify.</td></tr>
+    <tr><th>x</th><td>Multiple to scale the x components by.</td></tr>
+    <tr><th>y</th><td>Multiple to scale the y components by.</td></tr>
+    <tr><th>z</th><td>Multiple to scale the z components by.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Multiply the matrix m with a scaling matrix.
+</p>
+
+<p> This function modifies a transformation matrix to first do a scaling.   When scaling,
+each component of a vector is multiplied by a number.  This number can be negative.
+</p>
+
+<p> To apply this combined transformation to a vector, multiply the vector by the created
+matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixSet'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixSet</span>
+    <span class='normal'>: Set one element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixSet(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row, float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixSet(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row, float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixSet(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row, float v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix that will be modified.</td></tr>
+    <tr><th>col</th><td>Zero-based column of the element to be set.</td></tr>
+    <tr><th>row</th><td>Zero-based row of the element to be set.</td></tr>
+    <tr><th>v</th><td>Value to set.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Set an element of a matrix.
+</p>
+
+<p> <b>Warning:</b> The order of the column and row parameters may be unexpected.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixTranslate'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixTranslate</span>
+    <span class='normal'>: Apply a translation to a transformation matrix</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixTranslate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to modify.</td></tr>
+    <tr><th>x</th><td>Number to add to each x component.</td></tr>
+    <tr><th>y</th><td>Number to add to each y component.</td></tr>
+    <tr><th>z</th><td>Number to add to each z component.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Multiply the matrix m with a translation matrix.
+</p>
+
+<p> This function modifies a transformation matrix to first do a translation.  When
+translating, a number is added to each component of a vector.
+</p>
+
+<p> To apply this combined transformation to a vector, multiply the vector by the
+created matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsMatrixTranspose'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsMatrixTranspose</span>
+    <span class='normal'>: Transpose a matrix place</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsMatrixTranspose(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixTranspose(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsMatrixTranspose(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Matrix to transpose.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Transpose the matrix m in place.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_object_info.jd b/docs/html/guide/topics/renderscript/reference/rs_object_info.jd
new file mode 100644
index 0000000..192df54
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_object_info.jd
@@ -0,0 +1,1077 @@
+page.title=RenderScript Object Characteristics Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The functions below can be used to query the characteristics of an Allocation, Element,
+or Sampler object.  These objects are created from Java.  You can't create them from a
+script.
+</p>
+
+<p> <h5>Allocations:</h5>
+</p>
+
+<p> Allocations are the primary method used to pass data to and from RenderScript kernels.
+</p>
+
+<p> They are a structured collection of cells that can be used to store bitmaps, textures,
+arbitrary data points, etc.
+</p>
+
+<p> This collection of cells may have many dimensions (X, Y, Z, Array0, Array1, Array2, Array3),
+faces (for cubemaps), and level of details (for mipmapping).
+</p>
+
+<p> See the <a href='http://developer.android.com/reference/android/renderscript/Allocation.html'>android.renderscript.Allocation</a> for details on to create Allocations.
+</p>
+
+<p> <h5>Elements:</h5>
+</p>
+
+<p> The term "element" is used a bit ambiguously in RenderScript, as both type information
+for the cells of an Allocation and the instantiation of that type.  For example:<ul>
+<li><a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> is a handle to a type specification, and</li>
+<li>In functions like <a href='rs_allocation_data.html#android_rs:rsGetElementAt'>rsGetElementAt</a>(), "element" means the instantiation of the type,
+    i.e. a cell of an Allocation.</li></ul>
+</p>
+
+<p> The functions below let you query the characteristics of the type specificiation.
+</p>
+
+<p> An Element can specify a simple data types as found in C, e.g. an integer, float, or
+boolean.  It can also specify a handle to a RenderScript object.  See <a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a> for
+a list of basic types.
+</p>
+
+<p> Elements can specify fixed size vector (of size 2, 3, or 4) versions of the basic types.
+Elements can be grouped together into complex Elements, creating the equivalent of
+C structure definitions.
+</p>
+
+<p> Elements can also have a kind, which is semantic information used to interpret pixel
+data.  See <a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a>.
+</p>
+
+<p> When creating Allocations of common elements, you can simply use one of the many predefined
+Elements like <a href='http://developer.android.com/reference/android/renderscript/Element.html#F32_2(android.renderscript.RenderScript)'>F32_2</a>.
+</p>
+
+<p> To create complex Elements, use the <a href='http://developer.android.com/reference/android/renderscript/Element.Builder.html'>Element.Builder</a> Java class.
+</p>
+
+<p> <h5>Samplers:</h5>
+</p>
+
+<p> Samplers objects define how Allocations can be read as structure within a kernel.
+See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimFaces'>rsAllocationGetDimFaces</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Presence of more than one face
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimLOD'>rsAllocationGetDimLOD</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Presence of levels of detail
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimX'>rsAllocationGetDimX</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the X dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimY'>rsAllocationGetDimY</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the Y dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetDimZ'>rsAllocationGetDimZ</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of the Z dimension
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsAllocationGetElement'>rsAllocationGetElement</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get the object that describes the cell of an Allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsClearObject'>rsClearObject</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Release an object
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetBytesSize'>rsElementGetBytesSize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Size of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetDataKind'>rsElementGetDataKind</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Kind of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetDataType'>rsElementGetDataType</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Data type of an Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElement'>rsElementGetSubElement</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sub-element of a complex Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementArraySize'>rsElementGetSubElementArraySize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Array size of a sub-element of a complex Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementCount'>rsElementGetSubElementCount</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Number of sub-elements
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementName'>rsElementGetSubElementName</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Name of a sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementNameLength'>rsElementGetSubElementNameLength</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Length of the name of a sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetSubElementOffsetBytes'>rsElementGetSubElementOffsetBytes</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Offset of the instantiated sub-element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsElementGetVectorSize'>rsElementGetVectorSize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Vector size of the Element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsIsObject'>rsIsObject</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Check for an empty handle
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetAnisotropy'>rsSamplerGetAnisotropy</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Anisotropy of the Sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetMagnification'>rsSamplerGetMagnification</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler magnification value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetMinification'>rsSamplerGetMinification</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler minification value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetWrapS'>rsSamplerGetWrapS</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap S value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsSamplerGetWrapT'>rsSamplerGetWrapT</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap T value
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Deprecated Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_info.html#android_rs:rsGetAllocation'>rsGetAllocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      <b>Deprecated</b>.  Return the Allocation for a given pointer
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsAllocationGetDimFaces'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationGetDimFaces</span>
+    <span class='normal'>: Presence of more than one face</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAllocationGetDimFaces(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Returns 1 if more than one face is present, 0 otherwise.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> If the Allocation is a cubemap, this function returns 1 if there's more than one face
+present.  In all other cases, it returns 0.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationGetDimLOD'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationGetDimLOD</span>
+    <span class='normal'>: Presence of levels of detail</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAllocationGetDimLOD(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Returns 1 if more than one LOD is present, 0 otherwise.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Query an Allocation for the presence of more than one Level Of Detail.  This is useful
+for mipmaps.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationGetDimX'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationGetDimX</span>
+    <span class='normal'>: Size of the X dimension</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAllocationGetDimX(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>X dimension of the Allocation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the size of the X dimension of the Allocation.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationGetDimY'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationGetDimY</span>
+    <span class='normal'>: Size of the Y dimension</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAllocationGetDimY(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Y dimension of the Allocation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the size of the Y dimension of the Allocation.  If the Allocation has less
+than two dimensions, returns 0.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationGetDimZ'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationGetDimZ</span>
+    <span class='normal'>: Size of the Z dimension</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsAllocationGetDimZ(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Z dimension of the Allocation.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the size of the Z dimension of the Allocation.  If the Allocation has less
+than three dimensions, returns 0.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsAllocationGetElement'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsAllocationGetElement</span>
+    <span class='normal'>: Get the object that describes the cell of an Allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> rsAllocationGetElement(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> a);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>a</th><td>Allocation to get data from.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Element describing Allocation layout.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Get the Element object describing the type, kind, and other characteristics of a cell
+of an Allocation.  See the rsElement* functions below.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsClearObject'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsClearObject</span>
+    <span class='normal'>: Release an object</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsClearObject(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a>* dst);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a>* dst);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_graphics.html#android_rs:rs_font'>rs_font</a>* dst);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a>* dst);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a>* dst);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a>* dst);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a>* dst);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_graphics.html#android_rs:rs_program_vertex'>rs_program_vertex</a>* dst);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a>* dst);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a>* dst);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsClearObject(<a href='rs_object_types.html#android_rs:rs_type'>rs_type</a>* dst);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Tells the run time that this handle will no longer be used to access the the related
+object.  If this was the last handle to that object, resource recovery may happen.
+</p>
+
+<p> After calling this function, *dst will be set to an empty handle.  See <a href='rs_object_info.html#android_rs:rsIsObject'>rsIsObject</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetBytesSize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetBytesSize</span>
+    <span class='normal'>: Size of an Element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetBytesSize(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the size in bytes that an instantiation of this Element will occupy.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetDataKind'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetDataKind</span>
+    <span class='normal'>: Kind of an Element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a> rsElementGetDataKind(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the Element's data kind.  This is used to interpret pixel data.
+</p>
+
+<p> See <a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetDataType'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetDataType</span>
+    <span class='normal'>: Data type of an Element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a> rsElementGetDataType(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the Element's base data type.  This can be a type similar to C/C++ (e.g.
+RS_TYPE_UNSIGNED_8), a handle (e.g. RS_TYPE_ALLOCATION and RS_TYPE_ELEMENT), or a
+more complex numerical type (e.g. RS_TYPE_UNSIGNED_5_6_5 and RS_TYPE_MATRIX_4X4).
+See <a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a>.
+</p>
+
+<p> If the Element describes a vector, this function returns the data type of one of its items.
+Use <a href='rs_object_info.html#android_rs:rsElementGetVectorSize'>rsElementGetVectorSize</a> to get the size of the vector.
+</p>
+
+<p> If the Element describes a structure, RS_TYPE_NONE is returned.  Use the rsElementGetSub*
+functions to explore this complex Element.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetSubElement'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetSubElement</span>
+    <span class='normal'>: Sub-element of a complex Element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> rsElementGetSubElement(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to query.</td></tr>
+    <tr><th>index</th><td>Index of the sub-element to return.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Sub-element at the given index.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> For Elements that represents a structure, this function returns the sub-element at the
+specified index.
+</p>
+
+<p> If the Element is not a structure or the index is greater or equal to the number of
+sub-elements, an invalid handle is returned.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetSubElementArraySize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetSubElementArraySize</span>
+    <span class='normal'>: Array size of a sub-element of a complex Element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetSubElementArraySize(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to query.</td></tr>
+    <tr><th>index</th><td>Index of the sub-element.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Array size of the sub-element.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> For complex Elements, sub-elements can be statically sized arrays.  This function
+returns the array size of the sub-element at the index.  This sub-element repetition
+is different than fixed size vectors.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetSubElementCount'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetSubElementCount</span>
+    <span class='normal'>: Number of sub-elements</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetSubElementCount(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to get data from.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Number of sub-elements.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Elements can be simple, such as an int or a float, or a structure with multiple
+sub-elements.  This function returns zero for simple Elements and the number of
+sub-elements for complex Elements.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetSubElementName'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetSubElementName</span>
+    <span class='normal'>: Name of a sub-element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetSubElementName(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index, char* name, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> nameLength);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to get data from.</td></tr>
+    <tr><th>index</th><td>Index of the sub-element.</td></tr>
+    <tr><th>name</th><td>Address of the array to store the name into.</td></tr>
+    <tr><th>nameLength</th><td>Length of the provided name array.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Number of characters copied, excluding the null terminator.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> For complex Elements, this function returns the name of the sub-element at the
+specified index.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetSubElementNameLength'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetSubElementNameLength</span>
+    <span class='normal'>: Length of the name of a sub-element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetSubElementNameLength(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to get data from.</td></tr>
+    <tr><th>index</th><td>Index of the sub-element.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Length of the sub-element name including the null terminator.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> For complex Elements, this function returns the length of the name of the sub-element
+at the specified index.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetSubElementOffsetBytes'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetSubElementOffsetBytes</span>
+    <span class='normal'>: Offset of the instantiated sub-element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetSubElementOffsetBytes(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> index);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to get data from.</td></tr>
+    <tr><th>index</th><td>Index of the sub-element.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Offset in bytes.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> This function returns the relative position of the instantiation of the specified
+sub-element within the instantiation of the Element.
+</p>
+
+<p> For example, if the Element describes a 32 bit float followed by a 32 bit integer,
+the offset return for the first will be 0 and the second 4.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsElementGetVectorSize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsElementGetVectorSize</span>
+    <span class='normal'>: Vector size of the Element</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> rsElementGetVectorSize(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> e);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>e</th><td>Element to get data from.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Length of the element vector.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the Element's vector size.  If the Element does not represent a vector,
+1 is returned.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsGetAllocation'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsGetAllocation</span>
+    <span class='normal'>: Return the Allocation for a given pointer</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> rsGetAllocation(const void* p);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+    <p><b>Deprecated.</b>  This function is deprecated and will be removed from the SDK in a future release.</p>
+<p> Returns the Allocation for a given pointer.  The pointer should point within a valid
+allocation.  The results are undefined if the pointer is not from a valid Allocation.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsIsObject'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsIsObject</span>
+    <span class='normal'>: Check for an empty handle</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_object_types.html#android_rs:rs_element'>rs_element</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_graphics.html#android_rs:rs_font'>rs_font</a> v);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_graphics.html#android_rs:rs_mesh'>rs_mesh</a> v);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_graphics.html#android_rs:rs_program_fragment'>rs_program_fragment</a> v);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_graphics.html#android_rs:rs_program_raster'>rs_program_raster</a> v);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_graphics.html#android_rs:rs_program_store'>rs_program_store</a> v);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_graphics.html#android_rs:rs_program_vertex'>rs_program_vertex</a> v);
+</td>
+        <td>    When compiling for 32 bits. 
+        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_object_types.html#android_rs:rs_script'>rs_script</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>bool rsIsObject(<a href='rs_object_types.html#android_rs:rs_type'>rs_type</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns true if the handle contains a non-null reference.
+</p>
+
+<p> This function does not validate that the internal pointer used in the handle
+points to an actual valid object; it only checks for null.
+</p>
+
+<p> This function can be used to check the Element returned by <a href='rs_object_info.html#android_rs:rsElementGetSubElement'>rsElementGetSubElement</a>()
+or see if <a href='rs_object_info.html#android_rs:rsClearObject'>rsClearObject</a>() has been called on a handle.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSamplerGetAnisotropy'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSamplerGetAnisotropy</span>
+    <span class='normal'>: Anisotropy of the Sampler</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsSamplerGetAnisotropy(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Get the Sampler's anisotropy.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSamplerGetMagnification'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSamplerGetMagnification</span>
+    <span class='normal'>: Sampler magnification value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a> rsSamplerGetMagnification(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Get the Sampler's magnification value.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSamplerGetMinification'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSamplerGetMinification</span>
+    <span class='normal'>: Sampler minification value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a> rsSamplerGetMinification(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Get the Sampler's minification value.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSamplerGetWrapS'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSamplerGetWrapS</span>
+    <span class='normal'>: Sampler wrap S value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a> rsSamplerGetWrapS(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Get the Sampler's wrap S value.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsSamplerGetWrapT'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsSamplerGetWrapT</span>
+    <span class='normal'>: Sampler wrap T value</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a> rsSamplerGetWrapT(<a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a> s);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Get the sampler's wrap T value.
+</p>
+
+<p> See <a href='http://developer.android.com/reference/android/renderscript/Sampler.html'>android.renderscript.S</a>.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_object_types.jd b/docs/html/guide/topics/renderscript/reference/rs_object_types.jd
new file mode 100644
index 0000000..f342896
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_object_types.jd
@@ -0,0 +1,336 @@
+page.title=RenderScript Object Types
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The types below are used to manipulate RenderScript objects like allocations, samplers,
+elements, and scripts.  Most of these object are created using the Java RenderScript APIs.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation'>rs_allocation</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to an allocation
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation_cubemap_face'>rs_allocation_cubemap_face</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Enum for selecting cube map faces
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_allocation_usage_type'>rs_allocation_usage_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Bitfield to specify how an allocation is used
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_data_kind'>rs_data_kind</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Element data kind
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_data_type'>rs_data_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Element basic data type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_element'>rs_element</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to an element
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_sampler'>rs_sampler</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Sampler
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_sampler_value'>rs_sampler_value</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Sampler wrap T value
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_script'>rs_script</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Script
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_object_types.html#android_rs:rs_type'>rs_type</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Handle to a Type
+    </td>
+  </tr>
+</tbody></table>
+<h2>Types</h2>
+<a name='android_rs:rs_allocation'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_allocation</span>
+    <span class='normal'>: Handle to an allocation</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> An opaque handle to a RenderScript allocation.
+</p>
+
+<p> See <a href="http://developer.android.com/reference/android/renderscript/Allocation.html">android.renderscript.Allocation</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_allocation_cubemap_face'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_allocation_cubemap_face</span>
+    <span class='normal'>: Enum for selecting cube map faces</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0</th><td></td></tr>
+    <tr><th>RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1</th><td></td></tr>
+    <tr><th>RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2</th><td></td></tr>
+    <tr><th>RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3</th><td></td></tr>
+    <tr><th>RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4</th><td></td></tr>
+    <tr><th>RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5</th><td></td></tr>
+  </tbody></table><br/>
+<p> An enum used to specify one the six faces of a cubemap.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_allocation_usage_type'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_allocation_usage_type</span>
+    <span class='normal'>: Bitfield to specify how an allocation is used</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_ALLOCATION_USAGE_SCRIPT = 0x0001</th><td>Allocation is bound to and accessed by scripts.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002</th><td>Deprecated.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004</th><td>Deprecated.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008</th><td>Deprecated.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010</th><td>Deprecated.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_IO_INPUT = 0x0020</th><td>Allocation is used as a Surface consumer.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_IO_OUTPUT = 0x0040</th><td>Allocation is used as a Surface producer.</td></tr>
+    <tr><th>RS_ALLOCATION_USAGE_SHARED = 0x0080</th><td>Allocation's backing store is shared with another object (usually a Bitmap).  Copying to or from the original source Bitmap will cause a synchronization rather than a full copy.</td></tr>
+  </tbody></table><br/>
+<p> These values are ORed together to specify which usages or memory spaces are
+relevant to an allocation or an operation on an allocation.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_data_kind'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_data_kind</span>
+    <span class='normal'>: Element data kind</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_KIND_USER         = 0</th><td>No special interpretation.</td></tr>
+    <tr><th>RS_KIND_PIXEL_L      = 7</th><td>Luminance.</td></tr>
+    <tr><th>RS_KIND_PIXEL_A      = 8</th><td>Alpha.</td></tr>
+    <tr><th>RS_KIND_PIXEL_LA     = 9</th><td>Luminance and Alpha.</td></tr>
+    <tr><th>RS_KIND_PIXEL_RGB    = 10</th><td>Red, Green, Blue.</td></tr>
+    <tr><th>RS_KIND_PIXEL_RGBA   = 11</th><td>Red, Green, Blue, and Alpha.</td></tr>
+    <tr><th>RS_KIND_PIXEL_DEPTH  = 12</th><td>Depth for a depth texture.</td></tr>
+    <tr><th>RS_KIND_PIXEL_YUV    = 13</th><td>Luminance and chrominance.</td></tr>
+    <tr><th>RS_KIND_INVALID      = 100</th><td></td></tr>
+  </tbody></table><br/>
+<p> This enumeration is primarly useful for graphical data.  It provides additional information to
+help interpret the rs_data_type.
+</p>
+
+<p> RS_KIND_USER indicates no special interpretation is expected.
+</p>
+
+<p> The RS_KIND_PIXEL_* values are used in conjunction with the standard data types for representing
+texture formats.
+</p>
+
+<p> See the <a href='http://developer.android.com/reference/android/renderscript/Element.html#createPixel(android.renderscript.RenderScript,%20android.renderscript.Element.DataType, android.renderscript.Element.DataKind)'>Element.createPixel()</a> method.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_data_type'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_data_type</span>
+    <span class='normal'>: Element basic data type</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_TYPE_NONE = 0</th><td>Element is a complex type, i.e. a struct.</td></tr>
+    <tr><th>RS_TYPE_FLOAT_32 = 2</th><td>A 32 bit float point value.</td></tr>
+    <tr><th>RS_TYPE_FLOAT_64 = 3</th><td>A 64 bit floating point value.</td></tr>
+    <tr><th>RS_TYPE_SIGNED_8 = 4</th><td>An 8 bit signed integer.</td></tr>
+    <tr><th>RS_TYPE_SIGNED_16 = 5</th><td>A 16 bit signed integer.</td></tr>
+    <tr><th>RS_TYPE_SIGNED_32 = 6</th><td>A 32 bit signed integer.</td></tr>
+    <tr><th>RS_TYPE_SIGNED_64 = 7</th><td>A 64 bit signed integer.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_8 = 8</th><td>An 8 bit unsigned integer.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_16 = 9</th><td>A 16 bit unsigned integer.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_32 = 10</th><td>A 32 bit unsigned integer.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_64 = 11</th><td>A 64 bit unsigned integer.</td></tr>
+    <tr><th>RS_TYPE_BOOLEAN = 12</th><td>0 or 1 (false or true) stored in an 8 bit container.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_5_6_5 = 13</th><td>A 16 bit unsigned integer packing graphical data in 5, 6, and 5 bit sections.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_5_5_5_1 = 14</th><td>A 16 bit unsigned integer packing graphical data in 5, 5, 5, and 1 bit sections.</td></tr>
+    <tr><th>RS_TYPE_UNSIGNED_4_4_4_4 = 15</th><td>A 16 bit unsigned integer packing graphical data in 4, 4, 4, and 4 bit sections.</td></tr>
+    <tr><th>RS_TYPE_MATRIX_4X4 = 16</th><td>A 4x4 matrix of 32 bit floats, aligned on a 32 bit boundary.</td></tr>
+    <tr><th>RS_TYPE_MATRIX_3X3 = 17</th><td>A 3x3 matrix of 32 bit floats, aligned on a 32 bit boundary.</td></tr>
+    <tr><th>RS_TYPE_MATRIX_2X2 = 18</th><td>A 2x2 matrix of 32 bit floats, aligned on a 32 bit boundary.</td></tr>
+    <tr><th>RS_TYPE_ELEMENT = 1000</th><td>A handle to an Element.</td></tr>
+    <tr><th>RS_TYPE_TYPE = 1001</th><td>A handle to a Type.</td></tr>
+    <tr><th>RS_TYPE_ALLOCATION = 1002</th><td>A handle to an Allocation.</td></tr>
+    <tr><th>RS_TYPE_SAMPLER = 1003</th><td>A handle to a Sampler.</td></tr>
+    <tr><th>RS_TYPE_SCRIPT = 1004</th><td>A handle to a Script.</td></tr>
+    <tr><th>RS_TYPE_MESH = 1005</th><td>Deprecated.</td></tr>
+    <tr><th>RS_TYPE_PROGRAM_FRAGMENT = 1006</th><td>Deprecated.</td></tr>
+    <tr><th>RS_TYPE_PROGRAM_VERTEX = 1007</th><td>Deprecated.</td></tr>
+    <tr><th>RS_TYPE_PROGRAM_RASTER = 1008</th><td>Deprecated.</td></tr>
+    <tr><th>RS_TYPE_PROGRAM_STORE = 1009</th><td>Deprecated.</td></tr>
+    <tr><th>RS_TYPE_FONT = 1010</th><td>Deprecated.</td></tr>
+    <tr><th>RS_TYPE_INVALID = 10000</th><td></td></tr>
+  </tbody></table><br/>
+<p> rs_data_type is used to encode the type information of a basic element.
+</p>
+
+<p> RS_TYPE_UNSIGNED_5_6_5, RS_TYPE_UNSIGNED_5_5_5_1, RS_TYPE_UNSIGNED_4_4_4_4 are for packed
+graphical data formats and represent vectors with per vector member sizes which are treated
+as a single unit for packing and alignment purposes.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_element'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_element</span>
+    <span class='normal'>: Handle to an element</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> An opaque handle to a RenderScript element.
+</p>
+
+<p> See <a href="http://developer.android.com/reference/android/renderscript/Element.html">android.renderscript.Element</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_sampler'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_sampler</span>
+    <span class='normal'>: Handle to a Sampler</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> An opaque handle to a RenderScript sampler object.
+</p>
+
+<p> See <a href="http://developer.android.com/reference/android/renderscript/Sampler.html">android.renderscript.Sampler</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_sampler_value'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_sampler_value</span>
+    <span class='normal'>: Sampler wrap T value</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>An enum with the following values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 16</a>
+</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>RS_SAMPLER_NEAREST = 0</th><td></td></tr>
+    <tr><th>RS_SAMPLER_LINEAR = 1</th><td></td></tr>
+    <tr><th>RS_SAMPLER_LINEAR_MIP_LINEAR = 2</th><td></td></tr>
+    <tr><th>RS_SAMPLER_WRAP = 3</th><td></td></tr>
+    <tr><th>RS_SAMPLER_CLAMP = 4</th><td></td></tr>
+    <tr><th>RS_SAMPLER_LINEAR_MIP_NEAREST = 5</th><td></td></tr>
+    <tr><th>RS_SAMPLER_MIRRORED_REPEAT = 6</th><td></td></tr>
+    <tr><th>RS_SAMPLER_INVALID = 100</th><td></td></tr>
+  </tbody></table><br/>
+  </div>
+</div>
+
+<a name='android_rs:rs_script'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_script</span>
+    <span class='normal'>: Handle to a Script</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> An opaque handle to a RenderScript script object.
+</p>
+
+<p> See <a href="http://developer.android.com/reference/android/renderscript/ScriptC.html">android.renderscript.ScriptC</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_type'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_type</span>
+    <span class='normal'>: Handle to a Type</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: _RS_HANDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> An opaque handle to a RenderScript type.
+</p>
+
+<p> See <a href="http://developer.android.com/reference/android/renderscript/Type.html">android.renderscript.Type</a>.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_quaternion.jd b/docs/html/guide/topics/renderscript/reference/rs_quaternion.jd
new file mode 100644
index 0000000..020f1ad
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_quaternion.jd
@@ -0,0 +1,387 @@
+page.title=RenderScript Quaternion Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The following functions manipulate quaternions.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionAdd'>rsQuaternionAdd</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Add two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionConjugate'>rsQuaternionConjugate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Conjugate a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionDot'>rsQuaternionDot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Dot product of two quaternions
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionGetMatrixUnit'>rsQuaternionGetMatrixUnit</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Get a rotation matrix from a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionLoadRotate'>rsQuaternionLoadRotate</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a rotation quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionLoadRotateUnit'>rsQuaternionLoadRotateUnit</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Quaternion that represents a rotation about an arbitrary unit vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionMultiply'>rsQuaternionMultiply</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Multiply a quaternion by a scalar or another quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionNormalize'>rsQuaternionNormalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Normalize a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionSet'>rsQuaternionSet</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Create a quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_quaternion.html#android_rs:rsQuaternionSlerp'>rsQuaternionSlerp</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Spherical linear interpolation between two quaternions
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:rsQuaternionAdd'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionAdd</span>
+    <span class='normal'>: Add two quaternions</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionAdd(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Destination quaternion to add to.</td></tr>
+    <tr><th>rhs</th><td>Quaternion to add.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Adds two quaternions, i.e. <code>*q += *rhs;</code>
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionConjugate'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionConjugate</span>
+    <span class='normal'>: Conjugate a quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionConjugate(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Quaternion to modify.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Conjugates the quaternion.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionDot'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionDot</span>
+    <span class='normal'>: Dot product of two quaternions</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsQuaternionDot(const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q0, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q1);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q0</th><td>First quaternion.</td></tr>
+    <tr><th>q1</th><td>Second quaternion.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the dot product of two quaternions.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionGetMatrixUnit'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionGetMatrixUnit</span>
+    <span class='normal'>: Get a rotation matrix from a quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionGetMatrixUnit(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>m</th><td>Resulting matrix.</td></tr>
+    <tr><th>q</th><td>Normalized quaternion.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes a rotation matrix from the normalized quaternion.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionLoadRotate'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionLoadRotate</span>
+    <span class='normal'>: Create a rotation quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionLoadRotate(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, float rot, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Destination quaternion.</td></tr>
+    <tr><th>rot</th><td>Angle to rotate by.</td></tr>
+    <tr><th>x</th><td>X component of a vector.</td></tr>
+    <tr><th>y</th><td>Y component of a vector.</td></tr>
+    <tr><th>z</th><td>Z component of a vector.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Loads a quaternion that represents a rotation about an arbitrary vector
+(doesn't have to be unit)
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionLoadRotateUnit'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionLoadRotateUnit</span>
+    <span class='normal'>: Quaternion that represents a rotation about an arbitrary unit vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionLoadRotateUnit(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, float rot, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Destination quaternion.</td></tr>
+    <tr><th>rot</th><td>Angle to rotate by, in radians.</td></tr>
+    <tr><th>x</th><td>X component of the vector.</td></tr>
+    <tr><th>y</th><td>Y component of the vector.</td></tr>
+    <tr><th>z</th><td>Z component of the vector.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Loads a quaternion that represents a rotation about an arbitrary unit vector.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionMultiply'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionMultiply</span>
+    <span class='normal'>: Multiply a quaternion by a scalar or another quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionMultiply(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsQuaternionMultiply(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, float scalar);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Destination quaternion.</td></tr>
+    <tr><th>scalar</th><td>Scalar to multiply the quaternion by.</td></tr>
+    <tr><th>rhs</th><td>Quaternion to multiply the destination quaternion by.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Multiplies a quaternion by a scalar or by another quaternion, e.g
+<code>*q = *q * scalar;</code> or <code>*q = *q * *rhs;</code>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionNormalize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionNormalize</span>
+    <span class='normal'>: Normalize a quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionNormalize(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Quaternion to normalize.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Normalizes the quaternion.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionSet'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionSet</span>
+    <span class='normal'>: Create a quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionSet(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* rhs);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>void rsQuaternionSet(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, float w, float x, float y, float z);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Destination quaternion.</td></tr>
+    <tr><th>w</th><td>W component.</td></tr>
+    <tr><th>x</th><td>X component.</td></tr>
+    <tr><th>y</th><td>Y component.</td></tr>
+    <tr><th>z</th><td>Z component.</td></tr>
+    <tr><th>rhs</th><td>Source quaternion.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Creates a quaternion from its four components or from another quaternion.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsQuaternionSlerp'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsQuaternionSlerp</span>
+    <span class='normal'>: Spherical linear interpolation between two quaternions</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>void rsQuaternionSlerp(<a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q0, const <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>* q1, float t);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>q</th><td>Result quaternion from the interpolation.</td></tr>
+    <tr><th>q0</th><td>First input quaternion.</td></tr>
+    <tr><th>q1</th><td>Second input quaternion.</td></tr>
+    <tr><th>t</th><td>How much to interpolate by.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Performs spherical linear interpolation between two quaternions.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_time.jd b/docs/html/guide/topics/renderscript/reference/rs_time.jd
new file mode 100644
index 0000000..27044a3
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_time.jd
@@ -0,0 +1,269 @@
+page.title=RenderScript Time Functions and Types
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> The functions below can be used to tell the current clock time and the current
+system up time.  It is not recommended to call these functions inside of a kernel.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rs_time_t'>rs_time_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Seconds since January 1, 1970
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rs_tm'>rs_tm</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Date and time structure
+    </td>
+  </tr>
+</tbody></table>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsGetDt'>rsGetDt</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Elapsed time since last call
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsLocaltime'>rsLocaltime</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Convert to local time
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsTime'>rsTime</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Seconds since January 1, 1970
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsUptimeMillis'>rsUptimeMillis</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      System uptime in milliseconds
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_time.html#android_rs:rsUptimeNanos'>rsUptimeNanos</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      System uptime in nanoseconds
+    </td>
+  </tr>
+</tbody></table>
+<h2>Types</h2>
+<a name='android_rs:rs_time_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_time_t</span>
+    <span class='normal'>: Seconds since January 1, 1970</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+<p>A typedef of: long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 64 bits. 
+</p>
+<p> Calendar time interpreted as seconds elapsed since the Epoch (00:00:00 on
+January 1, 1970, Coordinated Universal Time (UTC)).
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_tm'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_tm</span>
+    <span class='normal'>: Date and time structure</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A structure with the following fields:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>int tm_sec</th><td>Seconds after the minute. This ranges from 0 to 59, but possibly up to 60 for leap seconds.</td></tr>
+    <tr><th>int tm_min</th><td>Minutes after the hour. This ranges from 0 to 59.</td></tr>
+    <tr><th>int tm_hour</th><td>Hours past midnight. This ranges from 0 to 23.</td></tr>
+    <tr><th>int tm_mday</th><td>Day of the month. This ranges from 1 to 31.</td></tr>
+    <tr><th>int tm_mon</th><td>Months since January. This ranges from 0 to 11.</td></tr>
+    <tr><th>int tm_year</th><td>Years since 1900.</td></tr>
+    <tr><th>int tm_wday</th><td>Days since Sunday. This ranges from 0 to 6.</td></tr>
+    <tr><th>int tm_yday</th><td>Days since January 1. This ranges from 0 to 365.</td></tr>
+    <tr><th>int tm_isdst</th><td>Flag to indicate whether daylight saving time is in effect. The value is positive if it is in effect, zero if it is not, and negative if the information is not available.</td></tr>
+  </tbody></table><br/>
+<p> Data structure for broken-down time components.
+</p>
+  </div>
+</div>
+
+<h2>Functions</h2>
+<a name='android_rs:rsGetDt'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsGetDt</span>
+    <span class='normal'>: Elapsed time since last call</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float rsGetDt();
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Time in seconds.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the time in seconds since this function was last called in this script.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsLocaltime'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsLocaltime</span>
+    <span class='normal'>: Convert to local time</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_time.html#android_rs:rs_tm'>rs_tm</a>* rsLocaltime(<a href='rs_time.html#android_rs:rs_tm'>rs_tm</a>* local, const <a href='rs_time.html#android_rs:rs_time_t'>rs_time_t</a>* timer);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>local</th><td>Pointer to time structure where the local time will be stored.</td></tr>
+    <tr><th>timer</th><td>Input time as a number of seconds since January 1, 1970.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Pointer to the output local time, i.e. the same value as the parameter local.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Converts the time specified by timer into a <a href='rs_time.html#android_rs:rs_tm'>rs_tm</a> structure that provides year, month,
+hour, etc.  This value is stored at *local.
+</p>
+
+<p> This functions returns the same pointer that is passed as first argument.  If the
+local parameter is NULL, this function does nothing and returns NULL.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsTime'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsTime</span>
+    <span class='normal'>: Seconds since January 1, 1970</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_time.html#android_rs:rs_time_t'>rs_time_t</a> rsTime(<a href='rs_time.html#android_rs:rs_time_t'>rs_time_t</a>* timer);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><th>timer</th><td>Location to also store the returned calendar time.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Seconds since the Epoch, -1 if there's an error.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the number of seconds since the Epoch (00:00:00 UTC, January 1, 1970).
+</p>
+
+<p> If timer is non-NULL, the result is also stored in the memory pointed to by
+this variable.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsUptimeMillis'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsUptimeMillis</span>
+    <span class='normal'>: System uptime in milliseconds</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int64_t'>int64_t</a> rsUptimeMillis();
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Uptime in milliseconds.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the current system clock (uptime) in milliseconds.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rsUptimeNanos'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rsUptimeNanos</span>
+    <span class='normal'>: System uptime in nanoseconds</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:int64_t'>int64_t</a> rsUptimeNanos();
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Returns</h5>
+    <table class='jd-tagtable'><tbody>
+    <tr><td>Uptime in nanoseconds.</td></tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Returns the current system clock (uptime) in nanoseconds.
+</p>
+
+<p> The granularity of the values return by this call may be much larger than a nanosecond.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_value_types.jd b/docs/html/guide/topics/renderscript/reference/rs_value_types.jd
new file mode 100644
index 0000000..a7caf10
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_value_types.jd
@@ -0,0 +1,1172 @@
+page.title=RenderScript Numerical Types
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> <h5>Scalars:</h5>
+</p>
+
+<p> RenderScript supports the following scalar numerical types:
+<table>
+<tr><td>                 </td>  <td>8 bits        </td>   <td>16 bits         </td>   <td>32 bits       </td>   <td>64 bits</td></tr>
+<tr><td>Integer:         </td>  <td>char, <a href='rs_value_types.html#android_rs:int8_t'>int8_t</a>  </td>   <td>short, <a href='rs_value_types.html#android_rs:int16_t'>int16_t</a>  </td>   <td><a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>       </td>   <td>long, long long, <a href='rs_value_types.html#android_rs:int64_t'>int64_t</a></td></tr>
+<tr><td>Unsigned integer:</td>  <td>uchar, <a href='rs_value_types.html#android_rs:uint8_t'>uint8_t</a></td>   <td>ushort, <a href='rs_value_types.html#android_rs:uint16_t'>uint16_t</a></td>   <td>uint, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a></td>   <td>ulong, <a href='rs_value_types.html#android_rs:uint64_t'>uint64_t</a></td></tr>
+<tr><td>Floating point:  </td>  <td>              </td>   <td>                </td>   <td>float         </td>   <td>double</td></tr>
+</table>
+</p>
+
+<p> <h5>Vectors:</h5>
+</p>
+
+<p> RenderScript supports fixed size vectors of length 2, 3, and 4.
+Vectors are declared using the common type name followed by a 2, 3, or 4.
+E.g. <a href='rs_value_types.html#android_rs:float4'>float4</a>, <a href='rs_value_types.html#android_rs:int3'>int3</a>, <a href='rs_value_types.html#android_rs:double2'>double2</a>, <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a>.
+</p>
+
+<p> To create vector literals, use the vector type followed by the values enclosed
+between parentheses, e.g. <code>(float3)(1.0f, 2.0f, 3.0f)</code>.
+</p>
+
+<p> Entries of a vector can be accessed using different naming styles.
+</p>
+
+<p> Single entries can be accessed by following the variable name with a dot and:<ul>
+<li>The letters x, y, z, and w,</li>
+<li>The letters r, g, b, and a,</li>
+<li>The letter s or S, followed by a zero based index.</li></ul>
+</p>
+
+<p> For example, with <code>int4 myVar;</code> the following are equivalent:<code><br/>
+  myVar.x == myVar.r == myVar.s0 == myVar.S0<br/>
+  myVar.y == myVar.g == myVar.s1 == myVar.S1<br/>
+  myVar.z == myVar.b == myVar.s2 == myVar.S2<br/>
+  myVar.w == myVar.a == myVar.s3 == myVar.S3</code>
+</p>
+
+<p> Multiple entries of a vector can be accessed at once by using an identifier that is
+the concatenation of multiple letters or indices.  The resulting vector has a size
+equal to the number of entries named.
+</p>
+
+<p> With the example above, the middle two entries can be accessed using
+<code>myVar.yz</code>, <code>myVar.gb</code>, <code>myVar.s12</code>, and <code>myVar.S12</code>.
+</p>
+
+<p> The entries don't have to be contiguous or in increasing order.  Entries can even be
+repeated, as long as we're not trying to assign to it.  You also can't mix the naming
+styles.
+</p>
+
+<p> Here are examples of what can or can't be done:<code><br/>
+float4 v4;<br/>
+float3 v3;<br/>
+float2 v2;<br/>
+v2 = v4.xx; // Valid<br/>
+v3 = v4.zxw; // Valid<br/>
+v3 = v4.bba; // Valid<br/>
+v3 = v4.s032; // Valid<br/>
+v3.s120 = v4.S233; // Valid<br/>
+v4.yz = v3.rg; // Valid<br/>
+v4.yzx = v3.rg; // Invalid: mismatched sizes<br/>
+v4.yzz = v3; // Invalid: z appears twice in an assignment<br/>
+v3 = v3.xas0; // Invalid: can't mix xyzw with rgba nor s0...<br/>
+v3 = v4.s034; // Invalid: the digit can only be 0, 1, 2, or 3<br/>
+</code>
+</p>
+
+<p> <h5>Matrices and Quaternions:</h5>
+</p>
+
+<p> RenderScript supports fixed size square matrices of floats of size 2x2, 3x3, and 4x4.
+The types are named <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>, <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>, and <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>.  See
+<a href='rs_matrix.html'>Matrix Functions</a> for the list of operations.
+</p>
+
+<p> Quaternions are also supported via <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>.  See <a href='rs_quaternion.html'>Quaterion Functions</a> for the list
+of operations.
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Types</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char2'>char2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char3'>char3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:char4'>char4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 8 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double2'>double2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double3'>double3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:double4'>double4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float2'>float2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float3'>float3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:float4'>float4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int16_t'>int16_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int2'>int2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int3'>int3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int32_t'>int32_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int4'>int4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int64_t'>int64_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:int8_t'>int8_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit signed integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long2'>long2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long3'>long3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:long4'>long4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      2x2 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      3x3 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      4x4 matrix of 32 bit floats
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:rs_quaternion'>rs_quaternion</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Quaternion
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short2'>short2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short3'>short3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:short4'>short4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 16 bit signed integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:size_t'>size_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Unsigned size type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ssize_t'>ssize_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Signed size type
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar'>uchar</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar2'>uchar2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar3'>uchar3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uchar4'>uchar4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 8 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint'>uint</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint16_t'>uint16_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint2'>uint2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint3'>uint3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      32 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint4'>uint4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 32 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint64_t'>uint64_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:uint8_t'>uint8_t</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      8 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong'>ulong</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      64 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong2'>ulong2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong3'>ulong3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ulong4'>ulong4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 64 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort'>ushort</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      16 bit unsigned integer
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort2'>ushort2</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Two 16 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort3'>ushort3</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Three 16 bit unsigned integers
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_value_types.html#android_rs:ushort4'>ushort4</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Four 16 bit unsigned integers
+    </td>
+  </tr>
+</tbody></table>
+<h2>Types</h2>
+<a name='android_rs:char2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>char2</span>
+    <span class='normal'>: Two 8 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: char __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two chars.  These two chars are packed into a single 16 bit field
+with a 16 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:char3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>char3</span>
+    <span class='normal'>: Three 8 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: char __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three chars.  These three chars are packed into a single 32 bit field
+with a 32 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:char4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>char4</span>
+    <span class='normal'>: Four 8 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: char __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four chars.  These four chars are packed into a single 32 bit field
+with a 32 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:double2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>double2</span>
+    <span class='normal'>: Two 64 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: double __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two doubles.  These two double fields packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:double3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>double3</span>
+    <span class='normal'>: Three 64 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: double __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three doubles.  These three double fields packed into a single 256 bit field
+with a 256 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:double4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>double4</span>
+    <span class='normal'>: Four 64 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: double __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four doubles.  These four double fields packed into a single 256 bit field
+with a 256 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:float2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>float2</span>
+    <span class='normal'>: Two 32 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: float __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two floats.  These two floats are packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+
+<p> A vector of two floats.  These two floats are packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:float3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>float3</span>
+    <span class='normal'>: Three 32 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: float __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three floats.  These three floats are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:float4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>float4</span>
+    <span class='normal'>: Four 32 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: float __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four floats type.  These four floats are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int16_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int16_t</span>
+    <span class='normal'>: 16 bit signed integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 16 bit signed integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int2</span>
+    <span class='normal'>: Two 32 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: int __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two ints.  These two ints are packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int3</span>
+    <span class='normal'>: Three 32 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: int __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three ints.  These three ints are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int32_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int32_t</span>
+    <span class='normal'>: 32 bit signed integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 32 bit signed integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int4</span>
+    <span class='normal'>: Four 32 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: int __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four ints.  These two fours are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int64_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int64_t</span>
+    <span class='normal'>: 64 bit signed integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: long long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+</p>
+<p>A typedef of: long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+</p>
+<p> A 64 bit signed integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:int8_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>int8_t</span>
+    <span class='normal'>: 8 bit signed integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> 8 bit signed integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:long2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>long2</span>
+    <span class='normal'>: Two 64 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: long __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two longs.  These two longs are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:long3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>long3</span>
+    <span class='normal'>: Three 64 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: long __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three longs.  These three longs are packed into a single 256 bit field
+with a 256 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:long4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>long4</span>
+    <span class='normal'>: Four 64 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: long __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four longs.  These four longs are packed into a single 256 bit field
+with a 256 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_matrix2x2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_matrix2x2</span>
+    <span class='normal'>: 2x2 matrix of 32 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A structure with the following fields:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>float m[4]</th><td></td></tr>
+  </tbody></table><br/>
+<p> A square 2x2 matrix of floats.  The entries are stored in the array at the
+location [row*2 + col].
+</p>
+
+<p> See <a href='rs_matrix.html'>Matrix Functions</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_matrix3x3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_matrix3x3</span>
+    <span class='normal'>: 3x3 matrix of 32 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A structure with the following fields:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>float m[9]</th><td></td></tr>
+  </tbody></table><br/>
+<p> A square 3x3 matrix of floats.  The entries are stored in the array at the
+location [row*3 + col].
+</p>
+
+<p> See <a href='rs_matrix.html'>Matrix Functions</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_matrix4x4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_matrix4x4</span>
+    <span class='normal'>: 4x4 matrix of 32 bit floats</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A structure with the following fields:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+  <table class='jd-tagtable'><tbody>
+    <tr><th>float m[16]</th><td></td></tr>
+  </tbody></table><br/>
+<p> A square 4x4 matrix of floats.  The entries are stored in the array at the
+location [row*4 + col].
+</p>
+
+<p> See <a href='rs_matrix.html'>Matrix Functions</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:rs_quaternion'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>rs_quaternion</span>
+    <span class='normal'>: Quaternion</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: float4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A square 4x4 matrix of floats that represents a quaternion.
+</p>
+
+<p> See <a href='rs_quaternion.html'>Quaternion Functions</a>.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:short2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>short2</span>
+    <span class='normal'>: Two 16 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: short __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two shorts.  These two shorts are packed into a single 32 bit field
+with a 32 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:short3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>short3</span>
+    <span class='normal'>: Three 16 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: short __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three shorts.  These three short fields packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:short4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>short4</span>
+    <span class='normal'>: Four 16 bit signed integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: short __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four shorts.  These four short fields packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:size_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>size_t</span>
+    <span class='normal'>: Unsigned size type</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint64_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 64 bits. 
+</p>
+<p>A typedef of: uint32_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+<p> Unsigned size type.  The number of bits depend on the compilation flags.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ssize_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ssize_t</span>
+    <span class='normal'>: Signed size type</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: int64_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 64 bits. 
+</p>
+<p>A typedef of: int32_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    When compiling for 32 bits. 
+</p>
+<p> Signed size type.  The number of bits depend on the compilation flags.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uchar'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uchar</span>
+    <span class='normal'>: 8 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint8_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> 8 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uchar2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uchar2</span>
+    <span class='normal'>: Two 8 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uchar __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two uchars.  These two uchar fields packed into a single 16 bit field
+with a 16 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uchar3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uchar3</span>
+    <span class='normal'>: Three 8 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uchar __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three uchars.  These three uchar fields packed into a single 32 bit field
+with a 32 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uchar4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uchar4</span>
+    <span class='normal'>: Four 8 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uchar __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four uchars.  These four uchar fields packed into a single 32 bit field
+with a 32 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint</span>
+    <span class='normal'>: 32 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint32_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 32 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint16_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint16_t</span>
+    <span class='normal'>: 16 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: unsigned short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 16 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint2</span>
+    <span class='normal'>: Two 32 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two uints.  These two uints are packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint3</span>
+    <span class='normal'>: Three 32 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three uints.  These three uints are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint32_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint32_t</span>
+    <span class='normal'>: 32 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: unsigned int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 32 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint4</span>
+    <span class='normal'>: Four 32 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four uints.  These four uints are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint64_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint64_t</span>
+    <span class='normal'>: 64 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: unsigned long long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+</p>
+<p>A typedef of: unsigned long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+</p>
+<p> A 64 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:uint8_t'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>uint8_t</span>
+    <span class='normal'>: 8 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: unsigned char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> 8 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ulong'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ulong</span>
+    <span class='normal'>: 64 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint64_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 64 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ulong2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ulong2</span>
+    <span class='normal'>: Two 64 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: ulong __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two ulongs.  These two ulongs are packed into a single 128 bit field
+with a 128 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ulong3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ulong3</span>
+    <span class='normal'>: Three 64 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: ulong __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three ulongs.  These three ulong fields packed into a single 256 bit field
+with a 256 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ulong4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ulong4</span>
+    <span class='normal'>: Four 64 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: ulong __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four ulongs.  These four ulong fields packed into a single 256 bit field
+with a 256 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ushort'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ushort</span>
+    <span class='normal'>: 16 bit unsigned integer</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: uint16_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A 16 bit unsigned integer type.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ushort2'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ushort2</span>
+    <span class='normal'>: Two 16 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: ushort __attribute__((ext_vector_type(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of two ushorts.  These two ushort fields packed into a single 32 bit field
+with a 32 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ushort3'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ushort3</span>
+    <span class='normal'>: Three 16 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: ushort __attribute__((ext_vector_type(3)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of three ushorts.  These three ushort fields packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:ushort4'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>ushort4</span>
+    <span class='normal'>: Four 16 bit unsigned integers</span>
+  </h4>
+  <div class='jd-details-descr'>
+<p>A typedef of: ushort __attribute__((ext_vector_type(4)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p> A vector of four ushorts.  These four ushort fields packed into a single 64 bit field
+with a 64 bit alignment.
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/renderscript/reference/rs_vector_math.jd b/docs/html/guide/topics/renderscript/reference/rs_vector_math.jd
new file mode 100644
index 0000000..cb90e9d
--- /dev/null
+++ b/docs/html/guide/topics/renderscript/reference/rs_vector_math.jd
@@ -0,0 +1,574 @@
+page.title=RenderScript Vector Math Functions
+
+@jd:body
+
+<div class='renderscript'>
+<h2>Overview</h2>
+<p> These functions interpret the input arguments as representation of vectors in
+n-dimensional space.
+</p>
+
+<p> The precision of the mathematical operations on 32 bit floats is affected by the pragmas
+rs_fp_relaxed and rs_fp_full.  See <a href='rs_math.html'>Mathematical Constants and Functions</a> for details.
+</p>
+
+<p> Different precision/speed tradeoffs can be achieved by using variants of the common math
+functions.  Functions with a name starting with<ul>
+<li>native_: May have custom hardware implementations with weaker precision.  Additionally,
+  subnormal values may be flushed to zero, rounding towards zero may be used, and NaN and
+  infinity input may not be handled correctly.</li>
+<li>fast_: May perform internal computations using 16 bit floats.  Additionally, subnormal
+  values may be flushed to zero, and rounding towards zero may be used.</li>
+</ul>
+</p>
+<h2>Summary</h2>
+<table class='jd-sumtable'><tbody>
+  <tr><th colspan='2'>Functions</th></tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:cross'>cross</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Cross product of two vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:distance'>distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:dot'>dot</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Dot product of two vectors
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_distance'>fast_distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_length'>fast_length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:fast_normalize'>fast_normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate normalized vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:length'>length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_distance'>native_distance</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate distance between two points
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_length'>native_length</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximate length of a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:native_normalize'>native_normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Approximately normalize a vector
+    </td>
+  </tr>
+  <tr class='alt-color api apilevel-1'>
+    <td class='jd-linkcol'>
+      <a href='rs_vector_math.html#android_rs:normalize'>normalize</a>
+    </td>
+    <td class='jd-descrcol' width='100%'>
+      Normalize a vector
+    </td>
+  </tr>
+</tbody></table>
+<h2>Functions</h2>
+<a name='android_rs:cross'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>cross</span>
+    <span class='normal'>: Cross product of two vectors</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> cross(<a href='rs_value_types.html#android_rs:float3'>float3</a> left_vector, <a href='rs_value_types.html#android_rs:float3'>float3</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> cross(<a href='rs_value_types.html#android_rs:float4'>float4</a> left_vector, <a href='rs_value_types.html#android_rs:float4'>float4</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the cross product of two vectors.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:distance'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>distance</span>
+    <span class='normal'>: Distance between two points</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float distance(float left_vector, float right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float distance(<a href='rs_value_types.html#android_rs:float2'>float2</a> left_vector, <a href='rs_value_types.html#android_rs:float2'>float2</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float distance(<a href='rs_value_types.html#android_rs:float3'>float3</a> left_vector, <a href='rs_value_types.html#android_rs:float3'>float3</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float distance(<a href='rs_value_types.html#android_rs:float4'>float4</a> left_vector, <a href='rs_value_types.html#android_rs:float4'>float4</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Compute the distance between two points.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:fast_distance'>fast_distance</a>(), <a href='rs_vector_math.html#android_rs:native_distance'>native_distance</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:dot'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>dot</span>
+    <span class='normal'>: Dot product of two vectors</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float dot(float left_vector, float right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float dot(<a href='rs_value_types.html#android_rs:float2'>float2</a> left_vector, <a href='rs_value_types.html#android_rs:float2'>float2</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float dot(<a href='rs_value_types.html#android_rs:float3'>float3</a> left_vector, <a href='rs_value_types.html#android_rs:float3'>float3</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float dot(<a href='rs_value_types.html#android_rs:float4'>float4</a> left_vector, <a href='rs_value_types.html#android_rs:float4'>float4</a> right_vector);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the dot product of two vectors.
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fast_distance'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fast_distance</span>
+    <span class='normal'>: Approximate distance between two points</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fast_distance(float left_vector, float right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float fast_distance(<a href='rs_value_types.html#android_rs:float2'>float2</a> left_vector, <a href='rs_value_types.html#android_rs:float2'>float2</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float fast_distance(<a href='rs_value_types.html#android_rs:float3'>float3</a> left_vector, <a href='rs_value_types.html#android_rs:float3'>float3</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float fast_distance(<a href='rs_value_types.html#android_rs:float4'>float4</a> left_vector, <a href='rs_value_types.html#android_rs:float4'>float4</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the approximate distance between two points.
+</p>
+
+<p> The precision is what would be expected from doing the computation using 16 bit floating
+point values.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:distance'>distance</a>(), <a href='rs_vector_math.html#android_rs:native_distance'>native_distance</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fast_length'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fast_length</span>
+    <span class='normal'>: Approximate length of a vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fast_length(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float fast_length(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float fast_length(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float fast_length(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the approximate length of a vector.
+</p>
+
+<p> The precision is what would be expected from doing the computation using 16 bit floating
+point values.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:length'>length</a>(), <a href='rs_vector_math.html#android_rs:native_length'>native_length</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:fast_normalize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>fast_normalize</span>
+    <span class='normal'>: Approximate normalized vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float fast_normalize(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> fast_normalize(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> fast_normalize(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> fast_normalize(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 17</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Approximately normalizes a vector.
+</p>
+
+<p> For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for
+positive values.
+</p>
+
+<p> The precision is what would be expected from doing the computation using 16 bit floating
+point values.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:normalize'>normalize</a>(), <a href='rs_vector_math.html#android_rs:native_normalize'>native_normalize</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:length'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>length</span>
+    <span class='normal'>: Length of a vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float length(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float length(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float length(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td>float length(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the length of a vector.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:fast_length'>fast_length</a>(), <a href='rs_vector_math.html#android_rs:native_length'>native_length</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_distance'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_distance</span>
+    <span class='normal'>: Approximate distance between two points</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_distance(float left_vector, float right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float native_distance(<a href='rs_value_types.html#android_rs:float2'>float2</a> left_vector, <a href='rs_value_types.html#android_rs:float2'>float2</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float native_distance(<a href='rs_value_types.html#android_rs:float3'>float3</a> left_vector, <a href='rs_value_types.html#android_rs:float3'>float3</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float native_distance(<a href='rs_value_types.html#android_rs:float4'>float4</a> left_vector, <a href='rs_value_types.html#android_rs:float4'>float4</a> right_vector);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Computes the approximate distance between two points.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:distance'>distance</a>(), <a href='rs_vector_math.html#android_rs:fast_distance'>fast_distance</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_length'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_length</span>
+    <span class='normal'>: Approximate length of a vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_length(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float native_length(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float native_length(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td>float native_length(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Compute the approximate length of a vector.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:length'>length</a>(), <a href='rs_vector_math.html#android_rs:fast_length'>fast_length</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:native_normalize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>native_normalize</span>
+    <span class='normal'>: Approximately normalize a vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float native_normalize(float v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> native_normalize(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> native_normalize(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> native_normalize(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 21</a>
+        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Approximately normalizes a vector.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:normalize'>normalize</a>(), <a href='rs_vector_math.html#android_rs:fast_normalize'>fast_normalize</a>().
+</p>
+  </div>
+</div>
+
+<a name='android_rs:normalize'></a>
+<div class='jd-details'>
+  <h4 class='jd-details-title'>
+    <span class='sympad'>normalize</span>
+    <span class='normal'>: Normalize a vector</span>
+  </h4>
+  <div class='jd-details-descr'>
+    <table class='jd-tagtable'><tbody>
+      <tr>
+        <td>float normalize(float v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> normalize(<a href='rs_value_types.html#android_rs:float2'>float2</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> normalize(<a href='rs_value_types.html#android_rs:float3'>float3</a> v);
+</td>
+        <td>        </td>
+      </tr>
+      <tr>
+        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> normalize(<a href='rs_value_types.html#android_rs:float4'>float4</a> v);
+</td>
+        <td>        </td>
+      </tr>
+    </tbody></table>
+  </div>
+  <div class='jd-tagdata jd-tagdescr'>
+<p> Normalize a vector.
+</p>
+
+<p> For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for
+positive values.
+</p>
+
+<p> See also <a href='rs_vector_math.html#android_rs:fast_normalize'>fast_normalize</a>(), <a href='rs_vector_math.html#android_rs:native_normalize'>native_normalize</a>().
+</p>
+  </div>
+</div>
+
+</div>
diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd
index fc79970..b06da56 100644
--- a/docs/html/guide/topics/resources/providing-resources.jd
+++ b/docs/html/guide/topics/resources/providing-resources.jd
@@ -129,7 +129,7 @@
     <td><code>mipmap/</code></td>
     <td>Drawable files for different launcher icon densities. For more information on managing
     launcher icons with {@code mipmap/} folders, see
-    <a href="{@docRoot}tools/project/index.html#mipmap">Managing Projects Overview</a>.</td>
+    <a href="{@docRoot}tools/projects/index.html#mipmap">Managing Projects Overview</a>.</td>
   </tr>
 
   <tr>
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index b28f978..8538671 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -1221,6 +1221,14 @@
       "https://support.google.com/googleplay/answer/2651410"
     ]
   },
+  "preview/landing/resources": {
+    "title": "",
+    "resources": [
+      "preview/api-overview.html",
+      "preview/setup-sdk.html",
+      "preview/samples.html"
+    ]
+  },
   "autolanding": {
     "title": "",
     "resources": [
diff --git a/docs/html/jd_tag_helpers.js b/docs/html/jd_tag_helpers.js
index 7538e4d..f03b1d7 100644
--- a/docs/html/jd_tag_helpers.js
+++ b/docs/html/jd_tag_helpers.js
@@ -13,6 +13,7 @@
   GOOGLE_RESOURCES,
   GUIDE_RESOURCES,
   SAMPLES_RESOURCES,
+  PREVIEW_RESOURCES,
   TOOLS_RESOURCES,
   TRAINING_RESOURCES,
   YOUTUBE_RESOURCES,
@@ -70,6 +71,7 @@
   'google': GOOGLE_RESOURCES,
   'guide': GUIDE_RESOURCES,
   'samples': SAMPLES_RESOURCES,
+  'preview': PREVIEW_RESOURCES,
   'tools': TOOLS_RESOURCES,
   'training': TRAINING_RESOURCES,
   'youtube': YOUTUBE_RESOURCES,
@@ -86,6 +88,7 @@
   {map:GOOGLE_BY_TAG,arr:GOOGLE_RESOURCES},
   {map:GUIDE_BY_TAG,arr:GUIDE_RESOURCES},
   {map:SAMPLES_BY_TAG,arr:SAMPLES_RESOURCES},
+  {map:PREVIEW_BY_TAG,arr:PREVIEW_RESOURCES},
   {map:TOOLS_BY_TAG,arr:TOOLS_RESOURCES},
   {map:TRAINING_BY_TAG,arr:TRAINING_RESOURCES},
   {map:YOUTUBE_BY_TAG,arr:YOUTUBE_RESOURCES},
diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd
index f72ffbb..dde3c7be 100644
--- a/docs/html/preview/api-overview.jd
+++ b/docs/html/preview/api-overview.jd
@@ -1,5 +1,5 @@
 page.title=API Overview
-excludeFromSuggestions=true
+page.keywords=preview,sdk,compatibility
 sdk.platform.apiLevel=22
 @jd:body
 
diff --git a/docs/html/preview/index.jd b/docs/html/preview/index.jd
new file mode 100644
index 0000000..a2d0b18
--- /dev/null
+++ b/docs/html/preview/index.jd
@@ -0,0 +1,60 @@
+page.title=M Developer Preview
+page.tags=preview
+meta.tags="preview"
+fullpage=true
+page.viewport_width=970
+section.landing=true
+header.hide=1
+footer.hide=1
+@jd:body
+
+<section class="dac-expand dac-hero dac-light">
+  <div class="wrap">
+    <div class="cols dac-hero-content">
+      <div class="col-1of2 col-push-1of2 dac-hero-figure">
+        <img class="dac-hero-image" src="/design/media/hero-material-design.png">
+      </div>
+      <div class="col-1of2 col-pull-1of2">
+        <h1 class="dac-hero-title">M Developer Preview</h1>
+        <p class="dac-hero-description">
+          Get ready for the next official release of the platform. Test your apps
+          and give us feedback!
+        </p>
+        <a class="dac-hero-cta" href="{@docRoot}preview/setup-sdk.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Set up the Preview SDK
+        </a><br>
+        <a class="dac-hero-cta" href="{@docRoot}preview/api-overview.html">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Review the API changes
+        </a><br>
+        <a class="dac-hero-cta" href="https://code.google.com/p/android-developer-preview/">
+          <span class="dac-sprite dac-auto-chevron"></span>
+          Report issues
+        </a><br>
+      </div>
+    </div>
+  </div>
+</section>
+
+<section class="dac-section dac-gray dac-small dac-invert"><div class="wrap">
+  <h2 class="norule">Latest</h2>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:develop/landing/latest"
+       data-cardSizes="6x6"
+       data-maxResults="3"></div>
+</div></section>
+
+
+<section class="dac-section"><div class="wrap">
+  <h1 class="dac-section-title">Resources</h1>
+  <div class="dac-section-subtitle">
+    Check out these resources to help you get started with the M Developer Preview.
+  </div>
+  <div class="resource-widget resource-flow-layout col-16"
+       data-query="collection:preview/landing/resources"
+       data-cardSizes="6x6"
+       data-maxResults="6"></div>
+</div></section>
+
+
diff --git a/docs/html/preview/overview.jd b/docs/html/preview/overview.jd
new file mode 100644
index 0000000..00f1cfe
--- /dev/null
+++ b/docs/html/preview/overview.jd
@@ -0,0 +1,7 @@
+page.title=Preview Program Overview
+
+@jd:body
+
+<p>
+  This is an overview of the program. Bacon.
+</p>
\ No newline at end of file
diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs
index bea4914..fbf73f6 100644
--- a/docs/html/preview/preview_toc.cs
+++ b/docs/html/preview/preview_toc.cs
@@ -1,6 +1,11 @@
 <ul id="nav">
 
   <li class="nav-section">
+    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/overview.html">
+      Program Overview</a></div>
+  </li>
+
+  <li class="nav-section">
     <div class="nav-section-header empty"><a href="<?cs var:toroot ?>preview/setup-sdk.html">
       Set up the SDK</a></div>
   </li>
@@ -29,9 +34,4 @@
       License Agreement</a></div>
   </li>
 
-  <li class="nav-section" style="margin: 20px 0 0 -10px;">
-    <div class="nav-section-header empty"><a href="<?cs var:toroot ?>index.html" class="back-link">
-      Developer Home</a></div>
-  </li>
-
 </ul>
diff --git a/docs/html/preview/reference.jd b/docs/html/preview/reference.jd
index ee1f24d..2d30c62 100644
--- a/docs/html/preview/reference.jd
+++ b/docs/html/preview/reference.jd
@@ -9,7 +9,7 @@
 
 <ul>
   <li>
-    <a href="http://storage.googleapis.com/androiddevelopers/preview/l-developer-preview-reference.zip">
+    <a href="http://storage.googleapis.com/androiddevelopers/preview/m-developer-preview-reference.zip">
       M Developer Preview reference</a>
   </li>
 </ul>
\ No newline at end of file
diff --git a/docs/html/reference/renderscript/annotated.html b/docs/html/reference/renderscript/annotated.html
deleted file mode 100644
index 9ddbc81..0000000
--- a/docs/html/reference/renderscript/annotated.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>Data Structures</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">Data Structures</div>  </div>
-</div>
-<div class="contents">
-<div class="textblock"> </div><table>
-  <tr><td class="indexkey"><a class="el" href="structrs__allocation.html">rs_allocation</a></td><td class="indexvalue">Opaque handle to a RenderScript allocation </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__element.html">rs_element</a></td><td class="indexvalue">Opaque handle to a RenderScript element </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__font.html">rs_font</a></td><td class="indexvalue">Opaque handle to a RenderScript font object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a></td><td class="indexvalue">2x2 float matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a></td><td class="indexvalue">3x3 float matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a></td><td class="indexvalue">4x4 float matrix </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__mesh.html">rs_mesh</a></td><td class="indexvalue">Opaque handle to a RenderScript mesh object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__path.html">rs_path</a></td><td class="indexvalue">Opaque handle to a RenderScript Path object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a></td><td class="indexvalue">Opaque handle to a RenderScript ProgramFragment object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__program__raster.html">rs_program_raster</a></td><td class="indexvalue">Opaque handle to a RenderScript ProgramRaster object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__program__store.html">rs_program_store</a></td><td class="indexvalue">Opaque handle to a RenderScript ProgramStore object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a></td><td class="indexvalue">Opaque handle to a RenderScript ProgramVertex object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__sampler.html">rs_sampler</a></td><td class="indexvalue">Opaque handle to a RenderScript sampler object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__script.html">rs_script</a></td><td class="indexvalue">Opaque handle to a RenderScript script object </td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__script__call.html">rs_script_call</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__tm.html">rs_tm</a></td><td class="indexvalue"></td></tr>
-  <tr><td class="indexkey"><a class="el" href="structrs__type.html">rs_type</a></td><td class="indexvalue">Opaque handle to a RenderScript type </td></tr>
-</table>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/doxygen.css b/docs/html/reference/renderscript/doxygen.css
deleted file mode 100644
index 22c7b5c..0000000
--- a/docs/html/reference/renderscript/doxygen.css
+++ /dev/null
@@ -1,946 +0,0 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
-	font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
-	font-size: 12px;
-}
-
-/* @group Heading Levels */
-
-h1 {
-	font-size: 150%;
-}
-
-.title {
-	font-size: 150%;
-	font-weight: bold;
-	margin: 10px 2px;
-}
-
-h2 {
-	font-size: 120%;
-}
-
-h3 {
-	font-size: 100%;
-}
-
-dt {
-	font-weight: bold;
-}
-
-div.multicol {
-	-moz-column-gap: 1em;
-	-webkit-column-gap: 1em;
-	-moz-column-count: 3;
-	-webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
-	margin-top: 2px;
-}
-
-p.endli {
-	margin-bottom: 0px;
-}
-
-p.enddd {
-	margin-bottom: 4px;
-}
-
-p.endtd {
-	margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
-	font-weight: bold;
-}
-
-span.legend {
-        font-size: 70%;
-        text-align: center;
-}
-
-h3.version {
-        font-size: 90%;
-        text-align: center;
-}
-
-div.qindex, div.navtab{
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-}
-
-div.qindex, div.navpath {
-	width: 100%;
-	line-height: 140%;
-}
-
-div.navtab {
-	margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
-	color: #3D578C;
-	font-weight: normal;
-	text-decoration: none;
-}
-
-.contents a:visited {
-	color: #4665A2;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a.qindex {
-	font-weight: bold;
-}
-
-a.qindexHL {
-	font-weight: bold;
-	background-color: #9CAFD4;
-	color: #ffffff;
-	border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
-        color: #ffffff;
-}
-
-a.el {
-	font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code {
-	color: #4665A2;
-}
-
-a.codeRef {
-	color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
-	margin-left: -1cm;
-}
-
-.fragment {
-	font-family: monospace, fixed;
-	font-size: 105%;
-}
-
-pre.fragment {
-	border: 1px solid #C4CFE5;
-	background-color: #FBFCFD;
-	padding: 4px 6px;
-	margin: 4px 8px 4px 2px;
-	overflow: auto;
-	word-wrap: break-word;
-	font-size:  9pt;
-	line-height: 125%;
-}
-
-div.ah {
-	background-color: black;
-	font-weight: bold;
-	color: #ffffff;
-	margin-bottom: 3px;
-	margin-top: 3px;
-	padding: 0.2em;
-	border: solid thin #333;
-	border-radius: 0.5em;
-	-webkit-border-radius: .5em;
-	-moz-border-radius: .5em;
-	box-shadow: 2px 2px 3px #999;
-	-webkit-box-shadow: 2px 2px 3px #999;
-	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
-	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
-	margin-left: 16px;
-	margin-top: 12px;
-	font-weight: bold;
-}
-
-div.groupText {
-	margin-left: 16px;
-	font-style: italic;
-}
-
-body {
-	background-color: white;
-	color: black;
-        margin: 0;
-}
-
-div.contents {
-	margin-top: 10px;
-	margin-left: 8px;
-	margin-right: 8px;
-}
-
-td.indexkey {
-	background-color: #EBEFF6;
-	font-weight: bold;
-	border: 1px solid #C4CFE5;
-	margin: 2px 0px 2px 0;
-	padding: 2px 10px;
-}
-
-td.indexvalue {
-	background-color: #EBEFF6;
-	border: 1px solid #C4CFE5;
-	padding: 2px 10px;
-	margin: 2px 0px;
-}
-
-tr.memlist {
-	background-color: #EEF1F7;
-}
-
-p.formulaDsp {
-	text-align: center;
-}
-
-img.formulaDsp {
-	
-}
-
-img.formulaInl {
-	vertical-align: middle;
-}
-
-div.center {
-	text-align: center;
-        margin-top: 0px;
-        margin-bottom: 0px;
-        padding: 0px;
-}
-
-div.center img {
-	border: 0px;
-}
-
-address.footer {
-	text-align: right;
-	padding-right: 12px;
-}
-
-img.footer {
-	border: 0px;
-	vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
-	color: #008000
-}
-
-span.keywordtype {
-	color: #604020
-}
-
-span.keywordflow {
-	color: #e08000
-}
-
-span.comment {
-	color: #800000
-}
-
-span.preprocessor {
-	color: #806020
-}
-
-span.stringliteral {
-	color: #002080
-}
-
-span.charliteral {
-	color: #008080
-}
-
-span.vhdldigit { 
-	color: #ff00ff 
-}
-
-span.vhdlchar { 
-	color: #000000 
-}
-
-span.vhdlkeyword { 
-	color: #700070 
-}
-
-span.vhdllogic { 
-	color: #ff0000 
-}
-
-/* @end */
-
-/*
-.search {
-	color: #003399;
-	font-weight: bold;
-}
-
-form.search {
-	margin-bottom: 0px;
-	margin-top: 0px;
-}
-
-input.search {
-	font-size: 75%;
-	color: #000080;
-	font-weight: normal;
-	background-color: #e8eef2;
-}
-*/
-
-td.tiny {
-	font-size: 75%;
-}
-
-.dirtab {
-	padding: 4px;
-	border-collapse: collapse;
-	border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
-	background: #EBEFF6;
-	font-weight: bold;
-}
-
-hr {
-	height: 0px;
-	border: none;
-	border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
-	height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
-	border-spacing: 0px;
-	padding: 0px;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
-	background-color: #F9FAFC;
-	border: none;
-	margin: 4px;
-	padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
-	padding: 0px 8px 4px 8px;
-	color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
-	border-top: 1px solid #C4CFE5;
-}
-
-.memItemLeft, .memTemplItemLeft {
-        white-space: nowrap;
-}
-
-.memItemRight {
-	width: 100%;
-}
-
-.memTemplParams {
-	color: #4665A2;
-        white-space: nowrap;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
-	font-size: 80%;
-	color: #4665A2;
-	font-weight: normal;
-	margin-left: 9px;
-}
-
-.memnav {
-	background-color: #EBEFF6;
-	border: 1px solid #A3B4D7;
-	text-align: center;
-	margin: 2px;
-	margin-right: 15px;
-	padding: 2px;
-}
-
-.mempage {
-	width: 100%;
-}
-
-.memitem {
-	padding: 0;
-	margin-bottom: 10px;
-	margin-right: 5px;
-}
-
-.memname {
-        white-space: nowrap;
-        font-weight: bold;
-        margin-left: 6px;
-}
-
-.memproto, dl.reflist dt {
-        border-top: 1px solid #A8B8D9;
-        border-left: 1px solid #A8B8D9;
-        border-right: 1px solid #A8B8D9;
-        padding: 6px 0px 6px 0px;
-        color: #253555;
-        font-weight: bold;
-        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        /* opera specific markup */
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        border-top-right-radius: 8px;
-        border-top-left-radius: 8px;
-        /* firefox specific markup */
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        -moz-border-radius-topright: 8px;
-        -moz-border-radius-topleft: 8px;
-        /* webkit specific markup */
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        -webkit-border-top-right-radius: 8px;
-        -webkit-border-top-left-radius: 8px;
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-
-}
-
-.memdoc, dl.reflist dd {
-        border-bottom: 1px solid #A8B8D9;      
-        border-left: 1px solid #A8B8D9;      
-        border-right: 1px solid #A8B8D9; 
-        padding: 2px 5px;
-        background-color: #FBFCFD;
-        border-top-width: 0;
-        /* opera specific markup */
-        border-bottom-left-radius: 8px;
-        border-bottom-right-radius: 8px;
-        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        /* firefox specific markup */
-        -moz-border-radius-bottomleft: 8px;
-        -moz-border-radius-bottomright: 8px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
-        /* webkit specific markup */
-        -webkit-border-bottom-left-radius: 8px;
-        -webkit-border-bottom-right-radius: 8px;
-        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
-}
-
-dl.reflist dt {
-        padding: 5px;
-}
-
-dl.reflist dd {
-        margin: 0px 0px 10px 0px;
-        padding: 5px;
-}
-
-.paramkey {
-	text-align: right;
-}
-
-.paramtype {
-	white-space: nowrap;
-}
-
-.paramname {
-	color: #602020;
-	white-space: nowrap;
-}
-.paramname em {
-	font-style: normal;
-}
-
-.params, .retval, .exception, .tparams {
-        border-spacing: 6px 2px;
-}       
-
-.params .paramname, .retval .paramname {
-        font-weight: bold;
-        vertical-align: top;
-}
-        
-.params .paramtype {
-        font-style: italic;
-        vertical-align: top;
-}       
-        
-.params .paramdir {
-        font-family: "courier new",courier,monospace;
-        vertical-align: top;
-}
-
-
-
-
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
-
-.ftvtree {
-	font-family: sans-serif;
-	margin: 0px;
-}
-
-/* these are for tree view when used as main index */
-
-.directory {
-	font-size: 9pt;
-	font-weight: bold;
-	margin: 5px;
-}
-
-.directory h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
-}
-
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice.  Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
-
-/*
-.directory h3.swap {
-	height: 61px;
-	background-repeat: no-repeat;
-	background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
-	display: none;
-}
-*/
-
-.directory > h3 {
-	margin-top: 0;
-}
-
-.directory p {
-	margin: 0px;
-	white-space: nowrap;
-}
-
-.directory div {
-	display: none;
-	margin: 0px;
-}
-
-.directory img {
-	vertical-align: -30%;
-}
-
-/* these are for tree view when not used as main index */
-
-.directory-alt {
-	font-size: 100%;
-	font-weight: bold;
-}
-
-.directory-alt h3 {
-	margin: 0px;
-	margin-top: 1em;
-	font-size: 11pt;
-}
-
-.directory-alt > h3 {
-	margin-top: 0;
-}
-
-.directory-alt p {
-	margin: 0px;
-	white-space: nowrap;
-}
-
-.directory-alt div {
-	display: none;
-	margin: 0px;
-}
-
-.directory-alt img {
-	vertical-align: -30%;
-}
-
-/* @end */
-
-div.dynheader {
-        margin-top: 8px;
-}
-
-address {
-	font-style: normal;
-	color: #2A3D61;
-}
-
-table.doxtable {
-	border-collapse:collapse;
-}
-
-table.doxtable td, table.doxtable th {
-	border: 1px solid #2D4068;
-	padding: 3px 7px 2px;
-}
-
-table.doxtable th {
-	background-color: #374F7F;
-	color: #FFFFFF;
-	font-size: 110%;
-	padding-bottom: 4px;
-	padding-top: 5px;
-	text-align:left;
-}
-
-table.fieldtable {
-        width: 100%;
-        margin-bottom: 10px;
-        border: 1px solid #A8B8D9;
-        border-spacing: 0px;
-        -moz-border-radius: 4px;
-        -webkit-border-radius: 4px;
-        border-radius: 4px;
-        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
-        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
-        padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
-        white-space: nowrap;
-        border-right: 1px solid #A8B8D9;
-        border-bottom: 1px solid #A8B8D9;
-        vertical-align: top;
-}
-
-.fieldtable td.fielddoc {
-        border-bottom: 1px solid #A8B8D9;
-        width: 100%;
-}
-
-.fieldtable tr:last-child td {
-        border-bottom: none;
-}
-
-.fieldtable th {
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
-        font-size: 90%;
-        color: #253555;
-        padding-bottom: 4px;
-        padding-top: 5px;
-        text-align:left;
-        -moz-border-radius-topleft: 4px;
-        -moz-border-radius-topright: 4px;
-        -webkit-border-top-left-radius: 4px;
-        -webkit-border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
-        border-top-right-radius: 4px;
-        border-bottom: 1px solid #A8B8D9;
-}
-
-
-.tabsearch {
-	top: 0px;
-	left: 10px;
-	height: 36px;
-	background-image: url('tab_b.png');
-	z-index: 101;
-	overflow: hidden;
-	font-size: 13px;
-}
-
-.navpath ul
-{
-	font-size: 11px;
-	background-image:url('tab_b.png');
-	background-repeat:repeat-x;
-	height:30px;
-	line-height:30px;
-	color:#8AA0CC;
-	border:solid 1px #C2CDE4;
-	overflow:hidden;
-	margin:0px;
-	padding:0px;
-}
-
-.navpath li
-{
-	list-style-type:none;
-	float:left;
-	padding-left:10px;
-	padding-right:15px;
-	background-image:url('bc_s.png');
-	background-repeat:no-repeat;
-	background-position:right;
-	color:#364D7C;
-}
-
-.navpath li.navelem a
-{
-	height:32px;
-	display:block;
-	text-decoration: none;
-	outline: none;
-}
-
-.navpath li.navelem a:hover
-{
-	color:#6884BD;
-}
-
-.navpath li.footer
-{
-        list-style-type:none;
-        float:right;
-        padding-left:10px;
-        padding-right:15px;
-        background-image:none;
-        background-repeat:no-repeat;
-        background-position:right;
-        color:#364D7C;
-        font-size: 8pt;
-}
-
-
-div.summary
-{
-	float: right;
-	font-size: 8pt;
-	padding-right: 5px;
-	width: 50%;
-	text-align: right;
-}       
-
-div.summary a
-{
-	white-space: nowrap;
-}
-
-div.ingroups
-{
-	margin-left: 5px;
-	font-size: 8pt;
-	padding-left: 5px;
-	width: 50%;
-	text-align: left;
-}
-
-div.ingroups a
-{
-	white-space: nowrap;
-}
-
-div.header
-{
-        background-image:url('nav_h.png');
-        background-repeat:repeat-x;
-	background-color: #F9FAFC;
-	margin:  0px;
-	border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
-	padding: 5px 5px 5px 7px;
-}
-
-dl
-{
-        padding: 0 0 0 10px;
-}
-
-dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug
-{
-        border-left:4px solid;
-        padding: 0 0 0 6px;
-}
-
-dl.note
-{
-        border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
-        border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
-        border-color: #00D000;
-}
-
-dl.deprecated
-{
-        border-color: #505050;
-}
-
-dl.todo
-{
-        border-color: #00C0E0;
-}
-
-dl.test
-{
-        border-color: #3030E0;
-}
-
-dl.bug
-{
-        border-color: #C08050;
-}
-
-#projectlogo
-{
-	text-align: center;
-	vertical-align: bottom;
-	border-collapse: separate;
-}
- 
-#projectlogo img
-{ 
-	border: 0px none;
-}
- 
-#projectname
-{
-	font: 300% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 2px 0px;
-}
-    
-#projectbrief
-{
-	font: 120% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#projectnumber
-{
-	font: 50% Tahoma, Arial,sans-serif;
-	margin: 0px;
-	padding: 0px;
-}
-
-#titlearea
-{
-	padding: 0px;
-	margin: 0px;
-	width: 100%;
-	border-bottom: 1px solid #5373B4;
-}
-
-.image
-{
-        text-align: center;
-}
-
-.dotgraph
-{
-        text-align: center;
-}
-
-.mscgraph
-{
-        text-align: center;
-}
-
-.caption
-{
-	font-weight: bold;
-}
-
-div.zoom
-{
-	border: 1px solid #90A5CE;
-}
-
-dl.citelist {
-        margin-bottom:50px;
-}
-
-dl.citelist dt {
-        color:#334975;
-        float:left;
-        font-weight:bold;
-        margin-right:10px;
-        padding:5px;
-}
-
-dl.citelist dd {
-        margin:2px 0;
-        padding:5px 0;
-}
-
-@media print
-{
-  #top { display: none; }
-  #side-nav { display: none; }
-  #nav-path { display: none; }
-  body { overflow:visible; }
-  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
-  .summary { display: none; }
-  .memitem { page-break-inside: avoid; }
-  #doc-content
-  {
-    margin-left:0 !important;
-    height:auto !important;
-    width:auto !important;
-    overflow:inherit;
-    display:inline;
-  }
-  pre.fragment
-  {
-    overflow: visible;
-    text-wrap: unrestricted;
-    white-space: -moz-pre-wrap; /* Moz */
-    white-space: -pre-wrap; /* Opera 4-6 */
-    white-space: -o-pre-wrap; /* Opera 7 */
-    white-space: pre-wrap; /* CSS3  */
-    word-wrap: break-word; /* IE 5.5+ */
-  }
-}
-
diff --git a/docs/html/reference/renderscript/globals.html b/docs/html/reference/renderscript/globals.html
deleted file mode 100644
index d149a0d..0000000
--- a/docs/html/reference/renderscript/globals.html
+++ /dev/null
@@ -1,919 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_e"><span>e</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_h"><span>h</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_l"><span>l</span></a></li>
-      <li><a href="#index_m"><span>m</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-      <li><a href="#index_u"><span>u</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<div class="textblock"> </div>
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>abs()
-: <a class="el" href="rs__cl_8rsh.html#a1ed0afedda2068ad1f9ad14ef3449e50">rs_cl.rsh</a>
-</li>
-<li>acos()
-: <a class="el" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">rs_cl.rsh</a>
-</li>
-<li>acosh()
-: <a class="el" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">rs_cl.rsh</a>
-</li>
-<li>acospi()
-: <a class="el" href="rs__cl_8rsh.html#a2c9092eb07e9df891935e93469e70d4e">rs_cl.rsh</a>
-</li>
-<li>asin()
-: <a class="el" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">rs_cl.rsh</a>
-</li>
-<li>asinh()
-: <a class="el" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">rs_cl.rsh</a>
-</li>
-<li>asinpi()
-: <a class="el" href="rs__cl_8rsh.html#a812eb4521e65a451161417f9898384f7">rs_cl.rsh</a>
-</li>
-<li>atan()
-: <a class="el" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">rs_cl.rsh</a>
-</li>
-<li>atan2()
-: <a class="el" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">rs_cl.rsh</a>
-</li>
-<li>atan2pi()
-: <a class="el" href="rs__cl_8rsh.html#a89ec5f6a2f64a0f9e97438fbd41aaace">rs_cl.rsh</a>
-</li>
-<li>atanh()
-: <a class="el" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">rs_cl.rsh</a>
-</li>
-<li>atanpi()
-: <a class="el" href="rs__cl_8rsh.html#a5052e31ce616d35aee25a3a83f6fc117">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>cbrt()
-: <a class="el" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">rs_cl.rsh</a>
-</li>
-<li>ceil()
-: <a class="el" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">rs_cl.rsh</a>
-</li>
-<li>char2
-: <a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">rs_types.rsh</a>
-</li>
-<li>char3
-: <a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">rs_types.rsh</a>
-</li>
-<li>char4
-: <a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">rs_types.rsh</a>
-</li>
-<li>clamp()
-: <a class="el" href="rs__cl_8rsh.html#afae5eac13e35acd0f47d7e3c601e16ed">rs_cl.rsh</a>
-</li>
-<li>clz()
-: <a class="el" href="rs__cl_8rsh.html#a8a0f94dce3caa2a50cbf2d9f4bc674ac">rs_cl.rsh</a>
-</li>
-<li>convert_char2()
-: <a class="el" href="rs__cl_8rsh.html#a67421c4b17df15a1c726d912770e5ca4">rs_cl.rsh</a>
-</li>
-<li>convert_float2()
-: <a class="el" href="rs__cl_8rsh.html#a1ad62d449c1e3548573c2f9c1a5cb13a">rs_cl.rsh</a>
-</li>
-<li>convert_int2()
-: <a class="el" href="rs__cl_8rsh.html#a9d2e4b8f0f25a7ccaed05248edc21f06">rs_cl.rsh</a>
-</li>
-<li>convert_short2()
-: <a class="el" href="rs__cl_8rsh.html#a83e89db1940f3190fbec5bd823a99fc5">rs_cl.rsh</a>
-</li>
-<li>convert_uchar2()
-: <a class="el" href="rs__cl_8rsh.html#a833bb5476683ec5692feaf0cd5dcdd80">rs_cl.rsh</a>
-</li>
-<li>convert_uint2()
-: <a class="el" href="rs__cl_8rsh.html#a01ff256469203ba33ba0f220b54e70d1">rs_cl.rsh</a>
-</li>
-<li>convert_ushort2()
-: <a class="el" href="rs__cl_8rsh.html#a6862ea6ddfba8a59796bc681a544fb4f">rs_cl.rsh</a>
-</li>
-<li>copysign()
-: <a class="el" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">rs_cl.rsh</a>
-</li>
-<li>cos()
-: <a class="el" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">rs_cl.rsh</a>
-</li>
-<li>cosh()
-: <a class="el" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">rs_cl.rsh</a>
-</li>
-<li>cospi()
-: <a class="el" href="rs__cl_8rsh.html#a258d2c828fd46eae2867373884d834a9">rs_cl.rsh</a>
-</li>
-<li>cross()
-: <a class="el" href="rs__cl_8rsh.html#add745d593bc2b23285bd10e52a204e25">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>degrees()
-: <a class="el" href="rs__cl_8rsh.html#a0276b63d6905fa802032f1490a24515b">rs_cl.rsh</a>
-</li>
-<li>distance()
-: <a class="el" href="rs__cl_8rsh.html#a412bf215ae838c65079560bbefefaca7">rs_cl.rsh</a>
-</li>
-<li>dot()
-: <a class="el" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">rs_cl.rsh</a>
-</li>
-<li>double2
-: <a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">rs_types.rsh</a>
-</li>
-<li>double3
-: <a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">rs_types.rsh</a>
-</li>
-<li>double4
-: <a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>erf()
-: <a class="el" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">rs_cl.rsh</a>
-</li>
-<li>erfc()
-: <a class="el" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">rs_cl.rsh</a>
-</li>
-<li>exp()
-: <a class="el" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">rs_cl.rsh</a>
-</li>
-<li>exp10()
-: <a class="el" href="rs__cl_8rsh.html#a0225ff40d79f78260293e776c6a77422">rs_cl.rsh</a>
-</li>
-<li>exp2()
-: <a class="el" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">rs_cl.rsh</a>
-</li>
-<li>expm1()
-: <a class="el" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fabs()
-: <a class="el" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">rs_cl.rsh</a>
-</li>
-<li>fast_distance()
-: <a class="el" href="rs__cl_8rsh.html#a4fcbdb9099e7d653a951cb344ba3c3c9">rs_cl.rsh</a>
-</li>
-<li>fast_length()
-: <a class="el" href="rs__cl_8rsh.html#a7c8f2f987044a360b5f616a80a74a4d5">rs_cl.rsh</a>
-</li>
-<li>fast_normalize()
-: <a class="el" href="rs__cl_8rsh.html#a3878bee2879351f518be68e015d76a35">rs_cl.rsh</a>
-</li>
-<li>fdim()
-: <a class="el" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">rs_cl.rsh</a>
-</li>
-<li>float2
-: <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">rs_types.rsh</a>
-</li>
-<li>float3
-: <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">rs_types.rsh</a>
-</li>
-<li>float4
-: <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">rs_types.rsh</a>
-</li>
-<li>floor()
-: <a class="el" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">rs_cl.rsh</a>
-</li>
-<li>fma()
-: <a class="el" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">rs_cl.rsh</a>
-</li>
-<li>fmax()
-: <a class="el" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">rs_cl.rsh</a>
-</li>
-<li>fmin()
-: <a class="el" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">rs_cl.rsh</a>
-</li>
-<li>fmod()
-: <a class="el" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">rs_cl.rsh</a>
-</li>
-<li>fract()
-: <a class="el" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">rs_cl.rsh</a>
-</li>
-<li>frexp()
-: <a class="el" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>half_recip()
-: <a class="el" href="rs__cl_8rsh.html#a49050a8e32c95f60df4eaba9d7dfdca6">rs_cl.rsh</a>
-</li>
-<li>half_rsqrt()
-: <a class="el" href="rs__cl_8rsh.html#a0925ceb22d33dcbb45914350ffa2edea">rs_cl.rsh</a>
-</li>
-<li>half_sqrt()
-: <a class="el" href="rs__cl_8rsh.html#a26e2c17b20ee4c98b78c365d390e4fb8">rs_cl.rsh</a>
-</li>
-<li>hypot()
-: <a class="el" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>ilogb()
-: <a class="el" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">rs_cl.rsh</a>
-</li>
-<li>int16_t
-: <a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">rs_types.rsh</a>
-</li>
-<li>int2
-: <a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">rs_types.rsh</a>
-</li>
-<li>int3
-: <a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">rs_types.rsh</a>
-</li>
-<li>int32_t
-: <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">rs_types.rsh</a>
-</li>
-<li>int4
-: <a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">rs_types.rsh</a>
-</li>
-<li>int64_t
-: <a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">rs_types.rsh</a>
-</li>
-<li>int8_t
-: <a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>ldexp()
-: <a class="el" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">rs_cl.rsh</a>
-</li>
-<li>length()
-: <a class="el" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">rs_cl.rsh</a>
-</li>
-<li>lgamma()
-: <a class="el" href="rs__cl_8rsh.html#a735f4e14e33c50348ef41220f9210bcc">rs_cl.rsh</a>
-</li>
-<li>log()
-: <a class="el" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">rs_cl.rsh</a>
-</li>
-<li>log10()
-: <a class="el" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">rs_cl.rsh</a>
-</li>
-<li>log1p()
-: <a class="el" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">rs_cl.rsh</a>
-</li>
-<li>log2()
-: <a class="el" href="rs__cl_8rsh.html#aab1c4f06daf6f2a50fd73f0c28929213">rs_cl.rsh</a>
-</li>
-<li>logb()
-: <a class="el" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">rs_cl.rsh</a>
-</li>
-<li>long2
-: <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">rs_types.rsh</a>
-</li>
-<li>long3
-: <a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">rs_types.rsh</a>
-</li>
-<li>long4
-: <a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>mad()
-: <a class="el" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">rs_cl.rsh</a>
-</li>
-<li>max()
-: <a class="el" href="rs__cl_8rsh.html#a616bf7a90d8d3c73a48d2c395d9dc4ea">rs_cl.rsh</a>
-</li>
-<li>min()
-: <a class="el" href="rs__cl_8rsh.html#a5f61ca44b3ad4b11365b0c4137a22658">rs_cl.rsh</a>
-</li>
-<li>mix()
-: <a class="el" href="rs__cl_8rsh.html#a254612a612ff7539b01a1478e03d8697">rs_cl.rsh</a>
-</li>
-<li>modf()
-: <a class="el" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>native_exp()
-: <a class="el" href="rs__cl_8rsh.html#a45d8176823a05b891313f3d96decf491">rs_cl.rsh</a>
-</li>
-<li>native_exp10()
-: <a class="el" href="rs__cl_8rsh.html#a601ee3d2bf769f1cdc39a886f7a6c986">rs_cl.rsh</a>
-</li>
-<li>native_exp2()
-: <a class="el" href="rs__cl_8rsh.html#ab354691ecd844549b27ef9202e17f7ac">rs_cl.rsh</a>
-</li>
-<li>nextafter()
-: <a class="el" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">rs_cl.rsh</a>
-</li>
-<li>normalize()
-: <a class="el" href="rs__cl_8rsh.html#a69c2a56f743593439d5ae5e3ec8e517f">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>pow()
-: <a class="el" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">rs_cl.rsh</a>
-</li>
-<li>pown()
-: <a class="el" href="rs__cl_8rsh.html#a67d1fe795e092003f687f3cc6d3c407a">rs_cl.rsh</a>
-</li>
-<li>powr()
-: <a class="el" href="rs__cl_8rsh.html#a316c30ba3e6bc11673bfd34bb4746d24">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>radians()
-: <a class="el" href="rs__cl_8rsh.html#aceb63a0da6393b8ac2ed229bae6232d6">rs_cl.rsh</a>
-</li>
-<li>remainder()
-: <a class="el" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">rs_cl.rsh</a>
-</li>
-<li>rint()
-: <a class="el" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rs_cl.rsh</a>
-</li>
-<li>rootn()
-: <a class="el" href="rs__cl_8rsh.html#a2776b517528b8185a6bb50753af0f6cf">rs_cl.rsh</a>
-</li>
-<li>round()
-: <a class="el" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">rs_cl.rsh</a>
-</li>
-<li>rs_allocation_cubemap_face
-: <a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_types.rsh</a>
-</li>
-<li>rs_allocation_usage_type
-: <a class="el" href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171">rs_types.rsh</a>
-</li>
-<li>rs_data_kind
-: <a class="el" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">rs_types.rsh</a>
-</li>
-<li>rs_data_type
-: <a class="el" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">rs_types.rsh</a>
-</li>
-<li>rs_depth_func
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_ALWAYS
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa8d469fa992bac113a001d75aa7cfbb5a">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_EQUAL
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa56339400e4089e546199547717bdcd21">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_GEQUAL
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2858ef91becfeb84d8f34a1458a4126d">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_GREATER
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa412bb65be35e058a7699b8211cc2ef7d">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_INVALID
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfadfc3917c562a540b4114181440b909e3">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_LEQUAL
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa62459990f41930a88542b878ddd53d9f">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_LESS
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfac1ddb06fe80be898bf8d4a517187575a">rs_types.rsh</a>
-</li>
-<li>RS_DEPTH_FUNC_NOTEQUAL
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2105e438ae89b89a2f4361483e65966d">rs_types.rsh</a>
-</li>
-<li>rs_for_each_strategy
-: <a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_core.rsh</a>
-</li>
-<li>rs_primitive
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_INVALID
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a136481c7695b09f01126da71bb132c9d">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_LINE
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a09a49eaa42585d6181c8a2f711b63ddf">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_LINE_STRIP
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951abe563a9f68706a5aa567793a5088b4da">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_POINT
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a337ab7046b7cb5cc9eb14bc325ae3158">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_TRIANGLE
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951aeb062ef8811156915afccfc5f4259b79">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_TRIANGLE_FAN
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951afadd96d3a17724e061d9eb07bfca4a01">rs_types.rsh</a>
-</li>
-<li>RS_PRIMITIVE_TRIANGLE_STRIP
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a497d5376ef6c9f9ead810a053b9b35d9">rs_types.rsh</a>
-</li>
-<li>rs_quaternion
-: <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_types.rsh</a>
-</li>
-<li>rs_script_call_t
-: <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_core.rsh</a>
-</li>
-<li>rs_time_t
-: <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time.rsh</a>
-</li>
-<li>rsAllocationCopy1DRange()
-: <a class="el" href="rs__allocation_8rsh.html#a3a1098a3ea3a5106955dd4398b8904e1">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationCopy2DRange()
-: <a class="el" href="rs__allocation_8rsh.html#a7f7e2369b3ed7d7db31729b6db7ba07e">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimFaces()
-: <a class="el" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimLOD()
-: <a class="el" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimX()
-: <a class="el" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimY()
-: <a class="el" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimZ()
-: <a class="el" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetElement()
-: <a class="el" href="rs__allocation_8rsh.html#a6a3b6512bc269f6b369bdc54d12a45ff">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationIoReceive()
-: <a class="el" href="rs__allocation_8rsh.html#a05f7391230a92d239fdb619d791162b5">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationIoSend()
-: <a class="el" href="rs__allocation_8rsh.html#afe9ebb2f89c6366c59f5e05ee4849c0a">rs_allocation.rsh</a>
-</li>
-<li>rsAtomicAdd()
-: <a class="el" href="rs__atomic_8rsh.html#ab46665eff81030200f86db9c2181072a">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicAnd()
-: <a class="el" href="rs__atomic_8rsh.html#a7fdf5633662dd5b0898ad5a149e3c8ad">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicCas()
-: <a class="el" href="rs__atomic_8rsh.html#a205d66a8eb29eee8968f886e488b4402">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicDec()
-: <a class="el" href="rs__atomic_8rsh.html#a16a69784a343d7c11bf6bd7fec9686ca">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicInc()
-: <a class="el" href="rs__atomic_8rsh.html#a619e7a489500a650569a76ccd93e105f">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicMax()
-: <a class="el" href="rs__atomic_8rsh.html#a1d49d69d14956152fcde34efe9cdff87">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicMin()
-: <a class="el" href="rs__atomic_8rsh.html#a9f3cddc86f1075ca194a762fb8a3330a">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicOr()
-: <a class="el" href="rs__atomic_8rsh.html#a477f6eb17c4806bb715bfd975b6369cd">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicSub()
-: <a class="el" href="rs__atomic_8rsh.html#a800dced6abbf09716391f35bc488900b">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicXor()
-: <a class="el" href="rs__atomic_8rsh.html#a5590505ea65c53b3bb26fa48a6b9c313">rs_atomic.rsh</a>
-</li>
-<li>rsClamp()
-: <a class="el" href="rs__math_8rsh.html#a40eddbf6c2462eada177a581a49bd3c6">rs_math.rsh</a>
-</li>
-<li>rsClearObject()
-: <a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rs_object.rsh</a>
-</li>
-<li>rsDebug()
-: <a class="el" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rs_debug.rsh</a>
-</li>
-<li>rsElementGetBytesSize()
-: <a class="el" href="rs__element_8rsh.html#ac54592168af5896d3fba5283af286f98">rs_element.rsh</a>
-</li>
-<li>rsElementGetDataKind()
-: <a class="el" href="rs__element_8rsh.html#af072702a530e158093d69353072da5f9">rs_element.rsh</a>
-</li>
-<li>rsElementGetDataType()
-: <a class="el" href="rs__element_8rsh.html#a9a3569d242be363517ea2354d98cf382">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElement()
-: <a class="el" href="rs__element_8rsh.html#a8c690bce7d32be759fd787740c270c92">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementArraySize()
-: <a class="el" href="rs__element_8rsh.html#a9c3140c18139db451279d9b221808eee">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementCount()
-: <a class="el" href="rs__element_8rsh.html#a2ecab064ea2b720bc3af27b523388f31">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementName()
-: <a class="el" href="rs__element_8rsh.html#a3c1446166c43aa6ba3d5359f6c982f02">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementNameLength()
-: <a class="el" href="rs__element_8rsh.html#a94834eb1d91b50a5df3cbe161c22e37d">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementOffsetBytes()
-: <a class="el" href="rs__element_8rsh.html#a840d53f1e91bb6887b40a4d8983c53ed">rs_element.rsh</a>
-</li>
-<li>rsElementGetVectorSize()
-: <a class="el" href="rs__element_8rsh.html#a727997de25ae43c07dffcfd484928d53">rs_element.rsh</a>
-</li>
-<li>rsExtractFrustumPlanes()
-: <a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rs_math.rsh</a>
-</li>
-<li>rsForEach()
-: <a class="el" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rs_core.rsh</a>
-</li>
-<li>rsFrac()
-: <a class="el" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rs_math.rsh</a>
-</li>
-<li>rsGetAllocation()
-: <a class="el" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rs_allocation.rsh</a>
-</li>
-<li>rsGetDt()
-: <a class="el" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rs_time.rsh</a>
-</li>
-<li>rsGetElementAt()
-: <a class="el" href="rs__allocation_8rsh.html#a56157b6ddef754b36833ca1f8e66aec2">rs_allocation.rsh</a>
-</li>
-<li>rsGetElementAtYuv_uchar_U()
-: <a class="el" href="rs__allocation_8rsh.html#a41f61be02113ee22c039ea51fdedb20e">rs_allocation.rsh</a>
-</li>
-<li>rsGetElementAtYuv_uchar_V()
-: <a class="el" href="rs__allocation_8rsh.html#af03cadb582fa80bbf7f39177d96df17e">rs_allocation.rsh</a>
-</li>
-<li>rsGetElementAtYuv_uchar_Y()
-: <a class="el" href="rs__allocation_8rsh.html#ad7ffa1aa16511a75b4bc2c05bd0e0a75">rs_allocation.rsh</a>
-</li>
-<li>rsgMeshGetIndexAllocation()
-: <a class="el" href="rs__mesh_8rsh.html#a05257c9252e7804397d6a6f7549bae5a">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetPrimitive()
-: <a class="el" href="rs__mesh_8rsh.html#af467f1c21cc9221071334f8234c29466">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetPrimitiveCount()
-: <a class="el" href="rs__mesh_8rsh.html#ae0a0178cc02508517013486be4500d7f">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetVertexAllocation()
-: <a class="el" href="rs__mesh_8rsh.html#a43e1d84147176cb0a1659552fa8da49f">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetVertexAllocationCount()
-: <a class="el" href="rs__mesh_8rsh.html#a7578d6d93154ac881715ab511449fab9">rs_mesh.rsh</a>
-</li>
-<li>rsgProgramRasterGetCullMode()
-: <a class="el" href="rs__program_8rsh.html#a633d6dbdec98ef89c2b70c92ea707502">rs_program.rsh</a>
-</li>
-<li>rsgProgramRasterIsPointSpriteEnabled()
-: <a class="el" href="rs__program_8rsh.html#a86aeccd846ed2cd2c9498ab57e2535f3">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreGetBlendDstFunc()
-: <a class="el" href="rs__program_8rsh.html#a0ad38d595e35712f24c384ef20b69025">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreGetBlendSrcFunc()
-: <a class="el" href="rs__program_8rsh.html#afb38256c5804cdb9b410419c43ce03ab">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreGetDepthFunc()
-: <a class="el" href="rs__program_8rsh.html#a6a9c06c54d230f61edc0667a091aac77">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskAlphaEnabled()
-: <a class="el" href="rs__program_8rsh.html#ab038edb7399044a3ea96ebb17d7b6601">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskBlueEnabled()
-: <a class="el" href="rs__program_8rsh.html#a279ad1b4611aca268053337f6719a22c">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskGreenEnabled()
-: <a class="el" href="rs__program_8rsh.html#a1a57f706bc42ce49b545021c8403964c">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskRedEnabled()
-: <a class="el" href="rs__program_8rsh.html#a4a50df1d2495567536dd6f394d38ee5d">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsDepthMaskEnabled()
-: <a class="el" href="rs__program_8rsh.html#afa27fa6103c9e29f5e098e2d99663f0b">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsDitherEnabled()
-: <a class="el" href="rs__program_8rsh.html#abe7c55547a72dd291e0996de050bb749">rs_program.rsh</a>
-</li>
-<li>rsIsObject()
-: <a class="el" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rs_object.rsh</a>
-</li>
-<li>rsIsSphereInFrustum()
-: <a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rs_math.rsh</a>
-</li>
-<li>rsLocaltime()
-: <a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rs_time.rsh</a>
-</li>
-<li>rsMatrixGet()
-: <a class="el" href="rs__matrix_8rsh.html#a22e983b67d3089c5cb97032e249ca335">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixInverse()
-: <a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixInverseTranspose()
-: <a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoad()
-: <a class="el" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadFrustum()
-: <a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadIdentity()
-: <a class="el" href="rs__matrix_8rsh.html#a5b31e83553efa947db2198674d5db043">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadMultiply()
-: <a class="el" href="rs__matrix_8rsh.html#a78872343ea6a5c1a846160ccdc4add52">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadOrtho()
-: <a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadPerspective()
-: <a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadRotate()
-: <a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadScale()
-: <a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadTranslate()
-: <a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixMultiply()
-: <a class="el" href="rs__matrix_8rsh.html#a88ae2ed203769cb4a7917f84f6c1a2e2">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixRotate()
-: <a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixScale()
-: <a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixSet()
-: <a class="el" href="rs__matrix_8rsh.html#ab69543f85a673f23fbb5f893e5824395">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixTranslate()
-: <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixTranspose()
-: <a class="el" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rs_matrix.rsh</a>
-</li>
-<li>rsPackColorTo8888()
-: <a class="el" href="rs__math_8rsh.html#ac30a8c020eade2b57fd5966cb7c8665e">rs_math.rsh</a>
-</li>
-<li>rsqrt()
-: <a class="el" href="rs__cl_8rsh.html#a8a3992b97cb199b1c8d598996b600988">rs_cl.rsh</a>
-</li>
-<li>rsQuaternionAdd()
-: <a class="el" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionConjugate()
-: <a class="el" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionDot()
-: <a class="el" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionGetMatrixUnit()
-: <a class="el" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionLoadRotate()
-: <a class="el" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionLoadRotateUnit()
-: <a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionMultiply()
-: <a class="el" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionNormalize()
-: <a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionSet()
-: <a class="el" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionSlerp()
-: <a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rs_quaternion.rsh</a>
-</li>
-<li>rsRand()
-: <a class="el" href="rs__math_8rsh.html#a84b2e7468314873b3aa02969e310d9e4">rs_math.rsh</a>
-</li>
-<li>rsSample()
-: <a class="el" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rs_allocation.rsh</a>
-</li>
-<li>rsSamplerGetAnisotropy()
-: <a class="el" href="rs__sampler_8rsh.html#ab1e79984609469604cba8e2b76a98844">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetMagnification()
-: <a class="el" href="rs__sampler_8rsh.html#a5bddb73826cd20a79c31f012a4637e83">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetMinification()
-: <a class="el" href="rs__sampler_8rsh.html#acb1bec2c3d1edd752dd60499c8db58a4">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetWrapS()
-: <a class="el" href="rs__sampler_8rsh.html#a68a7ab6724019c6e72fae8eb45aa48dd">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetWrapT()
-: <a class="el" href="rs__sampler_8rsh.html#ab6b25d3b9afa16f418e2dee78ebb4a75">rs_sampler.rsh</a>
-</li>
-<li>rsSendToClient()
-: <a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rs_core.rsh</a>
-</li>
-<li>rsSendToClientBlocking()
-: <a class="el" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rs_core.rsh</a>
-</li>
-<li>rsSetElementAt()
-: <a class="el" href="rs__allocation_8rsh.html#a351627f335b9a091a5152db7ac9134dc">rs_allocation.rsh</a>
-</li>
-<li>rsSetObject()
-: <a class="el" href="rs__object_8rsh.html#a5132f90b4aaf8d2e35e6ad021fb08175">rs_object.rsh</a>
-</li>
-<li>rsTime()
-: <a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rs_time.rsh</a>
-</li>
-<li>rsUnpackColor8888()
-: <a class="el" href="rs__math_8rsh.html#a48bb0c2e7b1f2b62b2a8970c7d709eca">rs_math.rsh</a>
-</li>
-<li>rsUptimeMillis()
-: <a class="el" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rs_time.rsh</a>
-</li>
-<li>rsUptimeNanos()
-: <a class="el" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rs_time.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>short2
-: <a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">rs_types.rsh</a>
-</li>
-<li>short3
-: <a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">rs_types.rsh</a>
-</li>
-<li>short4
-: <a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">rs_types.rsh</a>
-</li>
-<li>sign()
-: <a class="el" href="rs__cl_8rsh.html#a9fe423cc7d4c6d767f8a608d2ee76657">rs_cl.rsh</a>
-</li>
-<li>sin()
-: <a class="el" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">rs_cl.rsh</a>
-</li>
-<li>sincos()
-: <a class="el" href="rs__cl_8rsh.html#a892c91a30bbc713aa77105d8e9e25881">rs_cl.rsh</a>
-</li>
-<li>sinh()
-: <a class="el" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">rs_cl.rsh</a>
-</li>
-<li>sinpi()
-: <a class="el" href="rs__cl_8rsh.html#a9ca027af0acf3ff22d91cd9489766976">rs_cl.rsh</a>
-</li>
-<li>size_t
-: <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">rs_types.rsh</a>
-</li>
-<li>sqrt()
-: <a class="el" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">rs_cl.rsh</a>
-</li>
-<li>ssize_t
-: <a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">rs_types.rsh</a>
-</li>
-<li>step()
-: <a class="el" href="rs__cl_8rsh.html#a9f40337dfee48d1881b87b35aa8133dd">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>tan()
-: <a class="el" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">rs_cl.rsh</a>
-</li>
-<li>tanh()
-: <a class="el" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">rs_cl.rsh</a>
-</li>
-<li>tanpi()
-: <a class="el" href="rs__cl_8rsh.html#aee96c8910a7d8b0082574813b6b68b9a">rs_cl.rsh</a>
-</li>
-<li>tgamma()
-: <a class="el" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">rs_cl.rsh</a>
-</li>
-<li>trunc()
-: <a class="el" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
-<li>uchar
-: <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">rs_types.rsh</a>
-</li>
-<li>uchar2
-: <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">rs_types.rsh</a>
-</li>
-<li>uchar3
-: <a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">rs_types.rsh</a>
-</li>
-<li>uchar4
-: <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">rs_types.rsh</a>
-</li>
-<li>uint
-: <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">rs_types.rsh</a>
-</li>
-<li>uint16_t
-: <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">rs_types.rsh</a>
-</li>
-<li>uint2
-: <a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">rs_types.rsh</a>
-</li>
-<li>uint3
-: <a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">rs_types.rsh</a>
-</li>
-<li>uint32_t
-: <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">rs_types.rsh</a>
-</li>
-<li>uint4
-: <a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">rs_types.rsh</a>
-</li>
-<li>uint64_t
-: <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">rs_types.rsh</a>
-</li>
-<li>uint8_t
-: <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">rs_types.rsh</a>
-</li>
-<li>ulong
-: <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">rs_types.rsh</a>
-</li>
-<li>ulong2
-: <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">rs_types.rsh</a>
-</li>
-<li>ulong3
-: <a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">rs_types.rsh</a>
-</li>
-<li>ulong4
-: <a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">rs_types.rsh</a>
-</li>
-<li>ushort
-: <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">rs_types.rsh</a>
-</li>
-<li>ushort2
-: <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">rs_types.rsh</a>
-</li>
-<li>ushort3
-: <a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">rs_types.rsh</a>
-</li>
-<li>ushort4
-: <a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">rs_types.rsh</a>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/globals_enum.html b/docs/html/reference/renderscript/globals_enum.html
deleted file mode 100644
index 500d6c4..0000000
--- a/docs/html/reference/renderscript/globals_enum.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&#160;<ul>
-<li>rs_allocation_cubemap_face
-: <a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_types.rsh</a>
-</li>
-<li>rs_allocation_usage_type
-: <a class="el" href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171">rs_types.rsh</a>
-</li>
-<li>rs_data_kind
-: <a class="el" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">rs_types.rsh</a>
-</li>
-<li>rs_data_type
-: <a class="el" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">rs_types.rsh</a>
-</li>
-<li>rs_depth_func
-: <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_types.rsh</a>
-</li>
-<li>rs_for_each_strategy
-: <a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_core.rsh</a>
-</li>
-<li>rs_primitive
-: <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_types.rsh</a>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/globals_func.html b/docs/html/reference/renderscript/globals_func.html
deleted file mode 100644
index bed106a..0000000
--- a/docs/html/reference/renderscript/globals_func.html
+++ /dev/null
@@ -1,707 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_e"><span>e</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_h"><span>h</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_l"><span>l</span></a></li>
-      <li><a href="#index_m"><span>m</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_t"><span>t</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&#160;
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>abs()
-: <a class="el" href="rs__cl_8rsh.html#a1ed0afedda2068ad1f9ad14ef3449e50">rs_cl.rsh</a>
-</li>
-<li>acos()
-: <a class="el" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">rs_cl.rsh</a>
-</li>
-<li>acosh()
-: <a class="el" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">rs_cl.rsh</a>
-</li>
-<li>acospi()
-: <a class="el" href="rs__cl_8rsh.html#a2c9092eb07e9df891935e93469e70d4e">rs_cl.rsh</a>
-</li>
-<li>asin()
-: <a class="el" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">rs_cl.rsh</a>
-</li>
-<li>asinh()
-: <a class="el" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">rs_cl.rsh</a>
-</li>
-<li>asinpi()
-: <a class="el" href="rs__cl_8rsh.html#a812eb4521e65a451161417f9898384f7">rs_cl.rsh</a>
-</li>
-<li>atan()
-: <a class="el" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">rs_cl.rsh</a>
-</li>
-<li>atan2()
-: <a class="el" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">rs_cl.rsh</a>
-</li>
-<li>atan2pi()
-: <a class="el" href="rs__cl_8rsh.html#a89ec5f6a2f64a0f9e97438fbd41aaace">rs_cl.rsh</a>
-</li>
-<li>atanh()
-: <a class="el" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">rs_cl.rsh</a>
-</li>
-<li>atanpi()
-: <a class="el" href="rs__cl_8rsh.html#a5052e31ce616d35aee25a3a83f6fc117">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>cbrt()
-: <a class="el" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">rs_cl.rsh</a>
-</li>
-<li>ceil()
-: <a class="el" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">rs_cl.rsh</a>
-</li>
-<li>clamp()
-: <a class="el" href="rs__cl_8rsh.html#afae5eac13e35acd0f47d7e3c601e16ed">rs_cl.rsh</a>
-</li>
-<li>clz()
-: <a class="el" href="rs__cl_8rsh.html#a8a0f94dce3caa2a50cbf2d9f4bc674ac">rs_cl.rsh</a>
-</li>
-<li>convert_char2()
-: <a class="el" href="rs__cl_8rsh.html#a67421c4b17df15a1c726d912770e5ca4">rs_cl.rsh</a>
-</li>
-<li>convert_float2()
-: <a class="el" href="rs__cl_8rsh.html#a1ad62d449c1e3548573c2f9c1a5cb13a">rs_cl.rsh</a>
-</li>
-<li>convert_int2()
-: <a class="el" href="rs__cl_8rsh.html#a9d2e4b8f0f25a7ccaed05248edc21f06">rs_cl.rsh</a>
-</li>
-<li>convert_short2()
-: <a class="el" href="rs__cl_8rsh.html#a83e89db1940f3190fbec5bd823a99fc5">rs_cl.rsh</a>
-</li>
-<li>convert_uchar2()
-: <a class="el" href="rs__cl_8rsh.html#a833bb5476683ec5692feaf0cd5dcdd80">rs_cl.rsh</a>
-</li>
-<li>convert_uint2()
-: <a class="el" href="rs__cl_8rsh.html#a01ff256469203ba33ba0f220b54e70d1">rs_cl.rsh</a>
-</li>
-<li>convert_ushort2()
-: <a class="el" href="rs__cl_8rsh.html#a6862ea6ddfba8a59796bc681a544fb4f">rs_cl.rsh</a>
-</li>
-<li>copysign()
-: <a class="el" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">rs_cl.rsh</a>
-</li>
-<li>cos()
-: <a class="el" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">rs_cl.rsh</a>
-</li>
-<li>cosh()
-: <a class="el" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">rs_cl.rsh</a>
-</li>
-<li>cospi()
-: <a class="el" href="rs__cl_8rsh.html#a258d2c828fd46eae2867373884d834a9">rs_cl.rsh</a>
-</li>
-<li>cross()
-: <a class="el" href="rs__cl_8rsh.html#add745d593bc2b23285bd10e52a204e25">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>degrees()
-: <a class="el" href="rs__cl_8rsh.html#a0276b63d6905fa802032f1490a24515b">rs_cl.rsh</a>
-</li>
-<li>distance()
-: <a class="el" href="rs__cl_8rsh.html#a412bf215ae838c65079560bbefefaca7">rs_cl.rsh</a>
-</li>
-<li>dot()
-: <a class="el" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>erf()
-: <a class="el" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">rs_cl.rsh</a>
-</li>
-<li>erfc()
-: <a class="el" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">rs_cl.rsh</a>
-</li>
-<li>exp()
-: <a class="el" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">rs_cl.rsh</a>
-</li>
-<li>exp10()
-: <a class="el" href="rs__cl_8rsh.html#a0225ff40d79f78260293e776c6a77422">rs_cl.rsh</a>
-</li>
-<li>exp2()
-: <a class="el" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">rs_cl.rsh</a>
-</li>
-<li>expm1()
-: <a class="el" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fabs()
-: <a class="el" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">rs_cl.rsh</a>
-</li>
-<li>fast_distance()
-: <a class="el" href="rs__cl_8rsh.html#a4fcbdb9099e7d653a951cb344ba3c3c9">rs_cl.rsh</a>
-</li>
-<li>fast_length()
-: <a class="el" href="rs__cl_8rsh.html#a7c8f2f987044a360b5f616a80a74a4d5">rs_cl.rsh</a>
-</li>
-<li>fast_normalize()
-: <a class="el" href="rs__cl_8rsh.html#a3878bee2879351f518be68e015d76a35">rs_cl.rsh</a>
-</li>
-<li>fdim()
-: <a class="el" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">rs_cl.rsh</a>
-</li>
-<li>floor()
-: <a class="el" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">rs_cl.rsh</a>
-</li>
-<li>fma()
-: <a class="el" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">rs_cl.rsh</a>
-</li>
-<li>fmax()
-: <a class="el" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">rs_cl.rsh</a>
-</li>
-<li>fmin()
-: <a class="el" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">rs_cl.rsh</a>
-</li>
-<li>fmod()
-: <a class="el" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">rs_cl.rsh</a>
-</li>
-<li>fract()
-: <a class="el" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">rs_cl.rsh</a>
-</li>
-<li>frexp()
-: <a class="el" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>half_recip()
-: <a class="el" href="rs__cl_8rsh.html#a49050a8e32c95f60df4eaba9d7dfdca6">rs_cl.rsh</a>
-</li>
-<li>half_rsqrt()
-: <a class="el" href="rs__cl_8rsh.html#a0925ceb22d33dcbb45914350ffa2edea">rs_cl.rsh</a>
-</li>
-<li>half_sqrt()
-: <a class="el" href="rs__cl_8rsh.html#a26e2c17b20ee4c98b78c365d390e4fb8">rs_cl.rsh</a>
-</li>
-<li>hypot()
-: <a class="el" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>ilogb()
-: <a class="el" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>ldexp()
-: <a class="el" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">rs_cl.rsh</a>
-</li>
-<li>length()
-: <a class="el" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">rs_cl.rsh</a>
-</li>
-<li>lgamma()
-: <a class="el" href="rs__cl_8rsh.html#a735f4e14e33c50348ef41220f9210bcc">rs_cl.rsh</a>
-</li>
-<li>log()
-: <a class="el" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">rs_cl.rsh</a>
-</li>
-<li>log10()
-: <a class="el" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">rs_cl.rsh</a>
-</li>
-<li>log1p()
-: <a class="el" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">rs_cl.rsh</a>
-</li>
-<li>log2()
-: <a class="el" href="rs__cl_8rsh.html#aab1c4f06daf6f2a50fd73f0c28929213">rs_cl.rsh</a>
-</li>
-<li>logb()
-: <a class="el" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>mad()
-: <a class="el" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">rs_cl.rsh</a>
-</li>
-<li>max()
-: <a class="el" href="rs__cl_8rsh.html#a616bf7a90d8d3c73a48d2c395d9dc4ea">rs_cl.rsh</a>
-</li>
-<li>min()
-: <a class="el" href="rs__cl_8rsh.html#a5f61ca44b3ad4b11365b0c4137a22658">rs_cl.rsh</a>
-</li>
-<li>mix()
-: <a class="el" href="rs__cl_8rsh.html#a254612a612ff7539b01a1478e03d8697">rs_cl.rsh</a>
-</li>
-<li>modf()
-: <a class="el" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>native_exp()
-: <a class="el" href="rs__cl_8rsh.html#a45d8176823a05b891313f3d96decf491">rs_cl.rsh</a>
-</li>
-<li>native_exp10()
-: <a class="el" href="rs__cl_8rsh.html#a601ee3d2bf769f1cdc39a886f7a6c986">rs_cl.rsh</a>
-</li>
-<li>native_exp2()
-: <a class="el" href="rs__cl_8rsh.html#ab354691ecd844549b27ef9202e17f7ac">rs_cl.rsh</a>
-</li>
-<li>nextafter()
-: <a class="el" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">rs_cl.rsh</a>
-</li>
-<li>normalize()
-: <a class="el" href="rs__cl_8rsh.html#a69c2a56f743593439d5ae5e3ec8e517f">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>pow()
-: <a class="el" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">rs_cl.rsh</a>
-</li>
-<li>pown()
-: <a class="el" href="rs__cl_8rsh.html#a67d1fe795e092003f687f3cc6d3c407a">rs_cl.rsh</a>
-</li>
-<li>powr()
-: <a class="el" href="rs__cl_8rsh.html#a316c30ba3e6bc11673bfd34bb4746d24">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>radians()
-: <a class="el" href="rs__cl_8rsh.html#aceb63a0da6393b8ac2ed229bae6232d6">rs_cl.rsh</a>
-</li>
-<li>remainder()
-: <a class="el" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">rs_cl.rsh</a>
-</li>
-<li>rint()
-: <a class="el" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rs_cl.rsh</a>
-</li>
-<li>rootn()
-: <a class="el" href="rs__cl_8rsh.html#a2776b517528b8185a6bb50753af0f6cf">rs_cl.rsh</a>
-</li>
-<li>round()
-: <a class="el" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">rs_cl.rsh</a>
-</li>
-<li>rsAllocationCopy1DRange()
-: <a class="el" href="rs__allocation_8rsh.html#a3a1098a3ea3a5106955dd4398b8904e1">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationCopy2DRange()
-: <a class="el" href="rs__allocation_8rsh.html#a7f7e2369b3ed7d7db31729b6db7ba07e">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimFaces()
-: <a class="el" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimLOD()
-: <a class="el" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimX()
-: <a class="el" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimY()
-: <a class="el" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetDimZ()
-: <a class="el" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationGetElement()
-: <a class="el" href="rs__allocation_8rsh.html#a6a3b6512bc269f6b369bdc54d12a45ff">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationIoReceive()
-: <a class="el" href="rs__allocation_8rsh.html#a05f7391230a92d239fdb619d791162b5">rs_allocation.rsh</a>
-</li>
-<li>rsAllocationIoSend()
-: <a class="el" href="rs__allocation_8rsh.html#afe9ebb2f89c6366c59f5e05ee4849c0a">rs_allocation.rsh</a>
-</li>
-<li>rsAtomicAdd()
-: <a class="el" href="rs__atomic_8rsh.html#ab46665eff81030200f86db9c2181072a">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicAnd()
-: <a class="el" href="rs__atomic_8rsh.html#a7fdf5633662dd5b0898ad5a149e3c8ad">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicCas()
-: <a class="el" href="rs__atomic_8rsh.html#a205d66a8eb29eee8968f886e488b4402">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicDec()
-: <a class="el" href="rs__atomic_8rsh.html#a16a69784a343d7c11bf6bd7fec9686ca">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicInc()
-: <a class="el" href="rs__atomic_8rsh.html#a619e7a489500a650569a76ccd93e105f">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicMax()
-: <a class="el" href="rs__atomic_8rsh.html#a1d49d69d14956152fcde34efe9cdff87">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicMin()
-: <a class="el" href="rs__atomic_8rsh.html#a9f3cddc86f1075ca194a762fb8a3330a">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicOr()
-: <a class="el" href="rs__atomic_8rsh.html#a477f6eb17c4806bb715bfd975b6369cd">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicSub()
-: <a class="el" href="rs__atomic_8rsh.html#a800dced6abbf09716391f35bc488900b">rs_atomic.rsh</a>
-</li>
-<li>rsAtomicXor()
-: <a class="el" href="rs__atomic_8rsh.html#a5590505ea65c53b3bb26fa48a6b9c313">rs_atomic.rsh</a>
-</li>
-<li>rsClamp()
-: <a class="el" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rs_math.rsh</a>
-</li>
-<li>rsClearObject()
-: <a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rs_object.rsh</a>
-</li>
-<li>rsDebug()
-: <a class="el" href="rs__debug_8rsh.html#aa75aa9faf7646ceeafeb19279416e9e8">rs_debug.rsh</a>
-</li>
-<li>rsElementGetBytesSize()
-: <a class="el" href="rs__element_8rsh.html#ac54592168af5896d3fba5283af286f98">rs_element.rsh</a>
-</li>
-<li>rsElementGetDataKind()
-: <a class="el" href="rs__element_8rsh.html#af072702a530e158093d69353072da5f9">rs_element.rsh</a>
-</li>
-<li>rsElementGetDataType()
-: <a class="el" href="rs__element_8rsh.html#a9a3569d242be363517ea2354d98cf382">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElement()
-: <a class="el" href="rs__element_8rsh.html#a8c690bce7d32be759fd787740c270c92">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementArraySize()
-: <a class="el" href="rs__element_8rsh.html#a9c3140c18139db451279d9b221808eee">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementCount()
-: <a class="el" href="rs__element_8rsh.html#a2ecab064ea2b720bc3af27b523388f31">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementName()
-: <a class="el" href="rs__element_8rsh.html#a3c1446166c43aa6ba3d5359f6c982f02">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementNameLength()
-: <a class="el" href="rs__element_8rsh.html#a94834eb1d91b50a5df3cbe161c22e37d">rs_element.rsh</a>
-</li>
-<li>rsElementGetSubElementOffsetBytes()
-: <a class="el" href="rs__element_8rsh.html#a840d53f1e91bb6887b40a4d8983c53ed">rs_element.rsh</a>
-</li>
-<li>rsElementGetVectorSize()
-: <a class="el" href="rs__element_8rsh.html#a727997de25ae43c07dffcfd484928d53">rs_element.rsh</a>
-</li>
-<li>rsExtractFrustumPlanes()
-: <a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rs_math.rsh</a>
-</li>
-<li>rsForEach()
-: <a class="el" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rs_core.rsh</a>
-</li>
-<li>rsFrac()
-: <a class="el" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rs_math.rsh</a>
-</li>
-<li>rsGetAllocation()
-: <a class="el" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rs_allocation.rsh</a>
-</li>
-<li>rsGetDt()
-: <a class="el" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rs_time.rsh</a>
-</li>
-<li>rsGetElementAt()
-: <a class="el" href="rs__allocation_8rsh.html#a56157b6ddef754b36833ca1f8e66aec2">rs_allocation.rsh</a>
-</li>
-<li>rsGetElementAtYuv_uchar_U()
-: <a class="el" href="rs__allocation_8rsh.html#a41f61be02113ee22c039ea51fdedb20e">rs_allocation.rsh</a>
-</li>
-<li>rsGetElementAtYuv_uchar_V()
-: <a class="el" href="rs__allocation_8rsh.html#af03cadb582fa80bbf7f39177d96df17e">rs_allocation.rsh</a>
-</li>
-<li>rsGetElementAtYuv_uchar_Y()
-: <a class="el" href="rs__allocation_8rsh.html#ad7ffa1aa16511a75b4bc2c05bd0e0a75">rs_allocation.rsh</a>
-</li>
-<li>rsgMeshGetIndexAllocation()
-: <a class="el" href="rs__mesh_8rsh.html#a05257c9252e7804397d6a6f7549bae5a">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetPrimitive()
-: <a class="el" href="rs__mesh_8rsh.html#af467f1c21cc9221071334f8234c29466">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetPrimitiveCount()
-: <a class="el" href="rs__mesh_8rsh.html#ae0a0178cc02508517013486be4500d7f">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetVertexAllocation()
-: <a class="el" href="rs__mesh_8rsh.html#a43e1d84147176cb0a1659552fa8da49f">rs_mesh.rsh</a>
-</li>
-<li>rsgMeshGetVertexAllocationCount()
-: <a class="el" href="rs__mesh_8rsh.html#a7578d6d93154ac881715ab511449fab9">rs_mesh.rsh</a>
-</li>
-<li>rsgProgramRasterGetCullMode()
-: <a class="el" href="rs__program_8rsh.html#a633d6dbdec98ef89c2b70c92ea707502">rs_program.rsh</a>
-</li>
-<li>rsgProgramRasterIsPointSpriteEnabled()
-: <a class="el" href="rs__program_8rsh.html#a86aeccd846ed2cd2c9498ab57e2535f3">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreGetBlendDstFunc()
-: <a class="el" href="rs__program_8rsh.html#a0ad38d595e35712f24c384ef20b69025">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreGetBlendSrcFunc()
-: <a class="el" href="rs__program_8rsh.html#afb38256c5804cdb9b410419c43ce03ab">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreGetDepthFunc()
-: <a class="el" href="rs__program_8rsh.html#a6a9c06c54d230f61edc0667a091aac77">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskAlphaEnabled()
-: <a class="el" href="rs__program_8rsh.html#ab038edb7399044a3ea96ebb17d7b6601">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskBlueEnabled()
-: <a class="el" href="rs__program_8rsh.html#a279ad1b4611aca268053337f6719a22c">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskGreenEnabled()
-: <a class="el" href="rs__program_8rsh.html#a1a57f706bc42ce49b545021c8403964c">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsColorMaskRedEnabled()
-: <a class="el" href="rs__program_8rsh.html#a4a50df1d2495567536dd6f394d38ee5d">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsDepthMaskEnabled()
-: <a class="el" href="rs__program_8rsh.html#afa27fa6103c9e29f5e098e2d99663f0b">rs_program.rsh</a>
-</li>
-<li>rsgProgramStoreIsDitherEnabled()
-: <a class="el" href="rs__program_8rsh.html#abe7c55547a72dd291e0996de050bb749">rs_program.rsh</a>
-</li>
-<li>rsIsObject()
-: <a class="el" href="rs__object_8rsh.html#a547cd0a8071d895139893f1e10f5c3fd">rs_object.rsh</a>
-</li>
-<li>rsIsSphereInFrustum()
-: <a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rs_math.rsh</a>
-</li>
-<li>rsLocaltime()
-: <a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rs_time.rsh</a>
-</li>
-<li>rsMatrixGet()
-: <a class="el" href="rs__matrix_8rsh.html#ad485084684991796cffdd8a008557569">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixInverse()
-: <a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixInverseTranspose()
-: <a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoad()
-: <a class="el" href="rs__matrix_8rsh.html#a5f3697805c794c9c9f2f8cfdde4b9a44">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadFrustum()
-: <a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadIdentity()
-: <a class="el" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadMultiply()
-: <a class="el" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadOrtho()
-: <a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadPerspective()
-: <a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadRotate()
-: <a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadScale()
-: <a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixLoadTranslate()
-: <a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixMultiply()
-: <a class="el" href="rs__matrix_8rsh.html#ab1973ad3efa0ab2d53f466dd9fb190bb">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixRotate()
-: <a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixScale()
-: <a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixSet()
-: <a class="el" href="rs__matrix_8rsh.html#ad6ea242218e0f1a031f754df0317e6e7">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixTranslate()
-: <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rs_matrix.rsh</a>
-</li>
-<li>rsMatrixTranspose()
-: <a class="el" href="rs__matrix_8rsh.html#a49164dd4d4e85b212196028b1fd89dc1">rs_matrix.rsh</a>
-</li>
-<li>rsPackColorTo8888()
-: <a class="el" href="rs__math_8rsh.html#a1f1107cf778cf1f614edfb5b8ac436a0">rs_math.rsh</a>
-</li>
-<li>rsqrt()
-: <a class="el" href="rs__cl_8rsh.html#a8a3992b97cb199b1c8d598996b600988">rs_cl.rsh</a>
-</li>
-<li>rsQuaternionAdd()
-: <a class="el" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionConjugate()
-: <a class="el" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionDot()
-: <a class="el" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionGetMatrixUnit()
-: <a class="el" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionLoadRotate()
-: <a class="el" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionLoadRotateUnit()
-: <a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionMultiply()
-: <a class="el" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionNormalize()
-: <a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionSet()
-: <a class="el" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rs_quaternion.rsh</a>
-</li>
-<li>rsQuaternionSlerp()
-: <a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rs_quaternion.rsh</a>
-</li>
-<li>rsRand()
-: <a class="el" href="rs__math_8rsh.html#a03e898d810ac44158e7461b2b2b1c356">rs_math.rsh</a>
-</li>
-<li>rsSample()
-: <a class="el" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rs_allocation.rsh</a>
-</li>
-<li>rsSamplerGetAnisotropy()
-: <a class="el" href="rs__sampler_8rsh.html#ab1e79984609469604cba8e2b76a98844">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetMagnification()
-: <a class="el" href="rs__sampler_8rsh.html#a5bddb73826cd20a79c31f012a4637e83">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetMinification()
-: <a class="el" href="rs__sampler_8rsh.html#acb1bec2c3d1edd752dd60499c8db58a4">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetWrapS()
-: <a class="el" href="rs__sampler_8rsh.html#a68a7ab6724019c6e72fae8eb45aa48dd">rs_sampler.rsh</a>
-</li>
-<li>rsSamplerGetWrapT()
-: <a class="el" href="rs__sampler_8rsh.html#ab6b25d3b9afa16f418e2dee78ebb4a75">rs_sampler.rsh</a>
-</li>
-<li>rsSendToClient()
-: <a class="el" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rs_core.rsh</a>
-</li>
-<li>rsSendToClientBlocking()
-: <a class="el" href="rs__core_8rsh.html#afc93b00be08f58512a6ab6a87feb9515">rs_core.rsh</a>
-</li>
-<li>rsSetElementAt()
-: <a class="el" href="rs__allocation_8rsh.html#a351627f335b9a091a5152db7ac9134dc">rs_allocation.rsh</a>
-</li>
-<li>rsSetObject()
-: <a class="el" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rs_object.rsh</a>
-</li>
-<li>rsTime()
-: <a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rs_time.rsh</a>
-</li>
-<li>rsUnpackColor8888()
-: <a class="el" href="rs__math_8rsh.html#a48bb0c2e7b1f2b62b2a8970c7d709eca">rs_math.rsh</a>
-</li>
-<li>rsUptimeMillis()
-: <a class="el" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rs_time.rsh</a>
-</li>
-<li>rsUptimeNanos()
-: <a class="el" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rs_time.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>sign()
-: <a class="el" href="rs__cl_8rsh.html#a9fe423cc7d4c6d767f8a608d2ee76657">rs_cl.rsh</a>
-</li>
-<li>sin()
-: <a class="el" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">rs_cl.rsh</a>
-</li>
-<li>sincos()
-: <a class="el" href="rs__cl_8rsh.html#a892c91a30bbc713aa77105d8e9e25881">rs_cl.rsh</a>
-</li>
-<li>sinh()
-: <a class="el" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">rs_cl.rsh</a>
-</li>
-<li>sinpi()
-: <a class="el" href="rs__cl_8rsh.html#a9ca027af0acf3ff22d91cd9489766976">rs_cl.rsh</a>
-</li>
-<li>sqrt()
-: <a class="el" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">rs_cl.rsh</a>
-</li>
-<li>step()
-: <a class="el" href="rs__cl_8rsh.html#a9f40337dfee48d1881b87b35aa8133dd">rs_cl.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>tan()
-: <a class="el" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">rs_cl.rsh</a>
-</li>
-<li>tanh()
-: <a class="el" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">rs_cl.rsh</a>
-</li>
-<li>tanpi()
-: <a class="el" href="rs__cl_8rsh.html#aee96c8910a7d8b0082574813b6b68b9a">rs_cl.rsh</a>
-</li>
-<li>tgamma()
-: <a class="el" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">rs_cl.rsh</a>
-</li>
-<li>trunc()
-: <a class="el" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">rs_cl.rsh</a>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/globals_type.html b/docs/html/reference/renderscript/globals_type.html
deleted file mode 100644
index 1d1ffd7..0000000
--- a/docs/html/reference/renderscript/globals_type.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_l"><span>l</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li><a href="#index_u"><span>u</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-&#160;
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>char2
-: <a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">rs_types.rsh</a>
-</li>
-<li>char3
-: <a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">rs_types.rsh</a>
-</li>
-<li>char4
-: <a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>double2
-: <a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">rs_types.rsh</a>
-</li>
-<li>double3
-: <a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">rs_types.rsh</a>
-</li>
-<li>double4
-: <a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>float2
-: <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">rs_types.rsh</a>
-</li>
-<li>float3
-: <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">rs_types.rsh</a>
-</li>
-<li>float4
-: <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>int16_t
-: <a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">rs_types.rsh</a>
-</li>
-<li>int2
-: <a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">rs_types.rsh</a>
-</li>
-<li>int3
-: <a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">rs_types.rsh</a>
-</li>
-<li>int32_t
-: <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">rs_types.rsh</a>
-</li>
-<li>int4
-: <a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">rs_types.rsh</a>
-</li>
-<li>int64_t
-: <a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">rs_types.rsh</a>
-</li>
-<li>int8_t
-: <a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>long2
-: <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">rs_types.rsh</a>
-</li>
-<li>long3
-: <a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">rs_types.rsh</a>
-</li>
-<li>long4
-: <a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>rs_quaternion
-: <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_types.rsh</a>
-</li>
-<li>rs_script_call_t
-: <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_core.rsh</a>
-</li>
-<li>rs_time_t
-: <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>short2
-: <a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">rs_types.rsh</a>
-</li>
-<li>short3
-: <a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">rs_types.rsh</a>
-</li>
-<li>short4
-: <a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">rs_types.rsh</a>
-</li>
-<li>size_t
-: <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">rs_types.rsh</a>
-</li>
-<li>ssize_t
-: <a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">rs_types.rsh</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
-<li>uchar
-: <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">rs_types.rsh</a>
-</li>
-<li>uchar2
-: <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">rs_types.rsh</a>
-</li>
-<li>uchar3
-: <a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">rs_types.rsh</a>
-</li>
-<li>uchar4
-: <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">rs_types.rsh</a>
-</li>
-<li>uint
-: <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">rs_types.rsh</a>
-</li>
-<li>uint16_t
-: <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">rs_types.rsh</a>
-</li>
-<li>uint2
-: <a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">rs_types.rsh</a>
-</li>
-<li>uint3
-: <a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">rs_types.rsh</a>
-</li>
-<li>uint32_t
-: <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">rs_types.rsh</a>
-</li>
-<li>uint4
-: <a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">rs_types.rsh</a>
-</li>
-<li>uint64_t
-: <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">rs_types.rsh</a>
-</li>
-<li>uint8_t
-: <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">rs_types.rsh</a>
-</li>
-<li>ulong
-: <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">rs_types.rsh</a>
-</li>
-<li>ulong2
-: <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">rs_types.rsh</a>
-</li>
-<li>ulong3
-: <a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">rs_types.rsh</a>
-</li>
-<li>ulong4
-: <a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">rs_types.rsh</a>
-</li>
-<li>ushort
-: <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">rs_types.rsh</a>
-</li>
-<li>ushort2
-: <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">rs_types.rsh</a>
-</li>
-<li>ushort3
-: <a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">rs_types.rsh</a>
-</li>
-<li>ushort4
-: <a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">rs_types.rsh</a>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/index.html b/docs/html/reference/renderscript/index.html
deleted file mode 100644
index 2e3a449..0000000
--- a/docs/html/reference/renderscript/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>Main Page</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li class="current"><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<div class="textblock"><p>RenderScript is a high-performance runtime that provides compute operations at the native level. RenderScript code is compiled on devices at runtime to allow platform-independence as well. This reference documentation describes the RenderScript runtime APIs, which you can utilize to write RenderScript code in C99. The RenderScript compute header files are automatically included for you.</p>
-<p>To use RenderScript, you need to utilize the RenderScript runtime APIs documented here as well as the Android framework APIs for RenderScript. For documentation on the Android framework APIs, see the <a href="http://developer.android.com/reference/android/renderscript/package-summary.html" target="_parent">android.renderscript</a> package reference. For more information on how to develop with RenderScript and how the runtime and Android framework APIs interact, see the <a href="http://developer.android.com/guide/topics/renderscript/index.html" target="_parent">RenderScript developer guide</a> and the <a href="http://developer.android.com/resources/samples/RenderScript/index.html" target="_parent">RenderScript samples</a>. </p>
-</div></div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__allocation_8rsh.html b/docs/html/reference/renderscript/rs__allocation_8rsh.html
deleted file mode 100644
index 31736a6..0000000
--- a/docs/html/reference/renderscript/rs__allocation_8rsh.html
+++ /dev/null
@@ -1,818 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_allocation.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_allocation.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rsGetAllocation</a> (const void *)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rsAllocationGetDimX</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rsAllocationGetDimY</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rsAllocationGetDimZ</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rsAllocationGetDimLOD</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rsAllocationGetDimFaces</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a3a1098a3ea3a5106955dd4398b8904e1">rsAllocationCopy1DRange</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> dstAlloc, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstOff, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstMip, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> count, <a class="el" href="structrs__allocation.html">rs_allocation</a> srcAlloc, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcOff, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcMip)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a7f7e2369b3ed7d7db31729b6db7ba07e">rsAllocationCopy2DRange</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> dstAlloc, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstXoff, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstYoff, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstMip, <a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_allocation_cubemap_face</a> dstFace, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> width, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> height, <a class="el" href="structrs__allocation.html">rs_allocation</a> srcAlloc, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcXoff, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcYoff, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcMip, <a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_allocation_cubemap_face</a> srcFace)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a56157b6ddef754b36833ca1f8e66aec2">rsGetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#aea4f2338fb36faf73021ff7179fa5930">rsGetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a4256e51301797517cafd5474d7d4b26f">rsGetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#afe9ebb2f89c6366c59f5e05ee4849c0a">rsAllocationIoSend</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a05f7391230a92d239fdb619d791162b5">rsAllocationIoReceive</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a6a3b6512bc269f6b369bdc54d12a45ff">rsAllocationGetElement</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rsSample</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="structrs__sampler.html">rs_sampler</a> s, float location)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#aa9574fd5f1655f6e74b4872aace618bf">rsSample</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="structrs__sampler.html">rs_sampler</a> s, float location, float lod)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a36ef1e609e360a9a5a5ff5dce13b5100">rsSetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, void *ptr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a351627f335b9a091a5152db7ac9134dc">rsSetElementAt</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, void *ptr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#ad7ffa1aa16511a75b4bc2c05bd0e0a75">rsGetElementAtYuv_uchar_Y</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#a41f61be02113ee22c039ea51fdedb20e">rsGetElementAtYuv_uchar_U</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__allocation_8rsh.html#af03cadb582fa80bbf7f39177d96df17e">rsGetElementAtYuv_uchar_V</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> a, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Allocation routines. </p>
-
-<p>Definition in file <a class="el" href="rs__allocation_8rsh_source.html">rs_allocation.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a3a1098a3ea3a5106955dd4398b8904e1"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationCopy1DRange" ref="a3a1098a3ea3a5106955dd4398b8904e1" args="(rs_allocation dstAlloc, uint32_t dstOff, uint32_t dstMip, uint32_t count, rs_allocation srcAlloc, uint32_t srcOff, uint32_t srcMip)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsAllocationCopy1DRange </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>dstAlloc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>dstOff</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>dstMip</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>count</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>srcAlloc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>srcOff</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>srcMip</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Copy part of an allocation from another allocation.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">dstAlloc</td><td>Allocation to copy data into. </td></tr>
-    <tr><td class="paramname">dstOff</td><td>The offset of the first element to be copied in the destination allocation. </td></tr>
-    <tr><td class="paramname">dstMip</td><td>Mip level in the destination allocation. </td></tr>
-    <tr><td class="paramname">count</td><td>The number of elements to be copied. </td></tr>
-    <tr><td class="paramname">srcAlloc</td><td>The source data allocation. </td></tr>
-    <tr><td class="paramname">srcOff</td><td>The offset of the first element in data to be copied in the source allocation. </td></tr>
-    <tr><td class="paramname">srcMip</td><td>Mip level in the source allocation. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7f7e2369b3ed7d7db31729b6db7ba07e"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationCopy2DRange" ref="a7f7e2369b3ed7d7db31729b6db7ba07e" args="(rs_allocation dstAlloc, uint32_t dstXoff, uint32_t dstYoff, uint32_t dstMip, rs_allocation_cubemap_face dstFace, uint32_t width, uint32_t height, rs_allocation srcAlloc, uint32_t srcXoff, uint32_t srcYoff, uint32_t srcMip, rs_allocation_cubemap_face srcFace)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsAllocationCopy2DRange </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>dstAlloc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>dstXoff</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>dstYoff</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>dstMip</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_allocation_cubemap_face</a>&#160;</td>
-          <td class="paramname"><em>dstFace</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>width</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>height</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>srcAlloc</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>srcXoff</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>srcYoff</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>srcMip</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_allocation_cubemap_face</a>&#160;</td>
-          <td class="paramname"><em>srcFace</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Copy a rectangular region into the allocation from another allocation.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">dstAlloc</td><td>allocation to copy data into. </td></tr>
-    <tr><td class="paramname">dstXoff</td><td>X offset of the region to update in the destination allocation. </td></tr>
-    <tr><td class="paramname">dstYoff</td><td>Y offset of the region to update in the destination allocation. </td></tr>
-    <tr><td class="paramname">dstMip</td><td>Mip level in the destination allocation. </td></tr>
-    <tr><td class="paramname">dstFace</td><td>Cubemap face of the destination allocation, ignored for allocations that aren't cubemaps. </td></tr>
-    <tr><td class="paramname">width</td><td>Width of the incoming region to update. </td></tr>
-    <tr><td class="paramname">height</td><td>Height of the incoming region to update. </td></tr>
-    <tr><td class="paramname">srcAlloc</td><td>The source data allocation. </td></tr>
-    <tr><td class="paramname">srcXoff</td><td>X offset in data of the source allocation. </td></tr>
-    <tr><td class="paramname">srcYoff</td><td>Y offset in data of the source allocation. </td></tr>
-    <tr><td class="paramname">srcMip</td><td>Mip level in the source allocation. </td></tr>
-    <tr><td class="paramname">srcFace</td><td>Cubemap face of the source allocation, ignored for allocations that aren't cubemaps. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ac85f7ed88f38b35482c6d63b56d470fe"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimFaces" ref="ac85f7ed88f38b35482c6d63b56d470fe" args="(rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimFaces </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Query an allocation for the presence of more than one face.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t Returns 1 if more than one face is present, 0 otherwise. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ac42a07c079d6b3c6bb21975170d4e11c"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimLOD" ref="ac42a07c079d6b3c6bb21975170d4e11c" args="(rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimLOD </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Query an allocation for the presence of more than one LOD.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t Returns 1 if more than one LOD is present, 0 otherwise. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a3ca7f505a97d5b7f477bc65b9e77dafb"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimX" ref="a3ca7f505a97d5b7f477bc65b9e77dafb" args="(rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimX </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Query the dimension of an allocation.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t The X dimension of the allocation. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ac889b866b465580eb313e5d2a9fcac3d"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimY" ref="ac889b866b465580eb313e5d2a9fcac3d" args="(rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimY </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Query the dimension of an allocation.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t The Y dimension of the allocation. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="acd6f1a2b2443e6ea39e6154577645d2c"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetDimZ" ref="acd6f1a2b2443e6ea39e6154577645d2c" args="(rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAllocationGetDimZ </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Query the dimension of an allocation.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint32_t The Z dimension of the allocation. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a6a3b6512bc269f6b369bdc54d12a45ff"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationGetElement" ref="a6a3b6512bc269f6b369bdc54d12a45ff" args="(rs_allocation a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structrs__element.html">rs_element</a> rsAllocationGetElement </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get the element object describing the allocation's layout </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>allocation to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>element describing allocation layout </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a05f7391230a92d239fdb619d791162b5"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationIoReceive" ref="a05f7391230a92d239fdb619d791162b5" args="(rs_allocation a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const void rsAllocationIoReceive </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Receive a new set of contents from the queue. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>allocation to work on </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afe9ebb2f89c6366c59f5e05ee4849c0a"></a><!-- doxytag: member="rs_allocation.rsh::rsAllocationIoSend" ref="afe9ebb2f89c6366c59f5e05ee4849c0a" args="(rs_allocation a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const void rsAllocationIoSend </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Send the contents of the Allocation to the queue. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>allocation to work on </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aadad7654929c451be299df125061c9ba"></a><!-- doxytag: member="rs_allocation.rsh::rsGetAllocation" ref="aadad7654929c451be299df125061c9ba" args="(const void *)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structrs__allocation.html">rs_allocation</a> rsGetAllocation </td>
-          <td>(</td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the Allocation for a given pointer. The pointer should point within a valid allocation. The results are undefined if the pointer is not from a valid allocation.</p>
-<p>This function is deprecated and will be removed in the SDK from a future release. </p>
-
-</div>
-</div>
-<a class="anchor" id="a56157b6ddef754b36833ca1f8e66aec2"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAt" ref="a56157b6ddef754b36833ca1f8e66aec2" args="(rs_allocation a, uint32_t x)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const void* rsGetElementAt </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Extract a single element from an allocation. </p>
-
-</div>
-</div>
-<a class="anchor" id="aea4f2338fb36faf73021ff7179fa5930"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAt" ref="aea4f2338fb36faf73021ff7179fa5930" args="(rs_allocation a, uint32_t x, uint32_t y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const void* rsGetElementAt </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4256e51301797517cafd5474d7d4b26f"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAt" ref="a4256e51301797517cafd5474d7d4b26f" args="(rs_allocation a, uint32_t x, uint32_t y, uint32_t z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const void* rsGetElementAt </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a41f61be02113ee22c039ea51fdedb20e"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAtYuv_uchar_U" ref="a41f61be02113ee22c039ea51fdedb20e" args="(rs_allocation a, uint32_t x, uint32_t y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> rsGetElementAtYuv_uchar_U </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Extract a single element from an allocation.</p>
-<p>Coordinates are in the dimensions of the Y plane </p>
-
-</div>
-</div>
-<a class="anchor" id="af03cadb582fa80bbf7f39177d96df17e"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAtYuv_uchar_V" ref="af03cadb582fa80bbf7f39177d96df17e" args="(rs_allocation a, uint32_t x, uint32_t y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> rsGetElementAtYuv_uchar_V </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Extract a single element from an allocation.</p>
-<p>Coordinates are in the dimensions of the Y plane </p>
-
-</div>
-</div>
-<a class="anchor" id="ad7ffa1aa16511a75b4bc2c05bd0e0a75"></a><!-- doxytag: member="rs_allocation.rsh::rsGetElementAtYuv_uchar_Y" ref="ad7ffa1aa16511a75b4bc2c05bd0e0a75" args="(rs_allocation a, uint32_t x, uint32_t y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> rsGetElementAtYuv_uchar_Y </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Extract a single element from an allocation. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1ed04c0bfab4044b875bb31577b53407"></a><!-- doxytag: member="rs_allocation.rsh::rsSample" ref="a1ed04c0bfab4044b875bb31577b53407" args="(rs_allocation a, rs_sampler s, float location)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsSample </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>location</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Fetch allocation in a way described by the sampler </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>1D allocation to sample from </td></tr>
-    <tr><td class="paramname">s</td><td>sampler state </td></tr>
-    <tr><td class="paramname">location</td><td>to sample from</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Fetch allocation in a way described by the sampler </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>2D allocation to sample from </td></tr>
-    <tr><td class="paramname">s</td><td>sampler state </td></tr>
-    <tr><td class="paramname">location</td><td>to sample from </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa9574fd5f1655f6e74b4872aace618bf"></a><!-- doxytag: member="rs_allocation.rsh::rsSample" ref="aa9574fd5f1655f6e74b4872aace618bf" args="(rs_allocation a, rs_sampler s, float location, float lod)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">const <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsSample </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>location</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>lod</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Fetch allocation in a way described by the sampler </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>1D allocation to sample from </td></tr>
-    <tr><td class="paramname">s</td><td>sampler state </td></tr>
-    <tr><td class="paramname">location</td><td>to sample from </td></tr>
-    <tr><td class="paramname">lod</td><td>mip level to sample from, for fractional values mip levels will be interpolated if RS_SAMPLER_LINEAR_MIP_LINEAR is used</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Fetch allocation in a way described by the sampler </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">a</td><td>2D allocation to sample from </td></tr>
-    <tr><td class="paramname">s</td><td>sampler state </td></tr>
-    <tr><td class="paramname">location</td><td>to sample from </td></tr>
-    <tr><td class="paramname">lod</td><td>mip level to sample from, for fractional values mip levels will be interpolated if RS_SAMPLER_LINEAR_MIP_LINEAR is used </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a36ef1e609e360a9a5a5ff5dce13b5100"></a><!-- doxytag: member="rs_allocation.rsh::rsSetElementAt" ref="a36ef1e609e360a9a5a5ff5dce13b5100" args="(rs_allocation a, void *ptr, uint32_t x)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetElementAt </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&#160;</td>
-          <td class="paramname"><em>ptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set single element of an allocation. </p>
-
-</div>
-</div>
-<a class="anchor" id="a351627f335b9a091a5152db7ac9134dc"></a><!-- doxytag: member="rs_allocation.rsh::rsSetElementAt" ref="a351627f335b9a091a5152db7ac9134dc" args="(rs_allocation a, void *ptr, uint32_t x, uint32_t y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetElementAt </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void *&#160;</td>
-          <td class="paramname"><em>ptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__allocation_8rsh_source.html b/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
deleted file mode 100644
index 6d925a8..0000000
--- a/docs/html/reference/renderscript/rs__allocation_8rsh_source.html
+++ /dev/null
@@ -1,268 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_allocation.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_allocation.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__allocation_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_ALLOCATION_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_ALLOCATION_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="keyword">extern</span> <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> __attribute__((overloadable))
-<a name="l00035"></a>00035     <a class="code" href="rs__allocation_8rsh.html#aadad7654929c451be299df125061c9ba">rsGetAllocation</a>(const <span class="keywordtype">void</span> *);
-<a name="l00036"></a>00036 
-<a name="l00042"></a>00042 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00043"></a>00043     <a class="code" href="rs__allocation_8rsh.html#a3ca7f505a97d5b7f477bc65b9e77dafb">rsAllocationGetDimX</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a>);
-<a name="l00044"></a>00044 
-<a name="l00050"></a>00050 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00051"></a>00051     <a class="code" href="rs__allocation_8rsh.html#ac889b866b465580eb313e5d2a9fcac3d">rsAllocationGetDimY</a>(rs_allocation);
-<a name="l00052"></a>00052 
-<a name="l00058"></a>00058 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00059"></a>00059     <a class="code" href="rs__allocation_8rsh.html#acd6f1a2b2443e6ea39e6154577645d2c">rsAllocationGetDimZ</a>(rs_allocation);
-<a name="l00060"></a>00060 
-<a name="l00066"></a>00066 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00067"></a>00067     <a class="code" href="rs__allocation_8rsh.html#ac42a07c079d6b3c6bb21975170d4e11c">rsAllocationGetDimLOD</a>(rs_allocation);
-<a name="l00068"></a>00068 
-<a name="l00074"></a>00074 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00075"></a>00075     <a class="code" href="rs__allocation_8rsh.html#ac85f7ed88f38b35482c6d63b56d470fe">rsAllocationGetDimFaces</a>(rs_allocation);
-<a name="l00076"></a>00076 
-<a name="l00077"></a>00077 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00078"></a>00078 <span class="preprocessor"></span>
-<a name="l00092"></a>00092 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00093"></a>00093     <a class="code" href="rs__allocation_8rsh.html#a3a1098a3ea3a5106955dd4398b8904e1">rsAllocationCopy1DRange</a>(rs_allocation dstAlloc,
-<a name="l00094"></a>00094                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstOff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstMip,
-<a name="l00095"></a>00095                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> count,
-<a name="l00096"></a>00096                             rs_allocation srcAlloc,
-<a name="l00097"></a>00097                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcOff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcMip);
-<a name="l00098"></a>00098 
-<a name="l00120"></a>00120 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00121"></a>00121     <a class="code" href="rs__allocation_8rsh.html#a7f7e2369b3ed7d7db31729b6db7ba07e">rsAllocationCopy2DRange</a>(rs_allocation dstAlloc,
-<a name="l00122"></a>00122                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstXoff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstYoff,
-<a name="l00123"></a>00123                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> dstMip,
-<a name="l00124"></a>00124                             <a class="code" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229" title="Enum for selecting cube map faces.">rs_allocation_cubemap_face</a> dstFace,
-<a name="l00125"></a>00125                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> width, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> height,
-<a name="l00126"></a>00126                             rs_allocation srcAlloc,
-<a name="l00127"></a>00127                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcXoff, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcYoff,
-<a name="l00128"></a>00128                             <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> srcMip,
-<a name="l00129"></a>00129                             <a class="code" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229" title="Enum for selecting cube map faces.">rs_allocation_cubemap_face</a> srcFace);
-<a name="l00130"></a>00130 
-<a name="l00131"></a>00131 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span>
-<a name="l00136"></a>00136 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">void</span> * __attribute__((overloadable))
-<a name="l00137"></a>00137     <a class="code" href="rs__allocation_8rsh.html#a56157b6ddef754b36833ca1f8e66aec2">rsGetElementAt</a>(rs_allocation a, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x);
-<a name="l00141"></a>00141 extern const <span class="keywordtype">void</span> * __attribute__((overloadable))
-<a name="l00142"></a>00142     <a class="code" href="rs__allocation_8rsh.html#a56157b6ddef754b36833ca1f8e66aec2">rsGetElementAt</a>(rs_allocation a, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y);
-<a name="l00146"></a>00146 extern const <span class="keywordtype">void</span> * __attribute__((overloadable))
-<a name="l00147"></a>00147     <a class="code" href="rs__allocation_8rsh.html#a56157b6ddef754b36833ca1f8e66aec2">rsGetElementAt</a>(rs_allocation a, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> z);
-<a name="l00148"></a>00148 
-<a name="l00149"></a>00149 
-<a name="l00150"></a>00150 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 18))</span>
-<a name="l00151"></a>00151 <span class="preprocessor"></span><span class="preprocessor">    #define GET_ELEMENT_AT(T) \</span>
-<a name="l00152"></a>00152 <span class="preprocessor">    extern T __attribute__((overloadable)) \</span>
-<a name="l00153"></a>00153 <span class="preprocessor">            rsGetElementAt_##T(rs_allocation a, uint32_t x); \</span>
-<a name="l00154"></a>00154 <span class="preprocessor">    extern T __attribute__((overloadable)) \</span>
-<a name="l00155"></a>00155 <span class="preprocessor">            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y);  \</span>
-<a name="l00156"></a>00156 <span class="preprocessor">    extern T __attribute__((overloadable)) \</span>
-<a name="l00157"></a>00157 <span class="preprocessor">            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);</span>
-<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="preprocessor">#else</span>
-<a name="l00159"></a>00159 <span class="preprocessor"></span><span class="preprocessor">    #define GET_ELEMENT_AT(T) \</span>
-<a name="l00160"></a>00160 <span class="preprocessor">    static inline T __attribute__((overloadable)) \</span>
-<a name="l00161"></a>00161 <span class="preprocessor">            rsGetElementAt_##T(rs_allocation a, uint32_t x) {  \</span>
-<a name="l00162"></a>00162 <span class="preprocessor">        return ((T *)rsGetElementAt(a, x))[0]; \</span>
-<a name="l00163"></a>00163 <span class="preprocessor">    } \</span>
-<a name="l00164"></a>00164 <span class="preprocessor">    static inline T __attribute__((overloadable)) \</span>
-<a name="l00165"></a>00165 <span class="preprocessor">            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y) {  \</span>
-<a name="l00166"></a>00166 <span class="preprocessor">        return ((T *)rsGetElementAt(a, x, y))[0]; \</span>
-<a name="l00167"></a>00167 <span class="preprocessor">    } \</span>
-<a name="l00168"></a>00168 <span class="preprocessor">    static inline T __attribute__((overloadable)) \</span>
-<a name="l00169"></a>00169 <span class="preprocessor">            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {  \</span>
-<a name="l00170"></a>00170 <span class="preprocessor">        return ((T *)rsGetElementAt(a, x, y, z))[0]; \</span>
-<a name="l00171"></a>00171 <span class="preprocessor">    }</span>
-<a name="l00172"></a>00172 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00173"></a>00173 <span class="preprocessor"></span>
-<a name="l00174"></a>00174 GET_ELEMENT_AT(<span class="keywordtype">char</span>)
-<a name="l00175"></a>00175 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a>)
-<a name="l00176"></a>00176 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a>)
-<a name="l00177"></a>00177 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a>)
-<a name="l00178"></a>00178 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>)
-<a name="l00179"></a>00179 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>)
-<a name="l00180"></a>00180 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a>)
-<a name="l00181"></a>00181 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>)
-<a name="l00182"></a>00182 GET_ELEMENT_AT(<span class="keywordtype">short</span>)
-<a name="l00183"></a>00183 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a>)
-<a name="l00184"></a>00184 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a>)
-<a name="l00185"></a>00185 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a>)
-<a name="l00186"></a>00186 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>)
-<a name="l00187"></a>00187 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a>)
-<a name="l00188"></a>00188 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a>)
-<a name="l00189"></a>00189 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a>)
-<a name="l00190"></a>00190 GET_ELEMENT_AT(<span class="keywordtype">int</span>)
-<a name="l00191"></a>00191 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a>)
-<a name="l00192"></a>00192 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a>)
-<a name="l00193"></a>00193 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a>)
-<a name="l00194"></a>00194 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>)
-<a name="l00195"></a>00195 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a>)
-<a name="l00196"></a>00196 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a>)
-<a name="l00197"></a>00197 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a>)
-<a name="l00198"></a>00198 GET_ELEMENT_AT(<span class="keywordtype">long</span>)
-<a name="l00199"></a>00199 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a>)
-<a name="l00200"></a>00200 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a>)
-<a name="l00201"></a>00201 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a>)
-<a name="l00202"></a>00202 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>)
-<a name="l00203"></a>00203 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a>)
-<a name="l00204"></a>00204 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a>)
-<a name="l00205"></a>00205 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a>)
-<a name="l00206"></a>00206 GET_ELEMENT_AT(<span class="keywordtype">float</span>)
-<a name="l00207"></a>00207 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>)
-<a name="l00208"></a>00208 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>)
-<a name="l00209"></a>00209 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>)
-<a name="l00210"></a>00210 GET_ELEMENT_AT(<span class="keywordtype">double</span>)
-<a name="l00211"></a>00211 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a>)
-<a name="l00212"></a>00212 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a>)
-<a name="l00213"></a>00213 GET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a>)
-<a name="l00214"></a>00214 
-<a name="l00215"></a>00215 <span class="preprocessor">#undef GET_ELEMENT_AT</span>
-<a name="l00216"></a>00216 <span class="preprocessor"></span>
-<a name="l00217"></a>00217 <span class="comment">// Jelly Bean</span>
-<a name="l00218"></a>00218 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00219"></a>00219 <span class="preprocessor"></span>
-<a name="l00224"></a>00224 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00225"></a>00225     <a class="code" href="rs__allocation_8rsh.html#afe9ebb2f89c6366c59f5e05ee4849c0a">rsAllocationIoSend</a>(rs_allocation a);
-<a name="l00226"></a>00226 
-<a name="l00231"></a>00231 extern const <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00232"></a>00232     <a class="code" href="rs__allocation_8rsh.html#a05f7391230a92d239fdb619d791162b5">rsAllocationIoReceive</a>(rs_allocation a);
-<a name="l00233"></a>00233 
-<a name="l00234"></a>00234 
-<a name="l00240"></a>00240 extern <a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a> __attribute__((overloadable))
-<a name="l00241"></a>00241     <a class="code" href="rs__allocation_8rsh.html#a6a3b6512bc269f6b369bdc54d12a45ff">rsAllocationGetElement</a>(rs_allocation a);
-<a name="l00242"></a>00242 
-<a name="l00249"></a>00249 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00250"></a>00250     <a class="code" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rsSample</a>(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s, <span class="keywordtype">float</span> location);
-<a name="l00260"></a>00260 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00261"></a>00261     <a class="code" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rsSample</a>(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s, <span class="keywordtype">float</span> location, <span class="keywordtype">float</span> lod);
-<a name="l00262"></a>00262 
-<a name="l00269"></a>00269 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00270"></a>00270     <a class="code" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rsSample</a>(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> location);
-<a name="l00271"></a>00271 
-<a name="l00281"></a>00281 extern const <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00282"></a>00282     <a class="code" href="rs__allocation_8rsh.html#a1ed04c0bfab4044b875bb31577b53407">rsSample</a>(rs_allocation a, <a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> location, <span class="keywordtype">float</span> lod);
-<a name="l00283"></a>00283 
-<a name="l00284"></a>00284 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00285"></a>00285 <span class="preprocessor"></span>
-<a name="l00286"></a>00286 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 18))</span>
-<a name="l00287"></a>00287 <span class="preprocessor"></span>
-<a name="l00291"></a>00291 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00292"></a>00292     <a class="code" href="rs__allocation_8rsh.html#a36ef1e609e360a9a5a5ff5dce13b5100">rsSetElementAt</a>(rs_allocation a, <span class="keywordtype">void</span>* ptr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x);
-<a name="l00293"></a>00293 
-<a name="l00297"></a>00297 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00298"></a>00298     <a class="code" href="rs__allocation_8rsh.html#a36ef1e609e360a9a5a5ff5dce13b5100">rsSetElementAt</a>(rs_allocation a, <span class="keywordtype">void</span>* ptr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y);
-<a name="l00299"></a>00299 
-<a name="l00300"></a>00300 <span class="preprocessor">#define SET_ELEMENT_AT(T)                                               \</span>
-<a name="l00301"></a>00301 <span class="preprocessor">    extern void __attribute__((overloadable))                           \</span>
-<a name="l00302"></a>00302 <span class="preprocessor">    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x);             \</span>
-<a name="l00303"></a>00303 <span class="preprocessor">    extern void __attribute__((overloadable))                           \</span>
-<a name="l00304"></a>00304 <span class="preprocessor">    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y); \</span>
-<a name="l00305"></a>00305 <span class="preprocessor">    extern void __attribute__((overloadable))                           \</span>
-<a name="l00306"></a>00306 <span class="preprocessor">    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y, uint32_t z);</span>
-<a name="l00307"></a>00307 <span class="preprocessor"></span>
-<a name="l00308"></a>00308 
-<a name="l00309"></a>00309 SET_ELEMENT_AT(<span class="keywordtype">char</span>)
-<a name="l00310"></a>00310 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a>)
-<a name="l00311"></a>00311 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a>)
-<a name="l00312"></a>00312 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a>)
-<a name="l00313"></a>00313 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>)
-<a name="l00314"></a>00314 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>)
-<a name="l00315"></a>00315 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a>)
-<a name="l00316"></a>00316 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>)
-<a name="l00317"></a>00317 SET_ELEMENT_AT(<span class="keywordtype">short</span>)
-<a name="l00318"></a>00318 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a>)
-<a name="l00319"></a>00319 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a>)
-<a name="l00320"></a>00320 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a>)
-<a name="l00321"></a>00321 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>)
-<a name="l00322"></a>00322 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a>)
-<a name="l00323"></a>00323 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a>)
-<a name="l00324"></a>00324 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a>)
-<a name="l00325"></a>00325 SET_ELEMENT_AT(<span class="keywordtype">int</span>)
-<a name="l00326"></a>00326 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a>)
-<a name="l00327"></a>00327 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a>)
-<a name="l00328"></a>00328 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a>)
-<a name="l00329"></a>00329 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>)
-<a name="l00330"></a>00330 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a>)
-<a name="l00331"></a>00331 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a>)
-<a name="l00332"></a>00332 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a>)
-<a name="l00333"></a>00333 SET_ELEMENT_AT(<span class="keywordtype">long</span>)
-<a name="l00334"></a>00334 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a>)
-<a name="l00335"></a>00335 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a>)
-<a name="l00336"></a>00336 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a>)
-<a name="l00337"></a>00337 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>)
-<a name="l00338"></a>00338 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a>)
-<a name="l00339"></a>00339 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a>)
-<a name="l00340"></a>00340 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a>)
-<a name="l00341"></a>00341 SET_ELEMENT_AT(<span class="keywordtype">float</span>)
-<a name="l00342"></a>00342 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>)
-<a name="l00343"></a>00343 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>)
-<a name="l00344"></a>00344 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>)
-<a name="l00345"></a>00345 SET_ELEMENT_AT(<span class="keywordtype">double</span>)
-<a name="l00346"></a>00346 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a>)
-<a name="l00347"></a>00347 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a>)
-<a name="l00348"></a>00348 SET_ELEMENT_AT(<a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a>)
-<a name="l00349"></a>00349 
-<a name="l00350"></a>00350 <span class="preprocessor">#undef SET_ELEMENT_AT</span>
-<a name="l00351"></a>00351 <span class="preprocessor"></span>
-<a name="l00352"></a>00352 
-<a name="l00356"></a>00356 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> __attribute__((overloadable))
-<a name="l00357"></a>00357     <a class="code" href="rs__allocation_8rsh.html#ad7ffa1aa16511a75b4bc2c05bd0e0a75">rsGetElementAtYuv_uchar_Y</a>(rs_allocation a, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y);
-<a name="l00358"></a>00358 
-<a name="l00364"></a>00364 extern const <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> __attribute__((overloadable))
-<a name="l00365"></a>00365     <a class="code" href="rs__allocation_8rsh.html#a41f61be02113ee22c039ea51fdedb20e">rsGetElementAtYuv_uchar_U</a>(rs_allocation a, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y);
-<a name="l00366"></a>00366 
-<a name="l00372"></a>00372 extern const <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> __attribute__((overloadable))
-<a name="l00373"></a>00373     <a class="code" href="rs__allocation_8rsh.html#af03cadb582fa80bbf7f39177d96df17e">rsGetElementAtYuv_uchar_V</a>(rs_allocation a, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> x, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> y);
-<a name="l00374"></a>00374 
-<a name="l00375"></a>00375 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 18))</span>
-<a name="l00376"></a>00376 <span class="preprocessor"></span>
-<a name="l00377"></a>00377 <span class="preprocessor">#endif</span>
-<a name="l00378"></a>00378 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__atomic_8rsh.html b/docs/html/reference/renderscript/rs__atomic_8rsh.html
deleted file mode 100644
index 94c16ef..0000000
--- a/docs/html/reference/renderscript/rs__atomic_8rsh.html
+++ /dev/null
@@ -1,757 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_atomic.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_atomic.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a619e7a489500a650569a76ccd93e105f">rsAtomicInc</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a9c7a2b449852ba9d3297747ec3ca06e3">rsAtomicInc</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a16a69784a343d7c11bf6bd7fec9686ca">rsAtomicDec</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a77902e5015557fa7336a7926ebdccdae">rsAtomicDec</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#ab46665eff81030200f86db9c2181072a">rsAtomicAdd</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#ab206947a5a724f02cb1ab36dd7df82d7">rsAtomicAdd</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a800dced6abbf09716391f35bc488900b">rsAtomicSub</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#ae5770ea0b22cb47e517b3391763c14a5">rsAtomicSub</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a7fdf5633662dd5b0898ad5a149e3c8ad">rsAtomicAnd</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a9d4e93fa4b55b49c75d4d1bd7708cf41">rsAtomicAnd</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a477f6eb17c4806bb715bfd975b6369cd">rsAtomicOr</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a611cde98a711ba690e1c07ddb502ce97">rsAtomicOr</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a5590505ea65c53b3bb26fa48a6b9c313">rsAtomicXor</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#ab9fe2263cd7814fc5292c6af81ed69eb">rsAtomicXor</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a9f3cddc86f1075ca194a762fb8a3330a">rsAtomicMin</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a8de83596fd23f119ab8620a8dad223b1">rsAtomicMin</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a1d49d69d14956152fcde34efe9cdff87">rsAtomicMax</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a6d4cb5118131a8f1e73b704c093401aa">rsAtomicMax</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#a205d66a8eb29eee8968f886e488b4402">rsAtomicCas</a> (volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> compareValue, <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> newValue)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__atomic_8rsh.html#aa46bb0a2933a93bed2858585a088b173">rsAtomicCas</a> (volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *addr, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> compareValue, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> newValue)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Atomic routines. </p>
-
-<p>Definition in file <a class="el" href="rs__atomic_8rsh_source.html">rs_atomic.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="ab46665eff81030200f86db9c2181072a"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicAdd" ref="ab46665eff81030200f86db9c2181072a" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicAdd </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic add a value to the value at addr. addr[0] += value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to add to the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ab206947a5a724f02cb1ab36dd7df82d7"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicAdd" ref="ab206947a5a724f02cb1ab36dd7df82d7" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicAdd </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic add a value to the value at addr. addr[0] += value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to add to the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a7fdf5633662dd5b0898ad5a149e3c8ad"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicAnd" ref="a7fdf5633662dd5b0898ad5a149e3c8ad" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicAnd </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Bitwise and a value from the value at addr. addr[0] &amp;= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to and with the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9d4e93fa4b55b49c75d4d1bd7708cf41"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicAnd" ref="a9d4e93fa4b55b49c75d4d1bd7708cf41" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicAnd </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Bitwise and a value from the value at addr. addr[0] &amp;= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to and with the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a205d66a8eb29eee8968f886e488b4402"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicCas" ref="a205d66a8eb29eee8968f886e488b4402" args="(volatile int32_t *addr, int32_t compareValue, int32_t newValue)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicCas </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>compareValue</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>newValue</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compare-and-set operation with a full memory barrier.</p>
-<p>If the value at addr matches compareValue then newValue is written.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>The address to compare and replace if the compare passes. </td></tr>
-    <tr><td class="paramname">compareValue</td><td>The value to test addr[0] against. </td></tr>
-    <tr><td class="paramname">newValue</td><td>The value to write if the test passes.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="aa46bb0a2933a93bed2858585a088b173"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicCas" ref="aa46bb0a2933a93bed2858585a088b173" args="(volatile uint32_t *addr, uint32_t compareValue, uint32_t newValue)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicCas </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>compareValue</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>newValue</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compare-and-set operation with a full memory barrier.</p>
-<p>If the value at addr matches compareValue then newValue is written.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>The address to compare and replace if the compare passes. </td></tr>
-    <tr><td class="paramname">compareValue</td><td>The value to test addr[0] against. </td></tr>
-    <tr><td class="paramname">newValue</td><td>The value to write if the test passes.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a16a69784a343d7c11bf6bd7fec9686ca"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicDec" ref="a16a69784a343d7c11bf6bd7fec9686ca" args="(volatile int32_t *addr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicDec </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic subtract one from the value at addr. Equal to rsAtomicSub(addr, 1)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to decrement</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a77902e5015557fa7336a7926ebdccdae"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicDec" ref="a77902e5015557fa7336a7926ebdccdae" args="(volatile uint32_t *addr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicDec </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic subtract one from the value at addr. Equal to rsAtomicSub(addr, 1)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to decrement</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a619e7a489500a650569a76ccd93e105f"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicInc" ref="a619e7a489500a650569a76ccd93e105f" args="(volatile int32_t *addr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicInc </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic add one to the value at addr. Equal to rsAtomicAdd(addr, 1)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to increment</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9c7a2b449852ba9d3297747ec3ca06e3"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicInc" ref="a9c7a2b449852ba9d3297747ec3ca06e3" args="(volatile uint32_t *addr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicInc </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic add one to the value at addr. Equal to rsAtomicAdd(addr, 1)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to increment</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a1d49d69d14956152fcde34efe9cdff87"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicMax" ref="a1d49d69d14956152fcde34efe9cdff87" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicMax </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Set the value at addr to the max of addr and value addr[0] = rsMax(addr[0], value)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>comparison value</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a6d4cb5118131a8f1e73b704c093401aa"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicMax" ref="a6d4cb5118131a8f1e73b704c093401aa" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicMax </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Set the value at addr to the max of addr and value addr[0] = rsMin(addr[0], value)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>comparison value</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9f3cddc86f1075ca194a762fb8a3330a"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicMin" ref="a9f3cddc86f1075ca194a762fb8a3330a" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicMin </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Set the value at addr to the min of addr and value addr[0] = rsMin(addr[0], value)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>comparison value</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a8de83596fd23f119ab8620a8dad223b1"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicMin" ref="a8de83596fd23f119ab8620a8dad223b1" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicMin </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Set the value at addr to the min of addr and value addr[0] = rsMin(addr[0], value)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>comparison value</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a477f6eb17c4806bb715bfd975b6369cd"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicOr" ref="a477f6eb17c4806bb715bfd975b6369cd" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicOr </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Bitwise or a value from the value at addr. addr[0] |= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to or with the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a611cde98a711ba690e1c07ddb502ce97"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicOr" ref="a611cde98a711ba690e1c07ddb502ce97" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicOr </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Bitwise or a value from the value at addr. addr[0] |= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to or with the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a800dced6abbf09716391f35bc488900b"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicSub" ref="a800dced6abbf09716391f35bc488900b" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicSub </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Subtract a value from the value at addr. addr[0] -= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to subtract from the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae5770ea0b22cb47e517b3391763c14a5"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicSub" ref="ae5770ea0b22cb47e517b3391763c14a5" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicSub </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Subtract a value from the value at addr. addr[0] -= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to subtract from the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a5590505ea65c53b3bb26fa48a6b9c313"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicXor" ref="a5590505ea65c53b3bb26fa48a6b9c313" args="(volatile uint32_t *addr, uint32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsAtomicXor </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Bitwise xor a value from the value at addr. addr[0] ^= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to xor with the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ab9fe2263cd7814fc5292c6af81ed69eb"></a><!-- doxytag: member="rs_atomic.rsh::rsAtomicXor" ref="ab9fe2263cd7814fc5292c6af81ed69eb" args="(volatile int32_t *addr, int32_t value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> rsAtomicXor </td>
-          <td>(</td>
-          <td class="paramtype">volatile <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> *&#160;</td>
-          <td class="paramname"><em>addr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td>
-          <td class="paramname"><em>value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Atomic Bitwise xor a value from the value at addr. addr[0] ^= value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">addr</td><td>Address of value to modify </td></tr>
-    <tr><td class="paramname">value</td><td>Amount to xor with the value at addr</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>old value </dd></dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__atomic_8rsh_source.html b/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
deleted file mode 100644
index 2136df4..0000000
--- a/docs/html/reference/renderscript/rs__atomic_8rsh_source.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_atomic.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_atomic.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__atomic_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_ATOMIC_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_ATOMIC_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00036"></a>00036 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00037"></a>00037     <a class="code" href="rs__atomic_8rsh.html#a619e7a489500a650569a76ccd93e105f">rsAtomicInc</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr);
-<a name="l00046"></a>00046 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00047"></a>00047     <a class="code" href="rs__atomic_8rsh.html#a619e7a489500a650569a76ccd93e105f">rsAtomicInc</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr);
-<a name="l00048"></a>00048 
-<a name="l00056"></a>00056 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00057"></a>00057     <a class="code" href="rs__atomic_8rsh.html#a16a69784a343d7c11bf6bd7fec9686ca">rsAtomicDec</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr);
-<a name="l00065"></a>00065 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00066"></a>00066     <a class="code" href="rs__atomic_8rsh.html#a16a69784a343d7c11bf6bd7fec9686ca">rsAtomicDec</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr);
-<a name="l00067"></a>00067 
-<a name="l00076"></a>00076 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00077"></a>00077     <a class="code" href="rs__atomic_8rsh.html#ab46665eff81030200f86db9c2181072a">rsAtomicAdd</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00086"></a>00086 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00087"></a>00087     <a class="code" href="rs__atomic_8rsh.html#ab46665eff81030200f86db9c2181072a">rsAtomicAdd</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00088"></a>00088 
-<a name="l00097"></a>00097 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00098"></a>00098     <a class="code" href="rs__atomic_8rsh.html#a800dced6abbf09716391f35bc488900b">rsAtomicSub</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00107"></a>00107 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00108"></a>00108     <a class="code" href="rs__atomic_8rsh.html#a800dced6abbf09716391f35bc488900b">rsAtomicSub</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00109"></a>00109 
-<a name="l00118"></a>00118 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00119"></a>00119     <a class="code" href="rs__atomic_8rsh.html#a7fdf5633662dd5b0898ad5a149e3c8ad">rsAtomicAnd</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00128"></a>00128 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00129"></a>00129     <a class="code" href="rs__atomic_8rsh.html#a7fdf5633662dd5b0898ad5a149e3c8ad">rsAtomicAnd</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00130"></a>00130 
-<a name="l00139"></a>00139 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00140"></a>00140     <a class="code" href="rs__atomic_8rsh.html#a477f6eb17c4806bb715bfd975b6369cd">rsAtomicOr</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00149"></a>00149 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00150"></a>00150     <a class="code" href="rs__atomic_8rsh.html#a477f6eb17c4806bb715bfd975b6369cd">rsAtomicOr</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00151"></a>00151 
-<a name="l00160"></a>00160 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00161"></a>00161     <a class="code" href="rs__atomic_8rsh.html#a5590505ea65c53b3bb26fa48a6b9c313">rsAtomicXor</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00170"></a>00170 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00171"></a>00171     <a class="code" href="rs__atomic_8rsh.html#a5590505ea65c53b3bb26fa48a6b9c313">rsAtomicXor</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00172"></a>00172 
-<a name="l00182"></a>00182 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00183"></a>00183     <a class="code" href="rs__atomic_8rsh.html#a9f3cddc86f1075ca194a762fb8a3330a">rsAtomicMin</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00193"></a>00193 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00194"></a>00194     <a class="code" href="rs__atomic_8rsh.html#a9f3cddc86f1075ca194a762fb8a3330a">rsAtomicMin</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00195"></a>00195 
-<a name="l00205"></a>00205 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00206"></a>00206     <a class="code" href="rs__atomic_8rsh.html#a1d49d69d14956152fcde34efe9cdff87">rsAtomicMax</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> value);
-<a name="l00216"></a>00216 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00217"></a>00217     <a class="code" href="rs__atomic_8rsh.html#a1d49d69d14956152fcde34efe9cdff87">rsAtomicMax</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value);
-<a name="l00218"></a>00218 
-<a name="l00230"></a>00230 extern <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> __attribute__((overloadable))
-<a name="l00231"></a>00231     <a class="code" href="rs__atomic_8rsh.html#a205d66a8eb29eee8968f886e488b4402">rsAtomicCas</a>(volatile <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> newValue);
-<a name="l00232"></a>00232 
-<a name="l00244"></a>00244 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00245"></a>00245     <a class="code" href="rs__atomic_8rsh.html#a205d66a8eb29eee8968f886e488b4402">rsAtomicCas</a>(volatile <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>* addr, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> compareValue, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> newValue);
-<a name="l00246"></a>00246 
-<a name="l00247"></a>00247 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00248"></a>00248 <span class="preprocessor"></span>
-<a name="l00249"></a>00249 <span class="preprocessor">#endif</span>
-<a name="l00250"></a>00250 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__cl_8rsh.html b/docs/html/reference/renderscript/rs__cl_8rsh.html
deleted file mode 100644
index 2a781b6..0000000
--- a/docs/html/reference/renderscript/rs__cl_8rsh.html
+++ /dev/null
@@ -1,2384 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_cl.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_cl.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a67421c4b17df15a1c726d912770e5ca4">convert_char2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a833bb5476683ec5692feaf0cd5dcdd80">convert_uchar2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a83e89db1940f3190fbec5bd823a99fc5">convert_short2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a6862ea6ddfba8a59796bc681a544fb4f">convert_ushort2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9d2e4b8f0f25a7ccaed05248edc21f06">convert_int2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a01ff256469203ba33ba0f220b54e70d1">convert_uint2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a1ad62d449c1e3548573c2f9c1a5cb13a">convert_float2</a> (<a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">acosh</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a2c9092eb07e9df891935e93469e70d4e">acospi</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">asin</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">asinh</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a812eb4521e65a451161417f9898384f7">asinpi</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">atan</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">atan2</a> (float y, float x)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">atanh</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a5052e31ce616d35aee25a3a83f6fc117">atanpi</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a89ec5f6a2f64a0f9e97438fbd41aaace">atan2pi</a> (float y, float x)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">cbrt</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">ceil</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">copysign</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">cosh</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a258d2c828fd46eae2867373884d834a9">cospi</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">erfc</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">erf</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">exp</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">exp2</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">pow</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a0225ff40d79f78260293e776c6a77422">exp10</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">expm1</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">fabs</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">fdim</a> (float, float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">floor</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">fma</a> (float a, float b, float c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">fmax</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">fmin</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">fmod</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a> (float v, float *iptr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a84b546baf72a871a5ba688d434d6ce2b">fract</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">frexp</a> (float v, int *iptr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">hypot</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">ilogb</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a> (float x, int y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a735f4e14e33c50348ef41220f9210bcc">lgamma</a> (float x, int *y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">log</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">log10</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aab1c4f06daf6f2a50fd73f0c28929213">log2</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">log1p</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">logb</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">mad</a> (float a, float b, float c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a> (float x, float *iret)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a67d1fe795e092003f687f3cc6d3c407a">pown</a> (float v, int p)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a316c30ba3e6bc11673bfd34bb4746d24">powr</a> (float v, float p)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">remainder</a> (float x, float y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rint</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a2776b517528b8185a6bb50753af0f6cf">rootn</a> (float v, int n)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">round</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a8a3992b97cb199b1c8d598996b600988">rsqrt</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a892c91a30bbc713aa77105d8e9e25881">sincos</a> (float v, float *cosptr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">sinh</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9ca027af0acf3ff22d91cd9489766976">sinpi</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">tan</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">tanh</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aee96c8910a7d8b0082574813b6b68b9a">tanpi</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">tgamma</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">trunc</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a1ed0afedda2068ad1f9ad14ef3449e50">abs</a> (char v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a8a0f94dce3caa2a50cbf2d9f4bc674ac">clz</a> (<a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a5f61ca44b3ad4b11365b0c4137a22658">min</a> (<a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v1, <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a616bf7a90d8d3c73a48d2c395d9dc4ea">max</a> (<a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v1, <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v2)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#afae5eac13e35acd0f47d7e3c601e16ed">clamp</a> (float amount, float low, float high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a0276b63d6905fa802032f1490a24515b">degrees</a> (float radians)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a254612a612ff7539b01a1478e03d8697">mix</a> (float start, float stop, float amount)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aceb63a0da6393b8ac2ed229bae6232d6">radians</a> (float degrees)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9f40337dfee48d1881b87b35aa8133dd">step</a> (float edge, float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a9fe423cc7d4c6d767f8a608d2ee76657">sign</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#add745d593bc2b23285bd10e52a204e25">cross</a> (<a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> lhs, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a> (float lhs, float rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a412bf215ae838c65079560bbefefaca7">distance</a> (float lhs, float rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a69c2a56f743593439d5ae5e3ec8e517f">normalize</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a49050a8e32c95f60df4eaba9d7dfdca6">half_recip</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a26e2c17b20ee4c98b78c365d390e4fb8">half_sqrt</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a0925ceb22d33dcbb45914350ffa2edea">half_rsqrt</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a7c8f2f987044a360b5f616a80a74a4d5">fast_length</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a4fcbdb9099e7d653a951cb344ba3c3c9">fast_distance</a> (float lhs, float rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a3878bee2879351f518be68e015d76a35">fast_normalize</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#ab354691ecd844549b27ef9202e17f7ac">native_exp2</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a45d8176823a05b891313f3d96decf491">native_exp</a> (float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__cl_8rsh.html#a601ee3d2bf769f1cdc39a886f7a6c986">native_exp10</a> (float v)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Basic math functions. </p>
-
-<p>Definition in file <a class="el" href="rs__cl_8rsh_source.html">rs_cl.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a1ed0afedda2068ad1f9ad14ef3449e50"></a><!-- doxytag: member="rs_cl.rsh::abs" ref="a1ed0afedda2068ad1f9ad14ef3449e50" args="(char v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> abs </td>
-          <td>(</td>
-          <td class="paramtype">char&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the absolute value of a value.</p>
-<p>Supports 1,2,3,4 components of char, short, int. </p>
-
-</div>
-</div>
-<a class="anchor" id="a07648648c7f857cfd1479821d4389751"></a><!-- doxytag: member="rs_cl.rsh::acos" ref="a07648648c7f857cfd1479821d4389751" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float acos </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse cosine.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="a6575106413ec72448439ef67f1309424"></a><!-- doxytag: member="rs_cl.rsh::acosh" ref="a6575106413ec72448439ef67f1309424" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float acosh </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse hyperbolic cosine.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="a2c9092eb07e9df891935e93469e70d4e"></a><!-- doxytag: member="rs_cl.rsh::acospi" ref="a2c9092eb07e9df891935e93469e70d4e" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float acospi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse cosine divided by PI.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="a78b9d0583bd0699e2eac30d2a136817a"></a><!-- doxytag: member="rs_cl.rsh::asin" ref="a78b9d0583bd0699e2eac30d2a136817a" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float asin </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse sine.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="a4e3fe465ed5541af53192c59c80af1a0"></a><!-- doxytag: member="rs_cl.rsh::asinh" ref="a4e3fe465ed5541af53192c59c80af1a0" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float asinh </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse hyperbolic sine.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="a812eb4521e65a451161417f9898384f7"></a><!-- doxytag: member="rs_cl.rsh::asinpi" ref="a812eb4521e65a451161417f9898384f7" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float asinpi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse sine divided by PI.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="ab790c3a7df8fcbeab77f6c0e3b4dcada"></a><!-- doxytag: member="rs_cl.rsh::atan" ref="ab790c3a7df8fcbeab77f6c0e3b4dcada" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float atan </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse tangent.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="aaf4b636b09041878e1542054c73d81e9"></a><!-- doxytag: member="rs_cl.rsh::atan2" ref="aaf4b636b09041878e1542054c73d81e9" args="(float y, float x)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float atan2 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse tangent of y / x.</p>
-<p>Supports float, float2, float3, float4. Both arguments must be of the same type.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">y</td><td></td></tr>
-    <tr><td class="paramname">x</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a89ec5f6a2f64a0f9e97438fbd41aaace"></a><!-- doxytag: member="rs_cl.rsh::atan2pi" ref="a89ec5f6a2f64a0f9e97438fbd41aaace" args="(float y, float x)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float atan2pi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse tangent of y / x, divided by PI.</p>
-<p>Supports float, float2, float3, float4. Both arguments must be of the same type.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">y</td><td></td></tr>
-    <tr><td class="paramname">x</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a83bdf415cc561ff6237a124273d9fb0d"></a><!-- doxytag: member="rs_cl.rsh::atanh" ref="a83bdf415cc561ff6237a124273d9fb0d" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float atanh </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse hyperbolic tangent.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="a5052e31ce616d35aee25a3a83f6fc117"></a><!-- doxytag: member="rs_cl.rsh::atanpi" ref="a5052e31ce616d35aee25a3a83f6fc117" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float atanpi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the inverse tangent divided by PI.</p>
-<p>Supports float, float2, float3, float4 </p>
-
-</div>
-</div>
-<a class="anchor" id="ae9d1787b55c2587478a24d96573225df"></a><!-- doxytag: member="rs_cl.rsh::cbrt" ref="ae9d1787b55c2587478a24d96573225df" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float cbrt </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the cube root.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa8fc6daff743a1b635ccbf9af83fe4e4"></a><!-- doxytag: member="rs_cl.rsh::ceil" ref="aa8fc6daff743a1b635ccbf9af83fe4e4" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float ceil </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the smallest integer not less than a value.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="afae5eac13e35acd0f47d7e3c601e16ed"></a><!-- doxytag: member="rs_cl.rsh::clamp" ref="afae5eac13e35acd0f47d7e3c601e16ed" args="(float amount, float low, float high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float clamp </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Clamp a value to a specified high and low bound.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">amount</td><td>value to be clamped. Supports 1,2,3,4 components </td></tr>
-    <tr><td class="paramname">low</td><td>Lower bound, must be scalar or matching vector. </td></tr>
-    <tr><td class="paramname">high</td><td>High bound, must match type of low </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8a0f94dce3caa2a50cbf2d9f4bc674ac"></a><!-- doxytag: member="rs_cl.rsh::clz" ref="a8a0f94dce3caa2a50cbf2d9f4bc674ac" args="(uchar v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> clz </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the number of leading 0-bits in a value.</p>
-<p>Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int. </p>
-
-</div>
-</div>
-<a class="anchor" id="a67421c4b17df15a1c726d912770e5ca4"></a><!-- doxytag: member="rs_cl.rsh::convert_char2" ref="a67421c4b17df15a1c726d912770e5ca4" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a> convert_char2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to char.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1ad62d449c1e3548573c2f9c1a5cb13a"></a><!-- doxytag: member="rs_cl.rsh::convert_float2" ref="a1ad62d449c1e3548573c2f9c1a5cb13a" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> convert_float2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to float.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9d2e4b8f0f25a7ccaed05248edc21f06"></a><!-- doxytag: member="rs_cl.rsh::convert_int2" ref="a9d2e4b8f0f25a7ccaed05248edc21f06" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a> convert_int2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to int.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a83e89db1940f3190fbec5bd823a99fc5"></a><!-- doxytag: member="rs_cl.rsh::convert_short2" ref="a83e89db1940f3190fbec5bd823a99fc5" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a> convert_short2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to short.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a833bb5476683ec5692feaf0cd5dcdd80"></a><!-- doxytag: member="rs_cl.rsh::convert_uchar2" ref="a833bb5476683ec5692feaf0cd5dcdd80" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> convert_uchar2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to unsigned char.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a01ff256469203ba33ba0f220b54e70d1"></a><!-- doxytag: member="rs_cl.rsh::convert_uint2" ref="a01ff256469203ba33ba0f220b54e70d1" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a> convert_uint2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to unsigned int.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6862ea6ddfba8a59796bc681a544fb4f"></a><!-- doxytag: member="rs_cl.rsh::convert_ushort2" ref="a6862ea6ddfba8a59796bc681a544fb4f" args="(uchar2 v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a> convert_ushort2 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert to unsigned short.</p>
-<p>Supports 2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a29f2602d95aa7b3950e2b77b3e268f7e"></a><!-- doxytag: member="rs_cl.rsh::copysign" ref="a29f2602d95aa7b3950e2b77b3e268f7e" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float copysign </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Copy the sign bit from y to x.</p>
-<p>Supports float, float2, float3, float4. Both arguments must be of the same type.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x</td><td></td></tr>
-    <tr><td class="paramname">y</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8eec7aeb4b0c46b06cbcd1a3ac3e6f05"></a><!-- doxytag: member="rs_cl.rsh::cos" ref="a8eec7aeb4b0c46b06cbcd1a3ac3e6f05" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float cos </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the cosine.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac8d88d83182afd591401eaed101d9670"></a><!-- doxytag: member="rs_cl.rsh::cosh" ref="ac8d88d83182afd591401eaed101d9670" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float cosh </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the hypebolic cosine.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a258d2c828fd46eae2867373884d834a9"></a><!-- doxytag: member="rs_cl.rsh::cospi" ref="a258d2c828fd46eae2867373884d834a9" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float cospi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the cosine of the value * PI.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="add745d593bc2b23285bd10e52a204e25"></a><!-- doxytag: member="rs_cl.rsh::cross" ref="add745d593bc2b23285bd10e52a204e25" args="(float3 lhs, float3 rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> cross </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the cross product of two vectors.</p>
-<p>Supports 3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a0276b63d6905fa802032f1490a24515b"></a><!-- doxytag: member="rs_cl.rsh::degrees" ref="a0276b63d6905fa802032f1490a24515b" args="(float radians)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float degrees </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>radians</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert from radians to degrees.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a412bf215ae838c65079560bbefefaca7"></a><!-- doxytag: member="rs_cl.rsh::distance" ref="a412bf215ae838c65079560bbefefaca7" args="(float lhs, float rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float distance </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the distance between two points.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="aa26d85eac3067e9769b33b6914b180f2"></a><!-- doxytag: member="rs_cl.rsh::dot" ref="aa26d85eac3067e9769b33b6914b180f2" args="(float lhs, float rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float dot </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the dot product of two vectors.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a139f102df651c25c26dd35d549173f57"></a><!-- doxytag: member="rs_cl.rsh::erf" ref="a139f102df651c25c26dd35d549173f57" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float erf </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the error function.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e24dc8594e758b64c340153f67a533c"></a><!-- doxytag: member="rs_cl.rsh::erfc" ref="a2e24dc8594e758b64c340153f67a533c" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float erfc </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the complementary error function.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6d9aac64c2686961ca8f30e3c34fef36"></a><!-- doxytag: member="rs_cl.rsh::exp" ref="a6d9aac64c2686961ca8f30e3c34fef36" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float exp </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return e ^ value.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0225ff40d79f78260293e776c6a77422"></a><!-- doxytag: member="rs_cl.rsh::exp10" ref="a0225ff40d79f78260293e776c6a77422" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float exp10 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return 10 ^ value.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a39bca19ee2b1aa95144e58eb4a1e4f88"></a><!-- doxytag: member="rs_cl.rsh::exp2" ref="a39bca19ee2b1aa95144e58eb4a1e4f88" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float exp2 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return 2 ^ value.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7996044b67be921a5e58e2fe76af66e2"></a><!-- doxytag: member="rs_cl.rsh::expm1" ref="a7996044b67be921a5e58e2fe76af66e2" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float expm1 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (e ^ value) - 1.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad6e897f1acae252ec0901e3b122992ea"></a><!-- doxytag: member="rs_cl.rsh::fabs" ref="ad6e897f1acae252ec0901e3b122992ea" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fabs </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the absolute value of a value.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4fcbdb9099e7d653a951cb344ba3c3c9"></a><!-- doxytag: member="rs_cl.rsh::fast_distance" ref="a4fcbdb9099e7d653a951cb344ba3c3c9" args="(float lhs, float rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fast_distance </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the approximate distance between two points.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a7c8f2f987044a360b5f616a80a74a4d5"></a><!-- doxytag: member="rs_cl.rsh::fast_length" ref="a7c8f2f987044a360b5f616a80a74a4d5" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fast_length </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the approximate length of a vector.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a3878bee2879351f518be68e015d76a35"></a><!-- doxytag: member="rs_cl.rsh::fast_normalize" ref="a3878bee2879351f518be68e015d76a35" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fast_normalize </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Approximately normalize a vector.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="ae7a7bac0f4e244594078f87b42c8716a"></a><!-- doxytag: member="rs_cl.rsh::fdim" ref="ae7a7bac0f4e244594078f87b42c8716a" args="(float, float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fdim </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the positive difference between two values.</p>
-<p>Supports float, float2, float3, float4. Both arguments must be of the same type. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae2da38a7246378dff8014ec407a30c3"></a><!-- doxytag: member="rs_cl.rsh::floor" ref="aae2da38a7246378dff8014ec407a30c3" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float floor </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the smallest integer not greater than a value.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac42909daec463fe449743e70baf8360d"></a><!-- doxytag: member="rs_cl.rsh::fma" ref="ac42909daec463fe449743e70baf8360d" args="(float a, float b, float c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fma </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>c</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return a*b + c.</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a60f2072d8a746e7fe05cd46dea0fefcc"></a><!-- doxytag: member="rs_cl.rsh::fmax" ref="a60f2072d8a746e7fe05cd46dea0fefcc" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fmax </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (x &lt; y ? y : x)</p>
-<p>Supports float, float2, float3, float4. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x,:</td><td>may be float, float2, float3, float4 </td></tr>
-    <tr><td class="paramname">y,:</td><td>may be float or vector. If vector must match type of x. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1fd9d57c6c992866bf5161be2cf4c447"></a><!-- doxytag: member="rs_cl.rsh::fmin" ref="a1fd9d57c6c992866bf5161be2cf4c447" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fmin </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (x &gt; y ? y : x)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x,:</td><td>may be float, float2, float3, float4 </td></tr>
-    <tr><td class="paramname">y,:</td><td>may be float or vector. If vector must match type of x. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a31d5e179730ae44e1dbc74c1535f392e"></a><!-- doxytag: member="rs_cl.rsh::fmod" ref="a31d5e179730ae44e1dbc74c1535f392e" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fmod </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the remainder from x / y</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9374786a1bbe3d2dd886cfad642bfec6"></a><!-- doxytag: member="rs_cl.rsh::fract" ref="a9374786a1bbe3d2dd886cfad642bfec6" args="(float v, float *iptr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float fract </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>iptr</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return fractional part of v</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">iptr</td><td>iptr[0] will be set to the floor of the input value. Supports float, float2, float3, float4. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a84b546baf72a871a5ba688d434d6ce2b"></a><!-- doxytag: member="rs_cl.rsh::fract" ref="a84b546baf72a871a5ba688d434d6ce2b" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> fract </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td><code> [inline, static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return fractional part of v</p>
-<p>Supports float, float2, float3, float4. </p>
-
-<p>Definition at line <a class="el" href="rs__cl_8rsh_source.html#l00485">485</a> of file <a class="el" href="rs__cl_8rsh_source.html">rs_cl.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a778635fffed3cee8ab0800482ba53a30"></a><!-- doxytag: member="rs_cl.rsh::frexp" ref="a778635fffed3cee8ab0800482ba53a30" args="(float v, int *iptr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float frexp </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>iptr</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the mantissa and place the exponent into iptr[0]</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">v</td><td>Supports float, float2, float3, float4. </td></tr>
-    <tr><td class="paramname">iptr</td><td>Must have the same vector size as v. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a49050a8e32c95f60df4eaba9d7dfdca6"></a><!-- doxytag: member="rs_cl.rsh::half_recip" ref="a49050a8e32c95f60df4eaba9d7dfdca6" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float half_recip </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the approximate reciprocal of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a0925ceb22d33dcbb45914350ffa2edea"></a><!-- doxytag: member="rs_cl.rsh::half_rsqrt" ref="a0925ceb22d33dcbb45914350ffa2edea" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float half_rsqrt </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the approximate value of (1 / sqrt(value)).</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a26e2c17b20ee4c98b78c365d390e4fb8"></a><!-- doxytag: member="rs_cl.rsh::half_sqrt" ref="a26e2c17b20ee4c98b78c365d390e4fb8" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float half_sqrt </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the approximate square root of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a147f38d6e41f45de9b5e7c6f3dcac010"></a><!-- doxytag: member="rs_cl.rsh::hypot" ref="a147f38d6e41f45de9b5e7c6f3dcac010" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float hypot </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return sqrt(x*x + y*y)</p>
-<p>Supports float, float2, float3, float4. </p>
-
-</div>
-</div>
-<a class="anchor" id="aad9a8beba52acb77b1efeba432e6cc2c"></a><!-- doxytag: member="rs_cl.rsh::ilogb" ref="aad9a8beba52acb77b1efeba432e6cc2c" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int ilogb </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the integer exponent of a value</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a013bc1dcda984cbc608e123ed38491e6"></a><!-- doxytag: member="rs_cl.rsh::ldexp" ref="a013bc1dcda984cbc608e123ed38491e6" args="(float x, int y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float ldexp </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (x * 2^y)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x</td><td>Supports 1,2,3,4 components </td></tr>
-    <tr><td class="paramname">y</td><td>Supports single component or matching vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a902d4d2fab31ba8f9631b1f681e99baa"></a><!-- doxytag: member="rs_cl.rsh::length" ref="a902d4d2fab31ba8f9631b1f681e99baa" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float length </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the length of a vector.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ff36f9b21927d6b4b58616e48fddcb4"></a><!-- doxytag: member="rs_cl.rsh::lgamma" ref="a3ff36f9b21927d6b4b58616e48fddcb4" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float lgamma </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the log gamma</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a735f4e14e33c50348ef41220f9210bcc"></a><!-- doxytag: member="rs_cl.rsh::lgamma" ref="a735f4e14e33c50348ef41220f9210bcc" args="(float x, int *y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float lgamma </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the log gamma and sign</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x</td><td>Supports 1,2,3,4 components </td></tr>
-    <tr><td class="paramname">y</td><td>Supports matching vector. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a3ff85f5f4b206ecf9ec9d128d7d18a08"></a><!-- doxytag: member="rs_cl.rsh::log" ref="a3ff85f5f4b206ecf9ec9d128d7d18a08" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float log </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the natural logarithm</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="af5c1bdba2a13aa2e2b0722287f6a919f"></a><!-- doxytag: member="rs_cl.rsh::log10" ref="af5c1bdba2a13aa2e2b0722287f6a919f" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float log10 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the base 10 logarithm</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="ae10541ede49062ef7f977712c4878c1f"></a><!-- doxytag: member="rs_cl.rsh::log1p" ref="ae10541ede49062ef7f977712c4878c1f" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float log1p </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the natural logarithm of (v + 1.0f)</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="aab1c4f06daf6f2a50fd73f0c28929213"></a><!-- doxytag: member="rs_cl.rsh::log2" ref="aab1c4f06daf6f2a50fd73f0c28929213" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float log2 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the base 2 logarithm</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a28742d6ce2f20a61f16ecc08ed499871"></a><!-- doxytag: member="rs_cl.rsh::logb" ref="a28742d6ce2f20a61f16ecc08ed499871" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float logb </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the exponent of the value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a4f9086698f1eb466ba2dccf7e331cdc3"></a><!-- doxytag: member="rs_cl.rsh::mad" ref="a4f9086698f1eb466ba2dccf7e331cdc3" args="(float a, float b, float c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float mad </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>a</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>c</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute (a * b) + c</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a616bf7a90d8d3c73a48d2c395d9dc4ea"></a><!-- doxytag: member="rs_cl.rsh::max" ref="a616bf7a90d8d3c73a48d2c395d9dc4ea" args="(uchar v1, uchar v2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> max </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>v2</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the maximum of two values.</p>
-<p>Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5f61ca44b3ad4b11365b0c4137a22658"></a><!-- doxytag: member="rs_cl.rsh::min" ref="a5f61ca44b3ad4b11365b0c4137a22658" args="(uchar v1, uchar v2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> min </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>v2</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the minimum of two values.</p>
-<p>Supports 1,2,3,4 components of uchar, char, ushort, short, uint, int, float. </p>
-
-</div>
-</div>
-<a class="anchor" id="a254612a612ff7539b01a1478e03d8697"></a><!-- doxytag: member="rs_cl.rsh::mix" ref="a254612a612ff7539b01a1478e03d8697" args="(float start, float stop, float amount)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float mix </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>start</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>stop</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>amount</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>return start + ((stop - start) * amount);</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a841633bcdcaeb6a514d9c6460f0adf2d"></a><!-- doxytag: member="rs_cl.rsh::modf" ref="a841633bcdcaeb6a514d9c6460f0adf2d" args="(float x, float *iret)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float modf </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>iret</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the integral and fractional components of a number. Supports 1,2,3,4 components</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x</td><td>Source value </td></tr>
-    <tr><td class="paramname">iret</td><td>iret[0] will be set to the integral portion of the number. </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The floating point portion of the value. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a45d8176823a05b891313f3d96decf491"></a><!-- doxytag: member="rs_cl.rsh::native_exp" ref="a45d8176823a05b891313f3d96decf491" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float native_exp </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Fast approximate exp valid for inputs -86.f to 86.f Max 8192 ulps of error</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a601ee3d2bf769f1cdc39a886f7a6c986"></a><!-- doxytag: member="rs_cl.rsh::native_exp10" ref="a601ee3d2bf769f1cdc39a886f7a6c986" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float native_exp10 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Fast approximate exp10 valid for inputs -37.f to 37.f Max 8192 ulps of error</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="ab354691ecd844549b27ef9202e17f7ac"></a><!-- doxytag: member="rs_cl.rsh::native_exp2" ref="ab354691ecd844549b27ef9202e17f7ac" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float native_exp2 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Fast approximate exp2 valid for inputs -125.f to 125.f Max 8192 ulps of error</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="adb11df05fb9985595af0a7bd882bdeac"></a><!-- doxytag: member="rs_cl.rsh::nextafter" ref="adb11df05fb9985595af0a7bd882bdeac" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float nextafter </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the next floating point number from x towards y.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a69c2a56f743593439d5ae5e3ec8e517f"></a><!-- doxytag: member="rs_cl.rsh::normalize" ref="a69c2a56f743593439d5ae5e3ec8e517f" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float normalize </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Normalize a vector.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a9243de1d67fcc847a89f95748d664b19"></a><!-- doxytag: member="rs_cl.rsh::pow" ref="a9243de1d67fcc847a89f95748d664b19" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float pow </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return x ^ y.</p>
-<p>Supports float, float2, float3, float4. Both arguments must be of the same type. </p>
-
-</div>
-</div>
-<a class="anchor" id="a67d1fe795e092003f687f3cc6d3c407a"></a><!-- doxytag: member="rs_cl.rsh::pown" ref="a67d1fe795e092003f687f3cc6d3c407a" args="(float v, int p)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float pown </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>p</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (v ^ p).</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a316c30ba3e6bc11673bfd34bb4746d24"></a><!-- doxytag: member="rs_cl.rsh::powr" ref="a316c30ba3e6bc11673bfd34bb4746d24" args="(float v, float p)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float powr </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>p</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (v ^ p). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">v</td><td>must be greater than 0.</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="aceb63a0da6393b8ac2ed229bae6232d6"></a><!-- doxytag: member="rs_cl.rsh::radians" ref="aceb63a0da6393b8ac2ed229bae6232d6" args="(float degrees)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float radians </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>degrees</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Convert from degrees to radians.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a5188ac0e3af95b0956c6abeafb74fda9"></a><!-- doxytag: member="rs_cl.rsh::remainder" ref="a5188ac0e3af95b0956c6abeafb74fda9" args="(float x, float y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float remainder </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return round x/y to the nearest integer then compute the remander.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="adb0ffe344ae56ca7fc9083c1f2943e55"></a><!-- doxytag: member="rs_cl.rsh::rint" ref="adb0ffe344ae56ca7fc9083c1f2943e55" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rint </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Round to the nearest integral value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a2776b517528b8185a6bb50753af0f6cf"></a><!-- doxytag: member="rs_cl.rsh::rootn" ref="a2776b517528b8185a6bb50753af0f6cf" args="(float v, int n)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rootn </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>n</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the Nth root of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="aff4846ab5b947550814d5414a2c3626f"></a><!-- doxytag: member="rs_cl.rsh::round" ref="aff4846ab5b947550814d5414a2c3626f" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float round </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Round to the nearest integral value. Half values are rounded away from zero.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a8a3992b97cb199b1c8d598996b600988"></a><!-- doxytag: member="rs_cl.rsh::rsqrt" ref="a8a3992b97cb199b1c8d598996b600988" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rsqrt </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return (1 / sqrt(value)).</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a9fe423cc7d4c6d767f8a608d2ee76657"></a><!-- doxytag: member="rs_cl.rsh::sign" ref="a9fe423cc7d4c6d767f8a608d2ee76657" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float sign </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the sign of a value.</p>
-<p>if (v &lt; 0) return -1.f; else if (v &gt; 0) return 1.f; else return 0.f;</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a8c8cd526b44eb55aede77cf659f24306"></a><!-- doxytag: member="rs_cl.rsh::sin" ref="a8c8cd526b44eb55aede77cf659f24306" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float sin </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the sine of a value specified in radians.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">v</td><td>The incoming value in radians Supports 1,2,3,4 components </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a892c91a30bbc713aa77105d8e9e25881"></a><!-- doxytag: member="rs_cl.rsh::sincos" ref="a892c91a30bbc713aa77105d8e9e25881" args="(float v, float *cosptr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float sincos </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>cosptr</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the sine and cosine of a value.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>sine </dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">v</td><td>The incoming value in radians </td></tr>
-    <tr><td class="paramname">*cosptr</td><td>cosptr[0] will be set to the cosine value.</td></tr>
-  </table>
-  </dd>
-</dl>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="ae686e0cc567f7ee2b0a84706aa486e4a"></a><!-- doxytag: member="rs_cl.rsh::sinh" ref="ae686e0cc567f7ee2b0a84706aa486e4a" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float sinh </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the hyperbolic sine of a value specified in radians.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a9ca027af0acf3ff22d91cd9489766976"></a><!-- doxytag: member="rs_cl.rsh::sinpi" ref="a9ca027af0acf3ff22d91cd9489766976" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float sinpi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the sin(v * PI).</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a92da0faef80c4d8f66e954c8c169a729"></a><!-- doxytag: member="rs_cl.rsh::sqrt" ref="a92da0faef80c4d8f66e954c8c169a729" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float sqrt </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the square root of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="a9f40337dfee48d1881b87b35aa8133dd"></a><!-- doxytag: member="rs_cl.rsh::step" ref="a9f40337dfee48d1881b87b35aa8133dd" args="(float edge, float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float step </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>edge</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>if (v &lt; edge) return 0.f; else return 1.f;</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="af12e245af8ff9bb72b5000e7c26cd8fe"></a><!-- doxytag: member="rs_cl.rsh::tan" ref="af12e245af8ff9bb72b5000e7c26cd8fe" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float tan </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the tangent of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">v</td><td>The incoming value in radians </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abc36e89ddb87ea78451d1c5921ddbd8d"></a><!-- doxytag: member="rs_cl.rsh::tanh" ref="abc36e89ddb87ea78451d1c5921ddbd8d" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float tanh </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return the hyperbolic tangent of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">v</td><td>The incoming value in radians </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aee96c8910a7d8b0082574813b6b68b9a"></a><!-- doxytag: member="rs_cl.rsh::tanpi" ref="aee96c8910a7d8b0082574813b6b68b9a" args="(float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float tanpi </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return tan(v * PI)</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="ab9f4cbfd2470420ee302f28cf3de6dd0"></a><!-- doxytag: member="rs_cl.rsh::tgamma" ref="ab9f4cbfd2470420ee302f28cf3de6dd0" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float tgamma </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Compute the gamma function of a value.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-<a class="anchor" id="ad1a7c65693231219db1babeae1c41f15"></a><!-- doxytag: member="rs_cl.rsh::trunc" ref="ad1a7c65693231219db1babeae1c41f15" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float trunc </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Round to integral using truncation.</p>
-<p>Supports 1,2,3,4 components </p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__cl_8rsh_source.html b/docs/html/reference/renderscript/rs__cl_8rsh_source.html
deleted file mode 100644
index ae5f70e..0000000
--- a/docs/html/reference/renderscript/rs__cl_8rsh_source.html
+++ /dev/null
@@ -1,602 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_cl.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_cl.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__cl_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011-2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_CL_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_CL_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="comment">// Conversions</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#define CVT_FUNC_2(typeout, typein)                             \</span>
-<a name="l00028"></a>00028 <span class="preprocessor">_RS_RUNTIME typeout##2 __attribute__((overloadable))            \</span>
-<a name="l00029"></a>00029 <span class="preprocessor">        convert_##typeout##2(typein##2 v);                      \</span>
-<a name="l00030"></a>00030 <span class="preprocessor">_RS_RUNTIME typeout##3 __attribute__((overloadable))            \</span>
-<a name="l00031"></a>00031 <span class="preprocessor">        convert_##typeout##3(typein##3 v);                      \</span>
-<a name="l00032"></a>00032 <span class="preprocessor">_RS_RUNTIME typeout##4 __attribute__((overloadable))            \</span>
-<a name="l00033"></a>00033 <span class="preprocessor">        convert_##typeout##4(typein##4 v);</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span>
-<a name="l00035"></a>00035 
-<a name="l00036"></a>00036 <span class="preprocessor">#define CVT_FUNC(type)  CVT_FUNC_2(type, uchar)     \</span>
-<a name="l00037"></a>00037 <span class="preprocessor">                        CVT_FUNC_2(type, char)      \</span>
-<a name="l00038"></a>00038 <span class="preprocessor">                        CVT_FUNC_2(type, ushort)    \</span>
-<a name="l00039"></a>00039 <span class="preprocessor">                        CVT_FUNC_2(type, short)     \</span>
-<a name="l00040"></a>00040 <span class="preprocessor">                        CVT_FUNC_2(type, uint)      \</span>
-<a name="l00041"></a>00041 <span class="preprocessor">                        CVT_FUNC_2(type, int)       \</span>
-<a name="l00042"></a>00042 <span class="preprocessor">                        CVT_FUNC_2(type, float)</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00049"></a>00049 CVT_FUNC(<span class="keywordtype">char</span>)
-<a name="l00050"></a>00050 
-<a name="l00051"></a>00051 
-<a name="l00056"></a>00056 CVT_FUNC(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>)
-<a name="l00057"></a>00057 
-<a name="l00063"></a>00063 CVT_FUNC(<span class="keywordtype">short</span>)
-<a name="l00064"></a>00064 
-<a name="l00070"></a>00070 CVT_FUNC(<a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>)
-<a name="l00071"></a>00071 
-<a name="l00077"></a>00077 CVT_FUNC(<span class="keywordtype">int</span>)
-<a name="l00078"></a>00078 
-<a name="l00084"></a>00084 CVT_FUNC(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>)
-<a name="l00085"></a>00085 
-<a name="l00091"></a>00091 CVT_FUNC(<span class="keywordtype">float</span>)
-<a name="l00092"></a>00092 
-<a name="l00093"></a>00093 <span class="comment">// Float ops, 6.11.2</span>
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095 <span class="preprocessor">#ifdef DOXYGEN</span>
-<a name="l00096"></a>00096 <span class="preprocessor"></span>
-<a name="l00097"></a>00097 <span class="preprocessor">#define FN_FUNC_FN(fnc)</span>
-<a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#define F_FUNC_FN(fnc)</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span><span class="preprocessor">#define IN_FUNC_FN(fnc)</span>
-<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_FN(fnc)</span>
-<a name="l00101"></a>00101 <span class="preprocessor"></span><span class="preprocessor">#define F_FUNC_FN_FN(fnc)</span>
-<a name="l00102"></a>00102 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_F(fnc)</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_IN(fnc)</span>
-<a name="l00104"></a>00104 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_I(fnc)</span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_PFN(fnc)</span>
-<a name="l00106"></a>00106 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_PIN(fnc)</span>
-<a name="l00107"></a>00107 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_FN_FN(fnc)</span>
-<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_FN_F(fnc)</span>
-<a name="l00109"></a>00109 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_F_F(fnc)</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_FN_PIN(fnc)</span>
-<a name="l00111"></a>00111 <span class="preprocessor"></span>
-<a name="l00112"></a>00112 <span class="preprocessor">#else</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span>
-<a name="l00114"></a>00114 <span class="preprocessor">#define FN_FUNC_FN(fnc)                                         \</span>
-<a name="l00115"></a>00115 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v); \</span>
-<a name="l00116"></a>00116 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v); \</span>
-<a name="l00117"></a>00117 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v);</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>
-<a name="l00119"></a>00119 <span class="preprocessor">#define F_FUNC_FN(fnc)                                          \</span>
-<a name="l00120"></a>00120 <span class="preprocessor">_RS_RUNTIME float __attribute__((overloadable)) fnc(float2 v);  \</span>
-<a name="l00121"></a>00121 <span class="preprocessor">_RS_RUNTIME float __attribute__((overloadable)) fnc(float3 v);  \</span>
-<a name="l00122"></a>00122 <span class="preprocessor">_RS_RUNTIME float __attribute__((overloadable)) fnc(float4 v);</span>
-<a name="l00123"></a>00123 <span class="preprocessor"></span>
-<a name="l00124"></a>00124 <span class="preprocessor">#define IN_FUNC_FN(fnc)                                         \</span>
-<a name="l00125"></a>00125 <span class="preprocessor">_RS_RUNTIME int2 __attribute__((overloadable)) fnc(float2 v);   \</span>
-<a name="l00126"></a>00126 <span class="preprocessor">_RS_RUNTIME int3 __attribute__((overloadable)) fnc(float3 v);   \</span>
-<a name="l00127"></a>00127 <span class="preprocessor">_RS_RUNTIME int4 __attribute__((overloadable)) fnc(float4 v);</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span>
-<a name="l00129"></a>00129 <span class="preprocessor">#define FN_FUNC_FN_FN(fnc)                                                  \</span>
-<a name="l00130"></a>00130 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, float2 v2); \</span>
-<a name="l00131"></a>00131 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, float3 v2); \</span>
-<a name="l00132"></a>00132 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, float4 v2);</span>
-<a name="l00133"></a>00133 <span class="preprocessor"></span>
-<a name="l00134"></a>00134 <span class="preprocessor">#define F_FUNC_FN_FN(fnc)                                                   \</span>
-<a name="l00135"></a>00135 <span class="preprocessor">_RS_RUNTIME float __attribute__((overloadable)) fnc(float2 v1, float2 v2);  \</span>
-<a name="l00136"></a>00136 <span class="preprocessor">_RS_RUNTIME float __attribute__((overloadable)) fnc(float3 v1, float3 v2);  \</span>
-<a name="l00137"></a>00137 <span class="preprocessor">_RS_RUNTIME float __attribute__((overloadable)) fnc(float4 v1, float4 v2);</span>
-<a name="l00138"></a>00138 <span class="preprocessor"></span>
-<a name="l00139"></a>00139 <span class="preprocessor">#define FN_FUNC_FN_F(fnc)                                                   \</span>
-<a name="l00140"></a>00140 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, float v2);  \</span>
-<a name="l00141"></a>00141 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, float v2);  \</span>
-<a name="l00142"></a>00142 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, float v2);</span>
-<a name="l00143"></a>00143 <span class="preprocessor"></span>
-<a name="l00144"></a>00144 <span class="preprocessor">#define FN_FUNC_FN_IN(fnc)                                                  \</span>
-<a name="l00145"></a>00145 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, int2 v2);   \</span>
-<a name="l00146"></a>00146 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, int3 v2);   \</span>
-<a name="l00147"></a>00147 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, int4 v2);   \</span>
-<a name="l00148"></a>00148 <span class="preprocessor"></span>
-<a name="l00149"></a>00149 <span class="preprocessor"></span><span class="preprocessor">#define FN_FUNC_FN_I(fnc)                                                   \</span>
-<a name="l00150"></a>00150 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, int v2);    \</span>
-<a name="l00151"></a>00151 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, int v2);    \</span>
-<a name="l00152"></a>00152 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, int v2);</span>
-<a name="l00153"></a>00153 <span class="preprocessor"></span>
-<a name="l00154"></a>00154 <span class="preprocessor">#define FN_FUNC_FN_PFN(fnc)                         \</span>
-<a name="l00155"></a>00155 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable))    \</span>
-<a name="l00156"></a>00156 <span class="preprocessor">        fnc(float2 v1, float2 *v2);                 \</span>
-<a name="l00157"></a>00157 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable))    \</span>
-<a name="l00158"></a>00158 <span class="preprocessor">        fnc(float3 v1, float3 *v2);                 \</span>
-<a name="l00159"></a>00159 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable))    \</span>
-<a name="l00160"></a>00160 <span class="preprocessor">        fnc(float4 v1, float4 *v2);</span>
-<a name="l00161"></a>00161 <span class="preprocessor"></span>
-<a name="l00162"></a>00162 <span class="preprocessor">#define FN_FUNC_FN_PIN(fnc)                                                 \</span>
-<a name="l00163"></a>00163 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable)) fnc(float2 v1, int2 *v2);  \</span>
-<a name="l00164"></a>00164 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable)) fnc(float3 v1, int3 *v2);  \</span>
-<a name="l00165"></a>00165 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable)) fnc(float4 v1, int4 *v2);</span>
-<a name="l00166"></a>00166 <span class="preprocessor"></span>
-<a name="l00167"></a>00167 <span class="preprocessor">#define FN_FUNC_FN_FN_FN(fnc)                       \</span>
-<a name="l00168"></a>00168 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable))    \</span>
-<a name="l00169"></a>00169 <span class="preprocessor">        fnc(float2 v1, float2 v2, float2 v3);       \</span>
-<a name="l00170"></a>00170 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable))    \</span>
-<a name="l00171"></a>00171 <span class="preprocessor">        fnc(float3 v1, float3 v2, float3 v3);       \</span>
-<a name="l00172"></a>00172 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable))    \</span>
-<a name="l00173"></a>00173 <span class="preprocessor">        fnc(float4 v1, float4 v2, float4 v3);</span>
-<a name="l00174"></a>00174 <span class="preprocessor"></span>
-<a name="l00175"></a>00175 <span class="preprocessor">#define FN_FUNC_FN_FN_F(fnc)                        \</span>
-<a name="l00176"></a>00176 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable))    \</span>
-<a name="l00177"></a>00177 <span class="preprocessor">        fnc(float2 v1, float2 v2, float v3);        \</span>
-<a name="l00178"></a>00178 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable))    \</span>
-<a name="l00179"></a>00179 <span class="preprocessor">        fnc(float3 v1, float3 v2, float v3);        \</span>
-<a name="l00180"></a>00180 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable))    \</span>
-<a name="l00181"></a>00181 <span class="preprocessor">        fnc(float4 v1, float4 v2, float v3);</span>
-<a name="l00182"></a>00182 <span class="preprocessor"></span>
-<a name="l00183"></a>00183 <span class="preprocessor">#define FN_FUNC_FN_F_F(fnc)                         \</span>
-<a name="l00184"></a>00184 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable))    \</span>
-<a name="l00185"></a>00185 <span class="preprocessor">        fnc(float2 v1, float v2, float v3);         \</span>
-<a name="l00186"></a>00186 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable))    \</span>
-<a name="l00187"></a>00187 <span class="preprocessor">        fnc(float3 v1, float v2, float v3);         \</span>
-<a name="l00188"></a>00188 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable))    \</span>
-<a name="l00189"></a>00189 <span class="preprocessor">        fnc(float4 v1, float v2, float v3);</span>
-<a name="l00190"></a>00190 <span class="preprocessor"></span>
-<a name="l00191"></a>00191 <span class="preprocessor">#define FN_FUNC_FN_FN_PIN(fnc)                      \</span>
-<a name="l00192"></a>00192 <span class="preprocessor">_RS_RUNTIME float2 __attribute__((overloadable))    \</span>
-<a name="l00193"></a>00193 <span class="preprocessor">        fnc(float2 v1, float2 v2, int2 *v3);        \</span>
-<a name="l00194"></a>00194 <span class="preprocessor">_RS_RUNTIME float3 __attribute__((overloadable))    \</span>
-<a name="l00195"></a>00195 <span class="preprocessor">        fnc(float3 v1, float3 v2, int3 *v3);        \</span>
-<a name="l00196"></a>00196 <span class="preprocessor">_RS_RUNTIME float4 __attribute__((overloadable))    \</span>
-<a name="l00197"></a>00197 <span class="preprocessor">        fnc(float4 v1, float4 v2, int4 *v3);</span>
-<a name="l00198"></a>00198 <span class="preprocessor"></span>
-<a name="l00199"></a>00199 <span class="preprocessor">#endif  // DOXYGEN</span>
-<a name="l00200"></a>00200 <span class="preprocessor"></span>
-<a name="l00201"></a>00201 
-<a name="l00207"></a>00207 <span class="keyword">extern</span> <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a>(<span class="keywordtype">float</span>);
-<a name="l00208"></a>00208 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a>)
-<a name="l00209"></a>00209 
-<a name="l00215"></a>00215 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">acosh</a>(<span class="keywordtype">float</span>);
-<a name="l00216"></a>00216 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a6575106413ec72448439ef67f1309424">acosh</a>)
-<a name="l00217"></a>00217 
-<a name="l00223"></a>00223 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a2c9092eb07e9df891935e93469e70d4e">acospi</a>(<span class="keywordtype">float</span> v);
-<a name="l00224"></a>00224 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a2c9092eb07e9df891935e93469e70d4e">acospi</a>)
-<a name="l00225"></a>00225 
-<a name="l00231"></a>00231 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">asin</a>(<span class="keywordtype">float</span>);
-<a name="l00232"></a>00232 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a78b9d0583bd0699e2eac30d2a136817a">asin</a>)
-<a name="l00233"></a>00233 
-<a name="l00239"></a>00239 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">asinh</a>(<span class="keywordtype">float</span>);
-<a name="l00240"></a>00240 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a4e3fe465ed5541af53192c59c80af1a0">asinh</a>)
-<a name="l00241"></a>00241 
-<a name="l00242"></a>00242 
-<a name="l00248"></a>00248 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a812eb4521e65a451161417f9898384f7">asinpi</a>(<span class="keywordtype">float</span> v);
-<a name="l00249"></a>00249 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a812eb4521e65a451161417f9898384f7">asinpi</a>)
-<a name="l00250"></a>00250 
-<a name="l00256"></a>00256 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">atan</a>(<span class="keywordtype">float</span>);
-<a name="l00257"></a>00257 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ab790c3a7df8fcbeab77f6c0e3b4dcada">atan</a>)
-<a name="l00258"></a>00258 
-<a name="l00268"></a>00268 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">atan2</a>(<span class="keywordtype">float</span> y, <span class="keywordtype">float</span> x);
-<a name="l00269"></a>00269 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#aaf4b636b09041878e1542054c73d81e9">atan2</a>)
-<a name="l00270"></a>00270 
-<a name="l00276"></a>00276 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">atanh</a>(<span class="keywordtype">float</span>);
-<a name="l00277"></a>00277 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a83bdf415cc561ff6237a124273d9fb0d">atanh</a>)
-<a name="l00278"></a>00278 
-<a name="l00284"></a>00284 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a5052e31ce616d35aee25a3a83f6fc117">atanpi</a>(<span class="keywordtype">float</span> v);
-<a name="l00285"></a>00285 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a5052e31ce616d35aee25a3a83f6fc117">atanpi</a>)
-<a name="l00286"></a>00286 
-<a name="l00296"></a>00296 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a89ec5f6a2f64a0f9e97438fbd41aaace">atan2pi</a>(<span class="keywordtype">float</span> y, <span class="keywordtype">float</span> x);
-<a name="l00297"></a>00297 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a89ec5f6a2f64a0f9e97438fbd41aaace">atan2pi</a>)
-<a name="l00298"></a>00298 
-<a name="l00299"></a>00299 
-<a name="l00305"></a>00305 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">cbrt</a>(<span class="keywordtype">float</span>);
-<a name="l00306"></a>00306 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ae9d1787b55c2587478a24d96573225df">cbrt</a>)
-<a name="l00307"></a>00307 
-<a name="l00313"></a>00313 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">ceil</a>(<span class="keywordtype">float</span>);
-<a name="l00314"></a>00314 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aa8fc6daff743a1b635ccbf9af83fe4e4">ceil</a>)
-<a name="l00315"></a>00315 
-<a name="l00325"></a>00325 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">copysign</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00326"></a>00326 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a29f2602d95aa7b3950e2b77b3e268f7e">copysign</a>)
-<a name="l00327"></a>00327 
-<a name="l00333"></a>00333 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a>(<span class="keywordtype">float</span>);
-<a name="l00334"></a>00334 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a>)
-<a name="l00335"></a>00335 
-<a name="l00341"></a>00341 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">cosh</a>(<span class="keywordtype">float</span>);
-<a name="l00342"></a>00342 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ac8d88d83182afd591401eaed101d9670">cosh</a>)
-<a name="l00343"></a>00343 
-<a name="l00349"></a>00349 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a258d2c828fd46eae2867373884d834a9">cospi</a>(<span class="keywordtype">float</span> v);
-<a name="l00350"></a>00350 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a258d2c828fd46eae2867373884d834a9">cospi</a>)
-<a name="l00351"></a>00351 
-<a name="l00357"></a>00357 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">erfc</a>(<span class="keywordtype">float</span>);
-<a name="l00358"></a>00358 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a2e24dc8594e758b64c340153f67a533c">erfc</a>)
-<a name="l00359"></a>00359 
-<a name="l00365"></a>00365 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">erf</a>(<span class="keywordtype">float</span>);
-<a name="l00366"></a>00366 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a139f102df651c25c26dd35d549173f57">erf</a>)
-<a name="l00367"></a>00367 
-<a name="l00373"></a>00373 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">exp</a>(<span class="keywordtype">float</span>);
-<a name="l00374"></a>00374 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a6d9aac64c2686961ca8f30e3c34fef36">exp</a>)
-<a name="l00375"></a>00375 
-<a name="l00381"></a>00381 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">exp2</a>(<span class="keywordtype">float</span>);
-<a name="l00382"></a>00382 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a39bca19ee2b1aa95144e58eb4a1e4f88">exp2</a>)
-<a name="l00383"></a>00383 
-<a name="l00390"></a>00390 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">pow</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00391"></a>00391 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a9243de1d67fcc847a89f95748d664b19">pow</a>)
-<a name="l00392"></a>00392 
-<a name="l00398"></a>00398 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a0225ff40d79f78260293e776c6a77422">exp10</a>(<span class="keywordtype">float</span> v);
-<a name="l00399"></a>00399 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a0225ff40d79f78260293e776c6a77422">exp10</a>)
-<a name="l00400"></a>00400 
-<a name="l00406"></a>00406 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">expm1</a>(<span class="keywordtype">float</span>);
-<a name="l00407"></a>00407 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a7996044b67be921a5e58e2fe76af66e2">expm1</a>)
-<a name="l00408"></a>00408 
-<a name="l00414"></a>00414 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">fabs</a>(<span class="keywordtype">float</span>);
-<a name="l00415"></a>00415 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ad6e897f1acae252ec0901e3b122992ea">fabs</a>)
-<a name="l00416"></a>00416 
-<a name="l00423"></a>00423 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">fdim</a>(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
-<a name="l00424"></a>00424 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#ae7a7bac0f4e244594078f87b42c8716a">fdim</a>)
-<a name="l00425"></a>00425 
-<a name="l00431"></a>00431 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">floor</a>(<span class="keywordtype">float</span>);
-<a name="l00432"></a>00432 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aae2da38a7246378dff8014ec407a30c3">floor</a>)
-<a name="l00433"></a>00433 
-<a name="l00439"></a>00439 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">fma</a>(<span class="keywordtype">float</span> a, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> c);
-<a name="l00440"></a>00440 FN_FUNC_FN_FN_FN(<a class="code" href="rs__cl_8rsh.html#ac42909daec463fe449743e70baf8360d">fma</a>)
-<a name="l00441"></a>00441 
-<a name="l00449"></a>00449 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">fmax</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00450"></a>00450 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a60f2072d8a746e7fe05cd46dea0fefcc">fmax</a>);
-<a name="l00451"></a>00451 FN_FUNC_FN_F(fmax);
-<a name="l00452"></a>00452 
-<a name="l00459"></a>00459 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">fmin</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00460"></a>00460 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a1fd9d57c6c992866bf5161be2cf4c447">fmin</a>);
-<a name="l00461"></a>00461 FN_FUNC_FN_F(fmin);
-<a name="l00462"></a>00462 
-<a name="l00468"></a>00468 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">fmod</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00469"></a>00469 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a31d5e179730ae44e1dbc74c1535f392e">fmod</a>)
-<a name="l00470"></a>00470 
-<a name="l00477"></a>00477 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> *iptr);
-<a name="l00478"></a>00478 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>)
-<a name="l00479"></a>00479 
-<a name="l00485"></a><a class="code" href="rs__cl_8rsh.html#a84b546baf72a871a5ba688d434d6ce2b">00485</a> static inline <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(<span class="keywordtype">float</span> v) {
-<a name="l00486"></a>00486     <span class="keywordtype">float</span> unused;
-<a name="l00487"></a>00487     <span class="keywordflow">return</span> <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(v, &amp;unused);
-<a name="l00488"></a>00488 }
-<a name="l00489"></a>00489 
-<a name="l00490"></a>00490 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> v) {
-<a name="l00491"></a>00491     <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> unused;
-<a name="l00492"></a>00492     <span class="keywordflow">return</span> <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(v, &amp;unused);
-<a name="l00493"></a>00493 }
-<a name="l00494"></a>00494 
-<a name="l00495"></a>00495 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> v) {
-<a name="l00496"></a>00496     <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> unused;
-<a name="l00497"></a>00497     <span class="keywordflow">return</span> <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(v, &amp;unused);
-<a name="l00498"></a>00498 }
-<a name="l00499"></a>00499 
-<a name="l00500"></a>00500 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> v) {
-<a name="l00501"></a>00501     <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> unused;
-<a name="l00502"></a>00502     <span class="keywordflow">return</span> <a class="code" href="rs__cl_8rsh.html#a9374786a1bbe3d2dd886cfad642bfec6">fract</a>(v, &amp;unused);
-<a name="l00503"></a>00503 }
-<a name="l00504"></a>00504 
-<a name="l00511"></a>00511 <span class="keyword">extern</span> <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">frexp</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">int</span> *iptr);
-<a name="l00512"></a>00512 FN_FUNC_FN_PIN(<a class="code" href="rs__cl_8rsh.html#a778635fffed3cee8ab0800482ba53a30">frexp</a>)
-<a name="l00513"></a>00513 
-<a name="l00519"></a>00519 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">hypot</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00520"></a>00520 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a147f38d6e41f45de9b5e7c6f3dcac010">hypot</a>)
-<a name="l00521"></a>00521 
-<a name="l00527"></a>00527 extern <span class="keywordtype">int</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">ilogb</a>(<span class="keywordtype">float</span>);
-<a name="l00528"></a>00528 IN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aad9a8beba52acb77b1efeba432e6cc2c">ilogb</a>)
-<a name="l00529"></a>00529 
-<a name="l00536"></a>00536 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">int</span> y);
-<a name="l00537"></a>00537 FN_FUNC_FN_IN(<a class="code" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a>)
-<a name="l00538"></a>00538 FN_FUNC_FN_I(<a class="code" href="rs__cl_8rsh.html#a013bc1dcda984cbc608e123ed38491e6">ldexp</a>)
-<a name="l00539"></a>00539 
-<a name="l00545"></a>00545 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>(<span class="keywordtype">float</span>);
-<a name="l00546"></a>00546 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>)
-<a name="l00547"></a>00547 
-<a name="l00554"></a>00554 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">int</span>* y);
-<a name="l00555"></a>00555 FN_FUNC_FN_PIN(<a class="code" href="rs__cl_8rsh.html#a3ff36f9b21927d6b4b58616e48fddcb4">lgamma</a>)
-<a name="l00556"></a>00556 
-<a name="l00562"></a>00562 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">log</a>(<span class="keywordtype">float</span>);
-<a name="l00563"></a>00563 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a3ff85f5f4b206ecf9ec9d128d7d18a08">log</a>)
-<a name="l00564"></a>00564 
-<a name="l00570"></a>00570 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">log10</a>(<span class="keywordtype">float</span>);
-<a name="l00571"></a>00571 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#af5c1bdba2a13aa2e2b0722287f6a919f">log10</a>)
-<a name="l00572"></a>00572 
-<a name="l00578"></a>00578 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aab1c4f06daf6f2a50fd73f0c28929213">log2</a>(<span class="keywordtype">float</span> v);
-<a name="l00579"></a>00579 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aab1c4f06daf6f2a50fd73f0c28929213">log2</a>)
-<a name="l00580"></a>00580 
-<a name="l00586"></a>00586 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">log1p</a>(<span class="keywordtype">float</span> v);
-<a name="l00587"></a>00587 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ae10541ede49062ef7f977712c4878c1f">log1p</a>)
-<a name="l00588"></a>00588 
-<a name="l00594"></a>00594 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">logb</a>(<span class="keywordtype">float</span>);
-<a name="l00595"></a>00595 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a28742d6ce2f20a61f16ecc08ed499871">logb</a>)
-<a name="l00596"></a>00596 
-<a name="l00602"></a>00602 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">mad</a>(<span class="keywordtype">float</span> a, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> c);
-<a name="l00603"></a>00603 FN_FUNC_FN_FN_FN(<a class="code" href="rs__cl_8rsh.html#a4f9086698f1eb466ba2dccf7e331cdc3">mad</a>)
-<a name="l00604"></a>00604 
-<a name="l00613"></a>00613 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> *iret);
-<a name="l00614"></a>00614 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#a841633bcdcaeb6a514d9c6460f0adf2d">modf</a>);
-<a name="l00615"></a>00615 
-<a name="l00616"></a>00616 extern <span class="keywordtype">float</span> __attribute__((overloadable)) nan(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>);
-<a name="l00617"></a>00617 
-<a name="l00623"></a>00623 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00624"></a>00624 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#adb11df05fb9985595af0a7bd882bdeac">nextafter</a>)
-<a name="l00625"></a>00625 
-<a name="l00631"></a>00631 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a67d1fe795e092003f687f3cc6d3c407a">pown</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">int</span> p);
-<a name="l00632"></a>00632 FN_FUNC_FN_IN(<a class="code" href="rs__cl_8rsh.html#a67d1fe795e092003f687f3cc6d3c407a">pown</a>)
-<a name="l00633"></a>00633 
-<a name="l00640"></a>00640 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a316c30ba3e6bc11673bfd34bb4746d24">powr</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> p);
-<a name="l00641"></a>00641 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a316c30ba3e6bc11673bfd34bb4746d24">powr</a>)
-<a name="l00642"></a>00642 
-<a name="l00648"></a>00648 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">remainder</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y);
-<a name="l00649"></a>00649 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a5188ac0e3af95b0956c6abeafb74fda9">remainder</a>)
-<a name="l00650"></a>00650 
-<a name="l00651"></a>00651 <span class="comment">// document once we know the precision of bionic</span>
-<a name="l00652"></a>00652 extern <span class="keywordtype">float</span> __attribute__((overloadable)) remquo(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">int</span> *);
-<a name="l00653"></a>00653 FN_FUNC_FN_FN_PIN(remquo)
-<a name="l00654"></a>00654 
-<a name="l00660"></a>00660 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rint</a>(<span class="keywordtype">float</span>);
-<a name="l00661"></a>00661 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#adb0ffe344ae56ca7fc9083c1f2943e55">rint</a>)
-<a name="l00662"></a>00662 
-<a name="l00668"></a>00668 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a2776b517528b8185a6bb50753af0f6cf">rootn</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">int</span> n);
-<a name="l00669"></a>00669 FN_FUNC_FN_IN(<a class="code" href="rs__cl_8rsh.html#a2776b517528b8185a6bb50753af0f6cf">rootn</a>)
-<a name="l00670"></a>00670 
-<a name="l00676"></a>00676 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">round</a>(<span class="keywordtype">float</span>);
-<a name="l00677"></a>00677 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aff4846ab5b947550814d5414a2c3626f">round</a>)
-<a name="l00678"></a>00678 
-<a name="l00684"></a>00684 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>(<span class="keywordtype">float</span>);
-<a name="l00685"></a>00685 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>)
-<a name="l00686"></a>00686 
-<a name="l00692"></a>00692 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a8a3992b97cb199b1c8d598996b600988">rsqrt</a>(<span class="keywordtype">float</span> v);
-<a name="l00693"></a>00693 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a8a3992b97cb199b1c8d598996b600988">rsqrt</a>)
-<a name="l00694"></a>00694 
-<a name="l00701"></a>00701 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(<span class="keywordtype">float</span> v);
-<a name="l00702"></a>00702 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>)
-<a name="l00703"></a>00703 
-<a name="l00713"></a>00713 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a892c91a30bbc713aa77105d8e9e25881">sincos</a>(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> *cosptr);
-<a name="l00714"></a>00714 FN_FUNC_FN_PFN(<a class="code" href="rs__cl_8rsh.html#a892c91a30bbc713aa77105d8e9e25881">sincos</a>);
-<a name="l00715"></a>00715 
-<a name="l00721"></a>00721 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">sinh</a>(<span class="keywordtype">float</span>);
-<a name="l00722"></a>00722 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ae686e0cc567f7ee2b0a84706aa486e4a">sinh</a>)
-<a name="l00723"></a>00723 
-<a name="l00729"></a>00729 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9ca027af0acf3ff22d91cd9489766976">sinpi</a>(<span class="keywordtype">float</span> v);
-<a name="l00730"></a>00730 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a9ca027af0acf3ff22d91cd9489766976">sinpi</a>)
-<a name="l00731"></a>00731 
-<a name="l00738"></a>00738 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">tan</a>(<span class="keywordtype">float</span> v);
-<a name="l00739"></a>00739 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#af12e245af8ff9bb72b5000e7c26cd8fe">tan</a>)
-<a name="l00740"></a>00740 
-<a name="l00747"></a>00747 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">tanh</a>(<span class="keywordtype">float</span>);
-<a name="l00748"></a>00748 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#abc36e89ddb87ea78451d1c5921ddbd8d">tanh</a>)
-<a name="l00749"></a>00749 
-<a name="l00755"></a>00755 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aee96c8910a7d8b0082574813b6b68b9a">tanpi</a>(<span class="keywordtype">float</span> v);
-<a name="l00756"></a>00756 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#aee96c8910a7d8b0082574813b6b68b9a">tanpi</a>)
-<a name="l00757"></a>00757 
-<a name="l00763"></a>00763 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">tgamma</a>(<span class="keywordtype">float</span>);
-<a name="l00764"></a>00764 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ab9f4cbfd2470420ee302f28cf3de6dd0">tgamma</a>)
-<a name="l00765"></a>00765 
-<a name="l00771"></a>00771 extern <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">trunc</a>(<span class="keywordtype">float</span>);
-<a name="l00772"></a>00772 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ad1a7c65693231219db1babeae1c41f15">trunc</a>)
-<a name="l00773"></a>00773 
-<a name="l00774"></a>00774 <span class="preprocessor">#ifdef DOXYGEN</span>
-<a name="l00775"></a>00775 <span class="preprocessor"></span>
-<a name="l00776"></a>00776 <span class="preprocessor">#define XN_FUNC_YN(typeout, fnc, typein)                                \</span>
-<a name="l00777"></a>00777 <span class="preprocessor">extern typeout __attribute__((overloadable)) fnc(typein v);</span>
-<a name="l00778"></a>00778 <span class="preprocessor"></span>
-<a name="l00779"></a>00779 <span class="preprocessor">#define XN_FUNC_XN_XN_BODY(type, fnc, body)         \</span>
-<a name="l00780"></a>00780 <span class="preprocessor">_RS_RUNTIME type __attribute__((overloadable))      \</span>
-<a name="l00781"></a>00781 <span class="preprocessor">        fnc(type v1, type v2);</span>
-<a name="l00782"></a>00782 <span class="preprocessor"></span>
-<a name="l00783"></a>00783 <span class="preprocessor">#else</span>
-<a name="l00784"></a>00784 <span class="preprocessor"></span>
-<a name="l00785"></a>00785 <span class="preprocessor">#define XN_FUNC_YN(typeout, fnc, typein)                                \</span>
-<a name="l00786"></a>00786 <span class="preprocessor">extern typeout __attribute__((overloadable)) fnc(typein v);             \</span>
-<a name="l00787"></a>00787 <span class="preprocessor">_RS_RUNTIME typeout##2 __attribute__((overloadable)) fnc(typein##2 v);  \</span>
-<a name="l00788"></a>00788 <span class="preprocessor">_RS_RUNTIME typeout##3 __attribute__((overloadable)) fnc(typein##3 v);  \</span>
-<a name="l00789"></a>00789 <span class="preprocessor">_RS_RUNTIME typeout##4 __attribute__((overloadable)) fnc(typein##4 v);</span>
-<a name="l00790"></a>00790 <span class="preprocessor"></span>
-<a name="l00791"></a>00791 <span class="preprocessor">#define XN_FUNC_XN_XN_BODY(type, fnc, body)         \</span>
-<a name="l00792"></a>00792 <span class="preprocessor">_RS_RUNTIME type __attribute__((overloadable))      \</span>
-<a name="l00793"></a>00793 <span class="preprocessor">        fnc(type v1, type v2);                      \</span>
-<a name="l00794"></a>00794 <span class="preprocessor">_RS_RUNTIME type##2 __attribute__((overloadable))   \</span>
-<a name="l00795"></a>00795 <span class="preprocessor">        fnc(type##2 v1, type##2 v2);                \</span>
-<a name="l00796"></a>00796 <span class="preprocessor">_RS_RUNTIME type##3 __attribute__((overloadable))   \</span>
-<a name="l00797"></a>00797 <span class="preprocessor">        fnc(type##3 v1, type##3 v2);                \</span>
-<a name="l00798"></a>00798 <span class="preprocessor">_RS_RUNTIME type##4 __attribute__((overloadable))   \</span>
-<a name="l00799"></a>00799 <span class="preprocessor">        fnc(type##4 v1, type##4 v2);</span>
-<a name="l00800"></a>00800 <span class="preprocessor"></span>
-<a name="l00801"></a>00801 <span class="preprocessor">#endif  // DOXYGEN</span>
-<a name="l00802"></a>00802 <span class="preprocessor"></span>
-<a name="l00803"></a>00803 <span class="preprocessor">#define UIN_FUNC_IN(fnc)          \</span>
-<a name="l00804"></a>00804 <span class="preprocessor">XN_FUNC_YN(uchar, fnc, char)      \</span>
-<a name="l00805"></a>00805 <span class="preprocessor">XN_FUNC_YN(ushort, fnc, short)    \</span>
-<a name="l00806"></a>00806 <span class="preprocessor">XN_FUNC_YN(uint, fnc, int)</span>
-<a name="l00807"></a>00807 <span class="preprocessor"></span>
-<a name="l00808"></a>00808 <span class="preprocessor">#define IN_FUNC_IN(fnc)           \</span>
-<a name="l00809"></a>00809 <span class="preprocessor">XN_FUNC_YN(uchar, fnc, uchar)     \</span>
-<a name="l00810"></a>00810 <span class="preprocessor">XN_FUNC_YN(char, fnc, char)       \</span>
-<a name="l00811"></a>00811 <span class="preprocessor">XN_FUNC_YN(ushort, fnc, ushort)   \</span>
-<a name="l00812"></a>00812 <span class="preprocessor">XN_FUNC_YN(short, fnc, short)     \</span>
-<a name="l00813"></a>00813 <span class="preprocessor">XN_FUNC_YN(uint, fnc, uint)       \</span>
-<a name="l00814"></a>00814 <span class="preprocessor">XN_FUNC_YN(int, fnc, int)</span>
-<a name="l00815"></a>00815 <span class="preprocessor"></span>
-<a name="l00816"></a>00816 <span class="preprocessor">#define IN_FUNC_IN_IN_BODY(fnc, body)   \</span>
-<a name="l00817"></a>00817 <span class="preprocessor">XN_FUNC_XN_XN_BODY(uchar, fnc, body)    \</span>
-<a name="l00818"></a>00818 <span class="preprocessor">XN_FUNC_XN_XN_BODY(char, fnc, body)     \</span>
-<a name="l00819"></a>00819 <span class="preprocessor">XN_FUNC_XN_XN_BODY(ushort, fnc, body)   \</span>
-<a name="l00820"></a>00820 <span class="preprocessor">XN_FUNC_XN_XN_BODY(short, fnc, body)    \</span>
-<a name="l00821"></a>00821 <span class="preprocessor">XN_FUNC_XN_XN_BODY(uint, fnc, body)     \</span>
-<a name="l00822"></a>00822 <span class="preprocessor">XN_FUNC_XN_XN_BODY(int, fnc, body)      \</span>
-<a name="l00823"></a>00823 <span class="preprocessor">XN_FUNC_XN_XN_BODY(float, fnc, body)</span>
-<a name="l00824"></a>00824 <span class="preprocessor"></span>
-<a name="l00831"></a>00831 UIN_FUNC_IN(<a class="code" href="rs__cl_8rsh.html#a1ed0afedda2068ad1f9ad14ef3449e50">abs</a>)
-<a name="l00832"></a>00832 
-<a name="l00833"></a>00833 
-<a name="l00838"></a>00838 IN_FUNC_IN(<a class="code" href="rs__cl_8rsh.html#a8a0f94dce3caa2a50cbf2d9f4bc674ac">clz</a>)
-<a name="l00839"></a>00839 
-<a name="l00845"></a>00845 IN_FUNC_IN_IN_BODY(<a class="code" href="rs__cl_8rsh.html#a5f61ca44b3ad4b11365b0c4137a22658">min</a>, (v1 &lt; v2 ? v1 : v2))
-<a name="l00846"></a>00846 FN_FUNC_FN_F(min)
-<a name="l00847"></a>00847 
-<a name="l00853"></a>00853 IN_FUNC_IN_IN_BODY(<a class="code" href="rs__cl_8rsh.html#a616bf7a90d8d3c73a48d2c395d9dc4ea">max</a>, (v1 &gt; v2 ? v1 : v2))
-<a name="l00854"></a>00854 FN_FUNC_FN_F(max)
-<a name="l00855"></a>00855 
-<a name="l00863"></a>00863 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#afae5eac13e35acd0f47d7e3c601e16ed">clamp</a>(<span class="keywordtype">float</span> amount, <span class="keywordtype">float</span> low, <span class="keywordtype">float</span> high);
-<a name="l00864"></a>00864 FN_FUNC_FN_FN_FN(<a class="code" href="rs__cl_8rsh.html#afae5eac13e35acd0f47d7e3c601e16ed">clamp</a>)
-<a name="l00865"></a>00865 FN_FUNC_FN_F_F(<a class="code" href="rs__cl_8rsh.html#afae5eac13e35acd0f47d7e3c601e16ed">clamp</a>)
-<a name="l00866"></a>00866 
-<a name="l00872"></a>00872 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a0276b63d6905fa802032f1490a24515b">degrees</a>(<span class="keywordtype">float</span> <a class="code" href="rs__cl_8rsh.html#aceb63a0da6393b8ac2ed229bae6232d6">radians</a>);
-<a name="l00873"></a>00873 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a0276b63d6905fa802032f1490a24515b">degrees</a>)
-<a name="l00874"></a>00874 
-<a name="l00880"></a>00880 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a254612a612ff7539b01a1478e03d8697">mix</a>(<span class="keywordtype">float</span> start, <span class="keywordtype">float</span> stop, <span class="keywordtype">float</span> amount);
-<a name="l00881"></a>00881 FN_FUNC_FN_FN_FN(<a class="code" href="rs__cl_8rsh.html#a254612a612ff7539b01a1478e03d8697">mix</a>)
-<a name="l00882"></a>00882 FN_FUNC_FN_FN_F(<a class="code" href="rs__cl_8rsh.html#a254612a612ff7539b01a1478e03d8697">mix</a>)
-<a name="l00883"></a>00883 
-<a name="l00889"></a>00889 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) radians(<span class="keywordtype">float</span> <a class="code" href="rs__cl_8rsh.html#a0276b63d6905fa802032f1490a24515b">degrees</a>);
-<a name="l00890"></a>00890 FN_FUNC_FN(radians)
-<a name="l00891"></a>00891 
-<a name="l00900"></a>00900 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9f40337dfee48d1881b87b35aa8133dd">step</a>(<span class="keywordtype">float</span> edge, <span class="keywordtype">float</span> v);
-<a name="l00901"></a>00901 FN_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a9f40337dfee48d1881b87b35aa8133dd">step</a>)
-<a name="l00902"></a>00902 FN_FUNC_FN_F(<a class="code" href="rs__cl_8rsh.html#a9f40337dfee48d1881b87b35aa8133dd">step</a>)
-<a name="l00903"></a>00903 
-<a name="l00904"></a>00904 <span class="comment">// not implemented</span>
-<a name="l00905"></a>00905 extern <span class="keywordtype">float</span> __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
-<a name="l00906"></a>00906 extern <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable)) smoothstep(<a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>, float2, float2);
-<a name="l00907"></a>00907 extern <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable)) smoothstep(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>, float3, float3);
-<a name="l00908"></a>00908 extern <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) smoothstep(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>, float4, float4);
-<a name="l00909"></a>00909 extern float2 __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, float2);
-<a name="l00910"></a>00910 extern float3 __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, float3);
-<a name="l00911"></a>00911 extern float4 __attribute__((overloadable)) smoothstep(<span class="keywordtype">float</span>, <span class="keywordtype">float</span>, float4);
-<a name="l00912"></a>00912 
-<a name="l00922"></a>00922 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a9fe423cc7d4c6d767f8a608d2ee76657">sign</a>(<span class="keywordtype">float</span> v);
-<a name="l00923"></a>00923 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a9fe423cc7d4c6d767f8a608d2ee76657">sign</a>)
-<a name="l00924"></a>00924 
-<a name="l00930"></a>00930 _RS_RUNTIME float3 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#add745d593bc2b23285bd10e52a204e25">cross</a>(float3 lhs, float3 rhs);
-<a name="l00931"></a>00931 _RS_RUNTIME float4 __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#add745d593bc2b23285bd10e52a204e25">cross</a>(float4 lhs, float4 rhs);
-<a name="l00932"></a>00932 
-<a name="l00938"></a>00938 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(<span class="keywordtype">float</span> lhs, <span class="keywordtype">float</span> rhs);
-<a name="l00939"></a>00939 F_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>)
-<a name="l00940"></a>00940 
-<a name="l00946"></a>00946 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(<span class="keywordtype">float</span> v);
-<a name="l00947"></a>00947 F_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>)
-<a name="l00948"></a>00948 
-<a name="l00954"></a>00954 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a412bf215ae838c65079560bbefefaca7">distance</a>(<span class="keywordtype">float</span> lhs, <span class="keywordtype">float</span> rhs);
-<a name="l00955"></a>00955 F_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a412bf215ae838c65079560bbefefaca7">distance</a>)
-<a name="l00956"></a>00956 
-<a name="l00962"></a>00962 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a69c2a56f743593439d5ae5e3ec8e517f">normalize</a>(<span class="keywordtype">float</span> v);
-<a name="l00963"></a>00963 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a69c2a56f743593439d5ae5e3ec8e517f">normalize</a>)
-<a name="l00964"></a>00964 
-<a name="l00965"></a>00965 
-<a name="l00966"></a>00966 <span class="comment">// New approx API functions</span>
-<a name="l00967"></a>00967 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 17))</span>
-<a name="l00968"></a>00968 <span class="preprocessor"></span>
-<a name="l00974"></a>00974 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a49050a8e32c95f60df4eaba9d7dfdca6">half_recip</a>(<span class="keywordtype">float</span>);
-<a name="l00975"></a>00975 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a49050a8e32c95f60df4eaba9d7dfdca6">half_recip</a>)
-<a name="l00976"></a>00976 
-<a name="l00982"></a>00982 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a26e2c17b20ee4c98b78c365d390e4fb8">half_sqrt</a>(<span class="keywordtype">float</span>);
-<a name="l00983"></a>00983 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a26e2c17b20ee4c98b78c365d390e4fb8">half_sqrt</a>)
-<a name="l00984"></a>00984 
-<a name="l00990"></a>00990 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a0925ceb22d33dcbb45914350ffa2edea">half_rsqrt</a>(<span class="keywordtype">float</span> v);
-<a name="l00991"></a>00991 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a0925ceb22d33dcbb45914350ffa2edea">half_rsqrt</a>)
-<a name="l00992"></a>00992 
-<a name="l00998"></a>00998 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a7c8f2f987044a360b5f616a80a74a4d5">fast_length</a>(<span class="keywordtype">float</span> v);
-<a name="l00999"></a>00999 F_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a7c8f2f987044a360b5f616a80a74a4d5">fast_length</a>)
-<a name="l01000"></a>01000 
-<a name="l01006"></a>01006 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a4fcbdb9099e7d653a951cb344ba3c3c9">fast_distance</a>(<span class="keywordtype">float</span> lhs, <span class="keywordtype">float</span> rhs);
-<a name="l01007"></a>01007 F_FUNC_FN_FN(<a class="code" href="rs__cl_8rsh.html#a4fcbdb9099e7d653a951cb344ba3c3c9">fast_distance</a>)
-<a name="l01008"></a>01008 
-<a name="l01014"></a>01014 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a3878bee2879351f518be68e015d76a35">fast_normalize</a>(<span class="keywordtype">float</span> v);
-<a name="l01015"></a>01015 F_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a3878bee2879351f518be68e015d76a35">fast_normalize</a>)
-<a name="l01016"></a>01016 
-<a name="l01017"></a>01017 <span class="preprocessor">#endif  // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 17))</span>
-<a name="l01018"></a>01018 <span class="preprocessor"></span>
-<a name="l01019"></a>01019 
-<a name="l01020"></a>01020 
-<a name="l01021"></a>01021 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 18))</span>
-<a name="l01022"></a>01022 <span class="preprocessor"></span><span class="comment">// Fast native math functions.</span>
-<a name="l01023"></a>01023 
-<a name="l01024"></a>01024 
-<a name="l01032"></a>01032 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#ab354691ecd844549b27ef9202e17f7ac">native_exp2</a>(<span class="keywordtype">float</span> v);
-<a name="l01033"></a>01033 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#ab354691ecd844549b27ef9202e17f7ac">native_exp2</a>)
-<a name="l01034"></a>01034 
-<a name="l01042"></a>01042 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a45d8176823a05b891313f3d96decf491">native_exp</a>(<span class="keywordtype">float</span> v);
-<a name="l01043"></a>01043 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a45d8176823a05b891313f3d96decf491">native_exp</a>)
-<a name="l01044"></a>01044 
-<a name="l01052"></a>01052 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) <a class="code" href="rs__cl_8rsh.html#a601ee3d2bf769f1cdc39a886f7a6c986">native_exp10</a>(<span class="keywordtype">float</span> v);
-<a name="l01053"></a>01053 FN_FUNC_FN(<a class="code" href="rs__cl_8rsh.html#a601ee3d2bf769f1cdc39a886f7a6c986">native_exp10</a>)
-<a name="l01054"></a>01054 
-<a name="l01055"></a>01055 
-<a name="l01056"></a>01056 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) native_log2(<span class="keywordtype">float</span> v);
-<a name="l01057"></a>01057 FN_FUNC_FN(native_log2)
-<a name="l01058"></a>01058 
-<a name="l01059"></a>01059 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) native_log(<span class="keywordtype">float</span> v);
-<a name="l01060"></a>01060 FN_FUNC_FN(native_log)
-<a name="l01061"></a>01061 
-<a name="l01062"></a>01062 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) native_log10(<span class="keywordtype">float</span> v);
-<a name="l01063"></a>01063 FN_FUNC_FN(native_log10)
-<a name="l01064"></a>01064 
-<a name="l01065"></a>01065 
-<a name="l01066"></a>01066 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable)) native_powr(<span class="keywordtype">float</span> v, <span class="keywordtype">float</span> y);
-<a name="l01067"></a>01067 FN_FUNC_FN_FN(native_powr)
-<a name="l01068"></a>01068 
-<a name="l01069"></a>01069 
-<a name="l01070"></a>01070 <span class="preprocessor">#endif  // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 18))</span>
-<a name="l01071"></a>01071 <span class="preprocessor"></span>
-<a name="l01072"></a>01072 
-<a name="l01073"></a>01073 <span class="preprocessor">#undef CVT_FUNC</span>
-<a name="l01074"></a>01074 <span class="preprocessor"></span><span class="preprocessor">#undef CVT_FUNC_2</span>
-<a name="l01075"></a>01075 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN</span>
-<a name="l01076"></a>01076 <span class="preprocessor"></span><span class="preprocessor">#undef F_FUNC_FN</span>
-<a name="l01077"></a>01077 <span class="preprocessor"></span><span class="preprocessor">#undef IN_FUNC_FN</span>
-<a name="l01078"></a>01078 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN</span>
-<a name="l01079"></a>01079 <span class="preprocessor"></span><span class="preprocessor">#undef F_FUNC_FN_FN</span>
-<a name="l01080"></a>01080 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_F</span>
-<a name="l01081"></a>01081 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_IN</span>
-<a name="l01082"></a>01082 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_I</span>
-<a name="l01083"></a>01083 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_PFN</span>
-<a name="l01084"></a>01084 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_PIN</span>
-<a name="l01085"></a>01085 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN_FN</span>
-<a name="l01086"></a>01086 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN_F</span>
-<a name="l01087"></a>01087 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_F_F</span>
-<a name="l01088"></a>01088 <span class="preprocessor"></span><span class="preprocessor">#undef FN_FUNC_FN_FN_PIN</span>
-<a name="l01089"></a>01089 <span class="preprocessor"></span><span class="preprocessor">#undef XN_FUNC_YN</span>
-<a name="l01090"></a>01090 <span class="preprocessor"></span><span class="preprocessor">#undef UIN_FUNC_IN</span>
-<a name="l01091"></a>01091 <span class="preprocessor"></span><span class="preprocessor">#undef IN_FUNC_IN</span>
-<a name="l01092"></a>01092 <span class="preprocessor"></span><span class="preprocessor">#undef XN_FUNC_XN_XN_BODY</span>
-<a name="l01093"></a>01093 <span class="preprocessor"></span><span class="preprocessor">#undef IN_FUNC_IN_IN_BODY</span>
-<a name="l01094"></a>01094 <span class="preprocessor"></span>
-<a name="l01095"></a>01095 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__core_8rsh.html b/docs/html/reference/renderscript/rs__core_8rsh.html
deleted file mode 100644
index 132488d..0000000
--- a/docs/html/reference/renderscript/rs__core_8rsh.html
+++ /dev/null
@@ -1,361 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_core.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_core.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<div class="textblock"><code>#include &quot;<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__allocation_8rsh_source.html">rs_allocation.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__atomic_8rsh_source.html">rs_atomic.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__cl_8rsh_source.html">rs_cl.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__debug_8rsh_source.html">rs_debug.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__element_8rsh_source.html">rs_element.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__matrix_8rsh_source.html">rs_matrix.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__object_8rsh_source.html">rs_object.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__sampler_8rsh_source.html">rs_sampler.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>&quot;</code><br/>
-</div><table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__script__call.html">rs_script_call</a></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structrs__script__call.html">rs_script_call</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a></td></tr>
-<tr><td colspan="2"><h2><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> </td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a> (int cmdID)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a508003cadad2d37d41e2de7e9226f859">rsSendToClient</a> (int cmdID, const void *data, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a> (int cmdID)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#afc93b00be08f58512a6ab6a87feb9515">rsSendToClientBlocking</a> (int cmdID, const void *data, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rsForEach</a> (<a class="el" href="structrs__script.html">rs_script</a> script, <a class="el" href="structrs__allocation.html">rs_allocation</a> input, <a class="el" href="structrs__allocation.html">rs_allocation</a> output, const void *usrData, <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a> usrDataLen, const <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a> *)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a38c803ed805dd1362442977eae70c41d">rsForEach</a> (<a class="el" href="structrs__script.html">rs_script</a> script, <a class="el" href="structrs__allocation.html">rs_allocation</a> input, <a class="el" href="structrs__allocation.html">rs_allocation</a> output, const void *usrData, <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a> usrDataLen)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__core_8rsh.html#a6c541fa49b6fb9b528c2a147eaf764da">rsForEach</a> (<a class="el" href="structrs__script.html">rs_script</a> script, <a class="el" href="structrs__allocation.html">rs_allocation</a> input, <a class="el" href="structrs__allocation.html">rs_allocation</a> output)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>todo-jsams </p>
-
-<p>Definition in file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
-</div><hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="ae8756b32e23445f287960b9d0ffb449c"></a><!-- doxytag: member="rs_core.rsh::rs_script_call_t" ref="ae8756b32e23445f287960b9d0ffb449c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef struct <a class="el" href="structrs__script__call.html">rs_script_call</a>  <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Structure to provide extra information to a rsForEach call. Primarly used to restrict the call to a subset of cells in the allocation. </p>
-
-</div>
-</div>
-<hr/><h2>Enumeration Type Documentation</h2>
-<a class="anchor" id="ae1755c901e8acb42510ad10b4e104746"></a><!-- doxytag: member="rs_core.rsh::rs_for_each_strategy" ref="ae1755c901e8acb42510ad10b4e104746" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Launch order hint for rsForEach calls. This provides a hint to the system to determine in which order the root function of the target is called with each cell of the allocation.</p>
-<p>This is a hint and implementations may not obey the order. </p>
-
-<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00096">96</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a64271d266928b06ebd82ec90b756eb23"></a><!-- doxytag: member="rs_core.rsh::rsForEach" ref="a64271d266928b06ebd82ec90b756eb23" args="(rs_script script, rs_allocation input, rs_allocation output, const void *usrData, size_t usrDataLen, const rs_script_call_t *)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsForEach </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
-          <td class="paramname"><em>script</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>input</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>output</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname"><em>usrData</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a>&#160;</td>
-          <td class="paramname"><em>usrDataLen</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a> *&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Make a script to script call to launch work. One of the input or output is required to be a valid object. The input and output must be of the same dimensions. API 10-13</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">script</td><td>The target script to call </td></tr>
-    <tr><td class="paramname">input</td><td>The allocation to source data from </td></tr>
-    <tr><td class="paramname">output</td><td>the allocation to write date into </td></tr>
-    <tr><td class="paramname">usrData</td><td>The user definied params to pass to the root script. May be NULL. </td></tr>
-    <tr><td class="paramname">sc</td><td>Extra control infomation used to select a sub-region of the allocation to be processed or suggest a walking strategy. May be NULL. Make a script to script call to launch work. One of the input or output is required to be a valid object. The input and output must be of the same dimensions. API 14+</td></tr>
-    <tr><td class="paramname">script</td><td>The target script to call </td></tr>
-    <tr><td class="paramname">input</td><td>The allocation to source data from </td></tr>
-    <tr><td class="paramname">output</td><td>the allocation to write date into </td></tr>
-    <tr><td class="paramname">usrData</td><td>The user definied params to pass to the root script. May be NULL. </td></tr>
-    <tr><td class="paramname">usrDataLen</td><td>The size of the userData structure. This will be used to perform a shallow copy of the data if necessary. </td></tr>
-    <tr><td class="paramname">sc</td><td>Extra control infomation used to select a sub-region of the allocation to be processed or suggest a walking strategy. May be NULL. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a38c803ed805dd1362442977eae70c41d"></a><!-- doxytag: member="rs_core.rsh::rsForEach" ref="a38c803ed805dd1362442977eae70c41d" args="(rs_script script, rs_allocation input, rs_allocation output, const void *usrData, size_t usrDataLen)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsForEach </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
-          <td class="paramname"><em>script</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>input</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>output</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname"><em>usrData</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a>&#160;</td>
-          <td class="paramname"><em>usrDataLen</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6c541fa49b6fb9b528c2a147eaf764da"></a><!-- doxytag: member="rs_core.rsh::rsForEach" ref="a6c541fa49b6fb9b528c2a147eaf764da" args="(rs_script script, rs_allocation input, rs_allocation output)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsForEach </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
-          <td class="paramname"><em>script</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>input</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>output</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a91cfbca99f87ef144bea2cdf1e8473ca"></a><!-- doxytag: member="rs_core.rsh::rsSendToClient" ref="a91cfbca99f87ef144bea2cdf1e8473ca" args="(int cmdID)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsSendToClient </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>cmdID</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Send a message back to the client. Will not block and returns true if the message was sendable and false if the fifo was full. A message ID is required. Data payload is optional. </p>
-
-</div>
-</div>
-<a class="anchor" id="a508003cadad2d37d41e2de7e9226f859"></a><!-- doxytag: member="rs_core.rsh::rsSendToClient" ref="a508003cadad2d37d41e2de7e9226f859" args="(int cmdID, const void *data, uint len)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsSendToClient </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>cmdID</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname"><em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>len</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6e4ff6388e8c6978ed17447214f2a2e2"></a><!-- doxytag: member="rs_core.rsh::rsSendToClientBlocking" ref="a6e4ff6388e8c6978ed17447214f2a2e2" args="(int cmdID)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSendToClientBlocking </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>cmdID</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Send a message back to the client, blocking until the message is queued. A message ID is required. Data payload is optional. </p>
-
-</div>
-</div>
-<a class="anchor" id="afc93b00be08f58512a6ab6a87feb9515"></a><!-- doxytag: member="rs_core.rsh::rsSendToClientBlocking" ref="afc93b00be08f58512a6ab6a87feb9515" args="(int cmdID, const void *data, uint len)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSendToClientBlocking </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>cmdID</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname"><em>data</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>len</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__core_8rsh_source.html b/docs/html/reference/renderscript/rs__core_8rsh_source.html
deleted file mode 100644
index ddc870d..0000000
--- a/docs/html/reference/renderscript/rs__core_8rsh_source.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_core.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_core.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__core_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011-2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00046"></a>00046 <span class="preprocessor">#ifndef __RS_CORE_RSH__</span>
-<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#define __RS_CORE_RSH__</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>
-<a name="l00049"></a>00049 <span class="preprocessor">#define _RS_RUNTIME extern</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>
-<a name="l00051"></a>00051 <span class="preprocessor">#include &quot;<a class="code" href="rs__types_8rsh.html">rs_types.rsh</a>&quot;</span>
-<a name="l00052"></a>00052 <span class="preprocessor">#include &quot;<a class="code" href="rs__allocation_8rsh.html" title="Allocation routines.">rs_allocation.rsh</a>&quot;</span>
-<a name="l00053"></a>00053 <span class="preprocessor">#include &quot;<a class="code" href="rs__atomic_8rsh.html" title="Atomic routines.">rs_atomic.rsh</a>&quot;</span>
-<a name="l00054"></a>00054 <span class="preprocessor">#include &quot;<a class="code" href="rs__cl_8rsh.html" title="Basic math functions.">rs_cl.rsh</a>&quot;</span>
-<a name="l00055"></a>00055 <span class="preprocessor">#include &quot;<a class="code" href="rs__debug_8rsh.html" title="Utility debugging routines.">rs_debug.rsh</a>&quot;</span>
-<a name="l00056"></a>00056 <span class="preprocessor">#include &quot;<a class="code" href="rs__element_8rsh.html" title="Element routines.">rs_element.rsh</a>&quot;</span>
-<a name="l00057"></a>00057 <span class="preprocessor">#include &quot;<a class="code" href="rs__math_8rsh.html">rs_math.rsh</a>&quot;</span>
-<a name="l00058"></a>00058 <span class="preprocessor">#include &quot;<a class="code" href="rs__matrix_8rsh.html" title="Matrix routines.">rs_matrix.rsh</a>&quot;</span>
-<a name="l00059"></a>00059 <span class="preprocessor">#include &quot;<a class="code" href="rs__object_8rsh.html" title="Object routines.">rs_object.rsh</a>&quot;</span>
-<a name="l00060"></a>00060 <span class="preprocessor">#include &quot;<a class="code" href="rs__quaternion_8rsh.html" title="Quaternion routines.">rs_quaternion.rsh</a>&quot;</span>
-<a name="l00061"></a>00061 <span class="preprocessor">#include &quot;<a class="code" href="rs__sampler_8rsh.html" title="Sampler routines.">rs_sampler.rsh</a>&quot;</span>
-<a name="l00062"></a>00062 <span class="preprocessor">#include &quot;<a class="code" href="rs__time_8rsh.html" title="RenderScript time routines.">rs_time.rsh</a>&quot;</span>
-<a name="l00063"></a>00063 
-<a name="l00069"></a>00069 <span class="keyword">extern</span> <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00070"></a>00070     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID);
-<a name="l00074"></a>00074 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00075"></a>00075     <a class="code" href="rs__core_8rsh.html#a91cfbca99f87ef144bea2cdf1e8473ca">rsSendToClient</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
-<a name="l00080"></a>00080 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00081"></a>00081     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID);
-<a name="l00085"></a>00085 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00086"></a>00086     <a class="code" href="rs__core_8rsh.html#a6e4ff6388e8c6978ed17447214f2a2e2">rsSendToClientBlocking</a>(<span class="keywordtype">int</span> cmdID, const <span class="keywordtype">void</span> *data, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
-<a name="l00087"></a>00087 
-<a name="l00088"></a>00088 
-<a name="l00096"></a><a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">00096</a> enum <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> {
-<a name="l00097"></a>00097     RS_FOR_EACH_STRATEGY_SERIAL = 0,
-<a name="l00098"></a>00098     RS_FOR_EACH_STRATEGY_DONT_CARE = 1,
-<a name="l00099"></a>00099     RS_FOR_EACH_STRATEGY_DST_LINEAR = 2,
-<a name="l00100"></a>00100     RS_FOR_EACH_STRATEGY_TILE_SMALL= 3,
-<a name="l00101"></a>00101     RS_FOR_EACH_STRATEGY_TILE_MEDIUM = 4,
-<a name="l00102"></a>00102     RS_FOR_EACH_STRATEGY_TILE_LARGE = 5
-<a name="l00103"></a>00103 };
-<a name="l00104"></a>00104 
-<a name="l00105"></a>00105 
-<a name="l00110"></a><a class="code" href="structrs__script__call.html">00110</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structrs__script__call.html">rs_script_call</a> {
-<a name="l00111"></a>00111     <span class="keyword">enum</span> <a class="code" href="rs__core_8rsh.html#ae1755c901e8acb42510ad10b4e104746">rs_for_each_strategy</a> strategy;
-<a name="l00112"></a>00112     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xStart;
-<a name="l00113"></a>00113     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> xEnd;
-<a name="l00114"></a>00114     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yStart;
-<a name="l00115"></a>00115     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> yEnd;
-<a name="l00116"></a>00116     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zStart;
-<a name="l00117"></a>00117     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> zEnd;
-<a name="l00118"></a>00118     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayStart;
-<a name="l00119"></a>00119     <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> arrayEnd;
-<a name="l00120"></a>00120 } <a class="code" href="rs__core_8rsh.html#ae8756b32e23445f287960b9d0ffb449c">rs_script_call_t</a>;
-<a name="l00121"></a>00121 
-<a name="l00138"></a>00138 <span class="preprocessor">#if !defined(RS_VERSION) || (RS_VERSION &lt; 14)</span>
-<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00140"></a>00140     <a class="code" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> input,
-<a name="l00141"></a>00141               <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData,
-<a name="l00142"></a>00142               const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *sc);
-<a name="l00146"></a>00146 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00147"></a>00147     <a class="code" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> input,
-<a name="l00148"></a>00148               <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> output, const <span class="keywordtype">void</span> * usrData);
-<a name="l00149"></a>00149 <span class="preprocessor">#else</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span>
-<a name="l00169"></a>00169 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00170"></a>00170     <a class="code" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> output,
-<a name="l00171"></a>00171               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen, const <a class="code" href="structrs__script__call.html">rs_script_call_t</a> *);
-<a name="l00175"></a>00175 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00176"></a>00176     <a class="code" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> output,
-<a name="l00177"></a>00177               const <span class="keywordtype">void</span> * usrData, <span class="keywordtype">size_t</span> usrDataLen);
-<a name="l00181"></a>00181 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00182"></a>00182     <a class="code" href="rs__core_8rsh.html#a64271d266928b06ebd82ec90b756eb23">rsForEach</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> script, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> input, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> output);
-<a name="l00183"></a>00183 <span class="preprocessor">#endif</span>
-<a name="l00184"></a>00184 <span class="preprocessor"></span>
-<a name="l00185"></a>00185 
-<a name="l00186"></a>00186 
-<a name="l00187"></a>00187 <span class="preprocessor">#undef _RS_RUNTIME</span>
-<a name="l00188"></a>00188 <span class="preprocessor"></span>
-<a name="l00189"></a>00189 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__debug_8rsh.html b/docs/html/reference/renderscript/rs__debug_8rsh.html
deleted file mode 100644
index cb7eb65..0000000
--- a/docs/html/reference/renderscript/rs__debug_8rsh.html
+++ /dev/null
@@ -1,662 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_debug.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_debug.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a> (const char *, float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aebd4d3e687a397db1a817ca6d46aed29">rsDebug</a> (const char *, float, float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ab1731408774f01186aff59b89c47fe32">rsDebug</a> (const char *, float, float, float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a6bb20c16c9fcc613158ca8c6f0dd81bd">rsDebug</a> (const char *, float, float, float, float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a0a59285be7204bde7b199c77578b6a42">rsDebug</a> (const char *, double)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a47b07360e1df6885b3f2eb207408db2c">rsDebug</a> (const char *, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aee885d367bb22f5c437dec486eafb75c">rsDebug</a> (const char *, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ac611c53b945b0ced90fde98e3846be79">rsDebug</a> (const char *, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ad8f8901db11563ddd7d655fed025047f">rsDebug</a> (const char *, int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a490b0f6af3cc2e0280e97f2d2c2da228">rsDebug</a> (const char *, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aa75aa9faf7646ceeafeb19279416e9e8">rsDebug</a> (const char *, long)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aa371f42b8d323a1a20d56461011fc664">rsDebug</a> (const char *, unsigned long)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ab5a58069a9d914e413f52b0f9bd62a00">rsDebug</a> (const char *, const void *)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#aa8b0824fa7ebb7568475aa9fe59db2a7">rsDebug</a> (const char *, char)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ae15778f8dce1f1afb184223aa2ea16d7">rsDebug</a> (const char *, unsigned char)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a9ae73c92436ef2ebb3aa003dfe32b47e">rsDebug</a> (const char *, <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ad2ac07fa7f59cd1ec4c3e411a726e3bf">rsDebug</a> (const char *, short)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a914fe650bcd59de44d33fc4b72d6d494">rsDebug</a> (const char *, <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#a52c6ade9360a550eb25c044ea2380f4b">rsDebug</a> (const char *, <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__debug_8rsh.html#ad723b521df57125a4165812004f107c4">rsDebug</a> (const char *, <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a>)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Utility debugging routines. </p>
-<p>Routines intended to be used during application developement. These should not be used in shipping applications. All print a string and value pair to the standard log. </p>
-
-<p>Definition in file <a class="el" href="rs__debug_8rsh_source.html">rs_debug.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="aff35df661796c13fa9e616d1d387df0d"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aff35df661796c13fa9e616d1d387df0d" args="(const char *, float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="aebd4d3e687a397db1a817ca6d46aed29"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aebd4d3e687a397db1a817ca6d46aed29" args="(const char *, float, float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab1731408774f01186aff59b89c47fe32"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ab1731408774f01186aff59b89c47fe32" args="(const char *, float, float, float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6bb20c16c9fcc613158ca8c6f0dd81bd"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a6bb20c16c9fcc613158ca8c6f0dd81bd" args="(const char *, float, float, float, float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0a59285be7204bde7b199c77578b6a42"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a0a59285be7204bde7b199c77578b6a42" args="(const char *, double)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">double&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a47b07360e1df6885b3f2eb207408db2c"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a47b07360e1df6885b3f2eb207408db2c" args="(const char *, const rs_matrix4x4 *)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="aee885d367bb22f5c437dec486eafb75c"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aee885d367bb22f5c437dec486eafb75c" args="(const char *, const rs_matrix3x3 *)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac611c53b945b0ced90fde98e3846be79"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ac611c53b945b0ced90fde98e3846be79" args="(const char *, const rs_matrix2x2 *)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad8f8901db11563ddd7d655fed025047f"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ad8f8901db11563ddd7d655fed025047f" args="(const char *, int)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a490b0f6af3cc2e0280e97f2d2c2da228"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a490b0f6af3cc2e0280e97f2d2c2da228" args="(const char *, uint)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa75aa9faf7646ceeafeb19279416e9e8"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aa75aa9faf7646ceeafeb19279416e9e8" args="(const char *, long)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">long&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa371f42b8d323a1a20d56461011fc664"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aa371f42b8d323a1a20d56461011fc664" args="(const char *, unsigned long)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned&#160;</td>
-          <td class="paramname"><em>long</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab5a58069a9d914e413f52b0f9bd62a00"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ab5a58069a9d914e413f52b0f9bd62a00" args="(const char *, const void *)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const void *&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa8b0824fa7ebb7568475aa9fe59db2a7"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="aa8b0824fa7ebb7568475aa9fe59db2a7" args="(const char *, char)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae15778f8dce1f1afb184223aa2ea16d7"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ae15778f8dce1f1afb184223aa2ea16d7" args="(const char *, unsigned char)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned&#160;</td>
-          <td class="paramname"><em>char</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9ae73c92436ef2ebb3aa003dfe32b47e"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a9ae73c92436ef2ebb3aa003dfe32b47e" args="(const char *, uchar2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad2ac07fa7f59cd1ec4c3e411a726e3bf"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ad2ac07fa7f59cd1ec4c3e411a726e3bf" args="(const char *, short)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">short&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a914fe650bcd59de44d33fc4b72d6d494"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a914fe650bcd59de44d33fc4b72d6d494" args="(const char *, ushort2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="a52c6ade9360a550eb25c044ea2380f4b"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="a52c6ade9360a550eb25c044ea2380f4b" args="(const char *, long2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad723b521df57125a4165812004f107c4"></a><!-- doxytag: member="rs_debug.rsh::rsDebug" ref="ad723b521df57125a4165812004f107c4" args="(const char *, ulong2)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsDebug </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Debug function. Prints a string and value to the log. </p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__debug_8rsh_source.html b/docs/html/reference/renderscript/rs__debug_8rsh_source.html
deleted file mode 100644
index cd5895d..0000000
--- a/docs/html/reference/renderscript/rs__debug_8rsh_source.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_debug.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_debug.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__debug_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00026"></a>00026 <span class="preprocessor">#ifndef __RS_DEBUG_RSH__</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define __RS_DEBUG_RSH__</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 
-<a name="l00033"></a>00033 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00034"></a>00034     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>);
-<a name="l00038"></a>00038 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00039"></a>00039     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
-<a name="l00043"></a>00043 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00044"></a>00044     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
-<a name="l00048"></a>00048 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00049"></a>00049     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>, <span class="keywordtype">float</span>);
-<a name="l00053"></a>00053 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00054"></a>00054     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>);
-<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00059"></a>00059     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>);
-<a name="l00063"></a>00063 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00064"></a>00064     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>);
-<a name="l00068"></a>00068 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00069"></a>00069     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">double</span>);
-<a name="l00073"></a>00073 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00074"></a>00074     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *);
-<a name="l00078"></a>00078 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00079"></a>00079     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *);
-<a name="l00083"></a>00083 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00084"></a>00084     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *);
-<a name="l00088"></a>00088 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00089"></a>00089     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span>);
-<a name="l00093"></a>00093 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00094"></a>00094     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>);
-<a name="l00098"></a>00098 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00099"></a>00099     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">long</span>);
-<a name="l00103"></a>00103 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00104"></a>00104     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>);
-<a name="l00108"></a>00108 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00109"></a>00109     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">long</span> <span class="keywordtype">long</span>);
-<a name="l00113"></a>00113 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00114"></a>00114     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>);
-<a name="l00118"></a>00118 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00119"></a>00119     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, const <span class="keywordtype">void</span> *);
-<a name="l00120"></a>00120 
-<a name="l00121"></a>00121 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 17))</span>
-<a name="l00122"></a>00122 <span class="preprocessor"></span>
-<a name="l00125"></a>00125 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00126"></a>00126     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">char</span>);
-<a name="l00130"></a>00130 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00131"></a>00131     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a>);
-<a name="l00135"></a>00135 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00136"></a>00136     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a>);
-<a name="l00140"></a>00140 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00141"></a>00141     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a>);
-<a name="l00145"></a>00145 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00146"></a>00146     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>);
-<a name="l00150"></a>00150 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00151"></a>00151     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a>);
-<a name="l00155"></a>00155 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00156"></a>00156     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a>);
-<a name="l00160"></a>00160 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00161"></a>00161     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>);
-<a name="l00165"></a>00165 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00166"></a>00166     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">short</span>);
-<a name="l00170"></a>00170 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00171"></a>00171     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a>);
-<a name="l00175"></a>00175 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00176"></a>00176     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a>);
-<a name="l00180"></a>00180 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00181"></a>00181     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a>);
-<a name="l00185"></a>00185 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00186"></a>00186     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>);
-<a name="l00190"></a>00190 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00191"></a>00191     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a>);
-<a name="l00195"></a>00195 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00196"></a>00196     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a>);
-<a name="l00200"></a>00200 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00201"></a>00201     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a>);
-<a name="l00205"></a>00205 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00206"></a>00206     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a>);
-<a name="l00210"></a>00210 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00211"></a>00211     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a>);
-<a name="l00215"></a>00215 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00216"></a>00216     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a>);
-<a name="l00220"></a>00220 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00221"></a>00221     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a>);
-<a name="l00225"></a>00225 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00226"></a>00226     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a>);
-<a name="l00230"></a>00230 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00231"></a>00231     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a>);
-<a name="l00235"></a>00235 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00236"></a>00236     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a>);
-<a name="l00240"></a>00240 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00241"></a>00241     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a>);
-<a name="l00245"></a>00245 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00246"></a>00246     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a>);
-<a name="l00250"></a>00250 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00251"></a>00251     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a>);
-<a name="l00255"></a>00255 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00256"></a>00256     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a>);
-<a name="l00260"></a>00260 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00261"></a>00261     <a class="code" href="rs__debug_8rsh.html#aff35df661796c13fa9e616d1d387df0d">rsDebug</a>(const <span class="keywordtype">char</span> *, <a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a>);
-<a name="l00262"></a>00262 <span class="preprocessor">#endif  // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 17))</span>
-<a name="l00263"></a>00263 <span class="preprocessor"></span>
-<a name="l00264"></a>00264 <span class="preprocessor">#define RS_DEBUG(a) rsDebug(#a, a)</span>
-<a name="l00265"></a>00265 <span class="preprocessor"></span><span class="preprocessor">#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__)</span>
-<a name="l00266"></a>00266 <span class="preprocessor"></span>
-<a name="l00267"></a>00267 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__element_8rsh.html b/docs/html/reference/renderscript/rs__element_8rsh.html
deleted file mode 100644
index 201f71c..0000000
--- a/docs/html/reference/renderscript/rs__element_8rsh.html
+++ /dev/null
@@ -1,374 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_element.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_element.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a2ecab064ea2b720bc3af27b523388f31">rsElementGetSubElementCount</a> (<a class="el" href="structrs__element.html">rs_element</a> e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a8c690bce7d32be759fd787740c270c92">rsElementGetSubElement</a> (<a class="el" href="structrs__element.html">rs_element</a>, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a94834eb1d91b50a5df3cbe161c22e37d">rsElementGetSubElementNameLength</a> (<a class="el" href="structrs__element.html">rs_element</a> e, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a3c1446166c43aa6ba3d5359f6c982f02">rsElementGetSubElementName</a> (<a class="el" href="structrs__element.html">rs_element</a> e, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index, char *name, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> nameLength)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a9c3140c18139db451279d9b221808eee">rsElementGetSubElementArraySize</a> (<a class="el" href="structrs__element.html">rs_element</a> e, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a840d53f1e91bb6887b40a4d8983c53ed">rsElementGetSubElementOffsetBytes</a> (<a class="el" href="structrs__element.html">rs_element</a> e, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#ac54592168af5896d3fba5283af286f98">rsElementGetBytesSize</a> (<a class="el" href="structrs__element.html">rs_element</a> e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">rs_data_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a9a3569d242be363517ea2354d98cf382">rsElementGetDataType</a> (<a class="el" href="structrs__element.html">rs_element</a> e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">rs_data_kind</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#af072702a530e158093d69353072da5f9">rsElementGetDataKind</a> (<a class="el" href="structrs__element.html">rs_element</a> e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__element_8rsh.html#a727997de25ae43c07dffcfd484928d53">rsElementGetVectorSize</a> (<a class="el" href="structrs__element.html">rs_element</a> e)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Element routines. </p>
-
-<p>Definition in file <a class="el" href="rs__element_8rsh_source.html">rs_element.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="ac54592168af5896d3fba5283af286f98"></a><!-- doxytag: member="rs_element.rsh::rsElementGetBytesSize" ref="ac54592168af5896d3fba5283af286f98" args="(rs_element e)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetBytesSize </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the size of element in bytes</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>total size of the element in bytes </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="af072702a530e158093d69353072da5f9"></a><!-- doxytag: member="rs_element.rsh::rsElementGetDataKind" ref="af072702a530e158093d69353072da5f9" args="(rs_element e)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">rs_data_kind</a> rsElementGetDataKind </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the element's data kind</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>element's data size </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9a3569d242be363517ea2354d98cf382"></a><!-- doxytag: member="rs_element.rsh::rsElementGetDataType" ref="a9a3569d242be363517ea2354d98cf382" args="(rs_element e)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">rs_data_type</a> rsElementGetDataType </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the element's data type</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>element's data type </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a8c690bce7d32be759fd787740c270c92"></a><!-- doxytag: member="rs_element.rsh::rsElementGetSubElement" ref="a8c690bce7d32be759fd787740c270c92" args="(rs_element, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structrs__element.html">rs_element</a> rsElementGetSubElement </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>For complex elements, this function will return the sub-element at index</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the sub-element to return </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>sub-element in this element at given index </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9c3140c18139db451279d9b221808eee"></a><!-- doxytag: member="rs_element.rsh::rsElementGetSubElementArraySize" ref="a9c3140c18139db451279d9b221808eee" args="(rs_element e, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetSubElementArraySize </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>For complex elements, some sub-elements could be statically sized arrays. This function will return the array size for sub-element at index</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the sub-element </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>array size of sub-element in this element at given index </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a2ecab064ea2b720bc3af27b523388f31"></a><!-- doxytag: member="rs_element.rsh::rsElementGetSubElementCount" ref="a2ecab064ea2b720bc3af27b523388f31" args="(rs_element e)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetSubElementCount </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Elements could be simple, such as an int or a float, or a structure with multiple sub elements, such as a collection of floats, float2, float4. This function returns zero for simple elements or the number of sub-elements otherwise.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>number of sub-elements in this element </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a3c1446166c43aa6ba3d5359f6c982f02"></a><!-- doxytag: member="rs_element.rsh::rsElementGetSubElementName" ref="a3c1446166c43aa6ba3d5359f6c982f02" args="(rs_element e, uint32_t index, char *name, uint32_t nameLength)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetSubElementName </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char *&#160;</td>
-          <td class="paramname"><em>name</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>nameLength</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>For complex elements, this function will return the sub-element name at index</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the sub-element </td></tr>
-    <tr><td class="paramname">name</td><td>array to store the name into </td></tr>
-    <tr><td class="paramname">nameLength</td><td>length of the provided name array </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>number of characters actually written, excluding the null terminator </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a94834eb1d91b50a5df3cbe161c22e37d"></a><!-- doxytag: member="rs_element.rsh::rsElementGetSubElementNameLength" ref="a94834eb1d91b50a5df3cbe161c22e37d" args="(rs_element e, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetSubElementNameLength </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>For complex elements, this function will return the length of sub-element name at index</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the sub-element to return </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>length of the sub-element name including the null terminator (size of buffer needed to write the name) </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a840d53f1e91bb6887b40a4d8983c53ed"></a><!-- doxytag: member="rs_element.rsh::rsElementGetSubElementOffsetBytes" ref="a840d53f1e91bb6887b40a4d8983c53ed" args="(rs_element e, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetSubElementOffsetBytes </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This function specifies the location of a sub-element within the element</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the sub-element </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>offset in bytes of sub-element in this element at given index </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a727997de25ae43c07dffcfd484928d53"></a><!-- doxytag: member="rs_element.rsh::rsElementGetVectorSize" ref="a727997de25ae43c07dffcfd484928d53" args="(rs_element e)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsElementGetVectorSize </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>e</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the element's vector size</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">e</td><td>element to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>length of the element vector (for float2, float3, etc.) </dd></dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__element_8rsh_source.html b/docs/html/reference/renderscript/rs__element_8rsh_source.html
deleted file mode 100644
index 1d2601e..0000000
--- a/docs/html/reference/renderscript/rs__element_8rsh_source.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_element.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_element.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__element_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_ELEMENT_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_ELEMENT_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="comment">// New API&#39;s</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00038"></a>00038 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00039"></a>00039     <a class="code" href="rs__element_8rsh.html#a2ecab064ea2b720bc3af27b523388f31">rsElementGetSubElementCount</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a> e);
-<a name="l00040"></a>00040 
-<a name="l00049"></a>00049 extern <a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a> __attribute__((overloadable))
-<a name="l00050"></a>00050     <a class="code" href="rs__element_8rsh.html#a8c690bce7d32be759fd787740c270c92">rsElementGetSubElement</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a>, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00051"></a>00051 
-<a name="l00061"></a>00061 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00062"></a>00062     <a class="code" href="rs__element_8rsh.html#a94834eb1d91b50a5df3cbe161c22e37d">rsElementGetSubElementNameLength</a>(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00063"></a>00063 
-<a name="l00075"></a>00075 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00076"></a>00076     <a class="code" href="rs__element_8rsh.html#a3c1446166c43aa6ba3d5359f6c982f02">rsElementGetSubElementName</a>(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index, <span class="keywordtype">char</span> *name, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> nameLength);
-<a name="l00077"></a>00077 
-<a name="l00088"></a>00088 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00089"></a>00089     <a class="code" href="rs__element_8rsh.html#a9c3140c18139db451279d9b221808eee">rsElementGetSubElementArraySize</a>(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00090"></a>00090 
-<a name="l00100"></a>00100 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00101"></a>00101     <a class="code" href="rs__element_8rsh.html#a840d53f1e91bb6887b40a4d8983c53ed">rsElementGetSubElementOffsetBytes</a>(rs_element e, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00102"></a>00102 
-<a name="l00109"></a>00109 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00110"></a>00110     <a class="code" href="rs__element_8rsh.html#ac54592168af5896d3fba5283af286f98">rsElementGetBytesSize</a>(rs_element e);
-<a name="l00111"></a>00111 
-<a name="l00118"></a>00118 extern <a class="code" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647" title="Enumeration for possible element data types.">rs_data_type</a> __attribute__((overloadable))
-<a name="l00119"></a>00119     <a class="code" href="rs__element_8rsh.html#a9a3569d242be363517ea2354d98cf382">rsElementGetDataType</a>(rs_element e);
-<a name="l00120"></a>00120 
-<a name="l00127"></a>00127 extern <a class="code" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a" title="Enumeration for possible element data kind.">rs_data_kind</a> __attribute__((overloadable))
-<a name="l00128"></a>00128     <a class="code" href="rs__element_8rsh.html#af072702a530e158093d69353072da5f9">rsElementGetDataKind</a>(rs_element e);
-<a name="l00129"></a>00129 
-<a name="l00137"></a>00137 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00138"></a>00138     <a class="code" href="rs__element_8rsh.html#a727997de25ae43c07dffcfd484928d53">rsElementGetVectorSize</a>(rs_element e);
-<a name="l00139"></a>00139 
-<a name="l00140"></a>00140 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00141"></a>00141 <span class="preprocessor"></span>
-<a name="l00142"></a>00142 <span class="preprocessor">#endif // __RS_ELEMENT_RSH__</span>
-<a name="l00143"></a>00143 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__graphics_8rsh.html b/docs/html/reference/renderscript/rs__graphics_8rsh.html
deleted file mode 100644
index de62965..0000000
--- a/docs/html/reference/renderscript/rs__graphics_8rsh.html
+++ /dev/null
@@ -1,1435 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_graphics.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">rs_graphics.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<div class="textblock"><code>#include &quot;<a class="el" href="rs__mesh_8rsh_source.html">rs_mesh.rsh</a>&quot;</code><br/>
-<code>#include &quot;<a class="el" href="rs__program_8rsh_source.html">rs_program.rsh</a>&quot;</code><br/>
-</div><table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> pf)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rsgBindProgramStore</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rsgBindProgramVertex</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> pv)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rsgBindProgramRaster</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> pr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rsgBindSampler</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__sampler.html">rs_sampler</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rsgBindTexture</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rsgProgramVertexLoadProjectionMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *proj)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rsgProgramVertexLoadModelMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *model)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *tex)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *proj)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> pf, float r, float g, float b, float a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rsgBindConstant</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> ps, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__allocation.html">rs_allocation</a> c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a516131032d384bae5be9afa19a257033">rsgBindConstant</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> pv, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="el" href="structrs__allocation.html">rs_allocation</a> c)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> alloc)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rsgDrawRect</a> (float x1, float y1, float x2, float y2, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rsgDrawQuad</a> (float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rsgDrawQuadTexCoords</a> (float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rsgDrawSpriteScreenspace</a> (float x, float y, float z, float w, float h)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> ism)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a621abfc693fed028b5dc74826453142d">rsgDrawMesh</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> ism, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ab2704a6d16e3d7983524d0a8413c1b8a">rsgDrawMesh</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> ism, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> start, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rsgClearColor</a> (float r, float g, float b, float a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rsgClearDepth</a> (float value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a> (const char *, int x, int y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ac5e84fd253b4b1d2b0e11a7a0a7df945">rsgDrawText</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, int x, int y)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rsgBindFont</a> (<a class="el" href="structrs__font.html">rs_font</a> font)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rsgFontColor</a> (float r, float g, float b, float a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a> (const char *, int *left, int *right, int *top, int *bottom)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a2abb920283b1dafa9059de488143a870">rsgMeasureText</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>, int *left, int *right, int *top, int *bottom)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> mesh, float *minX, float *minY, float *minZ, float *maxX, float *maxY, float *maxZ)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static __inline__ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__graphics_8rsh.html#a6058b6b6c8b94f96f03dc8bca6a2090b">rsgMeshComputeBoundingBox</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> mesh, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMin, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMax)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Renderscript graphics API. </p>
-<p>A set of graphics functions used by Renderscript. </p>
-
-<p>Definition in file <a class="el" href="rs__graphics_8rsh_source.html">rs_graphics.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a647228d8e15da6ad67a97701d920dcac"></a><!-- doxytag: member="rs_graphics.rsh::rsgAllocationSyncAll" ref="a647228d8e15da6ad67a97701d920dcac" args="(rs_allocation alloc)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgAllocationSyncAll </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>alloc</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Sync the contents of an allocation from its SCRIPT memory space to its HW memory spaces.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">alloc</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a46208900d16287fde91a5d14ebc830dc"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindConstant" ref="a46208900d16287fde91a5d14ebc830dc" args="(rs_program_fragment ps, uint slot, rs_allocation c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindConstant </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname"><em>ps</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>slot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>c</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new Allocation object to a ProgramFragment. The Allocation must be a valid constant input for the Program.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program object </td></tr>
-    <tr><td class="paramname">slot</td><td>index of the constant buffer on the program </td></tr>
-    <tr><td class="paramname">c</td><td>constants to bind </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a516131032d384bae5be9afa19a257033"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindConstant" ref="a516131032d384bae5be9afa19a257033" args="(rs_program_vertex pv, uint slot, rs_allocation c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindConstant </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
-          <td class="paramname"><em>pv</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>slot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>c</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new Allocation object to a ProgramVertex. The Allocation must be a valid constant input for the Program.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pv</td><td>program object </td></tr>
-    <tr><td class="paramname">slot</td><td>index of the constant buffer on the program </td></tr>
-    <tr><td class="paramname">c</td><td>constants to bind </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae89effef281e92e2940055883ea366d4"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindFont" ref="ae89effef281e92e2940055883ea366d4" args="(rs_font font)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindFont </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a>&#160;</td>
-          <td class="paramname"><em>font</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Binds the font object to be used for all subsequent font rendering calls </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">font</td><td>object to bind </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9f8deb600729a83c39c5bcaba2152b9c"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramFragment" ref="a9f8deb600729a83c39c5bcaba2152b9c" args="(rs_program_fragment pf)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindProgramFragment </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname"><em>pf</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new ProgramFragment to the rendering context.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pf</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a391eb5535544f6312c724b910da6ec35"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramRaster" ref="a391eb5535544f6312c724b910da6ec35" args="(rs_program_raster pr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindProgramRaster </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
-          <td class="paramname"><em>pr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new ProgramRaster to the rendering context.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pr</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a34dfa6eddd7454fc1865222c5a022315"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramStore" ref="a34dfa6eddd7454fc1865222c5a022315" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindProgramStore </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new ProgramStore to the rendering context.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a894e26d0d05d3ef99be65ddf98dd901c"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindProgramVertex" ref="a894e26d0d05d3ef99be65ddf98dd901c" args="(rs_program_vertex pv)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindProgramVertex </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
-          <td class="paramname"><em>pv</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new ProgramVertex to the rendering context.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pv</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4ade6c5acbf6acaa1c29a1aecc6e87d3"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindSampler" ref="a4ade6c5acbf6acaa1c29a1aecc6e87d3" args="(rs_program_fragment, uint slot, rs_sampler)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindSampler </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>slot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new Sampler object to a ProgramFragment. The sampler will operate on the texture bound at the matching slot.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">slot</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1694eb5489bd3a444da921dbf16aeeb5"></a><!-- doxytag: member="rs_graphics.rsh::rsgBindTexture" ref="a1694eb5489bd3a444da921dbf16aeeb5" args="(rs_program_fragment, uint slot, rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgBindTexture </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>slot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname">&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Bind a new Allocation object to a ProgramFragment. The Allocation must be a valid texture for the Program. The sampling of the texture will be controled by the Sampler bound at the matching slot.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">slot</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a147674fed92745fbb5c64a6300ca3c49"></a><!-- doxytag: member="rs_graphics.rsh::rsgClearColor" ref="a147674fed92745fbb5c64a6300ca3c49" args="(float r, float g, float b, float a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgClearColor </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>g</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>a</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Clears the rendering surface to the specified color.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">r</td><td></td></tr>
-    <tr><td class="paramname">g</td><td></td></tr>
-    <tr><td class="paramname">b</td><td></td></tr>
-    <tr><td class="paramname">a</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4bedb06e8facd587e3eacd746fe3e727"></a><!-- doxytag: member="rs_graphics.rsh::rsgClearDepth" ref="a4bedb06e8facd587e3eacd746fe3e727" args="(float value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgClearDepth </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>value</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Clears the depth suface to the specified value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6f8b87c994810908fbe5e01f8f63f9af"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawMesh" ref="a6f8b87c994810908fbe5e01f8f63f9af" args="(rs_mesh ism)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawMesh </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>ism</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Draw a mesh using the current context state. The whole mesh is rendered.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ism</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a621abfc693fed028b5dc74826453142d"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawMesh" ref="a621abfc693fed028b5dc74826453142d" args="(rs_mesh ism, uint primitiveIndex)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawMesh </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>ism</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>primitiveIndex</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Draw part of a mesh using the current context state. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ism</td><td>mesh object to render </td></tr>
-    <tr><td class="paramname">primitiveIndex</td><td>for meshes that contain multiple primitive groups this parameter specifies the index of the group to draw. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab2704a6d16e3d7983524d0a8413c1b8a"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawMesh" ref="ab2704a6d16e3d7983524d0a8413c1b8a" args="(rs_mesh ism, uint primitiveIndex, uint start, uint len)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawMesh </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>ism</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>primitiveIndex</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>start</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>len</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Draw specified index range of part of a mesh using the current context state. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ism</td><td>mesh object to render </td></tr>
-    <tr><td class="paramname">primitiveIndex</td><td>for meshes that contain multiple primitive groups this parameter specifies the index of the group to draw. </td></tr>
-    <tr><td class="paramname">start</td><td>starting index in the range </td></tr>
-    <tr><td class="paramname">len</td><td>number of indices to draw </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad6953da0349e58547b08b8ce174ed3fc"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawQuad" ref="ad6953da0349e58547b08b8ce174ed3fc" args="(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawQuad </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z4</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Low performance utility function for drawing a simple quad. Not intended for drawing large quantities of geometry.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x1</td><td></td></tr>
-    <tr><td class="paramname">y1</td><td></td></tr>
-    <tr><td class="paramname">z1</td><td></td></tr>
-    <tr><td class="paramname">x2</td><td></td></tr>
-    <tr><td class="paramname">y2</td><td></td></tr>
-    <tr><td class="paramname">z2</td><td></td></tr>
-    <tr><td class="paramname">x3</td><td></td></tr>
-    <tr><td class="paramname">y3</td><td></td></tr>
-    <tr><td class="paramname">z3</td><td></td></tr>
-    <tr><td class="paramname">x4</td><td></td></tr>
-    <tr><td class="paramname">y4</td><td></td></tr>
-    <tr><td class="paramname">z4</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb98a59bb9f878f0a09459567c269e64"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawQuadTexCoords" ref="afb98a59bb9f878f0a09459567c269e64" args="(float x1, float y1, float z1, float u1, float v1, float x2, float y2, float z2, float u2, float v2, float x3, float y3, float z3, float u3, float v3, float x4, float y4, float z4, float u4, float v4)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawQuadTexCoords </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>u1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>u2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>u3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v3</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>u4</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v4</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Low performance utility function for drawing a textured quad. Not intended for drawing large quantities of geometry.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x1</td><td></td></tr>
-    <tr><td class="paramname">y1</td><td></td></tr>
-    <tr><td class="paramname">z1</td><td></td></tr>
-    <tr><td class="paramname">u1</td><td></td></tr>
-    <tr><td class="paramname">v1</td><td></td></tr>
-    <tr><td class="paramname">x2</td><td></td></tr>
-    <tr><td class="paramname">y2</td><td></td></tr>
-    <tr><td class="paramname">z2</td><td></td></tr>
-    <tr><td class="paramname">u2</td><td></td></tr>
-    <tr><td class="paramname">v2</td><td></td></tr>
-    <tr><td class="paramname">x3</td><td></td></tr>
-    <tr><td class="paramname">y3</td><td></td></tr>
-    <tr><td class="paramname">z3</td><td></td></tr>
-    <tr><td class="paramname">u3</td><td></td></tr>
-    <tr><td class="paramname">v3</td><td></td></tr>
-    <tr><td class="paramname">x4</td><td></td></tr>
-    <tr><td class="paramname">y4</td><td></td></tr>
-    <tr><td class="paramname">z4</td><td></td></tr>
-    <tr><td class="paramname">u4</td><td></td></tr>
-    <tr><td class="paramname">v4</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a80c51849bf12ec6c699c23c3fa3e6208"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawRect" ref="a80c51849bf12ec6c699c23c3fa3e6208" args="(float x1, float y1, float x2, float y2, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawRect </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y2</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Low performance utility function for drawing a simple rectangle. Not intended for drawing large quantities of geometry.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x1</td><td></td></tr>
-    <tr><td class="paramname">y1</td><td></td></tr>
-    <tr><td class="paramname">x2</td><td></td></tr>
-    <tr><td class="paramname">y2</td><td></td></tr>
-    <tr><td class="paramname">z</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a07d15127330fa1dff6c99b0d7d14e65e"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawSpriteScreenspace" ref="a07d15127330fa1dff6c99b0d7d14e65e" args="(float x, float y, float z, float w, float h)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawSpriteScreenspace </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>w</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>h</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Low performance function for drawing rectangles in screenspace. This function uses the default passthough ProgramVertex. Any bound ProgramVertex is ignored. This function has considerable overhead and should not be used for drawing in shipping applications.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">x</td><td></td></tr>
-    <tr><td class="paramname">y</td><td></td></tr>
-    <tr><td class="paramname">z</td><td></td></tr>
-    <tr><td class="paramname">w</td><td></td></tr>
-    <tr><td class="paramname">h</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afaec82492762e62cad1ff53ada479b14"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawText" ref="afaec82492762e62cad1ff53ada479b14" args="(const char *, int x, int y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawText </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Draws text given a string and location </p>
-
-</div>
-</div>
-<a class="anchor" id="ac5e84fd253b4b1d2b0e11a7a0a7df945"></a><!-- doxytag: member="rs_graphics.rsh::rsgDrawText" ref="ac5e84fd253b4b1d2b0e11a7a0a7df945" args="(rs_allocation, int x, int y)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgDrawText </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>y</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="abda8c344092ed6310c7a8f353a6df876"></a><!-- doxytag: member="rs_graphics.rsh::rsgFontColor" ref="abda8c344092ed6310c7a8f353a6df876" args="(float r, float g, float b, float a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgFontColor </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>g</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>a</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Sets the font color for all subsequent rendering calls </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">r</td><td>red component </td></tr>
-    <tr><td class="paramname">g</td><td>green component </td></tr>
-    <tr><td class="paramname">b</td><td>blue component </td></tr>
-    <tr><td class="paramname">a</td><td>alpha component </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7e6565cd5d5e44f442a8bf8ba68f4681"></a><!-- doxytag: member="rs_graphics.rsh::rsgGetHeight" ref="a7e6565cd5d5e44f442a8bf8ba68f4681" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> rsgGetHeight </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get the height of the current rendering surface.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a67f4ed1ca4bba27d5c952ada89cd0717"></a><!-- doxytag: member="rs_graphics.rsh::rsgGetWidth" ref="a67f4ed1ca4bba27d5c952ada89cd0717" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> rsgGetWidth </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get the width of the current rendering surface.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uint </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a5c599f4ea989f3d0616cbf8e983688c4"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeasureText" ref="a5c599f4ea989f3d0616cbf8e983688c4" args="(const char *, int *left, int *right, int *top, int *bottom)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgMeasureText </td>
-          <td>(</td>
-          <td class="paramtype">const char *&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>left</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>right</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>top</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>bottom</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the bounding box of the text relative to (0, 0) Any of left, right, top, bottom could be NULL </p>
-
-</div>
-</div>
-<a class="anchor" id="a2abb920283b1dafa9059de488143a870"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeasureText" ref="a2abb920283b1dafa9059de488143a870" args="(rs_allocation, int *left, int *right, int *top, int *bottom)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgMeasureText </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname">, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>left</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>right</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>top</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int *&#160;</td>
-          <td class="paramname"><em>bottom</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0978c54902dd1d60180f8dbb0b781105"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeshComputeBoundingBox" ref="a0978c54902dd1d60180f8dbb0b781105" args="(rs_mesh mesh, float *minX, float *minY, float *minZ, float *maxX, float *maxY, float *maxZ)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgMeshComputeBoundingBox </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>mesh</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>minX</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>minY</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>minZ</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>maxX</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>maxY</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float *&#160;</td>
-          <td class="paramname"><em>maxZ</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Computes an axis aligned bounding box of a mesh object </p>
-
-</div>
-</div>
-<a class="anchor" id="a6058b6b6c8b94f96f03dc8bca6a2090b"></a><!-- doxytag: member="rs_graphics.rsh::rsgMeshComputeBoundingBox" ref="a6058b6b6c8b94f96f03dc8bca6a2090b" args="(rs_mesh mesh, float3 *bBoxMin, float3 *bBoxMax)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static __inline__ void rsgMeshComputeBoundingBox </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>mesh</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *&#160;</td>
-          <td class="paramname"><em>bBoxMin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *&#160;</td>
-          <td class="paramname"><em>bBoxMax</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-<p>Definition at line <a class="el" href="rs__graphics_8rsh_source.html#l00409">409</a> of file <a class="el" href="rs__graphics_8rsh_source.html">rs_graphics.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a35ac8c3759e25047e6a458c15520c887"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramFragmentConstantColor" ref="a35ac8c3759e25047e6a458c15520c887" args="(rs_program_fragment pf, float r, float g, float b, float a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgProgramFragmentConstantColor </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname"><em>pf</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>g</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>a</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set the constant color for a fixed function emulation program.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pf</td><td></td></tr>
-    <tr><td class="paramname">r</td><td></td></tr>
-    <tr><td class="paramname">g</td><td></td></tr>
-    <tr><td class="paramname">b</td><td></td></tr>
-    <tr><td class="paramname">a</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2b767d209b36ffcd2e0fc0cf6f4c5706"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexGetProjectionMatrix" ref="a2b767d209b36ffcd2e0fc0cf6f4c5706" args="(rs_matrix4x4 *proj)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgProgramVertexGetProjectionMatrix </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>proj</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get the projection matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">proj</td><td>matrix to store the current projection matrix into </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a976b8594cccb4b94d7ce520b44d884e3"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexLoadModelMatrix" ref="a976b8594cccb4b94d7ce520b44d884e3" args="(const rs_matrix4x4 *model)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgProgramVertexLoadModelMatrix </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>model</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load the model matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">model</td><td>model matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a83a87d8efa3f26ed3f8fb25e49f29059"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexLoadProjectionMatrix" ref="a83a87d8efa3f26ed3f8fb25e49f29059" args="(const rs_matrix4x4 *proj)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgProgramVertexLoadProjectionMatrix </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>proj</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load the projection matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">proj</td><td>projection matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a377b7b394c4bf0881532b1241d4be168"></a><!-- doxytag: member="rs_graphics.rsh::rsgProgramVertexLoadTextureMatrix" ref="a377b7b394c4bf0881532b1241d4be168" args="(const rs_matrix4x4 *tex)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsgProgramVertexLoadTextureMatrix </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>tex</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load the texture matrix for a currently bound fixed function vertex program. Calling this function with a custom vertex shader would result in an error. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">tex</td><td>texture matrix </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__graphics_8rsh_source.html b/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
deleted file mode 100644
index 9f673bd..0000000
--- a/docs/html/reference/renderscript/rs__graphics_8rsh_source.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_graphics.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_graphics.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__graphics_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011-2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_GRAPHICS_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_GRAPHICS_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;<a class="code" href="rs__mesh_8rsh.html" title="Mesh routines.">rs_mesh.rsh</a>&quot;</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;<a class="code" href="rs__program_8rsh.html" title="Program object routines.">rs_program.rsh</a>&quot;</span>
-<a name="l00028"></a>00028 
-<a name="l00029"></a>00029 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span>
-<a name="l00035"></a>00035 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00036"></a>00036     rsgBindColorTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> colorTarget, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
-<a name="l00037"></a>00037 
-<a name="l00042"></a>00042 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00043"></a>00043     rsgClearColorTarget(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot);
-<a name="l00044"></a>00044 
-<a name="l00049"></a>00049 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00050"></a>00050     rsgBindDepthTarget(<a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a> depthTarget);
-<a name="l00051"></a>00051 
-<a name="l00055"></a>00055 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00056"></a>00056     rsgClearDepthTarget(<span class="keywordtype">void</span>);
-<a name="l00057"></a>00057 
-<a name="l00062"></a>00062 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00063"></a>00063     rsgClearAllRenderTargets(<span class="keywordtype">void</span>);
-<a name="l00064"></a>00064 
-<a name="l00068"></a>00068 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
-<a name="l00069"></a>00069     rsgFinish(<span class="keywordtype">void</span>);
-<a name="l00070"></a>00070 
-<a name="l00071"></a>00071 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span>
-<a name="l00078"></a>00078 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00079"></a>00079     <a class="code" href="rs__graphics_8rsh.html#a9f8deb600729a83c39c5bcaba2152b9c">rsgBindProgramFragment</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a> pf);
-<a name="l00080"></a>00080 
-<a name="l00086"></a>00086 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00087"></a>00087     <a class="code" href="rs__graphics_8rsh.html#a34dfa6eddd7454fc1865222c5a022315">rsgBindProgramStore</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a Renderscript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00088"></a>00088 
-<a name="l00094"></a>00094 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00095"></a>00095     <a class="code" href="rs__graphics_8rsh.html#a894e26d0d05d3ef99be65ddf98dd901c">rsgBindProgramVertex</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> pv);
-<a name="l00096"></a>00096 
-<a name="l00102"></a>00102 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00103"></a>00103     <a class="code" href="rs__graphics_8rsh.html#a391eb5535544f6312c724b910da6ec35">rsgBindProgramRaster</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a Renderscript ProgramRaster object.">rs_program_raster</a> pr);
-<a name="l00104"></a>00104 
-<a name="l00111"></a>00111 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00112"></a>00112     <a class="code" href="rs__graphics_8rsh.html#a4ade6c5acbf6acaa1c29a1aecc6e87d3">rsgBindSampler</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a Renderscript ProgramFragment object.">rs_program_fragment</a>, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__sampler.html" title="Opaque handle to a Renderscript sampler object.">rs_sampler</a>);
-<a name="l00113"></a>00113 
-<a name="l00122"></a>00122 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00123"></a>00123     <a class="code" href="rs__graphics_8rsh.html#a1694eb5489bd3a444da921dbf16aeeb5">rsgBindTexture</a>(rs_program_fragment, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, <a class="code" href="structrs__allocation.html" title="Opaque handle to a Renderscript allocation.">rs_allocation</a>);
-<a name="l00124"></a>00124 
-<a name="l00131"></a>00131 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00132"></a>00132     <a class="code" href="rs__graphics_8rsh.html#a83a87d8efa3f26ed3f8fb25e49f29059">rsgProgramVertexLoadProjectionMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
-<a name="l00139"></a>00139 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00140"></a>00140     <a class="code" href="rs__graphics_8rsh.html#a976b8594cccb4b94d7ce520b44d884e3">rsgProgramVertexLoadModelMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *model);
-<a name="l00147"></a>00147 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00148"></a>00148     <a class="code" href="rs__graphics_8rsh.html#a377b7b394c4bf0881532b1241d4be168">rsgProgramVertexLoadTextureMatrix</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *tex);
-<a name="l00155"></a>00155 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00156"></a>00156     <a class="code" href="rs__graphics_8rsh.html#a2b767d209b36ffcd2e0fc0cf6f4c5706">rsgProgramVertexGetProjectionMatrix</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *proj);
-<a name="l00157"></a>00157 
-<a name="l00167"></a>00167 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00168"></a>00168     <a class="code" href="rs__graphics_8rsh.html#a35ac8c3759e25047e6a458c15520c887">rsgProgramFragmentConstantColor</a>(rs_program_fragment pf, <span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00169"></a>00169 
-<a name="l00178"></a>00178 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00179"></a>00179     <a class="code" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rsgBindConstant</a>(rs_program_fragment ps, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, rs_allocation c);
-<a name="l00180"></a>00180 
-<a name="l00189"></a>00189 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00190"></a>00190     <a class="code" href="rs__graphics_8rsh.html#a46208900d16287fde91a5d14ebc830dc">rsgBindConstant</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a Renderscript ProgramVertex object.">rs_program_vertex</a> pv, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> slot, rs_allocation c);
-<a name="l00191"></a>00191 
-<a name="l00197"></a>00197 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
-<a name="l00198"></a>00198     <a class="code" href="rs__graphics_8rsh.html#a67f4ed1ca4bba27d5c952ada89cd0717">rsgGetWidth</a>(<span class="keywordtype">void</span>);
-<a name="l00199"></a>00199 
-<a name="l00205"></a>00205 extern <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable))
-<a name="l00206"></a>00206     <a class="code" href="rs__graphics_8rsh.html#a7e6565cd5d5e44f442a8bf8ba68f4681">rsgGetHeight</a>(<span class="keywordtype">void</span>);
-<a name="l00207"></a>00207 
-<a name="l00208"></a>00208 
-<a name="l00215"></a>00215 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00216"></a>00216     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc);
-<a name="l00217"></a>00217 
-<a name="l00218"></a>00218 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00219"></a>00219 <span class="preprocessor"></span>
-<a name="l00227"></a>00227 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00228"></a>00228     <a class="code" href="rs__graphics_8rsh.html#a647228d8e15da6ad67a97701d920dcac">rsgAllocationSyncAll</a>(rs_allocation alloc,
-<a name="l00229"></a>00229                          rs_allocation_usage_type source);
-<a name="l00230"></a>00230 
-<a name="l00231"></a>00231 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00232"></a>00232 <span class="preprocessor"></span>
-<a name="l00243"></a>00243 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00244"></a>00244     <a class="code" href="rs__graphics_8rsh.html#a80c51849bf12ec6c699c23c3fa3e6208">rsgDrawRect</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z);
-<a name="l00245"></a>00245 
-<a name="l00263"></a>00263 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00264"></a>00264     <a class="code" href="rs__graphics_8rsh.html#ad6953da0349e58547b08b8ce174ed3fc">rsgDrawQuad</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1,
-<a name="l00265"></a>00265                 <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2,
-<a name="l00266"></a>00266                 <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3,
-<a name="l00267"></a>00267                 <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4);
-<a name="l00268"></a>00268 
-<a name="l00269"></a>00269 
-<a name="l00295"></a>00295 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00296"></a>00296     <a class="code" href="rs__graphics_8rsh.html#afb98a59bb9f878f0a09459567c269e64">rsgDrawQuadTexCoords</a>(<span class="keywordtype">float</span> x1, <span class="keywordtype">float</span> y1, <span class="keywordtype">float</span> z1, <span class="keywordtype">float</span> u1, <span class="keywordtype">float</span> v1,
-<a name="l00297"></a>00297                          <span class="keywordtype">float</span> x2, <span class="keywordtype">float</span> y2, <span class="keywordtype">float</span> z2, <span class="keywordtype">float</span> u2, <span class="keywordtype">float</span> v2,
-<a name="l00298"></a>00298                          <span class="keywordtype">float</span> x3, <span class="keywordtype">float</span> y3, <span class="keywordtype">float</span> z3, <span class="keywordtype">float</span> u3, <span class="keywordtype">float</span> v3,
-<a name="l00299"></a>00299                          <span class="keywordtype">float</span> x4, <span class="keywordtype">float</span> y4, <span class="keywordtype">float</span> z4, <span class="keywordtype">float</span> u4, <span class="keywordtype">float</span> v4);
-<a name="l00300"></a>00300 
-<a name="l00301"></a>00301 
-<a name="l00314"></a>00314 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00315"></a>00315     <a class="code" href="rs__graphics_8rsh.html#a07d15127330fa1dff6c99b0d7d14e65e">rsgDrawSpriteScreenspace</a>(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z, <span class="keywordtype">float</span> w, <span class="keywordtype">float</span> h);
-<a name="l00316"></a>00316 
-<a name="l00317"></a>00317 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00318"></a>00318     rsgDrawPath(<a class="code" href="structrs__path.html" title="Opaque handle to a Renderscript Path object.">rs_path</a> p);
-<a name="l00319"></a>00319 
-<a name="l00326"></a>00326 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00327"></a>00327     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism);
-<a name="l00334"></a>00334 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00335"></a>00335     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex);
-<a name="l00344"></a>00344 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00345"></a>00345     <a class="code" href="rs__graphics_8rsh.html#a6f8b87c994810908fbe5e01f8f63f9af">rsgDrawMesh</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> ism, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> primitiveIndex, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> start, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> len);
-<a name="l00346"></a>00346 
-<a name="l00355"></a>00355 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00356"></a>00356     <a class="code" href="rs__graphics_8rsh.html#a147674fed92745fbb5c64a6300ca3c49">rsgClearColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00357"></a>00357 
-<a name="l00361"></a>00361 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00362"></a>00362     <a class="code" href="rs__graphics_8rsh.html#a4bedb06e8facd587e3eacd746fe3e727">rsgClearDepth</a>(<span class="keywordtype">float</span> value);
-<a name="l00366"></a>00366 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00367"></a>00367     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-<a name="l00371"></a>00371 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00372"></a>00372     <a class="code" href="rs__graphics_8rsh.html#afaec82492762e62cad1ff53ada479b14">rsgDrawText</a>(rs_allocation, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y);
-<a name="l00377"></a>00377 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00378"></a>00378     <a class="code" href="rs__graphics_8rsh.html#ae89effef281e92e2940055883ea366d4">rsgBindFont</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a Renderscript font object.">rs_font</a> font);
-<a name="l00386"></a>00386 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00387"></a>00387     <a class="code" href="rs__graphics_8rsh.html#abda8c344092ed6310c7a8f353a6df876">rsgFontColor</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00392"></a>00392 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00393"></a>00393     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(const <span class="keywordtype">char</span> *, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
-<a name="l00397"></a>00397 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00398"></a>00398     <a class="code" href="rs__graphics_8rsh.html#a5c599f4ea989f3d0616cbf8e983688c4">rsgMeasureText</a>(rs_allocation, <span class="keywordtype">int</span> *left, <span class="keywordtype">int</span> *right, <span class="keywordtype">int</span> *top, <span class="keywordtype">int</span> *bottom);
-<a name="l00402"></a>00402 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00403"></a>00403     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <span class="keywordtype">float</span> *minX, <span class="keywordtype">float</span> *minY, <span class="keywordtype">float</span> *minZ,
-<a name="l00404"></a>00404                                                 <span class="keywordtype">float</span> *maxX, <span class="keywordtype">float</span> *maxY, <span class="keywordtype">float</span> *maxZ);
-<a name="l00408"></a>00408 __inline__ static <span class="keywordtype">void</span> __attribute__((overloadable, always_inline))
-<a name="l00409"></a><a class="code" href="rs__graphics_8rsh.html#a6058b6b6c8b94f96f03dc8bca6a2090b">00409</a> <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a Renderscript mesh object.">rs_mesh</a> mesh, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMin, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> *bBoxMax) {
-<a name="l00410"></a>00410     <span class="keywordtype">float</span> x1, y1, z1, x2, y2, z2;
-<a name="l00411"></a>00411     <a class="code" href="rs__graphics_8rsh.html#a0978c54902dd1d60180f8dbb0b781105">rsgMeshComputeBoundingBox</a>(mesh, &amp;x1, &amp;y1, &amp;z1, &amp;x2, &amp;y2, &amp;z2);
-<a name="l00412"></a>00412     bBoxMin-&gt;x = x1;
-<a name="l00413"></a>00413     bBoxMin-&gt;y = y1;
-<a name="l00414"></a>00414     bBoxMin-&gt;z = z1;
-<a name="l00415"></a>00415     bBoxMax-&gt;x = x2;
-<a name="l00416"></a>00416     bBoxMax-&gt;y = y2;
-<a name="l00417"></a>00417     bBoxMax-&gt;z = z2;
-<a name="l00418"></a>00418 }
-<a name="l00419"></a>00419 
-<a name="l00420"></a>00420 <span class="preprocessor">#endif</span>
-<a name="l00421"></a>00421 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__math_8rsh.html b/docs/html/reference/renderscript/rs__math_8rsh.html
deleted file mode 100644
index 7379f54..0000000
--- a/docs/html/reference/renderscript/rs__math_8rsh.html
+++ /dev/null
@@ -1,679 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_math.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_math.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a> (int max_value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a01edf1cf3cdaecb1629761b69148e189">rsRand</a> (int min_value, int max_value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a03e898d810ac44158e7461b2b2b1c356">rsRand</a> (float max_value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a84b2e7468314873b3aa02969e310d9e4">rsRand</a> (float min_value, float max_value)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rsFrac</a> (float)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a> (<a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> amount, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> low, <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ad5732b8b1f1d0d53d605a7dc6908dc85">rsClamp</a> (int amount, int low, int high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#af5e17f571b13c3391d860eac172be1c6">rsClamp</a> (<a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> amount, <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> low, <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a40eddbf6c2462eada177a581a49bd3c6">rsClamp</a> (short amount, short low, short high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a2845f16757fe9eb7204bfb6f94d7fcc6">rsClamp</a> (<a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> amount, <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> low, <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a33122202f10764687e2d3ab1a8c27062">rsClamp</a> (char amount, char low, char high)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static __inline__ void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rsExtractFrustumPlanes</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *viewProj, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static __inline__ bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rsIsSphereInFrustum</a> (<a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *sphere, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a5e20d326a6e2532d19a493b01f948c17">rsPackColorTo8888</a> (float r, float g, float b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a1f1107cf778cf1f614edfb5b8ac436a0">rsPackColorTo8888</a> (float r, float g, float b, float a)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#ac30a8c020eade2b57fd5966cb7c8665e">rsPackColorTo8888</a> (<a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> color)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__math_8rsh.html#a48bb0c2e7b1f2b62b2a8970c7d709eca">rsUnpackColor8888</a> (<a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> c)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>todo-jsams </p>
-
-<p>Definition in file <a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a5de277f7518a61646c3d74f3a0b9e893"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a5de277f7518a61646c3d74f3a0b9e893" args="(uint amount, uint low, uint high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> rsClamp </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Clamp the value amount between low and high.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">amount</td><td>The value to clamp </td></tr>
-    <tr><td class="paramname">low</td><td></td></tr>
-    <tr><td class="paramname">high</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad5732b8b1f1d0d53d605a7dc6908dc85"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="ad5732b8b1f1d0d53d605a7dc6908dc85" args="(int amount, int low, int high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int rsClamp </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="af5e17f571b13c3391d860eac172be1c6"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="af5e17f571b13c3391d860eac172be1c6" args="(ushort amount, ushort low, ushort high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> rsClamp </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a40eddbf6c2462eada177a581a49bd3c6"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a40eddbf6c2462eada177a581a49bd3c6" args="(short amount, short low, short high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">short rsClamp </td>
-          <td>(</td>
-          <td class="paramtype">short&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">short&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">short&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2845f16757fe9eb7204bfb6f94d7fcc6"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a2845f16757fe9eb7204bfb6f94d7fcc6" args="(uchar amount, uchar low, uchar high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> rsClamp </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a33122202f10764687e2d3ab1a8c27062"></a><!-- doxytag: member="rs_math.rsh::rsClamp" ref="a33122202f10764687e2d3ab1a8c27062" args="(char amount, char low, char high)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">char rsClamp </td>
-          <td>(</td>
-          <td class="paramtype">char&#160;</td>
-          <td class="paramname"><em>amount</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char&#160;</td>
-          <td class="paramname"><em>low</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">char&#160;</td>
-          <td class="paramname"><em>high</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a191f9c687c56322c18b7d71491602122"></a><!-- doxytag: member="rs_math.rsh::rsExtractFrustumPlanes" ref="a191f9c687c56322c18b7d71491602122" args="(const rs_matrix4x4 *viewProj, float4 *left, float4 *right, float4 *top, float4 *bottom, float4 *near, float4 *far)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static __inline__ void rsExtractFrustumPlanes </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>viewProj</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>left</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>right</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>top</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>bottom</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>near</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>far</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Computes 6 frustum planes from the view projection matrix </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">viewProj</td><td>matrix to extract planes from </td></tr>
-    <tr><td class="paramname">left</td><td>plane </td></tr>
-    <tr><td class="paramname">right</td><td>plane </td></tr>
-    <tr><td class="paramname">top</td><td>plane </td></tr>
-    <tr><td class="paramname">bottom</td><td>plane </td></tr>
-    <tr><td class="paramname">near</td><td>plane </td></tr>
-    <tr><td class="paramname">far</td><td>plane </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__math_8rsh_source.html#l00102">102</a> of file <a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac4f127e78da0849321c7f6db14f9e989"></a><!-- doxytag: member="rs_math.rsh::rsFrac" ref="ac4f127e78da0849321c7f6db14f9e989" args="(float)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rsFrac </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the fractional part of a float </p>
-
-</div>
-</div>
-<a class="anchor" id="a7bbeaf44838e08e68d5cf3e3d7b0818c"></a><!-- doxytag: member="rs_math.rsh::rsIsSphereInFrustum" ref="a7bbeaf44838e08e68d5cf3e3d7b0818c" args="(float4 *sphere, float4 *left, float4 *right, float4 *top, float4 *bottom, float4 *near, float4 *far)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static __inline__ bool rsIsSphereInFrustum </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>sphere</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>left</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>right</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>top</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>bottom</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>near</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *&#160;</td>
-          <td class="paramname"><em>far</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Checks if a sphere is withing the 6 frustum planes </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">sphere</td><td>float4 representing the sphere </td></tr>
-    <tr><td class="paramname">left</td><td>plane </td></tr>
-    <tr><td class="paramname">right</td><td>plane </td></tr>
-    <tr><td class="paramname">top</td><td>plane </td></tr>
-    <tr><td class="paramname">bottom</td><td>plane </td></tr>
-    <tr><td class="paramname">near</td><td>plane </td></tr>
-    <tr><td class="paramname">far</td><td>plane </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__math_8rsh_source.html#l00162">162</a> of file <a class="el" href="rs__math_8rsh_source.html">rs_math.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5e20d326a6e2532d19a493b01f948c17"></a><!-- doxytag: member="rs_math.rsh::rsPackColorTo8888" ref="a5e20d326a6e2532d19a493b01f948c17" args="(float r, float g, float b)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> rsPackColorTo8888 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>g</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Pack floating point (0-1) RGB values into a uchar4. The alpha component is set to 255 (1.0).</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">r</td><td></td></tr>
-    <tr><td class="paramname">g</td><td></td></tr>
-    <tr><td class="paramname">b</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4 </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a1f1107cf778cf1f614edfb5b8ac436a0"></a><!-- doxytag: member="rs_math.rsh::rsPackColorTo8888" ref="a1f1107cf778cf1f614edfb5b8ac436a0" args="(float r, float g, float b, float a)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> rsPackColorTo8888 </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>g</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>b</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>a</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Pack floating point (0-1) RGBA values into a uchar4.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">r</td><td></td></tr>
-    <tr><td class="paramname">g</td><td></td></tr>
-    <tr><td class="paramname">b</td><td></td></tr>
-    <tr><td class="paramname">a</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4 </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ac30a8c020eade2b57fd5966cb7c8665e"></a><!-- doxytag: member="rs_math.rsh::rsPackColorTo8888" ref="ac30a8c020eade2b57fd5966cb7c8665e" args="(float3 color)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> rsPackColorTo8888 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
-          <td class="paramname"><em>color</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Pack floating point (0-1) RGB values into a uchar4. The alpha component is set to 255 (1.0).</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">color</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4</dd></dl>
-<p>Pack floating point (0-1) RGBA values into a uchar4.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">color</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>uchar4 </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ad9106e5aae5b1248870f21061f36a1c9"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="ad9106e5aae5b1248870f21061f36a1c9" args="(int max_value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int rsRand </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>max_value</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Return a random value between 0 (or min_value) and max_malue. </p>
-
-</div>
-</div>
-<a class="anchor" id="a01edf1cf3cdaecb1629761b69148e189"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="a01edf1cf3cdaecb1629761b69148e189" args="(int min_value, int max_value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int rsRand </td>
-          <td>(</td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>min_value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int&#160;</td>
-          <td class="paramname"><em>max_value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a03e898d810ac44158e7461b2b2b1c356"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="a03e898d810ac44158e7461b2b2b1c356" args="(float max_value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rsRand </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>max_value</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a84b2e7468314873b3aa02969e310d9e4"></a><!-- doxytag: member="rs_math.rsh::rsRand" ref="a84b2e7468314873b3aa02969e310d9e4" args="(float min_value, float max_value)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rsRand </td>
-          <td>(</td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>min_value</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>max_value</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a48bb0c2e7b1f2b62b2a8970c7d709eca"></a><!-- doxytag: member="rs_math.rsh::rsUnpackColor8888" ref="a48bb0c2e7b1f2b62b2a8970c7d709eca" args="(uchar4 c)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsUnpackColor8888 </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a>&#160;</td>
-          <td class="paramname"><em>c</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Unpack a uchar4 color to float4. The resulting float range will be (0-1).</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">c</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>float4 </dd></dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__math_8rsh_source.html b/docs/html/reference/renderscript/rs__math_8rsh_source.html
deleted file mode 100644
index 513ce48..0000000
--- a/docs/html/reference/renderscript/rs__math_8rsh_source.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_math.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_math.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__math_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __RS_MATH_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __RS_MATH_RSH__</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span>
-<a name="l00027"></a>00027 
-<a name="l00031"></a>00031 <span class="keyword">extern</span> <span class="keywordtype">int</span> __attribute__((overloadable))
-<a name="l00032"></a>00032     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">int</span> max_value);
-<a name="l00036"></a>00036 extern <span class="keywordtype">int</span> __attribute__((overloadable))
-<a name="l00037"></a>00037     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">int</span> min_value, <span class="keywordtype">int</span> max_value);
-<a name="l00041"></a>00041 extern <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00042"></a>00042     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">float</span> max_value);
-<a name="l00046"></a>00046 extern <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00047"></a>00047     <a class="code" href="rs__math_8rsh.html#ad9106e5aae5b1248870f21061f36a1c9">rsRand</a>(<span class="keywordtype">float</span> min_value, <span class="keywordtype">float</span> max_value);
-<a name="l00048"></a>00048 
-<a name="l00052"></a>00052 extern <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00053"></a>00053     <a class="code" href="rs__math_8rsh.html#ac4f127e78da0849321c7f6db14f9e989">rsFrac</a>(<span class="keywordtype">float</span>);
-<a name="l00054"></a>00054 
-<a name="l00055"></a>00055 
-<a name="l00057"></a>00057 <span class="comment">// int ops</span>
-<a name="l00059"></a>00059 <span class="comment"></span>
-<a name="l00067"></a>00067 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a>(<a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> amount, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> low, <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> high);
-<a name="l00068"></a>00068 
-<a name="l00072"></a>00072 _RS_RUNTIME <span class="keywordtype">int</span> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a>(<span class="keywordtype">int</span> amount, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high);
-<a name="l00076"></a>00076 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a>(<a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> amount, <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> low, <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> high);
-<a name="l00080"></a>00080 _RS_RUNTIME <span class="keywordtype">short</span> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a>(<span class="keywordtype">short</span> amount, <span class="keywordtype">short</span> low, <span class="keywordtype">short</span> high);
-<a name="l00084"></a>00084 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a>(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> amount, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> low, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> high);
-<a name="l00088"></a>00088 _RS_RUNTIME <span class="keywordtype">char</span> __attribute__((overloadable, always_inline)) <a class="code" href="rs__math_8rsh.html#a5de277f7518a61646c3d74f3a0b9e893">rsClamp</a>(<span class="keywordtype">char</span> amount, <span class="keywordtype">char</span> low, <span class="keywordtype">char</span> high);
-<a name="l00089"></a>00089 
-<a name="l00090"></a>00090 
-<a name="l00101"></a>00101 __inline__ static <span class="keywordtype">void</span> __attribute__((overloadable, always_inline))
-<a name="l00102"></a><a class="code" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">00102</a> <a class="code" href="rs__math_8rsh.html#a191f9c687c56322c18b7d71491602122">rsExtractFrustumPlanes</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *viewProj,
-<a name="l00103"></a>00103                          <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right,
-<a name="l00104"></a>00104                          <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom,
-<a name="l00105"></a>00105                          <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far) {
-<a name="l00106"></a>00106     <span class="comment">// x y z w = a b c d in the plane equation</span>
-<a name="l00107"></a>00107     left-&gt;x = viewProj-&gt;m[3] + viewProj-&gt;m[0];
-<a name="l00108"></a>00108     left-&gt;y = viewProj-&gt;m[7] + viewProj-&gt;m[4];
-<a name="l00109"></a>00109     left-&gt;z = viewProj-&gt;m[11] + viewProj-&gt;m[8];
-<a name="l00110"></a>00110     left-&gt;w = viewProj-&gt;m[15] + viewProj-&gt;m[12];
-<a name="l00111"></a>00111 
-<a name="l00112"></a>00112     right-&gt;x = viewProj-&gt;m[3] - viewProj-&gt;m[0];
-<a name="l00113"></a>00113     right-&gt;y = viewProj-&gt;m[7] - viewProj-&gt;m[4];
-<a name="l00114"></a>00114     right-&gt;z = viewProj-&gt;m[11] - viewProj-&gt;m[8];
-<a name="l00115"></a>00115     right-&gt;w = viewProj-&gt;m[15] - viewProj-&gt;m[12];
-<a name="l00116"></a>00116 
-<a name="l00117"></a>00117     top-&gt;x = viewProj-&gt;m[3] - viewProj-&gt;m[1];
-<a name="l00118"></a>00118     top-&gt;y = viewProj-&gt;m[7] - viewProj-&gt;m[5];
-<a name="l00119"></a>00119     top-&gt;z = viewProj-&gt;m[11] - viewProj-&gt;m[9];
-<a name="l00120"></a>00120     top-&gt;w = viewProj-&gt;m[15] - viewProj-&gt;m[13];
-<a name="l00121"></a>00121 
-<a name="l00122"></a>00122     bottom-&gt;x = viewProj-&gt;m[3] + viewProj-&gt;m[1];
-<a name="l00123"></a>00123     bottom-&gt;y = viewProj-&gt;m[7] + viewProj-&gt;m[5];
-<a name="l00124"></a>00124     bottom-&gt;z = viewProj-&gt;m[11] + viewProj-&gt;m[9];
-<a name="l00125"></a>00125     bottom-&gt;w = viewProj-&gt;m[15] + viewProj-&gt;m[13];
-<a name="l00126"></a>00126 
-<a name="l00127"></a>00127     near-&gt;x = viewProj-&gt;m[3] + viewProj-&gt;m[2];
-<a name="l00128"></a>00128     near-&gt;y = viewProj-&gt;m[7] + viewProj-&gt;m[6];
-<a name="l00129"></a>00129     near-&gt;z = viewProj-&gt;m[11] + viewProj-&gt;m[10];
-<a name="l00130"></a>00130     near-&gt;w = viewProj-&gt;m[15] + viewProj-&gt;m[14];
-<a name="l00131"></a>00131 
-<a name="l00132"></a>00132     far-&gt;x = viewProj-&gt;m[3] - viewProj-&gt;m[2];
-<a name="l00133"></a>00133     far-&gt;y = viewProj-&gt;m[7] - viewProj-&gt;m[6];
-<a name="l00134"></a>00134     far-&gt;z = viewProj-&gt;m[11] - viewProj-&gt;m[10];
-<a name="l00135"></a>00135     far-&gt;w = viewProj-&gt;m[15] - viewProj-&gt;m[14];
-<a name="l00136"></a>00136 
-<a name="l00137"></a>00137     <span class="keywordtype">float</span> len = <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(left-&gt;xyz);
-<a name="l00138"></a>00138     *left /= len;
-<a name="l00139"></a>00139     len = <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(right-&gt;xyz);
-<a name="l00140"></a>00140     *right /= len;
-<a name="l00141"></a>00141     len = <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(top-&gt;xyz);
-<a name="l00142"></a>00142     *top /= len;
-<a name="l00143"></a>00143     len = <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(bottom-&gt;xyz);
-<a name="l00144"></a>00144     *bottom /= len;
-<a name="l00145"></a>00145     len = <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(near-&gt;xyz);
-<a name="l00146"></a>00146     *near /= len;
-<a name="l00147"></a>00147     len = <a class="code" href="rs__cl_8rsh.html#a902d4d2fab31ba8f9631b1f681e99baa">length</a>(far-&gt;xyz);
-<a name="l00148"></a>00148     *far /= len;
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150 
-<a name="l00161"></a>00161 __inline__ <span class="keyword">static</span> <span class="keywordtype">bool</span> __attribute__((overloadable, always_inline))
-<a name="l00162"></a><a class="code" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">00162</a> <a class="code" href="rs__math_8rsh.html#a7bbeaf44838e08e68d5cf3e3d7b0818c">rsIsSphereInFrustum</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *sphere,
-<a name="l00163"></a>00163                       <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *left, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *right,
-<a name="l00164"></a>00164                       <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *top, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *bottom,
-<a name="l00165"></a>00165                       <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *near, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> *far) {
-<a name="l00166"></a>00166 
-<a name="l00167"></a>00167     <span class="keywordtype">float</span> distToCenter = <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(left-&gt;xyz, sphere-&gt;xyz) + left-&gt;w;
-<a name="l00168"></a>00168     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
-<a name="l00169"></a>00169         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00170"></a>00170     }
-<a name="l00171"></a>00171     distToCenter = <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(right-&gt;xyz, sphere-&gt;xyz) + right-&gt;w;
-<a name="l00172"></a>00172     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
-<a name="l00173"></a>00173         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00174"></a>00174     }
-<a name="l00175"></a>00175     distToCenter = <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(top-&gt;xyz, sphere-&gt;xyz) + top-&gt;w;
-<a name="l00176"></a>00176     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
-<a name="l00177"></a>00177         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00178"></a>00178     }
-<a name="l00179"></a>00179     distToCenter = <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(bottom-&gt;xyz, sphere-&gt;xyz) + bottom-&gt;w;
-<a name="l00180"></a>00180     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
-<a name="l00181"></a>00181         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00182"></a>00182     }
-<a name="l00183"></a>00183     distToCenter = <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(near-&gt;xyz, sphere-&gt;xyz) + near-&gt;w;
-<a name="l00184"></a>00184     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
-<a name="l00185"></a>00185         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00186"></a>00186     }
-<a name="l00187"></a>00187     distToCenter = <a class="code" href="rs__cl_8rsh.html#aa26d85eac3067e9769b33b6914b180f2">dot</a>(far-&gt;xyz, sphere-&gt;xyz) + far-&gt;w;
-<a name="l00188"></a>00188     <span class="keywordflow">if</span> (distToCenter &lt; -sphere-&gt;w) {
-<a name="l00189"></a>00189         <span class="keywordflow">return</span> <span class="keyword">false</span>;
-<a name="l00190"></a>00190     }
-<a name="l00191"></a>00191     <span class="keywordflow">return</span> <span class="keyword">true</span>;
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 
-<a name="l00194"></a>00194 
-<a name="l00205"></a>00205 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a5e20d326a6e2532d19a493b01f948c17">rsPackColorTo8888</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b);
-<a name="l00206"></a>00206 
-<a name="l00217"></a>00217 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a5e20d326a6e2532d19a493b01f948c17">rsPackColorTo8888</a>(<span class="keywordtype">float</span> r, <span class="keywordtype">float</span> g, <span class="keywordtype">float</span> b, <span class="keywordtype">float</span> a);
-<a name="l00218"></a>00218 
-<a name="l00227"></a>00227 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a5e20d326a6e2532d19a493b01f948c17">rsPackColorTo8888</a>(<a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> color);
-<a name="l00228"></a>00228 
-<a name="l00236"></a>00236 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) <a class="code" href="rs__math_8rsh.html#a5e20d326a6e2532d19a493b01f948c17">rsPackColorTo8888</a>(<a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> color);
-<a name="l00237"></a>00237 
-<a name="l00245"></a>00245 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="code" href="rs__math_8rsh.html#a48bb0c2e7b1f2b62b2a8970c7d709eca">rsUnpackColor8888</a>(<a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> c);
-<a name="l00246"></a>00246 
-<a name="l00247"></a>00247 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((overloadable)) rsYuvToRGBA_uchar4(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> y, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> u, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v);
-<a name="l00248"></a>00248 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable)) rsYuvToRGBA_float4(<a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> y, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> u, <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> v);
-<a name="l00249"></a>00249 
-<a name="l00250"></a>00250 
-<a name="l00251"></a>00251 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__matrix_8rsh.html b/docs/html/reference/renderscript/rs__matrix_8rsh.html
deleted file mode 100644
index 3b8e047..0000000
--- a/docs/html/reference/renderscript/rs__matrix_8rsh.html
+++ /dev/null
@@ -1,1579 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>frameworks/rs/scriptc/rs_matrix.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">frameworks/rs/scriptc/rs_matrix.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aca88832ed720e301780152c60884393e">rsMatrixSet</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a08a247cdf2e70e78310bf04f9ecd5144">rsMatrixSet</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#af9707d7be5945bf55ed53683624176ff">rsMatrixSet</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, float v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#af26fdbf8b8f0ed5d1b53f62b2aef5110">rsMatrixGet</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#acfebfc7b97e7282b78cd9c65b791932a">rsMatrixGet</a> (const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a683b4537b98103c50cc66780dfe8cd69">rsMatrixGet</a> (const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5b31e83553efa947db2198674d5db043">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad2954a5ac11d2370227296be89e92471">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const float *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aef942535c5d56072125dcf5244970ea2">rsMatrixLoad</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const float *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aa327089f7ad9161d7372094163147005">rsMatrixLoad</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const float *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5239a3f5f2becd20507d0aa56638ba03">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a06176acb38405937cb94c835a712a3b3">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a3a3d0f0053720fb4afb3a3eb32e42a82">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a654e5abe095770979d740f7b55382bd0">rsMatrixLoad</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5f3697805c794c9c9f2f8cfdde4b9a44">rsMatrixLoad</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *v)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rsMatrixLoadRotate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float rot, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rsMatrixLoadScale</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rsMatrixLoadTranslate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *lhs, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a78872343ea6a5c1a846160ccdc4add52">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *lhs, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ae0dd4755c28fc896626ebf5dc784130f">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *lhs, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ae0b03aeec17ec8b9c5e75f8efb1bdc53">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ab1973ad3efa0ab2d53f466dd9fb190bb">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rsMatrixRotate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float rot, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rsMatrixScale</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rsMatrixLoadOrtho</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float left, float right, float bottom, float top, float near, float far)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rsMatrixLoadFrustum</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float left, float right, float bottom, float top, float near, float far)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rsMatrixLoadPerspective</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float fovy, float aspect, float near, float far)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a47b6abbf32ffaf77bb13d96c3f05779f">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a716bc2d29b80eb25388aba3ba8845aef">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rsMatrixInverse</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rsMatrixInverseTranspose</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac52acb31a705f6c68af8bddea0e79969">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a49164dd4d4e85b212196028b1fd89dc1">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Matrix functions. </p>
-<p>These functions let you manipulate square matrices of rank 2x2, 3x3, and 4x4. They are particularly useful for graphical transformations and are compatible with OpenGL.</p>
-<p>A few general notes:</p>
-<ul>
-<li>We use a zero-based index for rows and columns. E.g. the last element of a <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> is found at (3, 3).</li>
-</ul>
-<ul>
-<li>RenderScript uses column-based vectors. Transforming a vector is done by postmultiplying the vector, e.g. <em>(matrix * vector)</em>, as provided by <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</li>
-</ul>
-<ul>
-<li>To create a transformation matrix that performs two transformations at once, multiply the two source matrices, with the first transformation as the right argument. E.g. to create a transformation matrix that applies the transformation <em>s1</em> followed by <em>s2</em>, call rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1). This derives from <em>s2 * (s1 * v)</em>, which is <em>(s2 * s1) * v</em>.</li>
-</ul>
-<ul>
-<li>We have two style of functions to create transformation matrices: rsMatrixLoad<em>Transformation</em> and rsMatrix<em>Transformation</em>. The former style simply stores the transformation matrix in the first argument. The latter modifies a pre-existing transformation matrix so that the new transformation happens first. E.g. if you call <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a> on a matrix that already does a scaling, the resulting matrix when applied to a vector will first do the translation then the scaling. </li>
-</ul>
-
-<p>Definition in file <a class="el" href="rs__matrix_8rsh_source.html">rs_matrix.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="af26fdbf8b8f0ed5d1b53f62b2aef5110"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="af26fdbf8b8f0ed5d1b53f62b2aef5110" args="(const rs_matrix4x4 *m, uint32_t col, uint32_t row)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>col</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>row</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns one element of a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to extract the element from. </td></tr>
-    <tr><td class="paramname">col</td><td>The zero-based column of the element to be extracted. </td></tr>
-    <tr><td class="paramname">row</td><td>The zero-based row of the element to extracted.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="warning"><dt><b>Warning:</b></dt><dd>The order of the column and row parameters may be unexpected.</dd></dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>float </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="acfebfc7b97e7282b78cd9c65b791932a"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="acfebfc7b97e7282b78cd9c65b791932a" args="(const rs_matrix3x3 *m, uint32_t col, uint32_t row)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>col</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>row</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a683b4537b98103c50cc66780dfe8cd69"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="a683b4537b98103c50cc66780dfe8cd69" args="(const rs_matrix2x2 *m, uint32_t col, uint32_t row)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>col</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>row</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a00b6a334ba5ac94d84850f22ec9f4de5"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixInverse" ref="a00b6a334ba5ac94d84850f22ec9f4de5" args="(rs_matrix4x4 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsMatrixInverse </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Inverts a matrix in place.</p>
-<p>Returns true if the matrix was successfully inversed.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to invert. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ac05080d52da2d99a759ef34fa0655e82"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixInverseTranspose" ref="ac05080d52da2d99a759ef34fa0655e82" args="(rs_matrix4x4 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsMatrixInverseTranspose </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Inverts and transpose a matrix in place.</p>
-<p>The matrix is first inverted then transposed. Returns true if the matrix was successfully inverted.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ac380c4117e047da494a74f0dad20fab3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="ac380c4117e047da494a74f0dad20fab3" args="(rs_matrix4x4 *m, const float *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const float *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set the elements of a matrix from an array of floats.</p>
-<p>The array of floats should be in row-major order, i.e. the element a <em>row 0, column 0</em> should be first, followed by the element at <em>row 0, column 1</em>, etc.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">v</td><td>The array of values to set the matrix to. These arrays should be 4, 9, or 16 floats long, depending on the matrix size. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aef942535c5d56072125dcf5244970ea2"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="aef942535c5d56072125dcf5244970ea2" args="(rs_matrix3x3 *m, const float *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const float *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa327089f7ad9161d7372094163147005"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="aa327089f7ad9161d7372094163147005" args="(rs_matrix2x2 *m, const float *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const float *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5239a3f5f2becd20507d0aa56638ba03"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a5239a3f5f2becd20507d0aa56638ba03" args="(rs_matrix4x4 *m, const rs_matrix4x4 *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set the elements of a matrix from another matrix.</p>
-<p>If the source matrix is smaller than the destination, the rest of the destination is filled with elements of the identity matrix. E.g. loading a <a class="el" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> into a <a class="el" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> will give:</p>
- <table>
- <tr><td>m00</td><td>m01</td><td>0.0</td><td>0.0</td></tr>
- <tr><td>m10</td><td>m11</td><td>0.0</td><td>0.0</td></tr>
- <tr><td>0.0</td><td>0.0</td><td>1.0</td><td>0.0</td></tr>
- <tr><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td></tr>
- </table><dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">v</td><td>The source matrix. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a06176acb38405937cb94c835a712a3b3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a06176acb38405937cb94c835a712a3b3" args="(rs_matrix4x4 *m, const rs_matrix3x3 *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3a3d0f0053720fb4afb3a3eb32e42a82"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a3a3d0f0053720fb4afb3a3eb32e42a82" args="(rs_matrix4x4 *m, const rs_matrix2x2 *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a654e5abe095770979d740f7b55382bd0"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a654e5abe095770979d740f7b55382bd0" args="(rs_matrix3x3 *m, const rs_matrix3x3 *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5f3697805c794c9c9f2f8cfdde4b9a44"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a5f3697805c794c9c9f2f8cfdde4b9a44" args="(rs_matrix2x2 *m, const rs_matrix2x2 *v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoad </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad25760aaf01e95d0055237afab41bbb3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadFrustum" ref="ad25760aaf01e95d0055237afab41bbb3" args="(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadFrustum </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>left</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>right</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>bottom</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>top</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>near</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>far</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load a frustum projection matrix.</p>
-<p>Constructs a frustum projection matrix, transforming the box identified by the six clipping planes <em>left, right, bottom, top, near, far</em>.</p>
-<p>To apply this projection to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<p>See <a href="https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf">https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf</a></p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">left</td><td></td></tr>
-    <tr><td class="paramname">right</td><td></td></tr>
-    <tr><td class="paramname">bottom</td><td></td></tr>
-    <tr><td class="paramname">top</td><td></td></tr>
-    <tr><td class="paramname">near</td><td></td></tr>
-    <tr><td class="paramname">far</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0ffd9de971cf10d0a663ff565be8d3cc"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="a0ffd9de971cf10d0a663ff565be8d3cc" args="(rs_matrix4x4 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadIdentity </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set the elements of a matrix to the identity matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5b31e83553efa947db2198674d5db043"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="a5b31e83553efa947db2198674d5db043" args="(rs_matrix3x3 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadIdentity </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad2954a5ac11d2370227296be89e92471"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="ad2954a5ac11d2370227296be89e92471" args="(rs_matrix2x2 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadIdentity </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a79f14c4c0f5ecc1bbd0bf54da8b653ef"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="a79f14c4c0f5ecc1bbd0bf54da8b653ef" args="(rs_matrix4x4 *m, const rs_matrix4x4 *lhs, const rs_matrix4x4 *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply two matrices.</p>
-<p>Sets <em>m</em> to the matrix product of <em>lhs * rhs</em>.</p>
-<p>To combine two 4x4 transformaton matrices, multiply the second transformation matrix by the first transformation matrix. E.g. to create a transformation matrix that applies the transformation <em>s1</em> followed by <em>s2</em>, call rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1).</p>
-<dl class="warning"><dt><b>Warning:</b></dt><dd>As of version 21, storing the result back into right matrix is not supported and will result in undefined behavior. Use rsMatrixMulitply instead. E.g. instead of doing rsMatrixLoadMultiply (&amp;m2r, &amp;m2r, &amp;m2l), use rsMatrixMultiply (&amp;m2r, &amp;m2l). rsMatrixLoadMultiply (&amp;m2l, &amp;m2r, &amp;m2l) works as expected.</dd></dl>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">lhs</td><td>The left matrix of the product. </td></tr>
-    <tr><td class="paramname">rhs</td><td>The right matrix of the product. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a78872343ea6a5c1a846160ccdc4add52"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="a78872343ea6a5c1a846160ccdc4add52" args="(rs_matrix3x3 *m, const rs_matrix3x3 *lhs, const rs_matrix3x3 *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae0dd4755c28fc896626ebf5dc784130f"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="ae0dd4755c28fc896626ebf5dc784130f" args="(rs_matrix2x2 *m, const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>lhs</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4c59884a0e534dbbcdc5655842732d43"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadOrtho" ref="a4c59884a0e534dbbcdc5655842732d43" args="(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadOrtho </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>left</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>right</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>bottom</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>top</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>near</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>far</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load an orthographic projection matrix.</p>
-<p>Constructs an orthographic projection matrix, transforming the box identified by the six clipping planes <em>left, right, bottom, top, near, far</em> into a unit cube with a corner at <em>(-1, -1, -1)</em> and the opposite at <em>(1, 1, 1)</em>.</p>
-<p>To apply this projection to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<p>See <a href="https://en.wikipedia.org/wiki/Orthographic_projection">https://en.wikipedia.org/wiki/Orthographic_projection</a> and <a href="https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf">https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf</a></p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">left</td><td></td></tr>
-    <tr><td class="paramname">right</td><td></td></tr>
-    <tr><td class="paramname">bottom</td><td></td></tr>
-    <tr><td class="paramname">top</td><td></td></tr>
-    <tr><td class="paramname">near</td><td></td></tr>
-    <tr><td class="paramname">far</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa404c34d7478f2921f7415d2da95d02b"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadPerspective" ref="aa404c34d7478f2921f7415d2da95d02b" args="(rs_matrix4x4 *m, float fovy, float aspect, float near, float far)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadPerspective </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>fovy</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>aspect</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>near</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>far</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load a perspective projection matrix.</p>
-<p>Constructs a perspective projection matrix, assuming a symmetrical field of view.</p>
-<p>To apply this projection to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<p>See <a href="https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf">https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf</a></p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">fovy</td><td>Field of view, in degrees along the Y axis. </td></tr>
-    <tr><td class="paramname">aspect</td><td>Ratio of x / y. </td></tr>
-    <tr><td class="paramname">near</td><td>The near clipping plane. </td></tr>
-    <tr><td class="paramname">far</td><td>The far clipping plane. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a268032f3ac6d766b1d7fe72a6cb50464"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadRotate" ref="a268032f3ac6d766b1d7fe72a6cb50464" args="(rs_matrix4x4 *m, float rot, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadRotate </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load a rotation matrix.</p>
-<p>This function creates a rotation matrix. The axis of rotation is the <em>(x, y, z)</em> vector.</p>
-<p>To rotate a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<p>See <a href="http://en.wikipedia.org/wiki/Rotation_matrix">http://en.wikipedia.org/wiki/Rotation_matrix</a> .</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">rot</td><td>How much rotation to do, in degrees. </td></tr>
-    <tr><td class="paramname">x</td><td>The x component of the vector that is the axis of rotation. </td></tr>
-    <tr><td class="paramname">y</td><td>The y component of the vector that is the axis of rotation. </td></tr>
-    <tr><td class="paramname">z</td><td>The z component of the vector that is the axis of rotation. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="acaf51d1f9ad5041ce01fbf8b7c5923fd"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadScale" ref="acaf51d1f9ad5041ce01fbf8b7c5923fd" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadScale </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load a scale matrix.</p>
-<p>This function creates a scaling matrix, where each component of a vector is multiplied by a number. This number can be negative.</p>
-<p>To scale a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">x</td><td>The multiple to scale the x components by. </td></tr>
-    <tr><td class="paramname">y</td><td>The multiple to scale the y components by. </td></tr>
-    <tr><td class="paramname">z</td><td>The multiple to scale the z components by. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1b521c8a3d1260fa732cbf0a71af0e74"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadTranslate" ref="a1b521c8a3d1260fa732cbf0a71af0e74" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixLoadTranslate </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Load a translation matrix.</p>
-<p>This function creates a translation matrix, where a number is added to each element of a vector.</p>
-<p>To translate a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
-    <tr><td class="paramname">x</td><td>The number to add to each x component. </td></tr>
-    <tr><td class="paramname">y</td><td>The number to add to each y component. </td></tr>
-    <tr><td class="paramname">z</td><td>The number to add to each z component. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a97953ab2606900a839e5816c619abe66"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a97953ab2606900a839e5816c619abe66" args="(rs_matrix4x4 *m, const rs_matrix4x4 *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply a matrix into another one.</p>
-<p>Sets <em>m</em> to the matrix product <em>m * rhs</em>.</p>
-<p>When combining two 4x4 transformation matrices using this function, the resulting matrix will correspond to performing the <em>rhs</em> transformation first followed by the original <em>m</em> transformation.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The left matrix of the product and the matrix to be set. </td></tr>
-    <tr><td class="paramname">rhs</td><td>The right matrix of the product. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae0b03aeec17ec8b9c5e75f8efb1bdc53"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="ae0b03aeec17ec8b9c5e75f8efb1bdc53" args="(rs_matrix3x3 *m, const rs_matrix3x3 *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab1973ad3efa0ab2d53f466dd9fb190bb"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="ab1973ad3efa0ab2d53f466dd9fb190bb" args="(rs_matrix2x2 *m, const rs_matrix2x2 *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a47b6abbf32ffaf77bb13d96c3f05779f"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a47b6abbf32ffaf77bb13d96c3f05779f" args="(rs_matrix4x4 *m, float4 in)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsMatrixMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td>
-          <td class="paramname"><em>in</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply a vector by a matrix.</p>
-<p>Returns the post-multiplication of the vector by the matrix, ie. <em>m * in</em>.</p>
-<p>When multiplying a <em>float3</em> to a <em><a class="el" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a></em>, the vector is expanded with (1).</p>
-<p>When multiplying a <em>float2</em> to a <em><a class="el" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a></em>, the vector is expanded with (0, 1).</p>
-<p>When multiplying a <em>float2</em> to a <em><a class="el" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a></em>, the vector is expanded with (0).</p>
-<p>This function is available in API version 10-13. Starting with API 14, the function takes a const matrix as the first argument.</p>
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a716bc2d29b80eb25388aba3ba8845aef"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a716bc2d29b80eb25388aba3ba8845aef" args="(rs_matrix3x3 *m, float3 in)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> rsMatrixMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
-          <td class="paramname"><em>in</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4d9a8bb7c3f5d67b14fa349bdd531d13"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a4d9a8bb7c3f5d67b14fa349bdd531d13" args="(rs_matrix2x2 *m, float2 in)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> rsMatrixMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td>
-          <td class="paramname"><em>in</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad5ed05ca4880397fb29615e3c6798de1"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixRotate" ref="ad5ed05ca4880397fb29615e3c6798de1" args="(rs_matrix4x4 *m, float rot, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixRotate </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply the matrix <em>m</em> with a rotation matrix.</p>
-<p>This function modifies a transformation matrix to first do a rotation. The axis of rotation is the <em>(x, y, z)</em> vector.</p>
-<p>To apply this combined transformation to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
-    <tr><td class="paramname">rot</td><td>How much rotation to do, in degrees. </td></tr>
-    <tr><td class="paramname">x</td><td>The x component of the vector that is the axis of rotation. </td></tr>
-    <tr><td class="paramname">y</td><td>The y component of the vector that is the axis of rotation. </td></tr>
-    <tr><td class="paramname">z</td><td>The z component of the vector that is the axis of rotation. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a94cc6b22bd1a6c07a9a1c1d21afb392c"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixScale" ref="a94cc6b22bd1a6c07a9a1c1d21afb392c" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixScale </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply the matrix <em>m</em> with a scaling matrix.</p>
-<p>This function modifies a transformation matrix to first do a scaling. When scaling, each component of a vector is multiplied by a number. This number can be negative.</p>
-<p>To apply this combined transformation to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
-    <tr><td class="paramname">x</td><td>The multiple to scale the x components by. </td></tr>
-    <tr><td class="paramname">y</td><td>The multiple to scale the y components by. </td></tr>
-    <tr><td class="paramname">z</td><td>The multiple to scale the z components by. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aca88832ed720e301780152c60884393e"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="aca88832ed720e301780152c60884393e" args="(rs_matrix4x4 *m, uint32_t col, uint32_t row, float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>col</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set an element of a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix that will be modified. </td></tr>
-    <tr><td class="paramname">col</td><td>The zero-based column of the element to be set. </td></tr>
-    <tr><td class="paramname">row</td><td>The zero-based row of the element to be set. </td></tr>
-    <tr><td class="paramname">v</td><td>The value to set.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="warning"><dt><b>Warning:</b></dt><dd>The order of the column and row parameters may be unexpected.</dd></dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>void </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a08a247cdf2e70e78310bf04f9ecd5144"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="a08a247cdf2e70e78310bf04f9ecd5144" args="(rs_matrix3x3 *m, uint32_t col, uint32_t row, float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>col</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="af9707d7be5945bf55ed53683624176ff"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="af9707d7be5945bf55ed53683624176ff" args="(rs_matrix2x2 *m, uint32_t col, uint32_t row, float v)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>col</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>row</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>v</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4df5f9b5bb6044f3c3426f2f58b94405"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranslate" ref="a4df5f9b5bb6044f3c3426f2f58b94405" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixTranslate </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply the matrix <em>m</em> with a translation matrix.</p>
-<p>This function modifies a transformation matrix to first do a translation. When translating, a number is added to each component of a vector.</p>
-<p>To apply this combined transformation to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
-    <tr><td class="paramname">x</td><td>The number to add to each x component. </td></tr>
-    <tr><td class="paramname">y</td><td>The number to add to each y component. </td></tr>
-    <tr><td class="paramname">z</td><td>The number to add to each z component. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a88095c70f1550c760844b3e32e41a31a"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="a88095c70f1550c760844b3e32e41a31a" args="(rs_matrix4x4 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixTranspose </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Transpose the matrix m in place.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>The matrix to transpose. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ac52acb31a705f6c68af8bddea0e79969"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="ac52acb31a705f6c68af8bddea0e79969" args="(rs_matrix3x3 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixTranspose </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a49164dd4d4e85b212196028b1fd89dc1"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="a49164dd4d4e85b212196028b1fd89dc1" args="(rs_matrix2x2 *m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsMatrixTranspose </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__matrix_8rsh_source.html b/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
deleted file mode 100644
index 77144bd..0000000
--- a/docs/html/reference/renderscript/rs__matrix_8rsh_source.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>frameworks/rs/scriptc/rs_matrix.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">frameworks/rs/scriptc/rs_matrix.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__matrix_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00050"></a>00050 <span class="preprocessor">#ifndef __RS_MATRIX_RSH__</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#define __RS_MATRIX_RSH__</span>
-<a name="l00052"></a>00052 <span class="preprocessor"></span>
-<a name="l00066"></a>00066 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00067"></a>00067 <a class="code" href="rs__matrix_8rsh.html#aca88832ed720e301780152c60884393e">rsMatrixSet</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <span class="keywordtype">float</span> v);
-<a name="l00071"></a>00071 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00072"></a>00072 <a class="code" href="rs__matrix_8rsh.html#aca88832ed720e301780152c60884393e">rsMatrixSet</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <span class="keywordtype">float</span> v);
-<a name="l00076"></a>00076 _RS_RUNTIME <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00077"></a>00077 <a class="code" href="rs__matrix_8rsh.html#aca88832ed720e301780152c60884393e">rsMatrixSet</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, <span class="keywordtype">float</span> v);
-<a name="l00078"></a>00078 
-<a name="l00091"></a>00091 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00092"></a>00092 <a class="code" href="rs__matrix_8rsh.html#af26fdbf8b8f0ed5d1b53f62b2aef5110">rsMatrixGet</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row);
-<a name="l00096"></a>00096 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00097"></a>00097 <a class="code" href="rs__matrix_8rsh.html#af26fdbf8b8f0ed5d1b53f62b2aef5110">rsMatrixGet</a>(const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row);
-<a name="l00101"></a>00101 _RS_RUNTIME <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00102"></a>00102 <a class="code" href="rs__matrix_8rsh.html#af26fdbf8b8f0ed5d1b53f62b2aef5110">rsMatrixGet</a>(const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row);
-<a name="l00103"></a>00103 
-<a name="l00109"></a>00109 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
-<a name="l00113"></a>00113 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m);
-<a name="l00117"></a>00117 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m);
-<a name="l00118"></a>00118 
-<a name="l00130"></a>00130 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <span class="keywordtype">float</span> *v);
-<a name="l00134"></a>00134 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <span class="keywordtype">float</span> *v);
-<a name="l00138"></a>00138 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <span class="keywordtype">float</span> *v);
-<a name="l00156"></a>00156 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *v);
-<a name="l00160"></a>00160 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *v);
-<a name="l00164"></a>00164 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *v);
-<a name="l00168"></a>00168 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *v);
-<a name="l00172"></a>00172 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *v);
-<a name="l00173"></a>00173 
-<a name="l00191"></a>00191 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00192"></a>00192 <a class="code" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rsMatrixLoadRotate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
-<a name="l00193"></a>00193 
-<a name="l00208"></a>00208 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00209"></a>00209 <a class="code" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rsMatrixLoadScale</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
-<a name="l00210"></a>00210 
-<a name="l00225"></a>00225 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00226"></a>00226 <a class="code" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rsMatrixLoadTranslate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
-<a name="l00227"></a>00227 
-<a name="l00247"></a>00247 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00248"></a>00248 <a class="code" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *lhs, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *rhs);
-<a name="l00252"></a>00252 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00253"></a>00253 <a class="code" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *lhs, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *rhs);
-<a name="l00257"></a>00257 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00258"></a>00258 <a class="code" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *lhs, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *rhs);
-<a name="l00259"></a>00259 
-<a name="l00272"></a>00272 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00273"></a>00273 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *rhs);
-<a name="l00277"></a>00277 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00278"></a>00278 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *rhs);
-<a name="l00282"></a>00282 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00283"></a>00283 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *rhs);
-<a name="l00284"></a>00284 
-<a name="l00300"></a>00300 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00301"></a>00301 <a class="code" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rsMatrixRotate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
-<a name="l00302"></a>00302 
-<a name="l00318"></a>00318 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00319"></a>00319 <a class="code" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rsMatrixScale</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
-<a name="l00320"></a>00320 
-<a name="l00336"></a>00336 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00337"></a>00337 <a class="code" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z);
-<a name="l00338"></a>00338 
-<a name="l00361"></a>00361 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00362"></a>00362 <a class="code" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rsMatrixLoadOrtho</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> left, <span class="keywordtype">float</span> right, <span class="keywordtype">float</span> bottom, <span class="keywordtype">float</span> top, <span class="keywordtype">float</span> near, <span class="keywordtype">float</span> far);
-<a name="l00363"></a>00363 
-<a name="l00384"></a>00384 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00385"></a>00385 <a class="code" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rsMatrixLoadFrustum</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keywordtype">float</span> left, <span class="keywordtype">float</span> right, <span class="keywordtype">float</span> bottom, <span class="keywordtype">float</span> top, <span class="keywordtype">float</span> near, <span class="keywordtype">float</span> far);
-<a name="l00386"></a>00386 
-<a name="l00403"></a>00403 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00404"></a>00404 <a class="code" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rsMatrixLoadPerspective</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a>* m, <span class="keywordtype">float</span> fovy, <span class="keywordtype">float</span> aspect, <span class="keywordtype">float</span> near, <span class="keywordtype">float</span> far);
-<a name="l00405"></a>00405 
-<a name="l00406"></a>00406 <span class="preprocessor">#if !defined(RS_VERSION) || (RS_VERSION &lt; 14)</span>
-<a name="l00407"></a>00407 <span class="preprocessor"></span>
-<a name="l00421"></a>00421 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00422"></a>00422 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in);
-<a name="l00423"></a>00423 
-<a name="l00427"></a>00427 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00428"></a>00428 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
-<a name="l00429"></a>00429 
-<a name="l00433"></a>00433 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00434"></a>00434 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
-<a name="l00435"></a>00435 
-<a name="l00439"></a>00439 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
-<a name="l00440"></a>00440 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
-<a name="l00441"></a>00441 
-<a name="l00445"></a>00445 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
-<a name="l00446"></a>00446 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
-<a name="l00447"></a>00447 
-<a name="l00451"></a>00451 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable))
-<a name="l00452"></a>00452 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
-<a name="l00453"></a>00453 <span class="preprocessor">#else</span>
-<a name="l00454"></a>00454 <span class="preprocessor"></span>
-<a name="l00467"></a>00467 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00468"></a>00468 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in);
-<a name="l00469"></a>00469 
-<a name="l00473"></a>00473 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00474"></a>00474 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
-<a name="l00475"></a>00475 
-<a name="l00479"></a>00479 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((overloadable))
-<a name="l00480"></a>00480 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
-<a name="l00481"></a>00481 
-<a name="l00485"></a>00485 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
-<a name="l00486"></a>00486 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in);
-<a name="l00487"></a>00487 
-<a name="l00491"></a>00491 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((overloadable))
-<a name="l00492"></a>00492 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
-<a name="l00493"></a>00493 
-<a name="l00497"></a>00497 _RS_RUNTIME <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((overloadable))
-<a name="l00498"></a>00498 <a class="code" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a>(const <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m, <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in);
-<a name="l00499"></a>00499 <span class="preprocessor">#endif</span>
-<a name="l00500"></a>00500 <span class="preprocessor"></span>
-<a name="l00501"></a>00501 
-<a name="l00509"></a>00509 <span class="keyword">extern</span> <span class="keywordtype">bool</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rsMatrixInverse</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
-<a name="l00510"></a>00510 
-<a name="l00519"></a>00519 extern <span class="keywordtype">bool</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rsMatrixInverseTranspose</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
-<a name="l00520"></a>00520 
-<a name="l00526"></a>00526 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m);
-<a name="l00530"></a>00530 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a>(<a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a> *m);
-<a name="l00534"></a>00534 extern <span class="keywordtype">void</span> __attribute__((overloadable)) <a class="code" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a>(<a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> *m);
-<a name="l00535"></a>00535 
-<a name="l00536"></a>00536 
-<a name="l00537"></a>00537 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__mesh_8rsh.html b/docs/html/reference/renderscript/rs__mesh_8rsh.html
deleted file mode 100644
index 82824adc..0000000
--- a/docs/html/reference/renderscript/rs__mesh_8rsh.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_mesh.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_mesh.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__mesh_8rsh.html#a7578d6d93154ac881715ab511449fab9">rsgMeshGetVertexAllocationCount</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__mesh_8rsh.html#ae0a0178cc02508517013486be4500d7f">rsgMeshGetPrimitiveCount</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> m)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__mesh_8rsh.html#a43e1d84147176cb0a1659552fa8da49f">rsgMeshGetVertexAllocation</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__mesh_8rsh.html#a05257c9252e7804397d6a6f7549bae5a">rsgMeshGetIndexAllocation</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_primitive</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__mesh_8rsh.html#af467f1c21cc9221071334f8234c29466">rsgMeshGetPrimitive</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Mesh routines. </p>
-
-<p>Definition in file <a class="el" href="rs__mesh_8rsh_source.html">rs_mesh.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a05257c9252e7804397d6a6f7549bae5a"></a><!-- doxytag: member="rs_mesh.rsh::rsgMeshGetIndexAllocation" ref="a05257c9252e7804397d6a6f7549bae5a" args="(rs_mesh m, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structrs__allocation.html">rs_allocation</a> rsgMeshGetIndexAllocation </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns an allocation containing index data or a null allocation if only the primitive is specified</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>mesh to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the index allocation </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>allocation containing index data </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="af467f1c21cc9221071334f8234c29466"></a><!-- doxytag: member="rs_mesh.rsh::rsgMeshGetPrimitive" ref="af467f1c21cc9221071334f8234c29466" args="(rs_mesh m, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_primitive</a> rsgMeshGetPrimitive </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the primitive describing how a part of the mesh is rendered</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>mesh to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the primitive </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>primitive describing how the mesh is rendered </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae0a0178cc02508517013486be4500d7f"></a><!-- doxytag: member="rs_mesh.rsh::rsgMeshGetPrimitiveCount" ref="ae0a0178cc02508517013486be4500d7f" args="(rs_mesh m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsgMeshGetPrimitiveCount </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Meshes could have multiple index sets, this function returns the number.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>mesh to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>number of primitive groups in the mesh. This would include simple primitives as well as allocations containing index data </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a43e1d84147176cb0a1659552fa8da49f"></a><!-- doxytag: member="rs_mesh.rsh::rsgMeshGetVertexAllocation" ref="a43e1d84147176cb0a1659552fa8da49f" args="(rs_mesh m, uint32_t index)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structrs__allocation.html">rs_allocation</a> rsgMeshGetVertexAllocation </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
-          <td class="paramname"><em>index</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns an allocation that is part of the mesh and contains vertex data, e.g. positions, normals, texcoords</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>mesh to get data from </td></tr>
-    <tr><td class="paramname">index</td><td>index of the vertex allocation </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>allocation containing vertex data </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a7578d6d93154ac881715ab511449fab9"></a><!-- doxytag: member="rs_mesh.rsh::rsgMeshGetVertexAllocationCount" ref="a7578d6d93154ac881715ab511449fab9" args="(rs_mesh m)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> rsgMeshGetVertexAllocationCount </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>m</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the number of allocations in the mesh that contain vertex data</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>mesh to get data from </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>number of allocations in the mesh that contain vertex data </dd></dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__mesh_8rsh_source.html b/docs/html/reference/renderscript/rs__mesh_8rsh_source.html
deleted file mode 100644
index f9416c8..0000000
--- a/docs/html/reference/renderscript/rs__mesh_8rsh_source.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_mesh.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_mesh.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__mesh_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_MESH_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_MESH_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="comment">// New API&#39;s</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00037"></a>00037 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00038"></a>00038     <a class="code" href="rs__mesh_8rsh.html#a7578d6d93154ac881715ab511449fab9">rsgMeshGetVertexAllocationCount</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> m);
-<a name="l00039"></a>00039 
-<a name="l00049"></a>00049 extern <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> __attribute__((overloadable))
-<a name="l00050"></a>00050     <a class="code" href="rs__mesh_8rsh.html#ae0a0178cc02508517013486be4500d7f">rsgMeshGetPrimitiveCount</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> m);
-<a name="l00051"></a>00051 
-<a name="l00060"></a>00060 extern <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> __attribute__((overloadable))
-<a name="l00061"></a>00061     <a class="code" href="rs__mesh_8rsh.html#a43e1d84147176cb0a1659552fa8da49f">rsgMeshGetVertexAllocation</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00062"></a>00062 
-<a name="l00071"></a>00071 extern <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> __attribute__((overloadable))
-<a name="l00072"></a>00072     <a class="code" href="rs__mesh_8rsh.html#a05257c9252e7804397d6a6f7549bae5a">rsgMeshGetIndexAllocation</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00073"></a>00073 
-<a name="l00082"></a>00082 extern <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_primitive</a> __attribute__((overloadable))
-<a name="l00083"></a>00083     <a class="code" href="rs__mesh_8rsh.html#af467f1c21cc9221071334f8234c29466">rsgMeshGetPrimitive</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> m, <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> index);
-<a name="l00084"></a>00084 
-<a name="l00085"></a>00085 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span>
-<a name="l00087"></a>00087 <span class="preprocessor">#endif // __RS_MESH_RSH__</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__object_8rsh.html b/docs/html/reference/renderscript/rs__object_8rsh.html
deleted file mode 100644
index 6ace343..0000000
--- a/docs/html/reference/renderscript/rs__object_8rsh.html
+++ /dev/null
@@ -1,858 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_object.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_object.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a> (<a class="el" href="structrs__element.html">rs_element</a> *dst, <a class="el" href="structrs__element.html">rs_element</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ab1c6d0672b6b88add70a98e627eeb7ae">rsSetObject</a> (<a class="el" href="structrs__type.html">rs_type</a> *dst, <a class="el" href="structrs__type.html">rs_type</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#af3446b1b9c2e4b600cdc8d828f3dbb59">rsSetObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> *dst, <a class="el" href="structrs__allocation.html">rs_allocation</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5132f90b4aaf8d2e35e6ad021fb08175">rsSetObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> *dst, <a class="el" href="structrs__sampler.html">rs_sampler</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a9dfc520ed267ac9733760bc628a93cae">rsSetObject</a> (<a class="el" href="structrs__script.html">rs_script</a> *dst, <a class="el" href="structrs__script.html">rs_script</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a9c2f648c1e68018621a3123545a21d83">rsSetObject</a> (<a class="el" href="structrs__path.html">rs_path</a> *dst, <a class="el" href="structrs__path.html">rs_path</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4d6368cf71d6fd2e55efbe23af6cfd7c">rsSetObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> *dst, <a class="el" href="structrs__mesh.html">rs_mesh</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a8135bceeb7b3ec8bf9a49d04e39bd565">rsSetObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *dst, <a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5512c023d40e416bea709f8d8caf9674">rsSetObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *dst, <a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a42c0d25d78051a1de58a7a1c4dcfdada">rsSetObject</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> *dst, <a class="el" href="structrs__program__raster.html">rs_program_raster</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4babadff570c9f57edbb3fb98c80a113">rsSetObject</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> *dst, <a class="el" href="structrs__program__store.html">rs_program_store</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ad1af9aed63d9f925a8e6288c0607d55b">rsSetObject</a> (<a class="el" href="structrs__font.html">rs_font</a> *dst, <a class="el" href="structrs__font.html">rs_font</a> src)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a> (<a class="el" href="structrs__element.html">rs_element</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ae9c24592eb550e72c9ff480dfbb9fe07">rsClearObject</a> (<a class="el" href="structrs__type.html">rs_type</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a5b944e2762ce1a44f7e63abd41851bcd">rsClearObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a51fe2098cc5c2ff73ceff8cc46b6dd89">rsClearObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a0034d7e67f80a9ce2e1139f1cb54b9a4">rsClearObject</a> (<a class="el" href="structrs__script.html">rs_script</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a4cd7e401ffe73eb23dffb01d5faf14cc">rsClearObject</a> (<a class="el" href="structrs__path.html">rs_path</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a6f26564cf4fa1bcd46db51a478bf91b9">rsClearObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afc6aca3a903d5e2021d9eeab4836fd26">rsClearObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a712fcc988eedf21845495477cec54029">rsClearObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a06b6d56105e192e121a5a4a555dc7b70">rsClearObject</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a691d3c2564dd2c08d965ccb1c73a9b29">rsClearObject</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aa246aa3c8162ef03e43bc0062671ae29">rsClearObject</a> (<a class="el" href="structrs__font.html">rs_font</a> *dst)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a> (<a class="el" href="structrs__element.html">rs_element</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a445c32d5bc085369f1ffa1a8ba13a381">rsIsObject</a> (<a class="el" href="structrs__type.html">rs_type</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afd33063fc6e45cb23f9a6f68dc2976ba">rsIsObject</a> (<a class="el" href="structrs__allocation.html">rs_allocation</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a509c7f0eacf1f07a3e7afaa029168f11">rsIsObject</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a6dc9db5fb60856b04c0b495a85affcbc">rsIsObject</a> (<a class="el" href="structrs__script.html">rs_script</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a33f979562536752539f35e6e831dab62">rsIsObject</a> (<a class="el" href="structrs__path.html">rs_path</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#aa1860f7322da25f4c4a1727571b01e2b">rsIsObject</a> (<a class="el" href="structrs__mesh.html">rs_mesh</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#afa57d9148778b03b270facbdbcb88816">rsIsObject</a> (<a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#acaa5da532eab1803a72fc4af2e7c6573">rsIsObject</a> (<a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a2358cf1fd6b2e0b1d6f1bde8664d9c41">rsIsObject</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#a547cd0a8071d895139893f1e10f5c3fd">rsIsObject</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a>)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__object_8rsh.html#ac1d6da920f12974b3633d25ed078da2d">rsIsObject</a> (<a class="el" href="structrs__font.html">rs_font</a>)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Object routines. </p>
-
-<p>Definition in file <a class="el" href="rs__object_8rsh_source.html">rs_object.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="aab5f47dc11b9044b3d02c4ed818fe6e7"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="aab5f47dc11b9044b3d02c4ed818fe6e7" args="(rs_element *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Sets the object to NULL.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>bool </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae9c24592eb550e72c9ff480dfbb9fe07"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="ae9c24592eb550e72c9ff480dfbb9fe07" args="(rs_type *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5b944e2762ce1a44f7e63abd41851bcd"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a5b944e2762ce1a44f7e63abd41851bcd" args="(rs_allocation *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a51fe2098cc5c2ff73ceff8cc46b6dd89"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a51fe2098cc5c2ff73ceff8cc46b6dd89" args="(rs_sampler *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0034d7e67f80a9ce2e1139f1cb54b9a4"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a0034d7e67f80a9ce2e1139f1cb54b9a4" args="(rs_script *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4cd7e401ffe73eb23dffb01d5faf14cc"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a4cd7e401ffe73eb23dffb01d5faf14cc" args="(rs_path *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6f26564cf4fa1bcd46db51a478bf91b9"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a6f26564cf4fa1bcd46db51a478bf91b9" args="(rs_mesh *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="afc6aca3a903d5e2021d9eeab4836fd26"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="afc6aca3a903d5e2021d9eeab4836fd26" args="(rs_program_fragment *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a712fcc988eedf21845495477cec54029"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a712fcc988eedf21845495477cec54029" args="(rs_program_vertex *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a06b6d56105e192e121a5a4a555dc7b70"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a06b6d56105e192e121a5a4a555dc7b70" args="(rs_program_raster *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a691d3c2564dd2c08d965ccb1c73a9b29"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="a691d3c2564dd2c08d965ccb1c73a9b29" args="(rs_program_store *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa246aa3c8162ef03e43bc0062671ae29"></a><!-- doxytag: member="rs_object.rsh::rsClearObject" ref="aa246aa3c8162ef03e43bc0062671ae29" args="(rs_font *dst)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsClearObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a> *&#160;</td>
-          <td class="paramname"><em>dst</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a81f862730b961bd93ac132c24cbc0f82"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a81f862730b961bd93ac132c24cbc0f82" args="(rs_element)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Tests if the object is valid. Returns true if the object is valid, false if it is NULL.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>bool </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a445c32d5bc085369f1ffa1a8ba13a381"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a445c32d5bc085369f1ffa1a8ba13a381" args="(rs_type)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="afd33063fc6e45cb23f9a6f68dc2976ba"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="afd33063fc6e45cb23f9a6f68dc2976ba" args="(rs_allocation)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a509c7f0eacf1f07a3e7afaa029168f11"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a509c7f0eacf1f07a3e7afaa029168f11" args="(rs_sampler)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6dc9db5fb60856b04c0b495a85affcbc"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a6dc9db5fb60856b04c0b495a85affcbc" args="(rs_script)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a33f979562536752539f35e6e831dab62"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a33f979562536752539f35e6e831dab62" args="(rs_path)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa1860f7322da25f4c4a1727571b01e2b"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="aa1860f7322da25f4c4a1727571b01e2b" args="(rs_mesh)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="afa57d9148778b03b270facbdbcb88816"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="afa57d9148778b03b270facbdbcb88816" args="(rs_program_fragment)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="acaa5da532eab1803a72fc4af2e7c6573"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="acaa5da532eab1803a72fc4af2e7c6573" args="(rs_program_vertex)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2358cf1fd6b2e0b1d6f1bde8664d9c41"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a2358cf1fd6b2e0b1d6f1bde8664d9c41" args="(rs_program_raster)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a547cd0a8071d895139893f1e10f5c3fd"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="a547cd0a8071d895139893f1e10f5c3fd" args="(rs_program_store)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1d6da920f12974b3633d25ed078da2d"></a><!-- doxytag: member="rs_object.rsh::rsIsObject" ref="ac1d6da920f12974b3633d25ed078da2d" args="(rs_font)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsIsObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a>&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="af6983a1578621ce283acc07f876cda62"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="af6983a1578621ce283acc07f876cda62" args="(rs_element *dst, rs_element src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__element.html">rs_element</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Copy reference to the specified object.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">dst</td><td></td></tr>
-    <tr><td class="paramname">src</td><td></td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab1c6d0672b6b88add70a98e627eeb7ae"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="ab1c6d0672b6b88add70a98e627eeb7ae" args="(rs_type *dst, rs_type src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__type.html">rs_type</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="af3446b1b9c2e4b600cdc8d828f3dbb59"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="af3446b1b9c2e4b600cdc8d828f3dbb59" args="(rs_allocation *dst, rs_allocation src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__allocation.html">rs_allocation</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5132f90b4aaf8d2e35e6ad021fb08175"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a5132f90b4aaf8d2e35e6ad021fb08175" args="(rs_sampler *dst, rs_sampler src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9dfc520ed267ac9733760bc628a93cae"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a9dfc520ed267ac9733760bc628a93cae" args="(rs_script *dst, rs_script src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__script.html">rs_script</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9c2f648c1e68018621a3123545a21d83"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a9c2f648c1e68018621a3123545a21d83" args="(rs_path *dst, rs_path src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__path.html">rs_path</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4d6368cf71d6fd2e55efbe23af6cfd7c"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a4d6368cf71d6fd2e55efbe23af6cfd7c" args="(rs_mesh *dst, rs_mesh src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__mesh.html">rs_mesh</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8135bceeb7b3ec8bf9a49d04e39bd565"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a8135bceeb7b3ec8bf9a49d04e39bd565" args="(rs_program_fragment *dst, rs_program_fragment src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5512c023d40e416bea709f8d8caf9674"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a5512c023d40e416bea709f8d8caf9674" args="(rs_program_vertex *dst, rs_program_vertex src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a42c0d25d78051a1de58a7a1c4dcfdada"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a42c0d25d78051a1de58a7a1c4dcfdada" args="(rs_program_raster *dst, rs_program_raster src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4babadff570c9f57edbb3fb98c80a113"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="a4babadff570c9f57edbb3fb98c80a113" args="(rs_program_store *dst, rs_program_store src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad1af9aed63d9f925a8e6288c0607d55b"></a><!-- doxytag: member="rs_object.rsh::rsSetObject" ref="ad1af9aed63d9f925a8e6288c0607d55b" args="(rs_font *dst, rs_font src)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void rsSetObject </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a> *&#160;</td>
-          <td class="paramname"><em>dst</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="structrs__font.html">rs_font</a>&#160;</td>
-          <td class="paramname"><em>src</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__object_8rsh_source.html b/docs/html/reference/renderscript/rs__object_8rsh_source.html
deleted file mode 100644
index 9cd43b4..0000000
--- a/docs/html/reference/renderscript/rs__object_8rsh_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_object.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_object.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__object_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_OBJECT_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_OBJECT_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 
-<a name="l00033"></a>00033 <span class="keyword">extern</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00034"></a>00034     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a> *dst, <a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a> src);
-<a name="l00038"></a>00038 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00039"></a>00039     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a RenderScript type.">rs_type</a> *dst, <a class="code" href="structrs__type.html" title="Opaque handle to a RenderScript type.">rs_type</a> src);
-<a name="l00043"></a>00043 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00044"></a>00044     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> *dst, <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> src);
-<a name="l00048"></a>00048 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00049"></a>00049     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> *dst, <a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> src);
-<a name="l00053"></a>00053 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00054"></a>00054     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> *dst, <a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> src);
-<a name="l00058"></a>00058 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00059"></a>00059     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__path.html" title="Opaque handle to a RenderScript Path object.">rs_path</a> *dst, <a class="code" href="structrs__path.html" title="Opaque handle to a RenderScript Path object.">rs_path</a> src);
-<a name="l00063"></a>00063 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00064"></a>00064     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> *dst, <a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> src);
-<a name="l00068"></a>00068 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00069"></a>00069     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a RenderScript ProgramFragment object.">rs_program_fragment</a> *dst, <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a RenderScript ProgramFragment object.">rs_program_fragment</a> src);
-<a name="l00073"></a>00073 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00074"></a>00074     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a RenderScript ProgramVertex object.">rs_program_vertex</a> *dst, <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a RenderScript ProgramVertex object.">rs_program_vertex</a> src);
-<a name="l00078"></a>00078 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00079"></a>00079     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a> *dst, <a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a> src);
-<a name="l00083"></a>00083 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00084"></a>00084     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> *dst, <a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> src);
-<a name="l00088"></a>00088 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00089"></a>00089     <a class="code" href="rs__object_8rsh.html#af6983a1578621ce283acc07f876cda62">rsSetObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a RenderScript font object.">rs_font</a> *dst, <a class="code" href="structrs__font.html" title="Opaque handle to a RenderScript font object.">rs_font</a> src);
-<a name="l00090"></a>00090 
-<a name="l00096"></a>00096 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00097"></a>00097     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a> *dst);
-<a name="l00101"></a>00101 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00102"></a>00102     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a RenderScript type.">rs_type</a> *dst);
-<a name="l00106"></a>00106 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00107"></a>00107     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a> *dst);
-<a name="l00111"></a>00111 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00112"></a>00112     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> *dst);
-<a name="l00116"></a>00116 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00117"></a>00117     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a> *dst);
-<a name="l00121"></a>00121 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00122"></a>00122     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__path.html" title="Opaque handle to a RenderScript Path object.">rs_path</a> *dst);
-<a name="l00126"></a>00126 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00127"></a>00127     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a> *dst);
-<a name="l00131"></a>00131 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00132"></a>00132     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a RenderScript ProgramFragment object.">rs_program_fragment</a> *dst);
-<a name="l00136"></a>00136 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00137"></a>00137     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a RenderScript ProgramVertex object.">rs_program_vertex</a> *dst);
-<a name="l00141"></a>00141 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00142"></a>00142     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a> *dst);
-<a name="l00146"></a>00146 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00147"></a>00147     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> *dst);
-<a name="l00151"></a>00151 extern <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00152"></a>00152     <a class="code" href="rs__object_8rsh.html#aab5f47dc11b9044b3d02c4ed818fe6e7">rsClearObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a RenderScript font object.">rs_font</a> *dst);
-<a name="l00153"></a>00153 
-<a name="l00154"></a>00154 
-<a name="l00155"></a>00155 
-<a name="l00162"></a>00162 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00163"></a>00163     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a>);
-<a name="l00167"></a>00167 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00168"></a>00168     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__type.html" title="Opaque handle to a RenderScript type.">rs_type</a>);
-<a name="l00172"></a>00172 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00173"></a>00173     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a>);
-<a name="l00177"></a>00177 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00178"></a>00178     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a>);
-<a name="l00182"></a>00182 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00183"></a>00183     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a>);
-<a name="l00187"></a>00187 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00188"></a>00188     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__path.html" title="Opaque handle to a RenderScript Path object.">rs_path</a>);
-<a name="l00192"></a>00192 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00193"></a>00193     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a>);
-<a name="l00197"></a>00197 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00198"></a>00198     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__fragment.html" title="Opaque handle to a RenderScript ProgramFragment object.">rs_program_fragment</a>);
-<a name="l00202"></a>00202 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00203"></a>00203     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__vertex.html" title="Opaque handle to a RenderScript ProgramVertex object.">rs_program_vertex</a>);
-<a name="l00207"></a>00207 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00208"></a>00208     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a>);
-<a name="l00212"></a>00212 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00213"></a>00213     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a>);
-<a name="l00217"></a>00217 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00218"></a>00218     <a class="code" href="rs__object_8rsh.html#a81f862730b961bd93ac132c24cbc0f82">rsIsObject</a>(<a class="code" href="structrs__font.html" title="Opaque handle to a RenderScript font object.">rs_font</a>);
-<a name="l00219"></a>00219 
-<a name="l00220"></a>00220 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__program_8rsh.html b/docs/html/reference/renderscript/rs__program_8rsh.html
deleted file mode 100644
index 99883830..0000000
--- a/docs/html/reference/renderscript/rs__program_8rsh.html
+++ /dev/null
@@ -1,320 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_program.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_program.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_depth_func</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a6a9c06c54d230f61edc0667a091aac77">rsgProgramStoreGetDepthFunc</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#afa27fa6103c9e29f5e098e2d99663f0b">rsgProgramStoreIsDepthMaskEnabled</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a4a50df1d2495567536dd6f394d38ee5d">rsgProgramStoreIsColorMaskRedEnabled</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a1a57f706bc42ce49b545021c8403964c">rsgProgramStoreIsColorMaskGreenEnabled</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a279ad1b4611aca268053337f6719a22c">rsgProgramStoreIsColorMaskBlueEnabled</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#ab038edb7399044a3ea96ebb17d7b6601">rsgProgramStoreIsColorMaskAlphaEnabled</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_blend_src_func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#afb38256c5804cdb9b410419c43ce03ab">rsgProgramStoreGetBlendSrcFunc</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_blend_dst_func&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a0ad38d595e35712f24c384ef20b69025">rsgProgramStoreGetBlendDstFunc</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#abe7c55547a72dd291e0996de050bb749">rsgProgramStoreIsDitherEnabled</a> (<a class="el" href="structrs__program__store.html">rs_program_store</a> ps)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a86aeccd846ed2cd2c9498ab57e2535f3">rsgProgramRasterIsPointSpriteEnabled</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> pr)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_cull_mode&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__program_8rsh.html#a633d6dbdec98ef89c2b70c92ea707502">rsgProgramRasterGetCullMode</a> (<a class="el" href="structrs__program__raster.html">rs_program_raster</a> pr)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Program object routines. </p>
-
-<p>Definition in file <a class="el" href="rs__program_8rsh_source.html">rs_program.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a633d6dbdec98ef89c2b70c92ea707502"></a><!-- doxytag: member="rs_program.rsh::rsgProgramRasterGetCullMode" ref="a633d6dbdec98ef89c2b70c92ea707502" args="(rs_program_raster pr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_cull_mode rsgProgramRasterGetCullMode </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
-          <td class="paramname"><em>pr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program raster cull mode</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pr</td><td>program raster to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a86aeccd846ed2cd2c9498ab57e2535f3"></a><!-- doxytag: member="rs_program.rsh::rsgProgramRasterIsPointSpriteEnabled" ref="a86aeccd846ed2cd2c9498ab57e2535f3" args="(rs_program_raster pr)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramRasterIsPointSpriteEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__raster.html">rs_program_raster</a>&#160;</td>
-          <td class="paramname"><em>pr</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program raster point sprite state</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">pr</td><td>program raster to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0ad38d595e35712f24c384ef20b69025"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreGetBlendDstFunc" ref="a0ad38d595e35712f24c384ef20b69025" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_blend_dst_func rsgProgramStoreGetBlendDstFunc </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store blend destination function</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb38256c5804cdb9b410419c43ce03ab"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreGetBlendSrcFunc" ref="afb38256c5804cdb9b410419c43ce03ab" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_blend_src_func rsgProgramStoreGetBlendSrcFunc </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store blend source function</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6a9c06c54d230f61edc0667a091aac77"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreGetDepthFunc" ref="a6a9c06c54d230f61edc0667a091aac77" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_depth_func</a> rsgProgramStoreGetDepthFunc </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store depth function</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab038edb7399044a3ea96ebb17d7b6601"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreIsColorMaskAlphaEnabled" ref="ab038edb7399044a3ea96ebb17d7b6601" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramStoreIsColorMaskAlphaEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store alpha component color mask</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a279ad1b4611aca268053337f6719a22c"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreIsColorMaskBlueEnabled" ref="a279ad1b4611aca268053337f6719a22c" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramStoreIsColorMaskBlueEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store blur component color mask</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1a57f706bc42ce49b545021c8403964c"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreIsColorMaskGreenEnabled" ref="a1a57f706bc42ce49b545021c8403964c" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramStoreIsColorMaskGreenEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store green component color mask</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4a50df1d2495567536dd6f394d38ee5d"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreIsColorMaskRedEnabled" ref="a4a50df1d2495567536dd6f394d38ee5d" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramStoreIsColorMaskRedEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store red component color mask</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afa27fa6103c9e29f5e098e2d99663f0b"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreIsDepthMaskEnabled" ref="afa27fa6103c9e29f5e098e2d99663f0b" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramStoreIsDepthMaskEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store depth mask</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abe7c55547a72dd291e0996de050bb749"></a><!-- doxytag: member="rs_program.rsh::rsgProgramStoreIsDitherEnabled" ref="abe7c55547a72dd291e0996de050bb749" args="(rs_program_store ps)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool rsgProgramStoreIsDitherEnabled </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__program__store.html">rs_program_store</a>&#160;</td>
-          <td class="paramname"><em>ps</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get program store dither state</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">ps</td><td>program store to query </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__program_8rsh_source.html b/docs/html/reference/renderscript/rs__program_8rsh_source.html
deleted file mode 100644
index ed326b1..0000000
--- a/docs/html/reference/renderscript/rs__program_8rsh_source.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_program.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_program.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__program_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_PROGRAM_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_PROGRAM_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00033"></a>00033 <span class="keyword">extern</span> <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_depth_func</a> __attribute__((overloadable))
-<a name="l00034"></a>00034     <a class="code" href="rs__program_8rsh.html#a6a9c06c54d230f61edc0667a091aac77">rsgProgramStoreGetDepthFunc</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00035"></a>00035 
-<a name="l00041"></a>00041 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00042"></a>00042     <a class="code" href="rs__program_8rsh.html#afa27fa6103c9e29f5e098e2d99663f0b">rsgProgramStoreIsDepthMaskEnabled</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00048"></a>00048 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00049"></a>00049     <a class="code" href="rs__program_8rsh.html#a4a50df1d2495567536dd6f394d38ee5d">rsgProgramStoreIsColorMaskRedEnabled</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00050"></a>00050 
-<a name="l00056"></a>00056 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00057"></a>00057     <a class="code" href="rs__program_8rsh.html#a1a57f706bc42ce49b545021c8403964c">rsgProgramStoreIsColorMaskGreenEnabled</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00058"></a>00058 
-<a name="l00064"></a>00064 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00065"></a>00065     <a class="code" href="rs__program_8rsh.html#a279ad1b4611aca268053337f6719a22c">rsgProgramStoreIsColorMaskBlueEnabled</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00066"></a>00066 
-<a name="l00072"></a>00072 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00073"></a>00073     <a class="code" href="rs__program_8rsh.html#ab038edb7399044a3ea96ebb17d7b6601">rsgProgramStoreIsColorMaskAlphaEnabled</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00074"></a>00074 
-<a name="l00080"></a>00080 extern rs_blend_src_func __attribute__((overloadable))
-<a name="l00081"></a>00081         <a class="code" href="rs__program_8rsh.html#afb38256c5804cdb9b410419c43ce03ab">rsgProgramStoreGetBlendSrcFunc</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00082"></a>00082 
-<a name="l00088"></a>00088 extern rs_blend_dst_func __attribute__((overloadable))
-<a name="l00089"></a>00089     <a class="code" href="rs__program_8rsh.html#a0ad38d595e35712f24c384ef20b69025">rsgProgramStoreGetBlendDstFunc</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00090"></a>00090 
-<a name="l00096"></a>00096 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00097"></a>00097     <a class="code" href="rs__program_8rsh.html#abe7c55547a72dd291e0996de050bb749">rsgProgramStoreIsDitherEnabled</a>(<a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a> ps);
-<a name="l00098"></a>00098 
-<a name="l00104"></a>00104 extern <span class="keywordtype">bool</span> __attribute__((overloadable))
-<a name="l00105"></a>00105     <a class="code" href="rs__program_8rsh.html#a86aeccd846ed2cd2c9498ab57e2535f3">rsgProgramRasterIsPointSpriteEnabled</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a> pr);
-<a name="l00106"></a>00106 
-<a name="l00112"></a>00112 extern rs_cull_mode __attribute__((overloadable))
-<a name="l00113"></a>00113     <a class="code" href="rs__program_8rsh.html#a633d6dbdec98ef89c2b70c92ea707502">rsgProgramRasterGetCullMode</a>(<a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a> pr);
-<a name="l00114"></a>00114 
-<a name="l00115"></a>00115 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>
-<a name="l00117"></a>00117 <span class="preprocessor">#endif // __RS_PROGRAM_RSH__</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__quaternion_8rsh.html b/docs/html/reference/renderscript/rs__quaternion_8rsh.html
deleted file mode 100644
index ce94e04..0000000
--- a/docs/html/reference/renderscript/rs__quaternion_8rsh.html
+++ /dev/null
@@ -1,556 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_quaternion.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_quaternion.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float w, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a249782133e54f13a8096d1fbe295714d">rsQuaternionSet</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rsQuaternionAdd</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rsQuaternionLoadRotateUnit</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float rot, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rsQuaternionLoadRotate</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, float rot, float x, float y, float z)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rsQuaternionConjugate</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a> (const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rsQuaternionNormalize</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">rsQuaternionMultiply</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rsQuaternionSlerp</a> (<a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1, float t)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rsQuaternionGetMatrixUnit</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Quaternion routines. </p>
-
-<p>Definition in file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a5e6e493b9917336b0d9118fdd4e91444"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionAdd" ref="a5e6e493b9917336b0d9118fdd4e91444" args="(rs_quaternion *q, const rs_quaternion *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionAdd </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Add two quaternions </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>destination quaternion to add to </td></tr>
-    <tr><td class="paramname">rsh</td><td>right hand side quaternion to add </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00074">74</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="acd670264e49743d35f38028b8e2a8800"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionConjugate" ref="acd670264e49743d35f38028b8e2a8800" args="(rs_quaternion *q)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionConjugate </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em></td><td>)</td>
-          <td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Conjugates the quaternion </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>quaternion to conjugate </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00127">127</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa810f8857439564e7b3be771f47b40ca"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionDot" ref="aa810f8857439564e7b3be771f47b40ca" args="(const rs_quaternion *q0, const rs_quaternion *q1)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static float rsQuaternionDot </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q1</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Dot product of two quaternions </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q0</td><td>first quaternion </td></tr>
-    <tr><td class="paramname">q1</td><td>second quaternion </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>dot product between q0 and q1 </dd></dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00140">140</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7726c524868c49892976fec53ea0693b"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionGetMatrixUnit" ref="a7726c524868c49892976fec53ea0693b" args="(rs_matrix4x4 *m, const rs_quaternion *q)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionGetMatrixUnit </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
-          <td class="paramname"><em>m</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Computes rotation matrix from the normalized quaternion </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">m</td><td>resulting matrix </td></tr>
-    <tr><td class="paramname">p</td><td>normalized quaternion </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00228">228</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adf4423c521e34f3cf29d5dd5b5a93de0"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionLoadRotate" ref="adf4423c521e34f3cf29d5dd5b5a93de0" args="(rs_quaternion *q, float rot, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionLoadRotate </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Loads a quaternion that represents a rotation about an arbitrary vector (doesn't have to be unit) </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>quaternion to set </td></tr>
-    <tr><td class="paramname">rot</td><td>angle to rotate by </td></tr>
-    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
-    <tr><td class="paramname">y</td><td>component of a vector </td></tr>
-    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00111">111</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa72a43cf3d7b5924de1ddfaa5766db09"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionLoadRotateUnit" ref="aa72a43cf3d7b5924de1ddfaa5766db09" args="(rs_quaternion *q, float rot, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionLoadRotateUnit </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>rot</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Loads a quaternion that represents a rotation about an arbitrary unit vector </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>quaternion to set </td></tr>
-    <tr><td class="paramname">rot</td><td>angle to rotate by </td></tr>
-    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
-    <tr><td class="paramname">y</td><td>component of a vector </td></tr>
-    <tr><td class="paramname">x</td><td>component of a vector </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00090">90</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4f3d214912facf72f6a6d57e95aa3c3b"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionMultiply" ref="a4f3d214912facf72f6a6d57e95aa3c3b" args="(rs_quaternion *q, float s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>s</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply quaternion by a scalar </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>quaternion to multiply </td></tr>
-    <tr><td class="paramname">s</td><td>scalar </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00061">61</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8bbbb286a2e2cb71b416c053f44844c3"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionMultiply" ref="a8bbbb286a2e2cb71b416c053f44844c3" args="(rs_quaternion *q, const rs_quaternion *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionMultiply </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Multiply quaternion by another quaternion </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>destination quaternion </td></tr>
-    <tr><td class="paramname">rhs</td><td>right hand side quaternion to multiply by </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00163">163</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abb31aad2416044ad5bbf44ee7c838e2a"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionNormalize" ref="abb31aad2416044ad5bbf44ee7c838e2a" args="(rs_quaternion *q)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionNormalize </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em></td><td>)</td>
-          <td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Normalizes the quaternion </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>quaternion to normalize </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00149">149</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5ff868dbc33e710a666a102fdcc6670a"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionSet" ref="a5ff868dbc33e710a666a102fdcc6670a" args="(rs_quaternion *q, float w, float x, float y, float z)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionSet </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>w</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>x</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>y</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>z</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set the quaternion components </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">w</td><td>component </td></tr>
-    <tr><td class="paramname">x</td><td>component </td></tr>
-    <tr><td class="paramname">y</td><td>component </td></tr>
-    <tr><td class="paramname">z</td><td>component </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00035">35</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a249782133e54f13a8096d1fbe295714d"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionSet" ref="a249782133e54f13a8096d1fbe295714d" args="(rs_quaternion *q, const rs_quaternion *rhs)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionSet </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>rhs</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Set the quaternion from another quaternion </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>destination quaternion </td></tr>
-    <tr><td class="paramname">rhs</td><td>source quaternion </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00048">48</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a7da94a30e287cbb8148771a5cd768dbd"></a><!-- doxytag: member="rs_quaternion.rsh::rsQuaternionSlerp" ref="a7da94a30e287cbb8148771a5cd768dbd" args="(rs_quaternion *q, const rs_quaternion *q0, const rs_quaternion *q1, float t)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">static void rsQuaternionSlerp </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *&#160;</td>
-          <td class="paramname"><em>q1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">float&#160;</td>
-          <td class="paramname"><em>t</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td><code> [static]</code></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Performs spherical linear interpolation between two quaternions </p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">q</td><td>result quaternion from interpolation </td></tr>
-    <tr><td class="paramname">q0</td><td>first param </td></tr>
-    <tr><td class="paramname">q1</td><td>second param </td></tr>
-    <tr><td class="paramname">t</td><td>how much to interpolate by </td></tr>
-  </table>
-  </dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__quaternion_8rsh_source.html#l00182">182</a> of file <a class="el" href="rs__quaternion_8rsh_source.html">rs_quaternion.rsh</a>.</p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html b/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
deleted file mode 100644
index d286018..0000000
--- a/docs/html/reference/renderscript/rs__quaternion_8rsh_source.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_quaternion.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_quaternion.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__quaternion_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_QUATERNION_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_QUATERNION_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 
-<a name="l00034"></a>00034 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00035"></a><a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">00035</a> <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> w, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z) {
-<a name="l00036"></a>00036     q-&gt;w = w;
-<a name="l00037"></a>00037     q-&gt;x = x;
-<a name="l00038"></a>00038     q-&gt;y = y;
-<a name="l00039"></a>00039     q-&gt;z = z;
-<a name="l00040"></a>00040 }
-<a name="l00041"></a>00041 
-<a name="l00047"></a>00047 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00048"></a><a class="code" href="rs__quaternion_8rsh.html#a249782133e54f13a8096d1fbe295714d">00048</a> <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs) {
-<a name="l00049"></a>00049     q-&gt;w = rhs-&gt;w;
-<a name="l00050"></a>00050     q-&gt;x = rhs-&gt;x;
-<a name="l00051"></a>00051     q-&gt;y = rhs-&gt;y;
-<a name="l00052"></a>00052     q-&gt;z = rhs-&gt;z;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054 
-<a name="l00060"></a>00060 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00061"></a><a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">00061</a> <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> s) {
-<a name="l00062"></a>00062     q-&gt;w *= s;
-<a name="l00063"></a>00063     q-&gt;x *= s;
-<a name="l00064"></a>00064     q-&gt;y *= s;
-<a name="l00065"></a>00065     q-&gt;z *= s;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067 
-<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00074"></a><a class="code" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">00074</a> <a class="code" href="rs__quaternion_8rsh.html#a5e6e493b9917336b0d9118fdd4e91444">rsQuaternionAdd</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs) {
-<a name="l00075"></a>00075     q-&gt;w *= rhs-&gt;w;
-<a name="l00076"></a>00076     q-&gt;x *= rhs-&gt;x;
-<a name="l00077"></a>00077     q-&gt;y *= rhs-&gt;y;
-<a name="l00078"></a>00078     q-&gt;z *= rhs-&gt;z;
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 
-<a name="l00089"></a>00089 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00090"></a><a class="code" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">00090</a> <a class="code" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rsQuaternionLoadRotateUnit</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z) {
-<a name="l00091"></a>00091     rot *= (float)(M_PI / 180.0f) * 0.5f;
-<a name="l00092"></a>00092     <span class="keywordtype">float</span> c = <a class="code" href="rs__cl_8rsh.html#a8eec7aeb4b0c46b06cbcd1a3ac3e6f05">cos</a>(rot);
-<a name="l00093"></a>00093     <span class="keywordtype">float</span> s = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(rot);
-<a name="l00094"></a>00094 
-<a name="l00095"></a>00095     q-&gt;w = c;
-<a name="l00096"></a>00096     q-&gt;x = x * s;
-<a name="l00097"></a>00097     q-&gt;y = y * s;
-<a name="l00098"></a>00098     q-&gt;z = z * s;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100 
-<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00111"></a><a class="code" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">00111</a> <a class="code" href="rs__quaternion_8rsh.html#adf4423c521e34f3cf29d5dd5b5a93de0">rsQuaternionLoadRotate</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keywordtype">float</span> rot, <span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y, <span class="keywordtype">float</span> z) {
-<a name="l00112"></a>00112     <span class="keyword">const</span> <span class="keywordtype">float</span> len = x*x + y*y + z*z;
-<a name="l00113"></a>00113     <span class="keywordflow">if</span> (len != 1) {
-<a name="l00114"></a>00114         <span class="keyword">const</span> <span class="keywordtype">float</span> recipLen = 1.f / <a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>(len);
-<a name="l00115"></a>00115         x *= recipLen;
-<a name="l00116"></a>00116         y *= recipLen;
-<a name="l00117"></a>00117         z *= recipLen;
-<a name="l00118"></a>00118     }
-<a name="l00119"></a>00119     <a class="code" href="rs__quaternion_8rsh.html#aa72a43cf3d7b5924de1ddfaa5766db09">rsQuaternionLoadRotateUnit</a>(q, rot, x, y, z);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121 
-<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00127"></a><a class="code" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">00127</a> <a class="code" href="rs__quaternion_8rsh.html#acd670264e49743d35f38028b8e2a8800">rsQuaternionConjugate</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q) {
-<a name="l00128"></a>00128     q-&gt;x = -q-&gt;x;
-<a name="l00129"></a>00129     q-&gt;y = -q-&gt;y;
-<a name="l00130"></a>00130     q-&gt;z = -q-&gt;z;
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 
-<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keywordtype">float</span>
-<a name="l00140"></a><a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">00140</a> <a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a>(<span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1) {
-<a name="l00141"></a>00141     <span class="keywordflow">return</span> q0-&gt;w*q1-&gt;w + q0-&gt;x*q1-&gt;x + q0-&gt;y*q1-&gt;y + q0-&gt;z*q1-&gt;z;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 
-<a name="l00148"></a>00148 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00149"></a><a class="code" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">00149</a> <a class="code" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rsQuaternionNormalize</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q) {
-<a name="l00150"></a>00150     <span class="keyword">const</span> <span class="keywordtype">float</span> len = <a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a>(q, q);
-<a name="l00151"></a>00151     <span class="keywordflow">if</span> (len != 1) {
-<a name="l00152"></a>00152         <span class="keyword">const</span> <span class="keywordtype">float</span> recipLen = 1.f / <a class="code" href="rs__cl_8rsh.html#a92da0faef80c4d8f66e954c8c169a729">sqrt</a>(len);
-<a name="l00153"></a>00153         <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(q, recipLen);
-<a name="l00154"></a>00154     }
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 
-<a name="l00162"></a>00162 <span class="keyword">static</span> <span class="keywordtype">void</span> __attribute__((overloadable))
-<a name="l00163"></a><a class="code" href="rs__quaternion_8rsh.html#a8bbbb286a2e2cb71b416c053f44844c3">00163</a> <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, const <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *rhs) {
-<a name="l00164"></a>00164     <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> qtmp;
-<a name="l00165"></a>00165     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;qtmp, q);
-<a name="l00166"></a>00166 
-<a name="l00167"></a>00167     q-&gt;w = qtmp.w*rhs-&gt;w - qtmp.x*rhs-&gt;x - qtmp.y*rhs-&gt;y - qtmp.z*rhs-&gt;z;
-<a name="l00168"></a>00168     q-&gt;x = qtmp.w*rhs-&gt;x + qtmp.x*rhs-&gt;w + qtmp.y*rhs-&gt;z - qtmp.z*rhs-&gt;y;
-<a name="l00169"></a>00169     q-&gt;y = qtmp.w*rhs-&gt;y + qtmp.y*rhs-&gt;w + qtmp.z*rhs-&gt;x - qtmp.x*rhs-&gt;z;
-<a name="l00170"></a>00170     q-&gt;z = qtmp.w*rhs-&gt;z + qtmp.z*rhs-&gt;w + qtmp.x*rhs-&gt;y - qtmp.y*rhs-&gt;x;
-<a name="l00171"></a>00171     <a class="code" href="rs__quaternion_8rsh.html#abb31aad2416044ad5bbf44ee7c838e2a">rsQuaternionNormalize</a>(q);
-<a name="l00172"></a>00172 }
-<a name="l00173"></a>00173 
-<a name="l00181"></a>00181 <span class="keyword">static</span> <span class="keywordtype">void</span>
-<a name="l00182"></a><a class="code" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">00182</a> <a class="code" href="rs__quaternion_8rsh.html#a7da94a30e287cbb8148771a5cd768dbd">rsQuaternionSlerp</a>(<a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q0, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q1, <span class="keywordtype">float</span> t) {
-<a name="l00183"></a>00183     <span class="keywordflow">if</span> (t &lt;= 0.0f) {
-<a name="l00184"></a>00184         <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(q, q0);
-<a name="l00185"></a>00185         <span class="keywordflow">return</span>;
-<a name="l00186"></a>00186     }
-<a name="l00187"></a>00187     <span class="keywordflow">if</span> (t &gt;= 1.0f) {
-<a name="l00188"></a>00188         <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(q, q1);
-<a name="l00189"></a>00189         <span class="keywordflow">return</span>;
-<a name="l00190"></a>00190     }
-<a name="l00191"></a>00191 
-<a name="l00192"></a>00192     <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> tempq0, tempq1;
-<a name="l00193"></a>00193     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;tempq0, q0);
-<a name="l00194"></a>00194     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;tempq1, q1);
-<a name="l00195"></a>00195 
-<a name="l00196"></a>00196     <span class="keywordtype">float</span> angle = <a class="code" href="rs__quaternion_8rsh.html#aa810f8857439564e7b3be771f47b40ca">rsQuaternionDot</a>(q0, q1);
-<a name="l00197"></a>00197     <span class="keywordflow">if</span> (angle &lt; 0) {
-<a name="l00198"></a>00198         <a class="code" href="rs__quaternion_8rsh.html#a4f3d214912facf72f6a6d57e95aa3c3b">rsQuaternionMultiply</a>(&amp;tempq0, -1.0f);
-<a name="l00199"></a>00199         angle *= -1.0f;
-<a name="l00200"></a>00200     }
-<a name="l00201"></a>00201 
-<a name="l00202"></a>00202     <span class="keywordtype">float</span> scale, invScale;
-<a name="l00203"></a>00203     <span class="keywordflow">if</span> (angle + 1.0f &gt; 0.05f) {
-<a name="l00204"></a>00204         <span class="keywordflow">if</span> (1.0f - angle &gt;= 0.05f) {
-<a name="l00205"></a>00205             <span class="keywordtype">float</span> theta = <a class="code" href="rs__cl_8rsh.html#a07648648c7f857cfd1479821d4389751">acos</a>(angle);
-<a name="l00206"></a>00206             <span class="keywordtype">float</span> invSinTheta = 1.0f / <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(theta);
-<a name="l00207"></a>00207             scale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(theta * (1.0f - t)) * invSinTheta;
-<a name="l00208"></a>00208             invScale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(theta * t) * invSinTheta;
-<a name="l00209"></a>00209         } <span class="keywordflow">else</span> {
-<a name="l00210"></a>00210             scale = 1.0f - t;
-<a name="l00211"></a>00211             invScale = t;
-<a name="l00212"></a>00212         }
-<a name="l00213"></a>00213     } <span class="keywordflow">else</span> {
-<a name="l00214"></a>00214         <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(&amp;tempq1, tempq0.z, -tempq0.y, tempq0.x, -tempq0.w);
-<a name="l00215"></a>00215         scale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(M_PI * (0.5f - t));
-<a name="l00216"></a>00216         invScale = <a class="code" href="rs__cl_8rsh.html#a8c8cd526b44eb55aede77cf659f24306">sin</a>(M_PI * t);
-<a name="l00217"></a>00217     }
-<a name="l00218"></a>00218 
-<a name="l00219"></a>00219     <a class="code" href="rs__quaternion_8rsh.html#a5ff868dbc33e710a666a102fdcc6670a">rsQuaternionSet</a>(q, tempq0.w*scale + tempq1.w*invScale, tempq0.x*scale + tempq1.x*invScale,
-<a name="l00220"></a>00220                         tempq0.y*scale + tempq1.y*invScale, tempq0.z*scale + tempq1.z*invScale);
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222 
-<a name="l00228"></a><a class="code" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">00228</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="rs__quaternion_8rsh.html#a7726c524868c49892976fec53ea0693b">rsQuaternionGetMatrixUnit</a>(<a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> *m, <span class="keyword">const</span> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a> *q) {
-<a name="l00229"></a>00229     <span class="keywordtype">float</span> xx = q-&gt;x * q-&gt;x;
-<a name="l00230"></a>00230     <span class="keywordtype">float</span> xy = q-&gt;x * q-&gt;y;
-<a name="l00231"></a>00231     <span class="keywordtype">float</span> xz = q-&gt;x * q-&gt;z;
-<a name="l00232"></a>00232     <span class="keywordtype">float</span> xw = q-&gt;x * q-&gt;w;
-<a name="l00233"></a>00233     <span class="keywordtype">float</span> yy = q-&gt;y * q-&gt;y;
-<a name="l00234"></a>00234     <span class="keywordtype">float</span> yz = q-&gt;y * q-&gt;z;
-<a name="l00235"></a>00235     <span class="keywordtype">float</span> yw = q-&gt;y * q-&gt;w;
-<a name="l00236"></a>00236     <span class="keywordtype">float</span> zz = q-&gt;z * q-&gt;z;
-<a name="l00237"></a>00237     <span class="keywordtype">float</span> zw = q-&gt;z * q-&gt;w;
-<a name="l00238"></a>00238 
-<a name="l00239"></a>00239     m-&gt;m[0]  = 1.0f - 2.0f * ( yy + zz );
-<a name="l00240"></a>00240     m-&gt;m[4]  =        2.0f * ( xy - zw );
-<a name="l00241"></a>00241     m-&gt;m[8]  =        2.0f * ( xz + yw );
-<a name="l00242"></a>00242     m-&gt;m[1]  =        2.0f * ( xy + zw );
-<a name="l00243"></a>00243     m-&gt;m[5]  = 1.0f - 2.0f * ( xx + zz );
-<a name="l00244"></a>00244     m-&gt;m[9]  =        2.0f * ( yz - xw );
-<a name="l00245"></a>00245     m-&gt;m[2]  =        2.0f * ( xz - yw );
-<a name="l00246"></a>00246     m-&gt;m[6]  =        2.0f * ( yz + xw );
-<a name="l00247"></a>00247     m-&gt;m[10] = 1.0f - 2.0f * ( xx + yy );
-<a name="l00248"></a>00248     m-&gt;m[3]  = m-&gt;m[7] = m-&gt;m[11] = m-&gt;m[12] = m-&gt;m[13] = m-&gt;m[14] = 0.0f;
-<a name="l00249"></a>00249     m-&gt;m[15] = 1.0f;
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251 
-<a name="l00252"></a>00252 <span class="preprocessor">#endif</span>
-<a name="l00253"></a>00253 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__sampler_8rsh.html b/docs/html/reference/renderscript/rs__sampler_8rsh.html
deleted file mode 100644
index 6393ade..0000000
--- a/docs/html/reference/renderscript/rs__sampler_8rsh.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_sampler.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_sampler.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_sampler_value&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__sampler_8rsh.html#acb1bec2c3d1edd752dd60499c8db58a4">rsSamplerGetMinification</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_sampler_value&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__sampler_8rsh.html#a5bddb73826cd20a79c31f012a4637e83">rsSamplerGetMagnification</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_sampler_value&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__sampler_8rsh.html#a68a7ab6724019c6e72fae8eb45aa48dd">rsSamplerGetWrapS</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">rs_sampler_value&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__sampler_8rsh.html#ab6b25d3b9afa16f418e2dee78ebb4a75">rsSamplerGetWrapT</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__sampler_8rsh.html#ab1e79984609469604cba8e2b76a98844">rsSamplerGetAnisotropy</a> (<a class="el" href="structrs__sampler.html">rs_sampler</a> s)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Sampler routines. </p>
-
-<p>Definition in file <a class="el" href="rs__sampler_8rsh_source.html">rs_sampler.rsh</a>.</p>
-</div><hr/><h2>Function Documentation</h2>
-<a class="anchor" id="ab1e79984609469604cba8e2b76a98844"></a><!-- doxytag: member="rs_sampler.rsh::rsSamplerGetAnisotropy" ref="ab1e79984609469604cba8e2b76a98844" args="(rs_sampler s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rsSamplerGetAnisotropy </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get sampler anisotropy</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">s</td><td>sampler to query </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>anisotropy </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a5bddb73826cd20a79c31f012a4637e83"></a><!-- doxytag: member="rs_sampler.rsh::rsSamplerGetMagnification" ref="a5bddb73826cd20a79c31f012a4637e83" args="(rs_sampler s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_sampler_value rsSamplerGetMagnification </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get sampler magnification value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">s</td><td>sampler to query </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>magnification value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="acb1bec2c3d1edd752dd60499c8db58a4"></a><!-- doxytag: member="rs_sampler.rsh::rsSamplerGetMinification" ref="acb1bec2c3d1edd752dd60499c8db58a4" args="(rs_sampler s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_sampler_value rsSamplerGetMinification </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get sampler minification value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">s</td><td>sampler to query </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>minification value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a68a7ab6724019c6e72fae8eb45aa48dd"></a><!-- doxytag: member="rs_sampler.rsh::rsSamplerGetWrapS" ref="a68a7ab6724019c6e72fae8eb45aa48dd" args="(rs_sampler s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_sampler_value rsSamplerGetWrapS </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get sampler wrap S value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">s</td><td>sampler to query </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>wrap S value </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ab6b25d3b9afa16f418e2dee78ebb4a75"></a><!-- doxytag: member="rs_sampler.rsh::rsSamplerGetWrapT" ref="ab6b25d3b9afa16f418e2dee78ebb4a75" args="(rs_sampler s)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">rs_sampler_value rsSamplerGetWrapT </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__sampler.html">rs_sampler</a>&#160;</td>
-          <td class="paramname"><em>s</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Get sampler wrap T value</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">s</td><td>sampler to query </td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>wrap T value </dd></dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__sampler_8rsh_source.html b/docs/html/reference/renderscript/rs__sampler_8rsh_source.html
deleted file mode 100644
index 82a7cfa..0000000
--- a/docs/html/reference/renderscript/rs__sampler_8rsh_source.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_sampler.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_sampler.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__sampler_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2012 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00023"></a>00023 <span class="preprocessor">#ifndef __RS_SAMPLER_RSH__</span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define __RS_SAMPLER_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span>
-<a name="l00026"></a>00026 <span class="comment">// New API&#39;s</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00035"></a>00035 <span class="keyword">extern</span> rs_sampler_value __attribute__((overloadable))
-<a name="l00036"></a>00036     <a class="code" href="rs__sampler_8rsh.html#acb1bec2c3d1edd752dd60499c8db58a4">rsSamplerGetMinification</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s);
-<a name="l00037"></a>00037 
-<a name="l00044"></a>00044 extern rs_sampler_value __attribute__((overloadable))
-<a name="l00045"></a>00045     <a class="code" href="rs__sampler_8rsh.html#a5bddb73826cd20a79c31f012a4637e83">rsSamplerGetMagnification</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s);
-<a name="l00046"></a>00046 
-<a name="l00053"></a>00053 extern rs_sampler_value __attribute__((overloadable))
-<a name="l00054"></a>00054     <a class="code" href="rs__sampler_8rsh.html#a68a7ab6724019c6e72fae8eb45aa48dd">rsSamplerGetWrapS</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s);
-<a name="l00055"></a>00055 
-<a name="l00062"></a>00062 extern rs_sampler_value __attribute__((overloadable))
-<a name="l00063"></a>00063     <a class="code" href="rs__sampler_8rsh.html#ab6b25d3b9afa16f418e2dee78ebb4a75">rsSamplerGetWrapT</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s);
-<a name="l00064"></a>00064 
-<a name="l00071"></a>00071 extern <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00072"></a>00072     <a class="code" href="rs__sampler_8rsh.html#ab1e79984609469604cba8e2b76a98844">rsSamplerGetAnisotropy</a>(<a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a> s);
-<a name="l00073"></a>00073 
-<a name="l00074"></a>00074 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span>
-<a name="l00076"></a>00076 <span class="preprocessor">#endif // __RS_SAMPLER_RSH__</span>
-<a name="l00077"></a>00077 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__time_8rsh.html b/docs/html/reference/renderscript/rs__time_8rsh.html
deleted file mode 100644
index 8be550a..0000000
--- a/docs/html/reference/renderscript/rs__time_8rsh.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_time.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_time.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html">rs_tm</a></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rsTime</a> (<a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structrs__tm.html">rs_tm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rsLocaltime</a> (<a class="el" href="structrs__tm.html">rs_tm</a> *local, const <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rsUptimeMillis</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rsUptimeNanos</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rsGetDt</a> (void)</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>RenderScript time routines. </p>
-<p>This file contains RenderScript functions relating to time and date manipulation. </p>
-
-<p>Definition in file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
-</div><hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="ad2b4759a0a6a98bd79b7ad82a4b057d6"></a><!-- doxytag: member="rs_time.rsh::rs_time_t" ref="ad2b4759a0a6a98bd79b7ad82a4b057d6" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Calendar time interpreted as seconds elapsed since the Epoch (00:00:00 on January 1, 1970, Coordinated Universal Time (UTC)). </p>
-
-<p>Definition at line <a class="el" href="rs__time_8rsh_source.html#l00031">31</a> of file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="adea2682186fd903752431ad848bd8bf4"></a><!-- doxytag: member="rs_time.rsh::rsGetDt" ref="adea2682186fd903752431ad848bd8bf4" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">float rsGetDt </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the time in seconds since this function was last called in this script.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Time in seconds. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a08a8fcadae964f7416aef487da624110"></a><!-- doxytag: member="rs_time.rsh::rsLocaltime" ref="a08a8fcadae964f7416aef487da624110" args="(rs_tm *local, const rs_time_t *timer)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="structrs__tm.html">rs_tm</a>* rsLocaltime </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="structrs__tm.html">rs_tm</a> *&#160;</td>
-          <td class="paramname"><em>local</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *&#160;</td>
-          <td class="paramname"><em>timer</em>&#160;</td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Converts the time specified by <code>timer</code> into broken-down time and stores it in <code>local</code>. This function also returns a pointer to <code>local</code>. If <code>local</code> is NULL, this function does nothing and returns NULL.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">local</td><td>Broken-down time. </td></tr>
-    <tr><td class="paramname">timer</td><td>Input time as calendar time.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Pointer to broken-down time (same as input <code>local</code>). </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a555f9324acb8c3d0c6f09a1d05478ce2"></a><!-- doxytag: member="rs_time.rsh::rsTime" ref="a555f9324acb8c3d0c6f09a1d05478ce2" args="(rs_time_t *timer)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> rsTime </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *&#160;</td>
-          <td class="paramname"><em>timer</em></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the number of seconds since the Epoch (00:00:00 UTC, January 1, 1970). If <code>timer</code> is non-NULL, the result is also stored in the memory pointed to by this variable. If an error occurs, a value of -1 is returned.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
-  <table class="params">
-    <tr><td class="paramname">timer</td><td>Location to also store the returned calendar time.</td></tr>
-  </table>
-  </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Seconds since the Epoch. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a3c406e51a769718dd1c760518b9cad44"></a><!-- doxytag: member="rs_time.rsh::rsUptimeMillis" ref="a3c406e51a769718dd1c760518b9cad44" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> rsUptimeMillis </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the current system clock (uptime) in milliseconds.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Uptime in milliseconds. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a24e2cc12acf1e7fdd857d1a48981395d"></a><!-- doxytag: member="rs_time.rsh::rsUptimeNanos" ref="a24e2cc12acf1e7fdd857d1a48981395d" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> rsUptimeNanos </td>
-          <td>(</td>
-          <td class="paramtype">void&#160;</td>
-          <td class="paramname"></td><td>)</td>
-          <td></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Returns the current system clock (uptime) in nanoseconds.</p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Uptime in nanoseconds. </dd></dl>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__time_8rsh_source.html b/docs/html/reference/renderscript/rs__time_8rsh_source.html
deleted file mode 100644
index 482fd77..0000000
--- a/docs/html/reference/renderscript/rs__time_8rsh_source.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_time.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_time.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__time_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2011 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00024"></a>00024 <span class="preprocessor">#ifndef __RS_TIME_RSH__</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define __RS_TIME_RSH__</span>
-<a name="l00026"></a>00026 <span class="preprocessor"></span>
-<a name="l00031"></a><a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">00031</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a>;
-<a name="l00032"></a>00032 
-<a name="l00049"></a><a class="code" href="structrs__tm.html">00049</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00050"></a><a class="code" href="structrs__tm.html#ae1590aa8850370a4712da801edb8da9e">00050</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#ae1590aa8850370a4712da801edb8da9e" title="seconds">tm_sec</a>;     
-<a name="l00051"></a><a class="code" href="structrs__tm.html#abd4bd6ccf0d1f20859ecaecf850ce85b">00051</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#abd4bd6ccf0d1f20859ecaecf850ce85b" title="minutes">tm_min</a>;     
-<a name="l00052"></a><a class="code" href="structrs__tm.html#afb46962bc20f8724567981adc3711b5a">00052</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#afb46962bc20f8724567981adc3711b5a" title="hours">tm_hour</a>;    
-<a name="l00053"></a><a class="code" href="structrs__tm.html#ac87e43828f05bf62d0c770889b81ff15">00053</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#ac87e43828f05bf62d0c770889b81ff15" title="day of the month">tm_mday</a>;    
-<a name="l00054"></a><a class="code" href="structrs__tm.html#a34a5466d376e405f343ed4e1592d7832">00054</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a34a5466d376e405f343ed4e1592d7832" title="month">tm_mon</a>;     
-<a name="l00055"></a><a class="code" href="structrs__tm.html#a74e582a615a448949969a0982d8a62d2">00055</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a74e582a615a448949969a0982d8a62d2" title="year">tm_year</a>;    
-<a name="l00056"></a><a class="code" href="structrs__tm.html#a4d40217d3cd15b51e0093db1810426e4">00056</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a4d40217d3cd15b51e0093db1810426e4" title="day of the week">tm_wday</a>;    
-<a name="l00057"></a><a class="code" href="structrs__tm.html#a589eab24c4d79f05f0b3601162ed34d0">00057</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a589eab24c4d79f05f0b3601162ed34d0" title="day of the year">tm_yday</a>;    
-<a name="l00058"></a><a class="code" href="structrs__tm.html#a8cffdd224d2ea30a079a86ef1e41e111">00058</a>     <span class="keywordtype">int</span> <a class="code" href="structrs__tm.html#a8cffdd224d2ea30a079a86ef1e41e111" title="daylight savings time">tm_isdst</a>;   
-<a name="l00059"></a>00059 } <a class="code" href="structrs__tm.html">rs_tm</a>;
-<a name="l00060"></a>00060 
-<a name="l00070"></a>00070 <span class="keyword">extern</span> <a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> __attribute__((overloadable))
-<a name="l00071"></a>00071     <a class="code" href="rs__time_8rsh.html#a555f9324acb8c3d0c6f09a1d05478ce2">rsTime</a>(<a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer);
-<a name="l00072"></a>00072 
-<a name="l00083"></a>00083 extern <a class="code" href="structrs__tm.html">rs_tm</a> * __attribute__((overloadable))
-<a name="l00084"></a>00084     <a class="code" href="rs__time_8rsh.html#a08a8fcadae964f7416aef487da624110">rsLocaltime</a>(<a class="code" href="structrs__tm.html">rs_tm</a> *local, const <a class="code" href="rs__time_8rsh.html#ad2b4759a0a6a98bd79b7ad82a4b057d6">rs_time_t</a> *timer);
-<a name="l00085"></a>00085 
-<a name="l00091"></a>00091 extern <a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> __attribute__((overloadable))
-<a name="l00092"></a>00092     <a class="code" href="rs__time_8rsh.html#a3c406e51a769718dd1c760518b9cad44">rsUptimeMillis</a>(<span class="keywordtype">void</span>);
-<a name="l00093"></a>00093 
-<a name="l00099"></a>00099 extern <a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a> __attribute__((overloadable))
-<a name="l00100"></a>00100     <a class="code" href="rs__time_8rsh.html#a24e2cc12acf1e7fdd857d1a48981395d">rsUptimeNanos</a>(<span class="keywordtype">void</span>);
-<a name="l00101"></a>00101 
-<a name="l00108"></a>00108 extern <span class="keywordtype">float</span> __attribute__((overloadable))
-<a name="l00109"></a>00109     <a class="code" href="rs__time_8rsh.html#adea2682186fd903752431ad848bd8bf4">rsGetDt</a>(<span class="keywordtype">void</span>);
-<a name="l00110"></a>00110 
-<a name="l00111"></a>00111 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__types_8rsh.html b/docs/html/reference/renderscript/rs__types_8rsh.html
deleted file mode 100644
index cbaa750..0000000
--- a/docs/html/reference/renderscript/rs__types_8rsh.html
+++ /dev/null
@@ -1,1023 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_types.rsh File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Data Structures</a> &#124;
-<a href="#typedef-members">Typedefs</a> &#124;
-<a href="#enum-members">Enumerations</a>  </div>
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_types.rsh File Reference</div>  </div>
-</div>
-<div class="contents">
-<div class="textblock"><code>#include &quot;stdbool.h&quot;</code><br/>
-</div><table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__element.html">rs_element</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript element.  <a href="structrs__element.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__type.html">rs_type</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript type.  <a href="structrs__type.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__allocation.html">rs_allocation</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript allocation.  <a href="structrs__allocation.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__sampler.html">rs_sampler</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript sampler object.  <a href="structrs__sampler.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__script.html">rs_script</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript script object.  <a href="structrs__script.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__mesh.html">rs_mesh</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript mesh object.  <a href="structrs__mesh.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__path.html">rs_path</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript Path object.  <a href="structrs__path.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__fragment.html">rs_program_fragment</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript ProgramFragment object.  <a href="structrs__program__fragment.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__vertex.html">rs_program_vertex</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript ProgramVertex object.  <a href="structrs__program__vertex.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__raster.html">rs_program_raster</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript ProgramRaster object.  <a href="structrs__program__raster.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__program__store.html">rs_program_store</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript ProgramStore object.  <a href="structrs__program__store.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__font.html">rs_font</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque handle to a RenderScript font object.  <a href="structrs__font.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">4x4 float matrix  <a href="structrs__matrix4x4.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">3x3 float matrix  <a href="structrs__matrix3x3.html#details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">2x2 float matrix  <a href="structrs__matrix2x2.html#details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">int8_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">int16_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">ssize_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef short&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a></td></tr>
-<tr><td colspan="2"><h2><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">rs_allocation_cubemap_face</a> </td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enum for selecting cube map faces. <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171">rs_allocation_usage_type</a> </td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Bitfield to specify the usage types for an allocation.  <a href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_primitive</a> { <br/>
-&#160;&#160;<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a337ab7046b7cb5cc9eb14bc325ae3158">RS_PRIMITIVE_POINT</a> =  0, 
-<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a09a49eaa42585d6181c8a2f711b63ddf">RS_PRIMITIVE_LINE</a> =  1, 
-<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951abe563a9f68706a5aa567793a5088b4da">RS_PRIMITIVE_LINE_STRIP</a> =  2, 
-<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951aeb062ef8811156915afccfc5f4259b79">RS_PRIMITIVE_TRIANGLE</a> =  3, 
-<br/>
-&#160;&#160;<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a497d5376ef6c9f9ead810a053b9b35d9">RS_PRIMITIVE_TRIANGLE_STRIP</a> =  4, 
-<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951afadd96d3a17724e061d9eb07bfca4a01">RS_PRIMITIVE_TRIANGLE_FAN</a> =  5, 
-<a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a136481c7695b09f01126da71bb132c9d">RS_PRIMITIVE_INVALID</a> =  100
-<br/>
- }</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">rs_data_type</a> </td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration for possible element data types.  <a href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">rs_data_kind</a> </td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumeration for possible element data kind.  <a href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_depth_func</a> { <br/>
-&#160;&#160;<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa8d469fa992bac113a001d75aa7cfbb5a">RS_DEPTH_FUNC_ALWAYS</a> =  0, 
-<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfac1ddb06fe80be898bf8d4a517187575a">RS_DEPTH_FUNC_LESS</a> =  1, 
-<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa62459990f41930a88542b878ddd53d9f">RS_DEPTH_FUNC_LEQUAL</a> =  2, 
-<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa412bb65be35e058a7699b8211cc2ef7d">RS_DEPTH_FUNC_GREATER</a> =  3, 
-<br/>
-&#160;&#160;<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2858ef91becfeb84d8f34a1458a4126d">RS_DEPTH_FUNC_GEQUAL</a> =  4, 
-<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa56339400e4089e546199547717bdcd21">RS_DEPTH_FUNC_EQUAL</a> =  5, 
-<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2105e438ae89b89a2f4361483e65966d">RS_DEPTH_FUNC_NOTEQUAL</a> =  6, 
-<a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfadfc3917c562a540b4114181440b909e3">RS_DEPTH_FUNC_INVALID</a> =  100
-<br/>
- }</td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Define the standard RenderScript types</p>
-<p>Integers 8 bit: char, int8_t 16 bit: short, int16_t 32 bit: int, in32_t 64 bit: long, long long, int64_t</p>
-<p>Unsigned Integers 8 bit: uchar, uint8_t 16 bit: ushort, uint16_t 32 bit: uint, uint32_t 64 bit: ulong, uint64_t</p>
-<p>Floating point 32 bit: float 64 bit: double</p>
-<p>Vectors of length 2, 3, and 4 are supported for all the types above. </p>
-
-<p>Definition in file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="ac532b4c1895c8bd4fb75dc370c484351"></a><!-- doxytag: member="rs_types.rsh::char2" ref="ac532b4c1895c8bd4fb75dc370c484351" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic char type. Provides two char fields packed into a single 16 bit field with 16 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00292">292</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4617fb31f4c03402515efee0a9b56210"></a><!-- doxytag: member="rs_types.rsh::char3" ref="a4617fb31f4c03402515efee0a9b56210" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic char type. Provides three char fields packed into a single 32 bit field with 32 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00297">297</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aecb498648daac97c7cc5f31c242dfa03"></a><!-- doxytag: member="rs_types.rsh::char4" ref="aecb498648daac97c7cc5f31c242dfa03" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic char type. Provides four char fields packed into a single 32 bit field with 32 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00302">302</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a75ef868cedebc2a6eeb1bc6ca6ca49c3"></a><!-- doxytag: member="rs_types.rsh::double2" ref="a75ef868cedebc2a6eeb1bc6ca6ca49c3" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef double <a class="el" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic double type. Provides two double fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00212">212</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa3c90d5a23d674185a13e95402eda7eb"></a><!-- doxytag: member="rs_types.rsh::double3" ref="aa3c90d5a23d674185a13e95402eda7eb" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef double <a class="el" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic double type. Provides three double fields packed into a single 256 bit field with 256 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00217">217</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a60f4b04e076f0dd0ecc99c365fc4ca21"></a><!-- doxytag: member="rs_types.rsh::double4" ref="a60f4b04e076f0dd0ecc99c365fc4ca21" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef double <a class="el" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic double type. Provides four double fields packed into a single 256 bit field with 256 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00222">222</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5086d0fcb71f916c936af486ccf0dd41"></a><!-- doxytag: member="rs_types.rsh::float2" ref="a5086d0fcb71f916c936af486ccf0dd41" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef float <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic float type. Provides two float fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00195">195</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0046fa0f208d0899adbcf1f8b5aafadd"></a><!-- doxytag: member="rs_types.rsh::float3" ref="a0046fa0f208d0899adbcf1f8b5aafadd" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef float <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic float type. Provides three float fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00200">200</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adb5162dc168ddd471d948faa60b37c5e"></a><!-- doxytag: member="rs_types.rsh::float4" ref="adb5162dc168ddd471d948faa60b37c5e" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef float <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic float type. Provides four float fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00206">206</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa343fa3b3d06292b959ffdd4c4703b06"></a><!-- doxytag: member="rs_types.rsh::int16_t" ref="aa343fa3b3d06292b959ffdd4c4703b06" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">int16_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>16 bit integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00067">67</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6bc1fa1354fe2145b8f12b4bbfafcf4c"></a><!-- doxytag: member="rs_types.rsh::int2" ref="a6bc1fa1354fe2145b8f12b4bbfafcf4c" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic int type. Provides two int fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00324">324</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad5512266b63fd06dcf450f6c9d5326c8"></a><!-- doxytag: member="rs_types.rsh::int3" ref="ad5512266b63fd06dcf450f6c9d5326c8" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic int type. Provides three int fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00329">329</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a32f2e37ee053cf2ce8ca28d1f74630e5"></a><!-- doxytag: member="rs_types.rsh::int32_t" ref="a32f2e37ee053cf2ce8ca28d1f74630e5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>32 bit integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00071">71</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a897deab71f679999ed99d4153c797e70"></a><!-- doxytag: member="rs_types.rsh::int4" ref="a897deab71f679999ed99d4153c797e70" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef int <a class="el" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic int type. Provides two four fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00334">334</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a996e72f71b11a5bb8b3b7b6936b1516d"></a><!-- doxytag: member="rs_types.rsh::int64_t" ref="a996e72f71b11a5bb8b3b7b6936b1516d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef long long <a class="el" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>64 bit integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00075">75</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad566f6541e98b74246db1a3a3a85ad49"></a><!-- doxytag: member="rs_types.rsh::int8_t" ref="ad566f6541e98b74246db1a3a3a85ad49" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef char <a class="el" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">int8_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>8 bit integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00063">63</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="afd55d62cee0785034b73375acd0df9da"></a><!-- doxytag: member="rs_types.rsh::long2" ref="afd55d62cee0785034b73375acd0df9da" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef long <a class="el" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic long type. Provides two long fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00340">340</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad9cedbf4050fad14138d1dcb3428ec18"></a><!-- doxytag: member="rs_types.rsh::long3" ref="ad9cedbf4050fad14138d1dcb3428ec18" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef long <a class="el" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic long type. Provides three long fields packed into a single 256 bit field with 256 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00345">345</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae177e4918f36e5c9da36d524cdb7a2e7"></a><!-- doxytag: member="rs_types.rsh::long4" ref="ae177e4918f36e5c9da36d524cdb7a2e7" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef long <a class="el" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic long type. Provides four long fields packed into a single 256 bit field with 256 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00350">350</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a86f99f382dc35fc8ad98b524fe6d5447"></a><!-- doxytag: member="rs_types.rsh::rs_quaternion" ref="a86f99f382dc35fc8ad98b524fe6d5447" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="el" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>quaternion type for use with the quaternion functions </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00383">383</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a303d3ad18aaeacfcfeda2b8580b98796"></a><!-- doxytag: member="rs_types.rsh::short2" ref="a303d3ad18aaeacfcfeda2b8580b98796" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic short type. Provides two short fields packed into a single 32 bit field with 32 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00308">308</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3f4967691ae2b249511b5f3dd9e18793"></a><!-- doxytag: member="rs_types.rsh::short3" ref="a3f4967691ae2b249511b5f3dd9e18793" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic short type. Provides three short fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00313">313</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a198219da0b1d51c8d7f8f12aad7e502d"></a><!-- doxytag: member="rs_types.rsh::short4" ref="a198219da0b1d51c8d7f8f12aad7e502d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef short <a class="el" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic short type. Provides four short fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00318">318</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a29d85914ddff32967d85ada69854206d"></a><!-- doxytag: member="rs_types.rsh::size_t" ref="a29d85914ddff32967d85ada69854206d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="el" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Typedef for unsigned int </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00111">111</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a170745d0d946e79c4c2a056d1d158996"></a><!-- doxytag: member="rs_types.rsh::ssize_t" ref="a170745d0d946e79c4c2a056d1d158996" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> <a class="el" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">ssize_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Typedef for int (use for 32-bit integers) </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00115">115</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a27c902d5ca78afa82d5ed75554d5cedc"></a><!-- doxytag: member="rs_types.rsh::uchar" ref="a27c902d5ca78afa82d5ed75554d5cedc" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>8 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00095">95</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aff5eb7cd53a34bb01924bf64485296de"></a><!-- doxytag: member="rs_types.rsh::uchar2" ref="aff5eb7cd53a34bb01924bf64485296de" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="el" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic uchar type. Provides two uchar fields packed into a single 16 bit field with 16 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00228">228</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a247b5eacf2b662849668cbc33120343f"></a><!-- doxytag: member="rs_types.rsh::uchar3" ref="a247b5eacf2b662849668cbc33120343f" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="el" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic uchar type. Provides three uchar fields packed into a single 32 bit field with 32 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00233">233</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae6ed52a87d4ff920c303b13b00f7396d"></a><!-- doxytag: member="rs_types.rsh::uchar4" ref="ae6ed52a87d4ff920c303b13b00f7396d" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="el" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic uchar type. Provides four uchar fields packed into a single 32 bit field with 32 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00238">238</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4f5fce8c1ef282264f9214809524d836"></a><!-- doxytag: member="rs_types.rsh::uint" ref="a4f5fce8c1ef282264f9214809524d836" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>32 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00103">103</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a273cf69d639a59973b6019625df33e30"></a><!-- doxytag: member="rs_types.rsh::uint16_t" ref="a273cf69d639a59973b6019625df33e30" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef unsigned short <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>16 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00083">83</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaf90cd1f01a121e824fc6e1b927e7683"></a><!-- doxytag: member="rs_types.rsh::uint2" ref="aaf90cd1f01a121e824fc6e1b927e7683" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="el" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic uint type. Provides two uint fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00260">260</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae80e36ac834c891aa76b09a220344e78"></a><!-- doxytag: member="rs_types.rsh::uint3" ref="ae80e36ac834c891aa76b09a220344e78" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="el" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic uint type. Provides three uint fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00265">265</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a435d1572bf3f880d55459d9805097f62"></a><!-- doxytag: member="rs_types.rsh::uint32_t" ref="a435d1572bf3f880d55459d9805097f62" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef unsigned int <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>32 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00087">87</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad92f0ec6c2cdc1f11a6d7fe321047462"></a><!-- doxytag: member="rs_types.rsh::uint4" ref="ad92f0ec6c2cdc1f11a6d7fe321047462" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="el" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic uint type. Provides four uint fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00270">270</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaa5d1cd013383c889537491c3cfd9aad"></a><!-- doxytag: member="rs_types.rsh::uint64_t" ref="aaa5d1cd013383c889537491c3cfd9aad" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef unsigned long long <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>64 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00091">91</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aba7bc1797add20fe3efdf37ced1182c5"></a><!-- doxytag: member="rs_types.rsh::uint8_t" ref="aba7bc1797add20fe3efdf37ced1182c5" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef unsigned char <a class="el" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>8 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00079">79</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab46637ef82283186e57f54756fe67203"></a><!-- doxytag: member="rs_types.rsh::ulong" ref="ab46637ef82283186e57f54756fe67203" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a> <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Typedef for unsigned long (use for 64-bit unsigned integers) </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00107">107</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a56988b12ab16acf753356f7a5c70565a"></a><!-- doxytag: member="rs_types.rsh::ulong2" ref="a56988b12ab16acf753356f7a5c70565a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="el" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic ulong type. Provides two ulong fields packed into a single 128 bit field with 128 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00276">276</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac623a569c28935fbedd3a8ed27ae0696"></a><!-- doxytag: member="rs_types.rsh::ulong3" ref="ac623a569c28935fbedd3a8ed27ae0696" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="el" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic ulong type. Provides three ulong fields packed into a single 256 bit field with 256 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00281">281</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3029c54b8e1779a1ddbdfe875432d137"></a><!-- doxytag: member="rs_types.rsh::ulong4" ref="a3029c54b8e1779a1ddbdfe875432d137" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="el" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic ulong type. Provides four ulong fields packed into a single 256 bit field with 256 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00286">286</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9e58a7bf060b7a5fbf6a401d3020adca"></a><!-- doxytag: member="rs_types.rsh::ushort" ref="a9e58a7bf060b7a5fbf6a401d3020adca" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>16 bit unsigned integer type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00099">99</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a24a9d78cfc32475e2c6eb1cdec239bf2"></a><!-- doxytag: member="rs_types.rsh::ushort2" ref="a24a9d78cfc32475e2c6eb1cdec239bf2" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="el" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic ushort type. Provides two ushort fields packed into a single 32 bit field with 32 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00244">244</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab78391445785d2ca0276392a9c97fcba"></a><!-- doxytag: member="rs_types.rsh::ushort3" ref="ab78391445785d2ca0276392a9c97fcba" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="el" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic ushort type. Provides three ushort fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00249">249</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a77a09fa01d7fc721bbc44c32aac2d487"></a><!-- doxytag: member="rs_types.rsh::ushort4" ref="a77a09fa01d7fc721bbc44c32aac2d487" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef <a class="el" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="el" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Vector version of the basic ushort type. Provides four ushort fields packed into a single 64 bit field with 64 bit alignment. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00254">254</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<hr/><h2>Enumeration Type Documentation</h2>
-<a class="anchor" id="af8c988b9715d55b6e41e0ee1925fb171"></a><!-- doxytag: member="rs_types.rsh::rs_allocation_usage_type" ref="af8c988b9715d55b6e41e0ee1925fb171" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171">rs_allocation_usage_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Bitfield to specify the usage types for an allocation. </p>
-<p>These values are ORed together to specify which usages or memory spaces are relevant to an allocation or an operation on an allocation. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00408">408</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1692d177c4a3fe1544bd91172056581a"></a><!-- doxytag: member="rs_types.rsh::rs_data_kind" ref="a1692d177c4a3fe1544bd91172056581a" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">rs_data_kind</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Enumeration for possible element data kind. </p>
-<p>The special interpretation of the data if required. This is primarly useful for graphical data. USER indicates no special interpretation is expected. PIXEL is used in conjunction with the standard data types for representing texture formats. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00524">524</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae7551db5705f864fde49c13660aff647"></a><!-- doxytag: member="rs_types.rsh::rs_data_type" ref="ae7551db5705f864fde49c13660aff647" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">rs_data_type</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-
-<p>Enumeration for possible element data types. </p>
-<p>DataType represents the basic type information for a basic element. The naming convention follows. For numeric types it is FLOAT, SIGNED, or UNSIGNED followed by the _BITS where BITS is the size of the data. BOOLEAN is a true / false (1,0) represented in an 8 bit container. The UNSIGNED variants with multiple bit definitions are for packed graphical data formats and represent vectors with per vector member sizes which are treated as a single unit for packing and alignment purposes.</p>
-<p>MATRIX the three matrix types contain FLOAT_32 elements and are treated as 32 bits for alignment purposes.</p>
-<p>RS_* objects. 32 bit opaque handles. </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00478">478</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bf"></a><!-- doxytag: member="rs_types.rsh::rs_depth_func" ref="a03e91ad8ebfc283ba20f7443dea4a4bf" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_depth_func</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfa8d469fa992bac113a001d75aa7cfbb5a"></a><!-- doxytag: member="RS_DEPTH_FUNC_ALWAYS" ref="a03e91ad8ebfc283ba20f7443dea4a4bfa8d469fa992bac113a001d75aa7cfbb5a" args="" -->RS_DEPTH_FUNC_ALWAYS</em>&nbsp;</td><td>
-<p>Always drawn </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfac1ddb06fe80be898bf8d4a517187575a"></a><!-- doxytag: member="RS_DEPTH_FUNC_LESS" ref="a03e91ad8ebfc283ba20f7443dea4a4bfac1ddb06fe80be898bf8d4a517187575a" args="" -->RS_DEPTH_FUNC_LESS</em>&nbsp;</td><td>
-<p>Drawn if the incoming depth value is less than that in the depth buffer </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfa62459990f41930a88542b878ddd53d9f"></a><!-- doxytag: member="RS_DEPTH_FUNC_LEQUAL" ref="a03e91ad8ebfc283ba20f7443dea4a4bfa62459990f41930a88542b878ddd53d9f" args="" -->RS_DEPTH_FUNC_LEQUAL</em>&nbsp;</td><td>
-<p>Drawn if the incoming depth value is less or equal to that in the depth buffer </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfa412bb65be35e058a7699b8211cc2ef7d"></a><!-- doxytag: member="RS_DEPTH_FUNC_GREATER" ref="a03e91ad8ebfc283ba20f7443dea4a4bfa412bb65be35e058a7699b8211cc2ef7d" args="" -->RS_DEPTH_FUNC_GREATER</em>&nbsp;</td><td>
-<p>Drawn if the incoming depth value is greater than that in the depth buffer </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfa2858ef91becfeb84d8f34a1458a4126d"></a><!-- doxytag: member="RS_DEPTH_FUNC_GEQUAL" ref="a03e91ad8ebfc283ba20f7443dea4a4bfa2858ef91becfeb84d8f34a1458a4126d" args="" -->RS_DEPTH_FUNC_GEQUAL</em>&nbsp;</td><td>
-<p>Drawn if the incoming depth value is greater or equal to that in the depth buffer </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfa56339400e4089e546199547717bdcd21"></a><!-- doxytag: member="RS_DEPTH_FUNC_EQUAL" ref="a03e91ad8ebfc283ba20f7443dea4a4bfa56339400e4089e546199547717bdcd21" args="" -->RS_DEPTH_FUNC_EQUAL</em>&nbsp;</td><td>
-<p>Drawn if the incoming depth value is equal to that in the depth buffer </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfa2105e438ae89b89a2f4361483e65966d"></a><!-- doxytag: member="RS_DEPTH_FUNC_NOTEQUAL" ref="a03e91ad8ebfc283ba20f7443dea4a4bfa2105e438ae89b89a2f4361483e65966d" args="" -->RS_DEPTH_FUNC_NOTEQUAL</em>&nbsp;</td><td>
-<p>Drawn if the incoming depth value is not equal to that in the depth buffer </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="a03e91ad8ebfc283ba20f7443dea4a4bfadfc3917c562a540b4114181440b909e3"></a><!-- doxytag: member="RS_DEPTH_FUNC_INVALID" ref="a03e91ad8ebfc283ba20f7443dea4a4bfadfc3917c562a540b4114181440b909e3" args="" -->RS_DEPTH_FUNC_INVALID</em>&nbsp;</td><td>
-<p>Invalid depth function </p>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00538">538</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951"></a><!-- doxytag: member="rs_types.rsh::rs_primitive" ref="aaaa4ecd4a284cf9cccc6e06407229951" args="" -->
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_primitive</a></td>
-        </tr>
-      </table>
-</div>
-<div class="memdoc">
-<p>Describes the way mesh vertex data is interpreted when rendering </p>
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951a337ab7046b7cb5cc9eb14bc325ae3158"></a><!-- doxytag: member="RS_PRIMITIVE_POINT" ref="aaaa4ecd4a284cf9cccc6e06407229951a337ab7046b7cb5cc9eb14bc325ae3158" args="" -->RS_PRIMITIVE_POINT</em>&nbsp;</td><td>
-<p>Vertex data will be rendered as a series of points </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951a09a49eaa42585d6181c8a2f711b63ddf"></a><!-- doxytag: member="RS_PRIMITIVE_LINE" ref="aaaa4ecd4a284cf9cccc6e06407229951a09a49eaa42585d6181c8a2f711b63ddf" args="" -->RS_PRIMITIVE_LINE</em>&nbsp;</td><td>
-<p>Vertex pairs will be rendered as lines </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951abe563a9f68706a5aa567793a5088b4da"></a><!-- doxytag: member="RS_PRIMITIVE_LINE_STRIP" ref="aaaa4ecd4a284cf9cccc6e06407229951abe563a9f68706a5aa567793a5088b4da" args="" -->RS_PRIMITIVE_LINE_STRIP</em>&nbsp;</td><td>
-<p>Vertex data will be rendered as a connected line strip </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951aeb062ef8811156915afccfc5f4259b79"></a><!-- doxytag: member="RS_PRIMITIVE_TRIANGLE" ref="aaaa4ecd4a284cf9cccc6e06407229951aeb062ef8811156915afccfc5f4259b79" args="" -->RS_PRIMITIVE_TRIANGLE</em>&nbsp;</td><td>
-<p>Vertices will be rendered as individual triangles </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951a497d5376ef6c9f9ead810a053b9b35d9"></a><!-- doxytag: member="RS_PRIMITIVE_TRIANGLE_STRIP" ref="aaaa4ecd4a284cf9cccc6e06407229951a497d5376ef6c9f9ead810a053b9b35d9" args="" -->RS_PRIMITIVE_TRIANGLE_STRIP</em>&nbsp;</td><td>
-<p>Vertices will be rendered as a connected triangle strip defined by the first three vertices with each additional triangle defined by a new vertex </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951afadd96d3a17724e061d9eb07bfca4a01"></a><!-- doxytag: member="RS_PRIMITIVE_TRIANGLE_FAN" ref="aaaa4ecd4a284cf9cccc6e06407229951afadd96d3a17724e061d9eb07bfca4a01" args="" -->RS_PRIMITIVE_TRIANGLE_FAN</em>&nbsp;</td><td>
-<p>Vertices will be rendered as a sequence of triangles that all share first vertex as the origin </p>
-</td></tr>
-<tr><td valign="top"><em><a class="anchor" id="aaaa4ecd4a284cf9cccc6e06407229951a136481c7695b09f01126da71bb132c9d"></a><!-- doxytag: member="RS_PRIMITIVE_INVALID" ref="aaaa4ecd4a284cf9cccc6e06407229951a136481c7695b09f01126da71bb132c9d" args="" -->RS_PRIMITIVE_INVALID</em>&nbsp;</td><td>
-<p>Invalid primitive </p>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00425">425</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-
-</div>
-</div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/rs__types_8rsh_source.html b/docs/html/reference/renderscript/rs__types_8rsh_source.html
deleted file mode 100644
index f580306..0000000
--- a/docs/html/reference/renderscript/rs__types_8rsh_source.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_types.rsh Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
-      <li><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/rs_types.rsh</div>  </div>
-</div>
-<div class="contents">
-<a href="rs__types_8rsh.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
-<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2013 The Android Open Source Project</span>
-<a name="l00003"></a>00003 <span class="comment"> *</span>
-<a name="l00004"></a>00004 <span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
-<a name="l00005"></a>00005 <span class="comment"> * you may not use this file except in compliance with the License.</span>
-<a name="l00006"></a>00006 <span class="comment"> * You may obtain a copy of the License at</span>
-<a name="l00007"></a>00007 <span class="comment"> *</span>
-<a name="l00008"></a>00008 <span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span>
-<a name="l00009"></a>00009 <span class="comment"> *</span>
-<a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span>
-<a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
-<a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
-<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
-<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
-<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016 
-<a name="l00041"></a>00041 <span class="preprocessor">#ifndef __RS_TYPES_RSH__</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#define __RS_TYPES_RSH__</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044 <span class="comment">/* Constants */</span>
-<a name="l00045"></a>00045 <span class="preprocessor">#define M_E         2.718281828459045235360287471352662498f     </span><span class="comment">/* e */</span>
-<a name="l00046"></a>00046 <span class="preprocessor">#define M_LOG2E     1.442695040888963407359924681001892137f     </span><span class="comment">/* log_2 e */</span>
-<a name="l00047"></a>00047 <span class="preprocessor">#define M_LOG10E    0.434294481903251827651128918916605082f     </span><span class="comment">/* log_10 e */</span>
-<a name="l00048"></a>00048 <span class="preprocessor">#define M_LN2       0.693147180559945309417232121458176568f     </span><span class="comment">/* log_e 2 */</span>
-<a name="l00049"></a>00049 <span class="preprocessor">#define M_LN10      2.302585092994045684017991454684364208f     </span><span class="comment">/* log_e 10 */</span>
-<a name="l00050"></a>00050 <span class="preprocessor">#define M_PI        3.141592653589793238462643383279502884f     </span><span class="comment">/* pi */</span>
-<a name="l00051"></a>00051 <span class="preprocessor">#define M_PI_2      1.570796326794896619231321691639751442f     </span><span class="comment">/* pi/2 */</span>
-<a name="l00052"></a>00052 <span class="preprocessor">#define M_PI_4      0.785398163397448309615660845819875721f     </span><span class="comment">/* pi/4 */</span>
-<a name="l00053"></a>00053 <span class="preprocessor">#define M_1_PI      0.318309886183790671537767526745028724f     </span><span class="comment">/* 1/pi */</span>
-<a name="l00054"></a>00054 <span class="preprocessor">#define M_2_PIl     0.636619772367581343075535053490057448f     </span><span class="comment">/* 2/pi */</span>
-<a name="l00055"></a>00055 <span class="preprocessor">#define M_2_SQRTPI  1.128379167095512573896158903121545172f     </span><span class="comment">/* 2/sqrt(pi) */</span>
-<a name="l00056"></a>00056 <span class="preprocessor">#define M_SQRT2     1.414213562373095048801688724209698079f     </span><span class="comment">/* sqrt(2) */</span>
-<a name="l00057"></a>00057 <span class="preprocessor">#define M_SQRT1_2   0.707106781186547524400844362104849039f     </span><span class="comment">/* 1/sqrt(2) */</span>
-<a name="l00058"></a>00058 
-<a name="l00059"></a>00059 <span class="preprocessor">#include &quot;stdbool.h&quot;</span>
-<a name="l00063"></a><a class="code" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">00063</a> <span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#ad566f6541e98b74246db1a3a3a85ad49">int8_t</a>;
-<a name="l00067"></a><a class="code" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">00067</a> <span class="keyword">typedef</span> <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#aa343fa3b3d06292b959ffdd4c4703b06">int16_t</a>;
-<a name="l00071"></a><a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">00071</a> <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>;
-<a name="l00075"></a><a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">00075</a> <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#a996e72f71b11a5bb8b3b7b6936b1516d">int64_t</a>;
-<a name="l00079"></a><a class="code" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">00079</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>;
-<a name="l00083"></a><a class="code" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">00083</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a>;
-<a name="l00087"></a><a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">00087</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>;
-<a name="l00091"></a><a class="code" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">00091</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a>;
-<a name="l00095"></a><a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">00095</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a>;
-<a name="l00099"></a><a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">00099</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a273cf69d639a59973b6019625df33e30">uint16_t</a> <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a>;
-<a name="l00103"></a><a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">00103</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a>;
-<a name="l00107"></a><a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">00107</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#aaa5d1cd013383c889537491c3cfd9aad">uint64_t</a> <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a>;
-<a name="l00111"></a><a class="code" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">00111</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> <a class="code" href="rs__types_8rsh.html#a29d85914ddff32967d85ada69854206d">size_t</a>;
-<a name="l00115"></a><a class="code" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">00115</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> <a class="code" href="rs__types_8rsh.html#a170745d0d946e79c4c2a056d1d158996">ssize_t</a>;
-<a name="l00116"></a>00116 
-<a name="l00122"></a><a class="code" href="structrs__element.html">00122</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__element.html" title="Opaque handle to a RenderScript element.">rs_element</a>;
-<a name="l00128"></a><a class="code" href="structrs__type.html">00128</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__type.html" title="Opaque handle to a RenderScript type.">rs_type</a>;
-<a name="l00134"></a><a class="code" href="structrs__allocation.html">00134</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__allocation.html" title="Opaque handle to a RenderScript allocation.">rs_allocation</a>;
-<a name="l00140"></a><a class="code" href="structrs__sampler.html">00140</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__sampler.html" title="Opaque handle to a RenderScript sampler object.">rs_sampler</a>;
-<a name="l00146"></a><a class="code" href="structrs__script.html">00146</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__script.html" title="Opaque handle to a RenderScript script object.">rs_script</a>;
-<a name="l00152"></a><a class="code" href="structrs__mesh.html">00152</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__mesh.html" title="Opaque handle to a RenderScript mesh object.">rs_mesh</a>;
-<a name="l00158"></a><a class="code" href="structrs__path.html">00158</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__path.html" title="Opaque handle to a RenderScript Path object.">rs_path</a>;
-<a name="l00164"></a><a class="code" href="structrs__program__fragment.html">00164</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__fragment.html" title="Opaque handle to a RenderScript ProgramFragment object.">rs_program_fragment</a>;
-<a name="l00170"></a><a class="code" href="structrs__program__vertex.html">00170</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__vertex.html" title="Opaque handle to a RenderScript ProgramVertex object.">rs_program_vertex</a>;
-<a name="l00176"></a><a class="code" href="structrs__program__raster.html">00176</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__raster.html" title="Opaque handle to a RenderScript ProgramRaster object.">rs_program_raster</a>;
-<a name="l00182"></a><a class="code" href="structrs__program__store.html">00182</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__program__store.html" title="Opaque handle to a RenderScript ProgramStore object.">rs_program_store</a>;
-<a name="l00188"></a><a class="code" href="structrs__font.html">00188</a> typedef struct { <span class="keyword">const</span> <span class="keywordtype">int</span>* <span class="keyword">const</span> p; } __attribute__((packed, aligned(4))) <a class="code" href="structrs__font.html" title="Opaque handle to a RenderScript font object.">rs_font</a>;
-<a name="l00189"></a>00189 
-<a name="l00195"></a><a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">00195</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> __attribute__((ext_vector_type(2)));
-<a name="l00200"></a><a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">00200</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> __attribute__((ext_vector_type(3)));
-<a name="l00206"></a><a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">00206</a> typedef <span class="keywordtype">float</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> __attribute__((ext_vector_type(4)));
-<a name="l00207"></a>00207 
-<a name="l00212"></a><a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">00212</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a75ef868cedebc2a6eeb1bc6ca6ca49c3">double2</a> __attribute__((ext_vector_type(2)));
-<a name="l00217"></a><a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">00217</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#aa3c90d5a23d674185a13e95402eda7eb">double3</a> __attribute__((ext_vector_type(3)));
-<a name="l00222"></a><a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">00222</a> typedef <span class="keywordtype">double</span> <a class="code" href="rs__types_8rsh.html#a60f4b04e076f0dd0ecc99c365fc4ca21">double4</a> __attribute__((ext_vector_type(4)));
-<a name="l00223"></a>00223 
-<a name="l00228"></a><a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">00228</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#aff5eb7cd53a34bb01924bf64485296de">uchar2</a> __attribute__((ext_vector_type(2)));
-<a name="l00233"></a><a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">00233</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#a247b5eacf2b662849668cbc33120343f">uchar3</a> __attribute__((ext_vector_type(3)));
-<a name="l00238"></a><a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">00238</a> typedef <a class="code" href="rs__types_8rsh.html#a27c902d5ca78afa82d5ed75554d5cedc">uchar</a> <a class="code" href="rs__types_8rsh.html#ae6ed52a87d4ff920c303b13b00f7396d">uchar4</a> __attribute__((ext_vector_type(4)));
-<a name="l00239"></a>00239 
-<a name="l00244"></a><a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">00244</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a24a9d78cfc32475e2c6eb1cdec239bf2">ushort2</a> __attribute__((ext_vector_type(2)));
-<a name="l00249"></a><a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">00249</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#ab78391445785d2ca0276392a9c97fcba">ushort3</a> __attribute__((ext_vector_type(3)));
-<a name="l00254"></a><a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">00254</a> typedef <a class="code" href="rs__types_8rsh.html#a9e58a7bf060b7a5fbf6a401d3020adca">ushort</a> <a class="code" href="rs__types_8rsh.html#a77a09fa01d7fc721bbc44c32aac2d487">ushort4</a> __attribute__((ext_vector_type(4)));
-<a name="l00255"></a>00255 
-<a name="l00260"></a><a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">00260</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#aaf90cd1f01a121e824fc6e1b927e7683">uint2</a> __attribute__((ext_vector_type(2)));
-<a name="l00265"></a><a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">00265</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ae80e36ac834c891aa76b09a220344e78">uint3</a> __attribute__((ext_vector_type(3)));
-<a name="l00270"></a><a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">00270</a> typedef <a class="code" href="rs__types_8rsh.html#a4f5fce8c1ef282264f9214809524d836">uint</a> <a class="code" href="rs__types_8rsh.html#ad92f0ec6c2cdc1f11a6d7fe321047462">uint4</a> __attribute__((ext_vector_type(4)));
-<a name="l00271"></a>00271 
-<a name="l00276"></a><a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">00276</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a56988b12ab16acf753356f7a5c70565a">ulong2</a> __attribute__((ext_vector_type(2)));
-<a name="l00281"></a><a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">00281</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#ac623a569c28935fbedd3a8ed27ae0696">ulong3</a> __attribute__((ext_vector_type(3)));
-<a name="l00286"></a><a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">00286</a> typedef <a class="code" href="rs__types_8rsh.html#ab46637ef82283186e57f54756fe67203">ulong</a> <a class="code" href="rs__types_8rsh.html#a3029c54b8e1779a1ddbdfe875432d137">ulong4</a> __attribute__((ext_vector_type(4)));
-<a name="l00287"></a>00287 
-<a name="l00292"></a><a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">00292</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#ac532b4c1895c8bd4fb75dc370c484351">char2</a> __attribute__((ext_vector_type(2)));
-<a name="l00297"></a><a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">00297</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#a4617fb31f4c03402515efee0a9b56210">char3</a> __attribute__((ext_vector_type(3)));
-<a name="l00302"></a><a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">00302</a> typedef <span class="keywordtype">char</span> <a class="code" href="rs__types_8rsh.html#aecb498648daac97c7cc5f31c242dfa03">char4</a> __attribute__((ext_vector_type(4)));
-<a name="l00303"></a>00303 
-<a name="l00308"></a><a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">00308</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a303d3ad18aaeacfcfeda2b8580b98796">short2</a> __attribute__((ext_vector_type(2)));
-<a name="l00313"></a><a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">00313</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a3f4967691ae2b249511b5f3dd9e18793">short3</a> __attribute__((ext_vector_type(3)));
-<a name="l00318"></a><a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">00318</a> typedef <span class="keywordtype">short</span> <a class="code" href="rs__types_8rsh.html#a198219da0b1d51c8d7f8f12aad7e502d">short4</a> __attribute__((ext_vector_type(4)));
-<a name="l00319"></a>00319 
-<a name="l00324"></a><a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">00324</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a6bc1fa1354fe2145b8f12b4bbfafcf4c">int2</a> __attribute__((ext_vector_type(2)));
-<a name="l00329"></a><a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">00329</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#ad5512266b63fd06dcf450f6c9d5326c8">int3</a> __attribute__((ext_vector_type(3)));
-<a name="l00334"></a><a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">00334</a> typedef <span class="keywordtype">int</span> <a class="code" href="rs__types_8rsh.html#a897deab71f679999ed99d4153c797e70">int4</a> __attribute__((ext_vector_type(4)));
-<a name="l00335"></a>00335 
-<a name="l00340"></a><a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">00340</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#afd55d62cee0785034b73375acd0df9da">long2</a> __attribute__((ext_vector_type(2)));
-<a name="l00345"></a><a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">00345</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ad9cedbf4050fad14138d1dcb3428ec18">long3</a> __attribute__((ext_vector_type(3)));
-<a name="l00350"></a><a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">00350</a> typedef <span class="keywordtype">long</span> <a class="code" href="rs__types_8rsh.html#ae177e4918f36e5c9da36d524cdb7a2e7">long4</a> __attribute__((ext_vector_type(4)));
-<a name="l00351"></a>00351 
-<a name="l00358"></a><a class="code" href="structrs__matrix4x4.html">00358</a> typedef struct {
-<a name="l00359"></a>00359     <span class="keywordtype">float</span> m[16];
-<a name="l00360"></a>00360 } <a class="code" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a>;
-<a name="l00367"></a><a class="code" href="structrs__matrix3x3.html">00367</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00368"></a>00368     <span class="keywordtype">float</span> m[9];
-<a name="l00369"></a>00369 } <a class="code" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a>;
-<a name="l00376"></a><a class="code" href="structrs__matrix2x2.html">00376</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
-<a name="l00377"></a>00377     <span class="keywordtype">float</span> m[4];
-<a name="l00378"></a>00378 } <a class="code" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a>;
-<a name="l00379"></a>00379 
-<a name="l00383"></a><a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">00383</a> <span class="keyword">typedef</span> <a class="code" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> <a class="code" href="rs__types_8rsh.html#a86f99f382dc35fc8ad98b524fe6d5447">rs_quaternion</a>;
-<a name="l00384"></a>00384 
-<a name="l00385"></a>00385 <span class="preprocessor">#define RS_PACKED __attribute__((packed, aligned(4)))</span>
-<a name="l00386"></a>00386 <span class="preprocessor"></span><span class="preprocessor">#define NULL ((void *)0)</span>
-<a name="l00387"></a>00387 <span class="preprocessor"></span>
-<a name="l00388"></a>00388 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14))</span>
-<a name="l00389"></a>00389 <span class="preprocessor"></span>
-<a name="l00393"></a><a class="code" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229">00393</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00394"></a>00394     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X = 0,
-<a name="l00395"></a>00395     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_X = 1,
-<a name="l00396"></a>00396     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Y = 2,
-<a name="l00397"></a>00397     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Y = 3,
-<a name="l00398"></a>00398     RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_Z = 4,
-<a name="l00399"></a>00399     RS_ALLOCATION_CUBEMAP_FACE_NEGATIVE_Z = 5
-<a name="l00400"></a>00400 } <a class="code" href="rs__types_8rsh.html#acc6f9a94176656c73fd74f789cfa2229" title="Enum for selecting cube map faces.">rs_allocation_cubemap_face</a>;
-<a name="l00401"></a>00401 
-<a name="l00408"></a><a class="code" href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171">00408</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00409"></a>00409     RS_ALLOCATION_USAGE_SCRIPT = 0x0001,
-<a name="l00410"></a>00410     RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE = 0x0002,
-<a name="l00411"></a>00411     RS_ALLOCATION_USAGE_GRAPHICS_VERTEX = 0x0004,
-<a name="l00412"></a>00412     RS_ALLOCATION_USAGE_GRAPHICS_CONSTANTS = 0x0008,
-<a name="l00413"></a>00413     RS_ALLOCATION_USAGE_GRAPHICS_RENDER_TARGET = 0x0010
-<a name="l00414"></a>00414 } <a class="code" href="rs__types_8rsh.html#af8c988b9715d55b6e41e0ee1925fb171" title="Bitfield to specify the usage types for an allocation.">rs_allocation_usage_type</a>;
-<a name="l00415"></a>00415 
-<a name="l00416"></a>00416 <span class="preprocessor">#endif //defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 14)</span>
-<a name="l00417"></a>00417 <span class="preprocessor"></span>
-<a name="l00418"></a>00418 <span class="comment">// New API&#39;s</span>
-<a name="l00419"></a>00419 <span class="preprocessor">#if (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00420"></a>00420 <span class="preprocessor"></span>
-<a name="l00425"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">00425</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00429"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a337ab7046b7cb5cc9eb14bc325ae3158">00429</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a337ab7046b7cb5cc9eb14bc325ae3158">RS_PRIMITIVE_POINT</a>              = 0,
-<a name="l00433"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a09a49eaa42585d6181c8a2f711b63ddf">00433</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a09a49eaa42585d6181c8a2f711b63ddf">RS_PRIMITIVE_LINE</a>               = 1,
-<a name="l00437"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951abe563a9f68706a5aa567793a5088b4da">00437</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951abe563a9f68706a5aa567793a5088b4da">RS_PRIMITIVE_LINE_STRIP</a>         = 2,
-<a name="l00441"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951aeb062ef8811156915afccfc5f4259b79">00441</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951aeb062ef8811156915afccfc5f4259b79">RS_PRIMITIVE_TRIANGLE</a>           = 3,
-<a name="l00447"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a497d5376ef6c9f9ead810a053b9b35d9">00447</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a497d5376ef6c9f9ead810a053b9b35d9">RS_PRIMITIVE_TRIANGLE_STRIP</a>     = 4,
-<a name="l00452"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951afadd96d3a17724e061d9eb07bfca4a01">00452</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951afadd96d3a17724e061d9eb07bfca4a01">RS_PRIMITIVE_TRIANGLE_FAN</a>       = 5,
-<a name="l00453"></a>00453 
-<a name="l00457"></a><a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a136481c7695b09f01126da71bb132c9d">00457</a>     <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951a136481c7695b09f01126da71bb132c9d">RS_PRIMITIVE_INVALID</a>            = 100,
-<a name="l00458"></a>00458 } <a class="code" href="rs__types_8rsh.html#aaaa4ecd4a284cf9cccc6e06407229951">rs_primitive</a>;
-<a name="l00459"></a>00459 
-<a name="l00478"></a><a class="code" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647">00478</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00479"></a>00479     RS_TYPE_NONE             = 0,
-<a name="l00480"></a>00480     RS_TYPE_FLOAT_32         = 2,
-<a name="l00481"></a>00481     RS_TYPE_FLOAT_64         = 3,
-<a name="l00482"></a>00482     RS_TYPE_SIGNED_8         = 4,
-<a name="l00483"></a>00483     RS_TYPE_SIGNED_16        = 5,
-<a name="l00484"></a>00484     RS_TYPE_SIGNED_32        = 6,
-<a name="l00485"></a>00485     RS_TYPE_SIGNED_64        = 7,
-<a name="l00486"></a>00486     RS_TYPE_UNSIGNED_8       = 8,
-<a name="l00487"></a>00487     RS_TYPE_UNSIGNED_16      = 9,
-<a name="l00488"></a>00488     RS_TYPE_UNSIGNED_32      = 10,
-<a name="l00489"></a>00489     RS_TYPE_UNSIGNED_64      = 11,
-<a name="l00490"></a>00490 
-<a name="l00491"></a>00491     RS_TYPE_BOOLEAN          = 12,
-<a name="l00492"></a>00492 
-<a name="l00493"></a>00493     RS_TYPE_UNSIGNED_5_6_5   = 13,
-<a name="l00494"></a>00494     RS_TYPE_UNSIGNED_5_5_5_1 = 14,
-<a name="l00495"></a>00495     RS_TYPE_UNSIGNED_4_4_4_4 = 15,
-<a name="l00496"></a>00496 
-<a name="l00497"></a>00497     RS_TYPE_MATRIX_4X4       = 16,
-<a name="l00498"></a>00498     RS_TYPE_MATRIX_3X3       = 17,
-<a name="l00499"></a>00499     RS_TYPE_MATRIX_2X2       = 18,
-<a name="l00500"></a>00500 
-<a name="l00501"></a>00501     RS_TYPE_ELEMENT          = 1000,
-<a name="l00502"></a>00502     RS_TYPE_TYPE             = 1001,
-<a name="l00503"></a>00503     RS_TYPE_ALLOCATION       = 1002,
-<a name="l00504"></a>00504     RS_TYPE_SAMPLER          = 1003,
-<a name="l00505"></a>00505     RS_TYPE_SCRIPT           = 1004,
-<a name="l00506"></a>00506     RS_TYPE_MESH             = 1005,
-<a name="l00507"></a>00507     RS_TYPE_PROGRAM_FRAGMENT = 1006,
-<a name="l00508"></a>00508     RS_TYPE_PROGRAM_VERTEX   = 1007,
-<a name="l00509"></a>00509     RS_TYPE_PROGRAM_RASTER   = 1008,
-<a name="l00510"></a>00510     RS_TYPE_PROGRAM_STORE    = 1009,
-<a name="l00511"></a>00511     RS_TYPE_FONT             = 1010,
-<a name="l00512"></a>00512 
-<a name="l00513"></a>00513     RS_TYPE_INVALID          = 10000,
-<a name="l00514"></a>00514 } <a class="code" href="rs__types_8rsh.html#ae7551db5705f864fde49c13660aff647" title="Enumeration for possible element data types.">rs_data_type</a>;
-<a name="l00515"></a>00515 
-<a name="l00524"></a><a class="code" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a">00524</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00525"></a>00525     RS_KIND_USER         = 0,
-<a name="l00526"></a>00526 
-<a name="l00527"></a>00527     RS_KIND_PIXEL_L      = 7,
-<a name="l00528"></a>00528     RS_KIND_PIXEL_A      = 8,
-<a name="l00529"></a>00529     RS_KIND_PIXEL_LA     = 9,
-<a name="l00530"></a>00530     RS_KIND_PIXEL_RGB    = 10,
-<a name="l00531"></a>00531     RS_KIND_PIXEL_RGBA   = 11,
-<a name="l00532"></a>00532     RS_KIND_PIXEL_DEPTH  = 12,
-<a name="l00533"></a>00533     RS_KIND_PIXEL_YUV    = 13,
-<a name="l00534"></a>00534 
-<a name="l00535"></a>00535     RS_KIND_INVALID      = 100,
-<a name="l00536"></a>00536 } <a class="code" href="rs__types_8rsh.html#a1692d177c4a3fe1544bd91172056581a" title="Enumeration for possible element data kind.">rs_data_kind</a>;
-<a name="l00537"></a>00537 
-<a name="l00538"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">00538</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00542"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa8d469fa992bac113a001d75aa7cfbb5a">00542</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa8d469fa992bac113a001d75aa7cfbb5a">RS_DEPTH_FUNC_ALWAYS</a>        = 0,
-<a name="l00547"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfac1ddb06fe80be898bf8d4a517187575a">00547</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfac1ddb06fe80be898bf8d4a517187575a">RS_DEPTH_FUNC_LESS</a>          = 1,
-<a name="l00552"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa62459990f41930a88542b878ddd53d9f">00552</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa62459990f41930a88542b878ddd53d9f">RS_DEPTH_FUNC_LEQUAL</a>        = 2,
-<a name="l00557"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa412bb65be35e058a7699b8211cc2ef7d">00557</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa412bb65be35e058a7699b8211cc2ef7d">RS_DEPTH_FUNC_GREATER</a>       = 3,
-<a name="l00562"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2858ef91becfeb84d8f34a1458a4126d">00562</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2858ef91becfeb84d8f34a1458a4126d">RS_DEPTH_FUNC_GEQUAL</a>        = 4,
-<a name="l00567"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa56339400e4089e546199547717bdcd21">00567</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa56339400e4089e546199547717bdcd21">RS_DEPTH_FUNC_EQUAL</a>         = 5,
-<a name="l00572"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2105e438ae89b89a2f4361483e65966d">00572</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfa2105e438ae89b89a2f4361483e65966d">RS_DEPTH_FUNC_NOTEQUAL</a>      = 6,
-<a name="l00576"></a><a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfadfc3917c562a540b4114181440b909e3">00576</a>     <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bfadfc3917c562a540b4114181440b909e3">RS_DEPTH_FUNC_INVALID</a>       = 100,
-<a name="l00577"></a>00577 } <a class="code" href="rs__types_8rsh.html#a03e91ad8ebfc283ba20f7443dea4a4bf">rs_depth_func</a>;
-<a name="l00578"></a>00578 
-<a name="l00579"></a>00579 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00580"></a>00580     RS_BLEND_SRC_ZERO                   = 0,
-<a name="l00581"></a>00581     RS_BLEND_SRC_ONE                    = 1,
-<a name="l00582"></a>00582     RS_BLEND_SRC_DST_COLOR              = 2,
-<a name="l00583"></a>00583     RS_BLEND_SRC_ONE_MINUS_DST_COLOR    = 3,
-<a name="l00584"></a>00584     RS_BLEND_SRC_SRC_ALPHA              = 4,
-<a name="l00585"></a>00585     RS_BLEND_SRC_ONE_MINUS_SRC_ALPHA    = 5,
-<a name="l00586"></a>00586     RS_BLEND_SRC_DST_ALPHA              = 6,
-<a name="l00587"></a>00587     RS_BLEND_SRC_ONE_MINUS_DST_ALPHA    = 7,
-<a name="l00588"></a>00588     RS_BLEND_SRC_SRC_ALPHA_SATURATE     = 8,
-<a name="l00589"></a>00589 
-<a name="l00590"></a>00590     RS_BLEND_SRC_INVALID                = 100,
-<a name="l00591"></a>00591 } rs_blend_src_func;
-<a name="l00592"></a>00592 
-<a name="l00593"></a>00593 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00594"></a>00594     RS_BLEND_DST_ZERO                   = 0,
-<a name="l00595"></a>00595     RS_BLEND_DST_ONE                    = 1,
-<a name="l00596"></a>00596     RS_BLEND_DST_SRC_COLOR              = 2,
-<a name="l00597"></a>00597     RS_BLEND_DST_ONE_MINUS_SRC_COLOR    = 3,
-<a name="l00598"></a>00598     RS_BLEND_DST_SRC_ALPHA              = 4,
-<a name="l00599"></a>00599     RS_BLEND_DST_ONE_MINUS_SRC_ALPHA    = 5,
-<a name="l00600"></a>00600     RS_BLEND_DST_DST_ALPHA              = 6,
-<a name="l00601"></a>00601     RS_BLEND_DST_ONE_MINUS_DST_ALPHA    = 7,
-<a name="l00602"></a>00602 
-<a name="l00603"></a>00603     RS_BLEND_DST_INVALID                = 100,
-<a name="l00604"></a>00604 } rs_blend_dst_func;
-<a name="l00605"></a>00605 
-<a name="l00606"></a>00606 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00607"></a>00607     RS_CULL_BACK     = 0,
-<a name="l00608"></a>00608     RS_CULL_FRONT    = 1,
-<a name="l00609"></a>00609     RS_CULL_NONE     = 2,
-<a name="l00610"></a>00610 
-<a name="l00611"></a>00611     RS_CULL_INVALID  = 100,
-<a name="l00612"></a>00612 } rs_cull_mode;
-<a name="l00613"></a>00613 
-<a name="l00614"></a>00614 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
-<a name="l00615"></a>00615     RS_SAMPLER_NEAREST              = 0,
-<a name="l00616"></a>00616     RS_SAMPLER_LINEAR               = 1,
-<a name="l00617"></a>00617     RS_SAMPLER_LINEAR_MIP_LINEAR    = 2,
-<a name="l00618"></a>00618     RS_SAMPLER_WRAP                 = 3,
-<a name="l00619"></a>00619     RS_SAMPLER_CLAMP                = 4,
-<a name="l00620"></a>00620     RS_SAMPLER_LINEAR_MIP_NEAREST   = 5,
-<a name="l00621"></a>00621     RS_SAMPLER_MIRRORED_REPEAT      = 6,
-<a name="l00622"></a>00622 
-<a name="l00623"></a>00623     RS_SAMPLER_INVALID              = 100,
-<a name="l00624"></a>00624 } rs_sampler_value;
-<a name="l00625"></a>00625 
-<a name="l00626"></a>00626 <span class="preprocessor">#endif // (defined(RS_VERSION) &amp;&amp; (RS_VERSION &gt;= 16))</span>
-<a name="l00627"></a>00627 <span class="preprocessor"></span>
-<a name="l00628"></a>00628 <span class="preprocessor">#endif // __RS_TYPES_RSH__</span>
-</pre></div></div>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__allocation.html b/docs/html/reference/renderscript/structrs__allocation.html
deleted file mode 100644
index 1ffbc47..0000000
--- a/docs/html/reference/renderscript/structrs__allocation.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_allocation Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_allocation Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_allocation" -->
-<p>Opaque handle to a RenderScript allocation.  
- <a href="structrs__allocation.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript allocation. </p>
-<p>See: android.renderscript.Allocation </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00134">134</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__element.html b/docs/html/reference/renderscript/structrs__element.html
deleted file mode 100644
index d6a1460b..0000000
--- a/docs/html/reference/renderscript/structrs__element.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_element Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_element Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_element" -->
-<p>Opaque handle to a RenderScript element.  
- <a href="structrs__element.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript element. </p>
-<p>See: android.renderscript.Element </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00122">122</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__font.html b/docs/html/reference/renderscript/structrs__font.html
deleted file mode 100644
index dbc4c4d..0000000
--- a/docs/html/reference/renderscript/structrs__font.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_font Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_font Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_font" -->
-<p>Opaque handle to a RenderScript font object.  
- <a href="structrs__font.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript font object. </p>
-<p>See: android.renderscript.Font </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00188">188</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__matrix2x2.html b/docs/html/reference/renderscript/structrs__matrix2x2.html
deleted file mode 100644
index bacfa02..0000000
--- a/docs/html/reference/renderscript/structrs__matrix2x2.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_matrix2x2 Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_matrix2x2 Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_matrix2x2" -->
-<p>2x2 float matrix  
- <a href="structrs__matrix2x2.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>2x2 float matrix </p>
-<p>Native holder for RS matrix. Elements are stored in the array at the location [row*2 + col] </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00376">376</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__matrix3x3.html b/docs/html/reference/renderscript/structrs__matrix3x3.html
deleted file mode 100644
index 3745608..0000000
--- a/docs/html/reference/renderscript/structrs__matrix3x3.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_matrix3x3 Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_matrix3x3 Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_matrix3x3" -->
-<p>3x3 float matrix  
- <a href="structrs__matrix3x3.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>3x3 float matrix </p>
-<p>Native holder for RS matrix. Elements are stored in the array at the location [row*3 + col] </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00367">367</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__matrix4x4.html b/docs/html/reference/renderscript/structrs__matrix4x4.html
deleted file mode 100644
index 26b57d1..0000000
--- a/docs/html/reference/renderscript/structrs__matrix4x4.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_matrix4x4 Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_matrix4x4 Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_matrix4x4" -->
-<p>4x4 float matrix  
- <a href="structrs__matrix4x4.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>4x4 float matrix </p>
-<p>Native holder for RS matrix. Elements are stored in the array at the location [row*4 + col] </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00358">358</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__mesh.html b/docs/html/reference/renderscript/structrs__mesh.html
deleted file mode 100644
index fed96d9..0000000
--- a/docs/html/reference/renderscript/structrs__mesh.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_mesh Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_mesh Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_mesh" -->
-<p>Opaque handle to a RenderScript mesh object.  
- <a href="structrs__mesh.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript mesh object. </p>
-<p>See: android.renderscript.Mesh </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00152">152</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__path.html b/docs/html/reference/renderscript/structrs__path.html
deleted file mode 100644
index ef7f650..0000000
--- a/docs/html/reference/renderscript/structrs__path.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_path Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_path Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_path" -->
-<p>Opaque handle to a RenderScript Path object.  
- <a href="structrs__path.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript Path object. </p>
-<p>See: android.renderscript.Path </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00158">158</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__program__fragment.html b/docs/html/reference/renderscript/structrs__program__fragment.html
deleted file mode 100644
index 707e899..0000000
--- a/docs/html/reference/renderscript/structrs__program__fragment.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_program_fragment Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_program_fragment Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_program_fragment" -->
-<p>Opaque handle to a RenderScript ProgramFragment object.  
- <a href="structrs__program__fragment.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript ProgramFragment object. </p>
-<p>See: android.renderscript.ProgramFragment </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00164">164</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__program__raster.html b/docs/html/reference/renderscript/structrs__program__raster.html
deleted file mode 100644
index 444aaf9..0000000
--- a/docs/html/reference/renderscript/structrs__program__raster.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_program_raster Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_program_raster Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_program_raster" -->
-<p>Opaque handle to a RenderScript ProgramRaster object.  
- <a href="structrs__program__raster.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript ProgramRaster object. </p>
-<p>See: android.renderscript.ProgramRaster </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00176">176</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__program__store.html b/docs/html/reference/renderscript/structrs__program__store.html
deleted file mode 100644
index c187392..0000000
--- a/docs/html/reference/renderscript/structrs__program__store.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_program_store Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_program_store Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_program_store" -->
-<p>Opaque handle to a RenderScript ProgramStore object.  
- <a href="structrs__program__store.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript ProgramStore object. </p>
-<p>See: android.renderscript.ProgramStore </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00182">182</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__program__vertex.html b/docs/html/reference/renderscript/structrs__program__vertex.html
deleted file mode 100644
index c3688b7..0000000
--- a/docs/html/reference/renderscript/structrs__program__vertex.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_program_vertex Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_program_vertex Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_program_vertex" -->
-<p>Opaque handle to a RenderScript ProgramVertex object.  
- <a href="structrs__program__vertex.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript ProgramVertex object. </p>
-<p>See: android.renderscript.ProgramVertex </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00170">170</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__sampler.html b/docs/html/reference/renderscript/structrs__sampler.html
deleted file mode 100644
index daba2bb..0000000
--- a/docs/html/reference/renderscript/structrs__sampler.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_sampler Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_sampler Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_sampler" -->
-<p>Opaque handle to a RenderScript sampler object.  
- <a href="structrs__sampler.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript sampler object. </p>
-<p>See: android.renderscript.Sampler </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00140">140</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__script.html b/docs/html/reference/renderscript/structrs__script.html
deleted file mode 100644
index ea39d95..0000000
--- a/docs/html/reference/renderscript/structrs__script.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_script Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_script Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_script" -->
-<p>Opaque handle to a RenderScript script object.  
- <a href="structrs__script.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript script object. </p>
-<p>See: android.renderscript.ScriptC </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00146">146</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__script__call.html b/docs/html/reference/renderscript/structrs__script__call.html
deleted file mode 100644
index e4c0820..0000000
--- a/docs/html/reference/renderscript/structrs__script__call.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_script_call Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_script_call Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_script_call" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Structure to provide extra information to a rsForEach call. Primarly used to restrict the call to a subset of cells in the allocation. </p>
-
-<p>Definition at line <a class="el" href="rs__core_8rsh_source.html#l00110">110</a> of file <a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__core_8rsh_source.html">rs_core.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__tm.html b/docs/html/reference/renderscript/structrs__tm.html
deleted file mode 100644
index b6447b5..0000000
--- a/docs/html/reference/renderscript/structrs__tm.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_tm Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="summary">
-<a href="#pub-attribs">Data Fields</a>  </div>
-  <div class="headertitle">
-<div class="title">rs_tm Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_tm" --><table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1590aa8850370a4712da801edb8da9e"></a><!-- doxytag: member="rs_tm::tm_sec" ref="ae1590aa8850370a4712da801edb8da9e" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#ae1590aa8850370a4712da801edb8da9e">tm_sec</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">seconds <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd4bd6ccf0d1f20859ecaecf850ce85b"></a><!-- doxytag: member="rs_tm::tm_min" ref="abd4bd6ccf0d1f20859ecaecf850ce85b" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#abd4bd6ccf0d1f20859ecaecf850ce85b">tm_min</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">minutes <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb46962bc20f8724567981adc3711b5a"></a><!-- doxytag: member="rs_tm::tm_hour" ref="afb46962bc20f8724567981adc3711b5a" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#afb46962bc20f8724567981adc3711b5a">tm_hour</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">hours <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac87e43828f05bf62d0c770889b81ff15"></a><!-- doxytag: member="rs_tm::tm_mday" ref="ac87e43828f05bf62d0c770889b81ff15" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#ac87e43828f05bf62d0c770889b81ff15">tm_mday</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">day of the month <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34a5466d376e405f343ed4e1592d7832"></a><!-- doxytag: member="rs_tm::tm_mon" ref="a34a5466d376e405f343ed4e1592d7832" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a34a5466d376e405f343ed4e1592d7832">tm_mon</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">month <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74e582a615a448949969a0982d8a62d2"></a><!-- doxytag: member="rs_tm::tm_year" ref="a74e582a615a448949969a0982d8a62d2" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a74e582a615a448949969a0982d8a62d2">tm_year</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">year <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d40217d3cd15b51e0093db1810426e4"></a><!-- doxytag: member="rs_tm::tm_wday" ref="a4d40217d3cd15b51e0093db1810426e4" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a4d40217d3cd15b51e0093db1810426e4">tm_wday</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">day of the week <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a589eab24c4d79f05f0b3601162ed34d0"></a><!-- doxytag: member="rs_tm::tm_yday" ref="a589eab24c4d79f05f0b3601162ed34d0" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a589eab24c4d79f05f0b3601162ed34d0">tm_yday</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">day of the year <br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cffdd224d2ea30a079a86ef1e41e111"></a><!-- doxytag: member="rs_tm::tm_isdst" ref="a8cffdd224d2ea30a079a86ef1e41e111" args="" -->
-int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrs__tm.html#a8cffdd224d2ea30a079a86ef1e41e111">tm_isdst</a></td></tr>
-<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">daylight savings time <br/></td></tr>
-</table>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Data structure for broken-down time components.</p>
-<p>tm_sec - Seconds after the minute. This ranges from 0 to 59, but possibly up to 60 for leap seconds. tm_min - Minutes after the hour. This ranges from 0 to 59. tm_hour - Hours past midnight. This ranges from 0 to 23. tm_mday - Day of the month. This ranges from 1 to 31. tm_mon - Months since January. This ranges from 0 to 11. tm_year - Years since 1900. tm_wday - Days since Sunday. This ranges from 0 to 6. tm_yday - Days since January 1. This ranges from 0 to 365. tm_isdst - Flag to indicate whether daylight saving time is in effect. The value is positive if it is in effect, zero if it is not, and negative if the information is not available. </p>
-
-<p>Definition at line <a class="el" href="rs__time_8rsh_source.html#l00049">49</a> of file <a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__time_8rsh_source.html">rs_time.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/structrs__type.html b/docs/html/reference/renderscript/structrs__type.html
deleted file mode 100644
index ef95ed18..0000000
--- a/docs/html/reference/renderscript/structrs__type.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-
-<title>rs_type Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-
-
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-
-
-<!-- Generated by Doxygen 1.7.5.1 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Overview</span></a></li>
-      <li><a href="globals.html"><span>Globals</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Structs</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="header">
-  <div class="headertitle">
-<div class="title">rs_type Struct Reference</div>  </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="rs_type" -->
-<p>Opaque handle to a RenderScript type.  
- <a href="structrs__type.html#details">More...</a></p>
-<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><p>Opaque handle to a RenderScript type. </p>
-<p>See: android.renderscript.Type </p>
-
-<p>Definition at line <a class="el" href="rs__types_8rsh_source.html#l00128">128</a> of file <a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a>.</p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/usr/local/google/home/srhines/android_trees/jb-mr2-dev/frameworks/rs/scriptc/<a class="el" href="rs__types_8rsh_source.html">rs_types.rsh</a></li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/docs/html/reference/renderscript/tab_a.png b/docs/html/reference/renderscript/tab_a.png
deleted file mode 100644
index 2d99ef2..0000000
--- a/docs/html/reference/renderscript/tab_a.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/reference/renderscript/tab_b.png b/docs/html/reference/renderscript/tab_b.png
deleted file mode 100644
index b2c3d2b..0000000
--- a/docs/html/reference/renderscript/tab_b.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/reference/renderscript/tab_h.png b/docs/html/reference/renderscript/tab_h.png
deleted file mode 100644
index c11f48f..0000000
--- a/docs/html/reference/renderscript/tab_h.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/reference/renderscript/tab_s.png b/docs/html/reference/renderscript/tab_s.png
deleted file mode 100644
index 978943a..0000000
--- a/docs/html/reference/renderscript/tab_s.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/reference/renderscript/tabs.css b/docs/html/reference/renderscript/tabs.css
deleted file mode 100644
index 2192056..0000000
--- a/docs/html/reference/renderscript/tabs.css
+++ /dev/null
@@ -1,59 +0,0 @@
-.tabs, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
-    width: 100%;
-    z-index: 101;
-    font-size: 13px;
-}
-
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_b.png');
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px;
-}
-
-.tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
-}
-
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/docs/html/tools/building/multidex.jd b/docs/html/tools/building/multidex.jd
index 49cde8c..e441a7c 100644
--- a/docs/html/tools/building/multidex.jd
+++ b/docs/html/tools/building/multidex.jd
@@ -415,30 +415,40 @@
 <h2 id="testing">Testing Multidex Apps</h2>
 
 <p>
-  Testing apps that use multidex configuration require some additional steps and configuration.
-  Since the location of code for classes is not within a single DEX file, instrumentation tests do
-  not run properly unless configured for multidex.
+  When using instrumentation tests with multidex apps, additional configuration is required to
+  enable the test instrumentation. Because the location of code for classes in multidex apps is not
+  within a single DEX file, instrumentation tests do not run properly unless configured for
+  multidex.
 </p>
 
 <p>
-  When testing a multidex app with instrumentation tests, use
+  To test a multidex app with instrumentation tests, configure the
   <a href="{@docRoot}reference/com/android/test/runner/MultiDexTestRunner.html">
   MultiDexTestRunner</a> from the multidex testing support library. The following sample
-  {@code build.gradle} file, demonstrates how to configure your build to use this test runner:
+  {@code build.gradle} file demonstrates how to configure your build to use this test runner:
 </p>
 
 <pre>
 android {
   defaultConfig {
       ...
-      testInstrumentationRunner "android.support.multidex.MultiDexTestRunner"
+      testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
   }
 }
+</pre>
 
+<p class="note">
+  <strong>Note:</strong> With Android Plugin for Gradle versions lower than 1.1, you need to add
+  the following dependency for <code>multidex-instrumentation</code>:
+<pre>
 dependencies {
-    androidTestCompile 'com.android.support:multidex-instrumentation:1.0.0'
+    androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
+         exclude group: 'com.android.support', module: 'multidex'
+    }       
 }
 </pre>
+</p>
+
 
 <p>
   You may use the instrumentation test runner class directly or extend it to fit your testing
@@ -455,4 +465,4 @@
 
 <p class="note">
   <strong>Note:</strong> Use of multidex for creating a test APK is not currently supported.
-</p>
\ No newline at end of file
+</p>
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
index 4f153e3..f530a5f 100644
--- a/docs/html/tools/revisions/studio.jd
+++ b/docs/html/tools/revisions/studio.jd
@@ -50,7 +50,7 @@
     <p>Various fixes and enhancements:</p>
     <ul>
       <li>Updated the Android runtime window to include the
-        <a href="{@docRoot}tools/studio/index.html#memory-monitor">Memory Monitor</a> tool
+        <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> tool
         and added a tab for CPU performance monitoring.</li>
       <li>Added a <em>Captures</em> tab in the left margin to display the captured memory and CPU
         performance data files, such as CPU method tracking and memory heap snapshots.</li>
diff --git a/docs/html/tools/studio/index.jd b/docs/html/tools/studio/index.jd
index 95cdb76..13a2fea 100644
--- a/docs/html/tools/studio/index.jd
+++ b/docs/html/tools/studio/index.jd
@@ -53,7 +53,8 @@
 "{@docRoot}tools/workflow/index.html">Workflow</a> section, such as <a href=
 "{@docRoot}tools/projects/projects-studio.html">Managing Projects from Android Studio</a> and
 <a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android
-Studio</a>.</p>
+Studio</a>. For a summary of the latest changes to Android Studio, see the
+<a href="{@docRoot}tools/revisions/studio.html">Android Studio Release Notes</a>.</p>
 
 
 
@@ -282,13 +283,6 @@
 runtime window to launch the Android runtime window. Click the <strong>Memory</strong> or
 <strong>CPU</strong> tab. </p>
 
-
-<h3 id="memory-monitor">Memory Monitor</h3>
-<p>Android Studio provides a memory monitor view so you can more easily monitor your
-app's memory usage to find deallocated objects, locate memory leaks and track the amount of
-memory the connected device is using. With your app running on a device or emulator, click the
-<strong>Memory Monitor</strong> tab in the lower right corner to launch the memory monitor. </p>
-
 <img src="{@docRoot}images/tools/studio-memory-monitor.png" srcset="{@docRoot}images/tools/studio-memory-monitor_2x.png 2x" width"635" height="171" alt="" />
     <p class="img-caption"><strong>Figure 4.</strong> Monitor memory and CPU usage.</p>
 
@@ -722,10 +716,7 @@
 a variety of locales to the app's translation file. With
 <a href="https://tools.ietf.org/html/bcp47">BCP 47</a> support, the editor combines language and
 region codes into a single selection for targeted localizations. Color codes indicate whether a
-locale is complete or still missing string translations. You can also use the plugin to export
-your strings to the
-<a href="{@docRoot}distribute/googleplay/developer-console.html">Google Play Developer Console</a>
-for translation, then download and import your translations back into your project. </p>
+locale is complete or still missing string translations. </p>
 
 <p>To access the Translations Editor, open a <code>strings.xml</code> file and click the
 <strong>Open Editor</strong> link.  </p>
diff --git a/graphics/java/android/graphics/Atlas.java b/graphics/java/android/graphics/Atlas.java
index 39a5a53..e0a5345 100644
--- a/graphics/java/android/graphics/Atlas.java
+++ b/graphics/java/android/graphics/Atlas.java
@@ -21,10 +21,12 @@
  */
 public class Atlas {
     /**
-     * This flag indicates whether the packing algorithm will attempt
-     * to rotate entries to make them fit better in the atlas.
+     * WARNING: These flag values are part of the on-disk configuration information,
+     * do not change their values.
      */
-    public static final int FLAG_ALLOW_ROTATIONS = 0x1;
+
+    /** DELETED: FLAG_ROTATION = 0x01 */
+
     /**
      * This flag indicates whether the packing algorithm should leave
      * an empty 1 pixel wide border around each bitmap. This border can
@@ -52,9 +54,7 @@
 
     /**
      * Represents a bitmap packed in the atlas. Each entry has a location in
-     * pixels in the atlas and a rotation flag. If the entry was rotated, the
-     * bitmap must be rotated by 90 degrees (in either direction as long as
-     * the origin remains the same) before being rendered into the atlas.
+     * pixels in the atlas and a rotation flag.
      */
     public static class Entry {
         /**
@@ -65,11 +65,6 @@
          * Location, in pixels, of the bitmap on the Y axis in the atlas.
          */
         public int y;
-
-        /**
-         * If true, the bitmap must be rotated 90 degrees in the atlas.
-         */
-        public boolean rotated;
     }
 
     private final Policy mPolicy;
@@ -239,7 +234,6 @@
 
         private final SplitDecision mSplitDecision;
 
-        private final boolean mAllowRotation;
         private final int mPadding;
 
         /**
@@ -263,7 +257,6 @@
         }
 
         SlicePolicy(int width, int height, int flags, SplitDecision splitDecision) {
-            mAllowRotation = (flags & FLAG_ALLOW_ROTATIONS) != 0;
             mPadding = (flags & FLAG_ADD_PADDING) != 0 ? 1 : 0;
 
             // The entire atlas is empty at first, minus padding
@@ -360,26 +353,9 @@
          *
          * @return True if the rectangle was packed in the atlas, false otherwise
          */
-        @SuppressWarnings("SuspiciousNameCombination")
         private boolean insert(Cell cell, Cell prev, int width, int height, Entry entry) {
-            boolean rotated = false;
-
-            // If the rectangle doesn't fit we'll try to rotate it
-            // if possible before giving up
             if (cell.width < width || cell.height < height) {
-                if (mAllowRotation) {
-                    if (cell.width < height || cell.height < width) {
-                        return false;
-                    }
-
-                    // Rotate the rectangle
-                    int temp = width;
-                    width = height;
-                    height = temp;
-                    rotated = true;
-                } else {
-                    return false;
-                }
+                return false;
             }
 
             // Remaining free space after packing the rectangle
@@ -433,7 +409,6 @@
             // Return the location and rotation of the packed rectangle
             entry.x = cell.x;
             entry.y = cell.y;
-            entry.rotated = rotated;
 
             return true;
         }
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index be5c52b..c850b07 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -41,13 +41,13 @@
      */
     public static final int DENSITY_NONE = 0;
 
-    private final long mSkBitmapPtr;
-
     /**
      * Backing buffer for the Bitmap.
      */
     private byte[] mBuffer;
 
+    // Convenience for JNI access
+    private final long mNativePtr;
     private final BitmapFinalizer mFinalizer;
 
     private final boolean mIsMutable;
@@ -115,17 +115,16 @@
         mRequestPremultiplied = requestPremultiplied;
         mBuffer = buffer;
 
-        // we delete this in our finalizer
-        mSkBitmapPtr = nativeBitmap;
-
         mNinePatchChunk = ninePatchChunk;
         mNinePatchInsets = ninePatchInsets;
         if (density >= 0) {
             mDensity = density;
         }
 
-        int nativeAllocationByteCount = buffer == null ? getByteCount() : 0;
-        mFinalizer = new BitmapFinalizer(nativeBitmap, nativeAllocationByteCount);
+        mNativePtr = nativeBitmap;
+        mFinalizer = new BitmapFinalizer(nativeBitmap);
+        int nativeAllocationByteCount = (buffer == null ? getByteCount() : 0);
+        mFinalizer.setNativeAllocationByteCount(nativeAllocationByteCount);
     }
 
     /**
@@ -223,8 +222,8 @@
             throw new IllegalStateException("native-backed bitmaps may not be reconfigured");
         }
 
-        nativeReconfigure(mSkBitmapPtr, width, height, config.nativeInt, mBuffer.length,
-                mRequestPremultiplied);
+        nativeReconfigure(mFinalizer.mNativeBitmap, width, height, config.nativeInt,
+                mBuffer.length, mRequestPremultiplied);
         mWidth = width;
         mHeight = height;
     }
@@ -301,7 +300,7 @@
      */
     public void recycle() {
         if (!mRecycled && mFinalizer.mNativeBitmap != 0) {
-            if (nativeRecycle(mSkBitmapPtr)) {
+            if (nativeRecycle(mFinalizer.mNativeBitmap)) {
                 // return value indicates whether native pixel object was actually recycled.
                 // false indicates that it is still in use at the native level and these
                 // objects should not be collected now. They will be collected later when the
@@ -331,7 +330,7 @@
      * @return The current generation ID for this bitmap.
      */
     public int getGenerationId() {
-        return nativeGenerationId(mSkBitmapPtr);
+        return nativeGenerationId(mFinalizer.mNativeBitmap);
     }
 
     /**
@@ -487,7 +486,7 @@
             throw new RuntimeException("Buffer not large enough for pixels");
         }
 
-        nativeCopyPixelsToBuffer(mSkBitmapPtr, dst);
+        nativeCopyPixelsToBuffer(mFinalizer.mNativeBitmap, dst);
 
         // now update the buffer's position
         int position = dst.position();
@@ -527,7 +526,7 @@
             throw new RuntimeException("Buffer not large enough for pixels");
         }
 
-        nativeCopyPixelsFromBuffer(mSkBitmapPtr, src);
+        nativeCopyPixelsFromBuffer(mFinalizer.mNativeBitmap, src);
 
         // now update the buffer's position
         int position = src.position();
@@ -549,7 +548,7 @@
      */
     public Bitmap copy(Config config, boolean isMutable) {
         checkRecycled("Can't copy a recycled bitmap");
-        Bitmap b = nativeCopy(mSkBitmapPtr, config.nativeInt, isMutable);
+        Bitmap b = nativeCopy(mFinalizer.mNativeBitmap, config.nativeInt, isMutable);
         if (b != null) {
             b.setPremultiplied(mRequestPremultiplied);
             b.mDensity = mDensity;
@@ -810,7 +809,7 @@
         }
         bm.setHasAlpha(hasAlpha);
         if (config == Config.ARGB_8888 && !hasAlpha) {
-            nativeErase(bm.mSkBitmapPtr, 0xff000000);
+            nativeErase(bm.mFinalizer.mNativeBitmap, 0xff000000);
         }
         // No need to initialize the bitmap to zeroes with other configs;
         // it is backed by a VM byte array which is by definition preinitialized
@@ -1000,8 +999,8 @@
             throw new IllegalArgumentException("quality must be 0..100");
         }
         Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, "Bitmap.compress");
-        boolean result = nativeCompress(mSkBitmapPtr, format.nativeInt, quality,
-                              stream, new byte[WORKING_COMPRESS_STORAGE]);
+        boolean result = nativeCompress(mFinalizer.mNativeBitmap, format.nativeInt,
+                quality, stream, new byte[WORKING_COMPRESS_STORAGE]);
         Trace.traceEnd(Trace.TRACE_TAG_RESOURCES);
         return result;
     }
@@ -1041,7 +1040,7 @@
      * @see BitmapFactory.Options#inPremultiplied
      */
     public final boolean isPremultiplied() {
-        return nativeIsPremultiplied(mSkBitmapPtr);
+        return nativeIsPremultiplied(mFinalizer.mNativeBitmap);
     }
 
     /**
@@ -1066,7 +1065,7 @@
      */
     public final void setPremultiplied(boolean premultiplied) {
         mRequestPremultiplied = premultiplied;
-        nativeSetPremultiplied(mSkBitmapPtr, premultiplied);
+        nativeSetPremultiplied(mFinalizer.mNativeBitmap, premultiplied);
     }
 
     /** Returns the bitmap's width */
@@ -1158,7 +1157,7 @@
      * @return number of bytes between rows of the native bitmap pixels.
      */
     public final int getRowBytes() {
-        return nativeRowBytes(mSkBitmapPtr);
+        return nativeRowBytes(mFinalizer.mNativeBitmap);
     }
 
     /**
@@ -1201,7 +1200,7 @@
      * that config, otherwise return null.
      */
     public final Config getConfig() {
-        return Config.nativeToConfig(nativeConfig(mSkBitmapPtr));
+        return Config.nativeToConfig(nativeConfig(mFinalizer.mNativeBitmap));
     }
 
     /** Returns true if the bitmap's config supports per-pixel alpha, and
@@ -1213,7 +1212,7 @@
      * it will return true by default.
      */
     public final boolean hasAlpha() {
-        return nativeHasAlpha(mSkBitmapPtr);
+        return nativeHasAlpha(mFinalizer.mNativeBitmap);
     }
 
     /**
@@ -1227,7 +1226,7 @@
      * non-opaque per-pixel alpha values.
      */
     public void setHasAlpha(boolean hasAlpha) {
-        nativeSetHasAlpha(mSkBitmapPtr, hasAlpha, mRequestPremultiplied);
+        nativeSetHasAlpha(mFinalizer.mNativeBitmap, hasAlpha, mRequestPremultiplied);
     }
 
     /**
@@ -1248,7 +1247,7 @@
      * @see #setHasMipMap(boolean)
      */
     public final boolean hasMipMap() {
-        return nativeHasMipMap(mSkBitmapPtr);
+        return nativeHasMipMap(mFinalizer.mNativeBitmap);
     }
 
     /**
@@ -1272,7 +1271,7 @@
      * @see #hasMipMap()
      */
     public final void setHasMipMap(boolean hasMipMap) {
-        nativeSetHasMipMap(mSkBitmapPtr, hasMipMap);
+        nativeSetHasMipMap(mFinalizer.mNativeBitmap, hasMipMap);
     }
 
     /**
@@ -1285,7 +1284,7 @@
         if (!isMutable()) {
             throw new IllegalStateException("cannot erase immutable bitmaps");
         }
-        nativeErase(mSkBitmapPtr, c);
+        nativeErase(mFinalizer.mNativeBitmap, c);
     }
 
     /**
@@ -1302,7 +1301,7 @@
     public int getPixel(int x, int y) {
         checkRecycled("Can't call getPixel() on a recycled bitmap");
         checkPixelAccess(x, y);
-        return nativeGetPixel(mSkBitmapPtr, x, y);
+        return nativeGetPixel(mFinalizer.mNativeBitmap, x, y);
     }
 
     /**
@@ -1335,7 +1334,7 @@
             return; // nothing to do
         }
         checkPixelsAccess(x, y, width, height, offset, stride, pixels);
-        nativeGetPixels(mSkBitmapPtr, pixels, offset, stride,
+        nativeGetPixels(mFinalizer.mNativeBitmap, pixels, offset, stride,
                         x, y, width, height);
     }
 
@@ -1416,7 +1415,7 @@
             throw new IllegalStateException();
         }
         checkPixelAccess(x, y);
-        nativeSetPixel(mSkBitmapPtr, x, y, color);
+        nativeSetPixel(mFinalizer.mNativeBitmap, x, y, color);
     }
 
     /**
@@ -1452,7 +1451,7 @@
             return; // nothing to do
         }
         checkPixelsAccess(x, y, width, height, offset, stride, pixels);
-        nativeSetPixels(mSkBitmapPtr, pixels, offset, stride,
+        nativeSetPixels(mFinalizer.mNativeBitmap, pixels, offset, stride,
                         x, y, width, height);
     }
 
@@ -1490,7 +1489,7 @@
      */
     public void writeToParcel(Parcel p, int flags) {
         checkRecycled("Can't parcel a recycled bitmap");
-        if (!nativeWriteToParcel(mSkBitmapPtr, mIsMutable, mDensity, p)) {
+        if (!nativeWriteToParcel(mFinalizer.mNativeBitmap, mIsMutable, mDensity, p)) {
             throw new RuntimeException("native writeToParcel failed");
         }
     }
@@ -1536,7 +1535,7 @@
     public Bitmap extractAlpha(Paint paint, int[] offsetXY) {
         checkRecycled("Can't extractAlpha on a recycled bitmap");
         long nativePaint = paint != null ? paint.getNativeInstance() : 0;
-        Bitmap bm = nativeExtractAlpha(mSkBitmapPtr, nativePaint, offsetXY);
+        Bitmap bm = nativeExtractAlpha(mFinalizer.mNativeBitmap, nativePaint, offsetXY);
         if (bm == null) {
             throw new RuntimeException("Failed to extractAlpha on Bitmap");
         }
@@ -1550,7 +1549,8 @@
      *  If other is null, return false.
      */
     public boolean sameAs(Bitmap other) {
-        return this == other || (other != null && nativeSameAs(mSkBitmapPtr, other.mSkBitmapPtr));
+        return this == other || (other != null
+                && nativeSameAs(mFinalizer.mNativeBitmap, other.mFinalizer.mNativeBitmap));
     }
 
     /**
@@ -1565,7 +1565,9 @@
      * and therefore is harmless.
      */
     public void prepareToDraw() {
-        nativePrepareToDraw(mSkBitmapPtr);
+        // TODO: Consider having this start an async upload?
+        // With inPurgeable no-op'd there's currently no use for this
+        // method, but it could have interesting future uses.
     }
 
     /**
@@ -1574,7 +1576,7 @@
      * @hide
      * */
     public final long refSkPixelRef() {
-        return nativeRefPixelRef(mSkBitmapPtr);
+        return nativeRefPixelRef(mNativePtr);
     }
 
     private static class BitmapFinalizer {
@@ -1582,12 +1584,17 @@
 
         // Native memory allocated for the duration of the Bitmap,
         // if pixel data allocated into native memory, instead of java byte[]
-        private final int mNativeAllocationByteCount;
+        private int mNativeAllocationByteCount;
 
-        BitmapFinalizer(long nativeBitmap, int nativeAllocationByteCount) {
+        BitmapFinalizer(long nativeBitmap) {
             mNativeBitmap = nativeBitmap;
-            mNativeAllocationByteCount = nativeAllocationByteCount;
+        }
 
+        public void setNativeAllocationByteCount(int nativeByteCount) {
+            if (mNativeAllocationByteCount != 0) {
+                VMRuntime.getRuntime().registerNativeFree(mNativeAllocationByteCount);
+            }
+            mNativeAllocationByteCount = nativeByteCount;
             if (mNativeAllocationByteCount != 0) {
                 VMRuntime.getRuntime().registerNativeAllocation(mNativeAllocationByteCount);
             }
@@ -1600,9 +1607,7 @@
             } catch (Throwable t) {
                 // Ignore
             } finally {
-                if (mNativeAllocationByteCount != 0) {
-                    VMRuntime.getRuntime().registerNativeFree(mNativeAllocationByteCount);
-                }
+                setNativeAllocationByteCount(0);
                 nativeDestructor(mNativeBitmap);
                 mNativeBitmap = 0;
             }
@@ -1654,7 +1659,6 @@
                                                     long nativePaint,
                                                     int[] offsetXY);
 
-    private static native void nativePrepareToDraw(long nativeBitmap);
     private static native boolean nativeHasAlpha(long nativeBitmap);
     private static native boolean nativeIsPremultiplied(long nativeBitmap);
     private static native void nativeSetPremultiplied(long nativeBitmap,
diff --git a/graphics/java/android/graphics/drawable/DrawableContainer.java b/graphics/java/android/graphics/drawable/DrawableContainer.java
index b03fe3a..4a06805 100644
--- a/graphics/java/android/graphics/drawable/DrawableContainer.java
+++ b/graphics/java/android/graphics/drawable/DrawableContainer.java
@@ -295,9 +295,9 @@
     @Override
     public void setHotspotBounds(int left, int top, int right, int bottom) {
         if (mHotspotBounds == null) {
-            mHotspotBounds = new Rect(left, top, bottom, right);
+            mHotspotBounds = new Rect(left, top, right, bottom);
         } else {
-            mHotspotBounds.set(left, top, bottom, right);
+            mHotspotBounds.set(left, top, right, bottom);
         }
 
         if (mCurrDrawable != null) {
diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h
index df278c8..b15caeb 100644
--- a/include/androidfw/ResourceTypes.h
+++ b/include/androidfw/ResourceTypes.h
@@ -1631,6 +1631,7 @@
 
         status_t applyStyle(uint32_t resID, bool force=false);
         status_t setTo(const Theme& other);
+        status_t clear();
 
         /**
          * Retrieve a value in the theme.  If the theme defines this
@@ -1662,6 +1663,12 @@
                 uint32_t* inoutTypeSpecFlags = NULL,
                 ResTable_config* inoutConfig = NULL) const;
 
+        /**
+         * Returns a bit mask of configuration changes that will impact this
+         * theme (and thus require completely reloading it).
+         */
+        uint32_t getChangingConfigurations() const;
+
         void dumpToLog() const;
         
     private:
@@ -1688,6 +1695,7 @@
 
         const ResTable& mTable;
         package_info*   mPackages[Res_MAXPACKAGE];
+        uint32_t        mTypeSpecFlags;
     };
 
     void setParameters(const ResTable_config* params);
diff --git a/keystore/java/android/security/AndroidKeyPairGenerator.java b/keystore/java/android/security/AndroidKeyPairGenerator.java
index 3b25ba6..3f29c6a 100644
--- a/keystore/java/android/security/AndroidKeyPairGenerator.java
+++ b/keystore/java/android/security/AndroidKeyPairGenerator.java
@@ -54,13 +54,13 @@
 
     public static class RSA extends AndroidKeyPairGenerator {
         public RSA() {
-            super("RSA");
+            super(KeyStoreKeyProperties.Algorithm.RSA);
         }
     }
 
     public static class EC extends AndroidKeyPairGenerator {
         public EC() {
-            super("EC");
+            super(KeyStoreKeyProperties.Algorithm.EC);
         }
     }
 
@@ -83,15 +83,15 @@
     private android.security.KeyStore mKeyStore;
 
     private KeyPairGeneratorSpec mSpec;
-    private String mKeyAlgorithm;
+    private @KeyStoreKeyProperties.AlgorithmEnum String mKeyAlgorithm;
     private int mKeyType;
     private int mKeySize;
 
-    protected AndroidKeyPairGenerator(String algorithm) {
+    protected AndroidKeyPairGenerator(@KeyStoreKeyProperties.AlgorithmEnum String algorithm) {
         mAlgorithm = algorithm;
     }
 
-    public String getAlgorithm() {
+    public @KeyStoreKeyProperties.AlgorithmEnum String getAlgorithm() {
         return mAlgorithm;
     }
 
@@ -197,7 +197,7 @@
         return certGen.generate(privateKey);
     }
 
-    private String getKeyAlgorithm(KeyPairGeneratorSpec spec) {
+    private @KeyStoreKeyProperties.AlgorithmEnum String getKeyAlgorithm(KeyPairGeneratorSpec spec) {
         String result = spec.getKeyType();
         if (result != null) {
             return result;
@@ -248,10 +248,11 @@
         }
     }
 
-    private static String getDefaultSignatureAlgorithmForKeyAlgorithm(String algorithm) {
-        if ("RSA".equalsIgnoreCase(algorithm)) {
+    private static String getDefaultSignatureAlgorithmForKeyAlgorithm(
+            @KeyStoreKeyProperties.AlgorithmEnum String algorithm) {
+        if (KeyStoreKeyProperties.Algorithm.RSA.equalsIgnoreCase(algorithm)) {
             return "sha256WithRSA";
-        } else if ("EC".equalsIgnoreCase(algorithm)) {
+        } else if (KeyStoreKeyProperties.Algorithm.EC.equalsIgnoreCase(algorithm)) {
             return "sha256WithECDSA";
         } else {
             throw new IllegalArgumentException("Unsupported key type " + algorithm);
@@ -287,7 +288,7 @@
         }
 
         KeyPairGeneratorSpec spec = (KeyPairGeneratorSpec) params;
-        String keyAlgorithm = getKeyAlgorithm(spec);
+        @KeyStoreKeyProperties.AlgorithmEnum String keyAlgorithm = getKeyAlgorithm(spec);
         int keyType = KeyStore.getKeyTypeForAlgorithm(keyAlgorithm);
         if (keyType == -1) {
             throw new InvalidAlgorithmParameterException(
diff --git a/keystore/java/android/security/AndroidKeyStore.java b/keystore/java/android/security/AndroidKeyStore.java
index 72cb062..e82ff6a 100644
--- a/keystore/java/android/security/AndroidKeyStore.java
+++ b/keystore/java/android/security/AndroidKeyStore.java
@@ -128,10 +128,11 @@
                 keymasterDigest = keymasterDigests.get(0);
             }
 
-            String keyAlgorithmString;
+            @KeyStoreKeyProperties.AlgorithmEnum String keyAlgorithmString;
             try {
-                keyAlgorithmString = KeymasterUtils.getJcaSecretKeyAlgorithm(
-                        keymasterAlgorithm, keymasterDigest);
+                keyAlgorithmString =
+                        KeyStoreKeyProperties.Algorithm.fromKeymasterSecretKeyAlgorithm(
+                                keymasterAlgorithm, keymasterDigest);
             } catch (IllegalArgumentException e) {
                 throw (UnrecoverableKeyException)
                         new UnrecoverableKeyException("Unsupported secret key type").initCause(e);
@@ -451,10 +452,10 @@
         int keymasterAlgorithm;
         int keymasterDigest;
         try {
-            keymasterAlgorithm = KeymasterUtils.getKeymasterAlgorithmFromJcaSecretKeyAlgorithm(
+            keymasterAlgorithm = KeyStoreKeyProperties.Algorithm.toKeymasterSecretKeyAlgorithm(
                     keyAlgorithmString);
             keymasterDigest =
-                    KeymasterUtils.getKeymasterDigestfromJcaSecretKeyAlgorithm(keyAlgorithmString);
+                    KeyStoreKeyProperties.Algorithm.toKeymasterDigest(keyAlgorithmString);
         } catch (IllegalArgumentException e) {
             throw new KeyStoreException("Unsupported secret key algorithm: " + keyAlgorithmString);
         }
@@ -465,8 +466,7 @@
         int[] keymasterDigests;
         if (params.isDigestsSpecified()) {
             // Digest(s) specified in parameters
-            keymasterDigests =
-                    KeymasterUtils.getKeymasterDigestsFromJcaDigestAlgorithms(params.getDigests());
+            keymasterDigests = KeyStoreKeyProperties.Digest.allToKeymaster(params.getDigests());
             if (keymasterDigest != -1) {
                 // Digest also specified in the JCA key algorithm name.
                 if (!com.android.internal.util.ArrayUtils.contains(
@@ -494,8 +494,8 @@
         }
 
         @KeyStoreKeyProperties.PurposeEnum int purposes = params.getPurposes();
-        int[] keymasterBlockModes = KeymasterUtils.getKeymasterBlockModesFromJcaBlockModes(
-                params.getBlockModes());
+        int[] keymasterBlockModes =
+                KeyStoreKeyProperties.BlockMode.allToKeymaster(params.getBlockModes());
         if (((purposes & KeyStoreKeyProperties.Purpose.ENCRYPT) != 0)
                 && (params.isRandomizedEncryptionRequired())) {
             for (int keymasterBlockMode : keymasterBlockModes) {
@@ -503,8 +503,7 @@
                     throw new KeyStoreException(
                             "Randomized encryption (IND-CPA) required but may be violated by block"
                             + " mode: "
-                            + KeymasterUtils.getJcaBlockModeFromKeymasterBlockMode(
-                                    keymasterBlockMode)
+                            + KeyStoreKeyProperties.BlockMode.fromKeymaster(keymasterBlockMode)
                             + ". See KeyStoreParameter documentation.");
                 }
             }
@@ -513,11 +512,11 @@
             args.addInt(KeymasterDefs.KM_TAG_PURPOSE, keymasterPurpose);
         }
         args.addInts(KeymasterDefs.KM_TAG_BLOCK_MODE, keymasterBlockModes);
-        int[] keymasterPaddings = ArrayUtils.concat(
-                KeymasterUtils.getKeymasterPaddingsFromJcaEncryptionPaddings(
-                        params.getEncryptionPaddings()),
-                KeymasterUtils.getKeymasterPaddingsFromJcaSignaturePaddings(
-                        params.getSignaturePaddings()));
+        if (params.getSignaturePaddings().length > 0) {
+            throw new KeyStoreException("Signature paddings not supported for symmetric keys");
+        }
+        int[] keymasterPaddings = KeyStoreKeyProperties.EncryptionPadding.allToKeymaster(
+                params.getEncryptionPaddings());
         args.addInts(KeymasterDefs.KM_TAG_PADDING, keymasterPaddings);
         KeymasterUtils.addUserAuthArgs(args,
                 params.getContext(),
diff --git a/keystore/java/android/security/AndroidKeyStoreProvider.java b/keystore/java/android/security/AndroidKeyStoreProvider.java
index 518067b..257ab54 100644
--- a/keystore/java/android/security/AndroidKeyStoreProvider.java
+++ b/keystore/java/android/security/AndroidKeyStoreProvider.java
@@ -104,13 +104,13 @@
      *
      * <p>The following primitives are supported: {@link Cipher} and {@link Mac}.
      *
-     * @return KeyStore operation handle or {@code null} if the provided primitive's KeyStore
-     *         operation is not in progress.
+     * @return KeyStore operation handle or {@code 0} if the provided primitive's KeyStore operation
+     *         is not in progress.
      *
      * @throws IllegalArgumentException if the provided primitive is not supported or is not backed
      *         by AndroidKeyStore provider.
      */
-    public static Long getKeyStoreOperationHandle(Object cryptoPrimitive) {
+    public static long getKeyStoreOperationHandle(Object cryptoPrimitive) {
         if (cryptoPrimitive == null) {
             throw new NullPointerException();
         }
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index e9c24dd..8e27dc3 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -262,7 +262,8 @@
      *     unavailable.
      */
     public static void choosePrivateKeyAlias(Activity activity, KeyChainAliasCallback response,
-            String[] keyTypes, Principal[] issuers, String host, int port, String alias) {
+            @KeyStoreKeyProperties.AlgorithmEnum String[] keyTypes, Principal[] issuers,
+            String host, int port, String alias) {
         choosePrivateKeyAlias(activity, response, keyTypes, issuers, host, port, null, alias);
     }
 
@@ -306,9 +307,8 @@
      *     unavailable.
      */
     public static void choosePrivateKeyAlias(Activity activity, KeyChainAliasCallback response,
-                                             String[] keyTypes, Principal[] issuers,
-                                             String host, int port, String url,
-                                             String alias) {
+            @KeyStoreKeyProperties.AlgorithmEnum String[] keyTypes, Principal[] issuers,
+            String host, int port, String url, String alias) {
         /*
          * TODO currently keyTypes, issuers are unused. They are meant
          * to follow the semantics and purpose of X509KeyManager
@@ -431,9 +431,11 @@
      * specific {@code PrivateKey} type indicated by {@code algorithm} (e.g.,
      * "RSA").
      */
-    public static boolean isKeyAlgorithmSupported(String algorithm) {
+    public static boolean isKeyAlgorithmSupported(
+            @KeyStoreKeyProperties.AlgorithmEnum String algorithm) {
         final String algUpper = algorithm.toUpperCase(Locale.US);
-        return "EC".equals(algUpper) || "RSA".equals(algUpper);
+        return KeyStoreKeyProperties.Algorithm.EC.equals(algUpper)
+                || KeyStoreKeyProperties.Algorithm.RSA.equals(algUpper);
     }
 
     /**
@@ -443,7 +445,8 @@
      * hardware support that can be used to bind keys to the device in a way
      * that makes it non-exportable.
      */
-    public static boolean isBoundKeyAlgorithm(String algorithm) {
+    public static boolean isBoundKeyAlgorithm(
+            @KeyStoreKeyProperties.AlgorithmEnum String algorithm) {
         if (!isKeyAlgorithmSupported(algorithm)) {
             return false;
         }
diff --git a/keystore/java/android/security/KeyGeneratorSpec.java b/keystore/java/android/security/KeyGeneratorSpec.java
index 8f135a6..729646d 100644
--- a/keystore/java/android/security/KeyGeneratorSpec.java
+++ b/keystore/java/android/security/KeyGeneratorSpec.java
@@ -48,8 +48,8 @@
     private final Date mKeyValidityForOriginationEnd;
     private final Date mKeyValidityForConsumptionEnd;
     private final @KeyStoreKeyProperties.PurposeEnum int mPurposes;
-    private final String[] mEncryptionPaddings;
-    private final String[] mBlockModes;
+    private final @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
+    private final @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
     private final boolean mRandomizedEncryptionRequired;
     private final boolean mUserAuthenticationRequired;
     private final int mUserAuthenticationValidityDurationSeconds;
@@ -63,8 +63,8 @@
             Date keyValidityForOriginationEnd,
             Date keyValidityForConsumptionEnd,
             @KeyStoreKeyProperties.PurposeEnum int purposes,
-            String[] encryptionPaddings,
-            String[] blockModes,
+            @KeyStoreKeyProperties.EncryptionPaddingEnum String[] encryptionPaddings,
+            @KeyStoreKeyProperties.BlockModeEnum String[] blockModes,
             boolean randomizedEncryptionRequired,
             boolean userAuthenticationRequired,
             int userAuthenticationValidityDurationSeconds) {
@@ -160,14 +160,14 @@
     /**
      * Gets the set of padding schemes with which the key can be used when encrypting/decrypting.
      */
-    public String[] getEncryptionPaddings() {
+    public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() {
         return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings);
     }
 
     /**
      * Gets the set of block modes with which the key can be used.
      */
-    public String[] getBlockModes() {
+    public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() {
         return ArrayUtils.cloneIfNotEmpty(mBlockModes);
     }
 
@@ -195,10 +195,12 @@
 
     /**
      * Gets the duration of time (seconds) for which this key can be used after the user is
-     * successfully authenticated.
+     * successfully authenticated. This has effect only if user authentication is required.
      *
-     * @return duration in seconds or {@code -1} if not restricted. {@code 0} means authentication
-     *         is required for every use of the key.
+     * @return duration in seconds or {@code -1} if authentication is required for every use of the
+     *         key.
+     *
+     * @see #isUserAuthenticationRequired()
      */
     public int getUserAuthenticationValidityDurationSeconds() {
         return mUserAuthenticationValidityDurationSeconds;
@@ -220,8 +222,8 @@
         private Date mKeyValidityForOriginationEnd;
         private Date mKeyValidityForConsumptionEnd;
         private @KeyStoreKeyProperties.PurposeEnum int mPurposes;
-        private String[] mEncryptionPaddings;
-        private String[] mBlockModes;
+        private @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
+        private @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
         private boolean mRandomizedEncryptionRequired = true;
         private boolean mUserAuthenticationRequired;
         private int mUserAuthenticationValidityDurationSeconds = -1;
@@ -346,7 +348,8 @@
          *
          * <p>This must be specified for keys which are used for encryption/decryption.
          */
-        public Builder setEncryptionPaddings(String... paddings) {
+        public Builder setEncryptionPaddings(
+                @KeyStoreKeyProperties.EncryptionPaddingEnum String... paddings) {
             mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings);
             return this;
         }
@@ -357,7 +360,7 @@
          *
          * <p>This must be specified for encryption/decryption keys.
          */
-        public Builder setBlockModes(String... blockModes) {
+        public Builder setBlockModes(@KeyStoreKeyProperties.BlockModeEnum String... blockModes) {
             mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes);
             return this;
         }
@@ -425,7 +428,7 @@
          *
          * <p>By default, the user needs to authenticate for every use of the key.
          *
-         * @param seconds duration in seconds or {@code 0} if the user needs to authenticate for
+         * @param seconds duration in seconds or {@code -1} if the user needs to authenticate for
          *        every use of the key.
          *
          * @see #setUserAuthenticationRequired(boolean)
diff --git a/keystore/java/android/security/KeyPairGeneratorSpec.java b/keystore/java/android/security/KeyPairGeneratorSpec.java
index d6d3789..25c61fd 100644
--- a/keystore/java/android/security/KeyPairGeneratorSpec.java
+++ b/keystore/java/android/security/KeyPairGeneratorSpec.java
@@ -85,13 +85,13 @@
 
     private final @KeyStoreKeyProperties.PurposeEnum int mPurposes;
 
-    private final String[] mDigests;
+    private final @KeyStoreKeyProperties.DigestEnum String[] mDigests;
 
-    private final String[] mEncryptionPaddings;
+    private final @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
 
-    private final String[] mSignaturePaddings;
+    private final @KeyStoreKeyProperties.SignaturePaddingEnum String[] mSignaturePaddings;
 
-    private final String[] mBlockModes;
+    private final @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
 
     private final boolean mRandomizedEncryptionRequired;
 
@@ -138,10 +138,10 @@
             Date keyValidityForOriginationEnd,
             Date keyValidityForConsumptionEnd,
             @KeyStoreKeyProperties.PurposeEnum int purposes,
-            String[] digests,
-            String[] encryptionPaddings,
-            String[] signaturePaddings,
-            String[] blockModes,
+            @KeyStoreKeyProperties.DigestEnum String[] digests,
+            @KeyStoreKeyProperties.EncryptionPaddingEnum String[] encryptionPaddings,
+            @KeyStoreKeyProperties.SignaturePaddingEnum String[] signaturePaddings,
+            @KeyStoreKeyProperties.BlockModeEnum String[] blockModes,
             boolean randomizedEncryptionRequired,
             boolean userAuthenticationRequired,
             int userAuthenticationValidityDurationSeconds) {
@@ -246,7 +246,7 @@
     /**
      * Returns the key type (e.g., "EC", "RSA") specified by this parameter.
      */
-    public String getKeyType() {
+    public @KeyStoreKeyProperties.AlgorithmEnum String getKeyType() {
         return mKeyType;
     }
 
@@ -352,28 +352,28 @@
     /**
      * Gets the set of digest algorithms with which the key can be used.
      */
-    public String[] getDigests() {
+    public @KeyStoreKeyProperties.DigestEnum String[] getDigests() {
         return ArrayUtils.cloneIfNotEmpty(mDigests);
     }
 
     /**
      * Gets the set of padding schemes with which the key can be used when encrypting/decrypting.
      */
-    public String[] getEncryptionPaddings() {
+    public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() {
         return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings);
     }
 
     /**
      * Gets the set of padding schemes with which the key can be used when signing/verifying.
      */
-    public String[] getSignaturePaddings() {
+    public @KeyStoreKeyProperties.SignaturePaddingEnum String[] getSignaturePaddings() {
         return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings);
     }
 
     /**
      * Gets the set of block modes with which the key can be used.
      */
-    public String[] getBlockModes() {
+    public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() {
         return ArrayUtils.cloneIfNotEmpty(mBlockModes);
     }
 
@@ -403,14 +403,14 @@
     }
 
     /**
-     * Gets the duration of time (seconds) for which the private key can be used after the user
-     * is successfully authenticated.
+     * Gets the duration of time (seconds) for which this key can be used after the user is
+     * successfully authenticated. This has effect only if user authentication is required.
      *
      * <p>This restriction applies only to private key operations. Public key operations are not
      * restricted.
      *
-     * @return duration in seconds or {@code -1} if not restricted. {@code 0} means authentication
-     *         is required for every use of the key.
+     * @return duration in seconds or {@code -1} if authentication is required for every use of the
+     *         key.
      *
      * @see #isUserAuthenticationRequired()
      */
@@ -468,13 +468,13 @@
 
         private @KeyStoreKeyProperties.PurposeEnum int mPurposes;
 
-        private String[] mDigests;
+        private @KeyStoreKeyProperties.DigestEnum String[] mDigests;
 
-        private String[] mEncryptionPaddings;
+        private @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
 
-        private String[] mSignaturePaddings;
+        private @KeyStoreKeyProperties.SignaturePaddingEnum String[] mSignaturePaddings;
 
-        private String[] mBlockModes;
+        private @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
 
         private boolean mRandomizedEncryptionRequired = true;
 
@@ -511,7 +511,8 @@
         /**
          * Sets the key type (e.g., EC, RSA) of the keypair to be created.
          */
-        public Builder setKeyType(String keyType) throws NoSuchAlgorithmException {
+        public Builder setKeyType(@KeyStoreKeyProperties.AlgorithmEnum String keyType)
+                throws NoSuchAlgorithmException {
             if (keyType == null) {
                 throw new NullPointerException("keyType == null");
             } else {
@@ -628,6 +629,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect.
+         *
          * @see #setKeyValidityEnd(Date)
          */
         public Builder setKeyValidityStart(Date startDate) {
@@ -640,6 +643,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect.
+         *
          * @see #setKeyValidityStart(Date)
          * @see #setKeyValidityForConsumptionEnd(Date)
          * @see #setKeyValidityForOriginationEnd(Date)
@@ -655,6 +660,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect.
+         *
          * @see #setKeyValidityForConsumptionEnd(Date)
          */
         public Builder setKeyValidityForOriginationEnd(Date endDate) {
@@ -668,6 +675,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect.
+         *
          * @see #setKeyValidityForOriginationEnd(Date)
          */
         public Builder setKeyValidityForConsumptionEnd(Date endDate) {
@@ -679,6 +688,8 @@
          * Sets the set of purposes for which the key can be used.
          *
          * <p>This must be specified for all keys. There is no default.
+         *
+         * <p><b>NOTE: This has currently no effect.
          */
         public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) {
             mPurposes = purposes;
@@ -690,8 +701,10 @@
          * to use the key with any other digest will be rejected.
          *
          * <p>This must be specified for keys which are used for signing/verification.
+         *
+         * <p><b>NOTE: This has currently no effect.
          */
-        public Builder setDigests(String... digests) {
+        public Builder setDigests(@KeyStoreKeyProperties.DigestEnum String... digests) {
             mDigests = ArrayUtils.cloneIfNotEmpty(digests);
             return this;
         }
@@ -702,8 +715,11 @@
          * rejected.
          *
          * <p>This must be specified for keys which are used for encryption/decryption.
+         *
+         * <p><b>NOTE: This has currently no effect.
          */
-        public Builder setEncryptionPaddings(String... paddings) {
+        public Builder setEncryptionPaddings(
+                @KeyStoreKeyProperties.EncryptionPaddingEnum String... paddings) {
             mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings);
             return this;
         }
@@ -714,8 +730,11 @@
          * rejected.
          *
          * <p>This must be specified for RSA keys which are used for signing/verification.
+         *
+         * <p><b>NOTE: This has currently no effect.
          */
-        public Builder setSignaturePaddings(String... paddings) {
+        public Builder setSignaturePaddings(
+                @KeyStoreKeyProperties.SignaturePaddingEnum String... paddings) {
             mSignaturePaddings = ArrayUtils.cloneIfNotEmpty(paddings);
             return this;
         }
@@ -725,8 +744,10 @@
          * Attempts to use the key with any other block modes will be rejected.
          *
          * <p>This must be specified for encryption/decryption keys.
+         *
+         * <p><b>NOTE: This has currently no effect.
          */
-        public Builder setBlockModes(String... blockModes) {
+        public Builder setBlockModes(@KeyStoreKeyProperties.BlockModeEnum String... blockModes) {
             mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes);
             return this;
         }
@@ -750,6 +771,8 @@
          * <li>If you are using RSA encryption without padding, consider switching to padding
          * schemes which offer {@code IND-CPA}, such as PKCS#1 or OAEP.</li>
          * </ul>
+         *
+         * <p><b>NOTE: This has currently no effect.
          */
         public Builder setRandomizedEncryptionRequired(boolean required) {
             mRandomizedEncryptionRequired = required;
@@ -772,6 +795,8 @@
          * <p>This restriction applies only to private key operations. Public key operations are not
          * restricted.
          *
+         * <p><b>NOTE: This has currently no effect.
+         *
          * @see #setUserAuthenticationValidityDurationSeconds(int)
          */
         public Builder setUserAuthenticationRequired(boolean required) {
@@ -788,7 +813,9 @@
          * <p>This restriction applies only to private key operations. Public key operations are not
          * restricted.
          *
-         * @param seconds duration in seconds or {@code 0} if the user needs to authenticate for
+         * <p><b>NOTE: This has currently no effect.
+         *
+         * @param seconds duration in seconds or {@code -1} if the user needs to authenticate for
          *        every use of the key.
          *
          * @see #setUserAuthenticationRequired(boolean)
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index 82d328b..304d277 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -115,10 +115,10 @@
         return mToken;
     }
 
-    static int getKeyTypeForAlgorithm(String keyType) {
-        if ("RSA".equalsIgnoreCase(keyType)) {
+    static int getKeyTypeForAlgorithm(@KeyStoreKeyProperties.AlgorithmEnum String keyType) {
+        if (KeyStoreKeyProperties.Algorithm.RSA.equalsIgnoreCase(keyType)) {
             return NativeConstants.EVP_PKEY_RSA;
-        } else if ("EC".equalsIgnoreCase(keyType)) {
+        } else if (KeyStoreKeyProperties.Algorithm.EC.equalsIgnoreCase(keyType)) {
             return NativeConstants.EVP_PKEY_EC;
         } else {
             return -1;
diff --git a/keystore/java/android/security/KeyStoreCipherSpi.java b/keystore/java/android/security/KeyStoreCipherSpi.java
index 20dd524..bd601bc 100644
--- a/keystore/java/android/security/KeyStoreCipherSpi.java
+++ b/keystore/java/android/security/KeyStoreCipherSpi.java
@@ -27,6 +27,7 @@
 import java.security.InvalidKeyException;
 import java.security.Key;
 import java.security.NoSuchAlgorithmException;
+import java.security.ProviderException;
 import java.security.SecureRandom;
 import java.security.spec.AlgorithmParameterSpec;
 import java.security.spec.InvalidParameterSpecException;
@@ -134,7 +135,7 @@
      * error conditions in between.
      */
     private IBinder mOperationToken;
-    private Long mOperationHandle;
+    private long mOperationHandle;
     private KeyStoreCryptoOperationChunkedStreamer mMainDataStreamer;
 
     /**
@@ -247,7 +248,7 @@
         mIvHasBeenUsed = false;
         mAdditionalEntropyForBegin = null;
         mOperationToken = null;
-        mOperationHandle = null;
+        mOperationHandle = 0;
         mMainDataStreamer = null;
         mCachedException = null;
     }
@@ -258,7 +259,7 @@
             mOperationToken = null;
             mKeyStore.abort(operationToken);
         }
-        mOperationHandle = null;
+        mOperationHandle = 0;
         mMainDataStreamer = null;
         mAdditionalEntropyForBegin = null;
         mCachedException = null;
@@ -315,12 +316,15 @@
             } else if (e instanceof InvalidAlgorithmParameterException) {
                 throw (InvalidAlgorithmParameterException) e;
             } else {
-                throw new RuntimeException("Unexpected exception type", e);
+                throw new ProviderException("Unexpected exception type", e);
             }
         }
 
         if (mOperationToken == null) {
-            throw new IllegalStateException("Keystore returned null operation token");
+            throw new ProviderException("Keystore returned null operation token");
+        }
+        if (mOperationHandle == 0) {
+            throw new ProviderException("Keystore returned invalid operation handle");
         }
 
         loadAlgorithmSpecificParametersFromBeginResult(keymasterOutputArgs);
@@ -471,7 +475,7 @@
     }
 
     @Override
-    public Long getOperationHandle() {
+    public long getOperationHandle() {
         return mOperationHandle;
     }
 
@@ -491,13 +495,14 @@
         }
         if ((mIv != null) && (mIv.length > 0)) {
             try {
-                AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
+                AlgorithmParameters params =
+                        AlgorithmParameters.getInstance(KeyStoreKeyProperties.Algorithm.AES);
                 params.init(new IvParameterSpec(mIv));
                 return params;
             } catch (NoSuchAlgorithmException e) {
-                throw new RuntimeException("Failed to obtain AES AlgorithmParameters", e);
+                throw new ProviderException("Failed to obtain AES AlgorithmParameters", e);
             } catch (InvalidParameterSpecException e) {
-                throw new RuntimeException(
+                throw new ProviderException(
                         "Failed to initialize AES AlgorithmParameters with an IV", e);
             }
         }
@@ -630,10 +635,9 @@
                 if ((mIv == null) && (mEncrypting)) {
                     // IV was not provided by the caller and thus will be generated by keymaster.
                     // Mix in some additional entropy from the provided SecureRandom.
-                    if (mRng != null) {
-                        mAdditionalEntropyForBegin = new byte[mBlockSizeBytes];
-                        mRng.nextBytes(mAdditionalEntropyForBegin);
-                    }
+                    mAdditionalEntropyForBegin =
+                            KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(
+                                    mRng, mBlockSizeBytes);
                 }
             }
         }
@@ -665,11 +669,11 @@
             if (mIv == null) {
                 mIv = returnedIv;
             } else if ((returnedIv != null) && (!Arrays.equals(returnedIv, mIv))) {
-                throw new IllegalStateException("IV in use differs from provided IV");
+                throw new ProviderException("IV in use differs from provided IV");
             }
         } else {
             if (returnedIv != null) {
-                throw new IllegalStateException(
+                throw new ProviderException(
                         "IV in use despite IV not being used by this transformation");
             }
         }
diff --git a/keystore/java/android/security/KeyStoreConnectException.java b/keystore/java/android/security/KeyStoreConnectException.java
index 1aa3aec..885f1f7 100644
--- a/keystore/java/android/security/KeyStoreConnectException.java
+++ b/keystore/java/android/security/KeyStoreConnectException.java
@@ -16,12 +16,14 @@
 
 package android.security;
 
+import java.security.ProviderException;
+
 /**
  * Indicates a communications error with keystore service.
  *
  * @hide
  */
-public class KeyStoreConnectException extends IllegalStateException {
+public class KeyStoreConnectException extends ProviderException {
     public KeyStoreConnectException() {
         super("Failed to communicate with keystore service");
     }
diff --git a/keystore/java/android/security/KeyStoreCryptoOperation.java b/keystore/java/android/security/KeyStoreCryptoOperation.java
index 19abd05..c5cf211 100644
--- a/keystore/java/android/security/KeyStoreCryptoOperation.java
+++ b/keystore/java/android/security/KeyStoreCryptoOperation.java
@@ -25,7 +25,7 @@
     /**
      * Gets the KeyStore operation handle of this crypto operation.
      *
-     * @return handle or {@code null} if the KeyStore operation is not in progress.
+     * @return handle or {@code 0} if the KeyStore operation is not in progress.
      */
-    Long getOperationHandle();
+    long getOperationHandle();
 }
diff --git a/keystore/java/android/security/KeyStoreCryptoOperationUtils.java b/keystore/java/android/security/KeyStoreCryptoOperationUtils.java
index e5933ad..311278b 100644
--- a/keystore/java/android/security/KeyStoreCryptoOperationUtils.java
+++ b/keystore/java/android/security/KeyStoreCryptoOperationUtils.java
@@ -21,6 +21,7 @@
 import java.security.GeneralSecurityException;
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
+import java.security.SecureRandom;
 
 /**
  * Assorted utility methods for implementing crypto operations on top of KeyStore.
@@ -28,6 +29,9 @@
  * @hide
  */
 abstract class KeyStoreCryptoOperationUtils {
+
+    private static volatile SecureRandom sRng;
+
     private KeyStoreCryptoOperationUtils() {}
 
     /**
@@ -81,4 +85,28 @@
         // General cases
         return getInvalidKeyExceptionForInit(keyStore, key, beginOpResultCode);
     }
+
+    /**
+     * Returns the requested number of random bytes to mix into keystore/keymaster RNG.
+     *
+     * @param rng RNG from which to obtain the random bytes or {@code null} for the platform-default
+     *        RNG.
+     */
+    static byte[] getRandomBytesToMixIntoKeystoreRng(SecureRandom rng, int sizeBytes) {
+        if (rng == null) {
+            rng = getRng();
+        }
+        byte[] result = new byte[sizeBytes];
+        rng.nextBytes(result);
+        return result;
+    }
+
+    private static SecureRandom getRng() {
+        // IMPLEMENTATION NOTE: It's OK to share a SecureRandom instance because SecureRandom is
+        // required to be thread-safe.
+        if (sRng == null) {
+            sRng = new SecureRandom();
+        }
+        return sRng;
+    }
 }
diff --git a/keystore/java/android/security/KeyStoreHmacSpi.java b/keystore/java/android/security/KeyStoreHmacSpi.java
index e993b50..5089a25 100644
--- a/keystore/java/android/security/KeyStoreHmacSpi.java
+++ b/keystore/java/android/security/KeyStoreHmacSpi.java
@@ -24,6 +24,7 @@
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
 import java.security.Key;
+import java.security.ProviderException;
 import java.security.spec.AlgorithmParameterSpec;
 
 import javax.crypto.MacSpi;
@@ -75,7 +76,7 @@
     // Fields below are reset when engineDoFinal succeeds.
     private KeyStoreCryptoOperationChunkedStreamer mChunkedStreamer;
     private IBinder mOperationToken;
-    private Long mOperationHandle;
+    private long mOperationHandle;
 
     protected KeyStoreHmacSpi(int keymasterDigest) {
         mKeymasterDigest = keymasterDigest;
@@ -128,7 +129,7 @@
             mOperationToken = null;
             mKeyStore.abort(operationToken);
         }
-        mOperationHandle = null;
+        mOperationHandle = 0;
         mChunkedStreamer = null;
     }
 
@@ -138,7 +139,7 @@
             mOperationToken = null;
             mKeyStore.abort(operationToken);
         }
-        mOperationHandle = null;
+        mOperationHandle = 0;
         mChunkedStreamer = null;
     }
 
@@ -185,7 +186,10 @@
         }
 
         if (mOperationToken == null) {
-            throw new IllegalStateException("Keystore returned null operation token");
+            throw new ProviderException("Keystore returned null operation token");
+        }
+        if (mOperationHandle == 0) {
+            throw new ProviderException("Keystore returned invalid operation handle");
         }
 
         mChunkedStreamer = new KeyStoreCryptoOperationChunkedStreamer(
@@ -203,17 +207,17 @@
         try {
             ensureKeystoreOperationInitialized();
         } catch (InvalidKeyException e) {
-            throw new IllegalStateException("Failed to reinitialize MAC", e);
+            throw new ProviderException("Failed to reinitialize MAC", e);
         }
 
         byte[] output;
         try {
             output = mChunkedStreamer.update(input, offset, len);
         } catch (KeyStoreException e) {
-            throw new IllegalStateException("Keystore operation failed", e);
+            throw new ProviderException("Keystore operation failed", e);
         }
         if ((output != null) && (output.length != 0)) {
-            throw new IllegalStateException("Update operation unexpectedly produced output");
+            throw new ProviderException("Update operation unexpectedly produced output");
         }
     }
 
@@ -222,14 +226,14 @@
         try {
             ensureKeystoreOperationInitialized();
         } catch (InvalidKeyException e) {
-            throw new IllegalStateException("Failed to reinitialize MAC", e);
+            throw new ProviderException("Failed to reinitialize MAC", e);
         }
 
         byte[] result;
         try {
             result = mChunkedStreamer.doFinal(null, 0, 0);
         } catch (KeyStoreException e) {
-            throw new IllegalStateException("Keystore operation failed", e);
+            throw new ProviderException("Keystore operation failed", e);
         }
 
         resetWhilePreservingInitState();
@@ -249,7 +253,7 @@
     }
 
     @Override
-    public Long getOperationHandle() {
+    public long getOperationHandle() {
         return mOperationHandle;
     }
 }
diff --git a/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java b/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java
index 68b5751..4b914c2f 100644
--- a/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java
+++ b/keystore/java/android/security/KeyStoreKeyGeneratorSpi.java
@@ -21,6 +21,7 @@
 import android.security.keymaster.KeymasterDefs;
 
 import java.security.InvalidAlgorithmParameterException;
+import java.security.ProviderException;
 import java.security.SecureRandom;
 import java.security.spec.AlgorithmParameterSpec;
 import java.util.Date;
@@ -39,6 +40,17 @@
         public AES() {
             super(KeymasterDefs.KM_ALGORITHM_AES, 128);
         }
+
+        @Override
+        protected void engineInit(AlgorithmParameterSpec params, SecureRandom random)
+                throws InvalidAlgorithmParameterException {
+            super.engineInit(params, random);
+            if ((mKeySizeBits != 128) && (mKeySizeBits != 192) && (mKeySizeBits != 256)) {
+                throw new InvalidAlgorithmParameterException(
+                        "Unsupported key size: " + mKeySizeBits
+                        + ". Supported: 128, 192, 256.");
+            }
+        }
     }
 
     protected static abstract class HmacBase extends KeyStoreKeyGeneratorSpi {
@@ -87,6 +99,11 @@
     private KeyGeneratorSpec mSpec;
     private SecureRandom mRng;
 
+    protected int mKeySizeBits;
+    private int[] mKeymasterPurposes;
+    private int[] mKeymasterBlockModes;
+    private int[] mKeymasterPaddings;
+
     protected KeyStoreKeyGeneratorSpi(
             int keymasterAlgorithm,
             int defaultKeySizeBits) {
@@ -100,6 +117,97 @@
         mKeymasterAlgorithm = keymasterAlgorithm;
         mKeymasterDigest = keymasterDigest;
         mDefaultKeySizeBits = defaultKeySizeBits;
+        if (mDefaultKeySizeBits <= 0) {
+            throw new IllegalArgumentException("Default key size must be positive");
+        }
+
+        if ((mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC) && (mKeymasterDigest == -1)) {
+            throw new IllegalArgumentException(
+                    "Digest algorithm must be specified for HMAC key");
+        }
+    }
+
+    @Override
+    protected void engineInit(SecureRandom random) {
+        throw new UnsupportedOperationException("Cannot initialize without an "
+                + KeyGeneratorSpec.class.getName() + " parameter");
+    }
+
+    @Override
+    protected void engineInit(int keySize, SecureRandom random) {
+        throw new UnsupportedOperationException("Cannot initialize without a "
+                + KeyGeneratorSpec.class.getName() + " parameter");
+    }
+
+    @Override
+    protected void engineInit(AlgorithmParameterSpec params, SecureRandom random)
+            throws InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            if ((params == null) || (!(params instanceof KeyGeneratorSpec))) {
+                throw new InvalidAlgorithmParameterException("Cannot initialize without an "
+                        + KeyGeneratorSpec.class.getName() + " parameter");
+            }
+            KeyGeneratorSpec spec = (KeyGeneratorSpec) params;
+            if (spec.getKeystoreAlias() == null) {
+                throw new InvalidAlgorithmParameterException("KeyStore entry alias not provided");
+            }
+
+            mRng = random;
+            mSpec = spec;
+
+            mKeySizeBits = (spec.getKeySize() != -1) ? spec.getKeySize() : mDefaultKeySizeBits;
+            if (mKeySizeBits <= 0) {
+                throw new InvalidAlgorithmParameterException(
+                        "Key size must be positive: " + mKeySizeBits);
+            } else if ((mKeySizeBits % 8) != 0) {
+                throw new InvalidAlgorithmParameterException(
+                        "Key size in must be a multiple of 8: " + mKeySizeBits);
+            }
+
+            try {
+                mKeymasterPurposes =
+                        KeyStoreKeyProperties.Purpose.allToKeymaster(spec.getPurposes());
+                mKeymasterPaddings = KeyStoreKeyProperties.EncryptionPadding.allToKeymaster(
+                        spec.getEncryptionPaddings());
+                mKeymasterBlockModes =
+                        KeyStoreKeyProperties.BlockMode.allToKeymaster(spec.getBlockModes());
+                if (((spec.getPurposes() & KeyStoreKeyProperties.Purpose.ENCRYPT) != 0)
+                        && (spec.isRandomizedEncryptionRequired())) {
+                    for (int keymasterBlockMode : mKeymasterBlockModes) {
+                        if (!KeymasterUtils.isKeymasterBlockModeIndCpaCompatible(
+                                keymasterBlockMode)) {
+                            throw new InvalidAlgorithmParameterException(
+                                    "Randomized encryption (IND-CPA) required but may be violated"
+                                    + " by block mode: "
+                                    + KeyStoreKeyProperties.BlockMode.fromKeymaster(
+                                            keymasterBlockMode)
+                                    + ". See " + KeyGeneratorSpec.class.getName()
+                                    + " documentation.");
+                        }
+                    }
+                }
+            } catch (IllegalArgumentException e) {
+                throw new InvalidAlgorithmParameterException(e);
+            }
+
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    private void resetAll() {
+        mSpec = null;
+        mRng = null;
+        mKeySizeBits = -1;
+        mKeymasterPurposes = null;
+        mKeymasterPaddings = null;
+        mKeymasterBlockModes = null;
     }
 
     @Override
@@ -117,43 +225,14 @@
         }
 
         KeymasterArguments args = new KeymasterArguments();
+        args.addInt(KeymasterDefs.KM_TAG_KEY_SIZE, mKeySizeBits);
         args.addInt(KeymasterDefs.KM_TAG_ALGORITHM, mKeymasterAlgorithm);
         if (mKeymasterDigest != -1) {
             args.addInt(KeymasterDefs.KM_TAG_DIGEST, mKeymasterDigest);
         }
-        if (mKeymasterAlgorithm == KeymasterDefs.KM_ALGORITHM_HMAC) {
-            if (mKeymasterDigest == -1) {
-                throw new IllegalStateException("Digest algorithm must be specified for HMAC key");
-            }
-        }
-        int keySizeBits = (spec.getKeySize() != -1) ? spec.getKeySize() : mDefaultKeySizeBits;
-        args.addInt(KeymasterDefs.KM_TAG_KEY_SIZE, keySizeBits);
-        @KeyStoreKeyProperties.PurposeEnum int purposes = spec.getPurposes();
-        int[] keymasterBlockModes = KeymasterUtils.getKeymasterBlockModesFromJcaBlockModes(
-                spec.getBlockModes());
-        if (((purposes & KeyStoreKeyProperties.Purpose.ENCRYPT) != 0)
-                && (spec.isRandomizedEncryptionRequired())) {
-            for (int keymasterBlockMode : keymasterBlockModes) {
-                if (!KeymasterUtils.isKeymasterBlockModeIndCpaCompatible(keymasterBlockMode)) {
-                    throw new IllegalStateException(
-                            "Randomized encryption (IND-CPA) required but may be violated by block"
-                            + " mode: "
-                            + KeymasterUtils.getJcaBlockModeFromKeymasterBlockMode(
-                                    keymasterBlockMode)
-                            + ". See KeyGeneratorSpec documentation.");
-                }
-            }
-        }
-
-        for (int keymasterPurpose :
-            KeyStoreKeyProperties.Purpose.allToKeymaster(purposes)) {
-            args.addInt(KeymasterDefs.KM_TAG_PURPOSE, keymasterPurpose);
-        }
-        args.addInts(KeymasterDefs.KM_TAG_BLOCK_MODE, keymasterBlockModes);
-        args.addInts(
-                KeymasterDefs.KM_TAG_PADDING,
-                KeymasterUtils.getKeymasterPaddingsFromJcaEncryptionPaddings(
-                        spec.getEncryptionPaddings()));
+        args.addInts(KeymasterDefs.KM_TAG_PURPOSE, mKeymasterPurposes);
+        args.addInts(KeymasterDefs.KM_TAG_BLOCK_MODE, mKeymasterBlockModes);
+        args.addInts(KeymasterDefs.KM_TAG_PADDING, mKeymasterPaddings);
         KeymasterUtils.addUserAuthArgs(args,
                 spec.getContext(),
                 spec.isUserAuthenticationRequired(),
@@ -168,57 +247,31 @@
                 (spec.getKeyValidityForConsumptionEnd() != null)
                 ? spec.getKeyValidityForConsumptionEnd() : new Date(Long.MAX_VALUE));
 
-        if (((purposes & KeyStoreKeyProperties.Purpose.ENCRYPT) != 0)
+        if (((spec.getPurposes() & KeyStoreKeyProperties.Purpose.ENCRYPT) != 0)
                 && (!spec.isRandomizedEncryptionRequired())) {
             // Permit caller-provided IV when encrypting with this key
             args.addBoolean(KeymasterDefs.KM_TAG_CALLER_NONCE);
         }
 
-        byte[] additionalEntropy = null;
-        SecureRandom rng = mRng;
-        if (rng != null) {
-            additionalEntropy = new byte[(keySizeBits + 7) / 8];
-            rng.nextBytes(additionalEntropy);
-        }
-
+        byte[] additionalEntropy =
+                KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(
+                        mRng, (mKeySizeBits + 7) / 8);
         int flags = spec.getFlags();
         String keyAliasInKeystore = Credentials.USER_SECRET_KEY + spec.getKeystoreAlias();
+        KeyCharacteristics resultingKeyCharacteristics = new KeyCharacteristics();
         int errorCode = mKeyStore.generateKey(
-                keyAliasInKeystore, args, additionalEntropy, flags, new KeyCharacteristics());
+                keyAliasInKeystore, args, additionalEntropy, flags, resultingKeyCharacteristics);
         if (errorCode != KeyStore.NO_ERROR) {
-            throw new IllegalStateException(
+            throw new ProviderException(
                     "Keystore operation failed", KeyStore.getKeyStoreException(errorCode));
         }
-        String keyAlgorithmJCA =
-                KeymasterUtils.getJcaSecretKeyAlgorithm(mKeymasterAlgorithm, mKeymasterDigest);
+        String keyAlgorithmJCA;
+        try {
+            keyAlgorithmJCA = KeyStoreKeyProperties.Algorithm.fromKeymasterSecretKeyAlgorithm(
+                    mKeymasterAlgorithm, mKeymasterDigest);
+        } catch (IllegalArgumentException e) {
+            throw new ProviderException("Failed to obtain JCA secret key algorithm name", e);
+        }
         return new KeyStoreSecretKey(keyAliasInKeystore, keyAlgorithmJCA);
     }
-
-    @Override
-    protected void engineInit(SecureRandom random) {
-        throw new UnsupportedOperationException("Cannot initialize without an "
-                + KeyGeneratorSpec.class.getName() + " parameter");
-    }
-
-    @Override
-    protected void engineInit(AlgorithmParameterSpec params, SecureRandom random)
-            throws InvalidAlgorithmParameterException {
-        if ((params == null) || (!(params instanceof KeyGeneratorSpec))) {
-            throw new InvalidAlgorithmParameterException("Cannot initialize without an "
-                    + KeyGeneratorSpec.class.getName() + " parameter");
-        }
-        KeyGeneratorSpec spec = (KeyGeneratorSpec) params;
-        if (spec.getKeystoreAlias() == null) {
-            throw new InvalidAlgorithmParameterException("KeyStore entry alias not provided");
-        }
-
-        mSpec = spec;
-        mRng = random;
-    }
-
-    @Override
-    protected void engineInit(int keySize, SecureRandom random) {
-        throw new UnsupportedOperationException("Cannot initialize without a "
-                + KeyGeneratorSpec.class.getName() + " parameter");
-    }
 }
diff --git a/keystore/java/android/security/KeyStoreKeyProperties.java b/keystore/java/android/security/KeyStoreKeyProperties.java
index b85ec53..1c3e300 100644
--- a/keystore/java/android/security/KeyStoreKeyProperties.java
+++ b/keystore/java/android/security/KeyStoreKeyProperties.java
@@ -17,13 +17,23 @@
 package android.security;
 
 import android.annotation.IntDef;
+import android.annotation.StringDef;
 import android.security.keymaster.KeymasterDefs;
 
 import libcore.util.EmptyArray;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.KeyPairGenerator;
 import java.util.Collection;
+import java.util.Locale;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.Mac;
+import javax.crypto.SecretKeyFactory;
 
 /**
  * Properties of {@code AndroidKeyStore} keys.
@@ -37,7 +47,7 @@
     public @interface PurposeEnum {}
 
     /**
-     * Purpose of key.
+     * Purposes of key.
      */
     public static abstract class Purpose {
         private Purpose() {}
@@ -122,6 +132,514 @@
     }
 
     @Retention(RetentionPolicy.SOURCE)
+    @StringDef({
+        Algorithm.RSA,
+        Algorithm.EC,
+        Algorithm.AES,
+        Algorithm.HMAC_SHA1,
+        Algorithm.HMAC_SHA224,
+        Algorithm.HMAC_SHA256,
+        Algorithm.HMAC_SHA384,
+        Algorithm.HMAC_SHA512,
+        })
+    public @interface AlgorithmEnum {}
+
+    /**
+     * Key algorithms.
+     *
+     * <p>These are standard names which can be used to obtain instances of {@link KeyGenerator},
+     * {@link KeyPairGenerator}, {@link Cipher} (as part of the transformation string), {@link Mac},
+     * {@link KeyFactory}, {@link SecretKeyFactory}. These are also the names used by
+     * {@link Key#getAlgorithm()}.
+     */
+    public static abstract class Algorithm {
+        private Algorithm() {}
+
+        /** Rivest Shamir Adleman (RSA) key. */
+        public static final String RSA = "RSA";
+
+        /** Elliptic Curve (EC) key. */
+        public static final String EC = "EC";
+
+        /** Advanced Encryption Standard (AES) key. */
+        public static final String AES = "AES";
+
+        /** Keyed-Hash Message Authentication Code (HMAC) key using SHA-1 as the hash. */
+        public static final String HMAC_SHA1 = "HmacSHA1";
+
+        /** Keyed-Hash Message Authentication Code (HMAC) key using SHA-224 as the hash. */
+        public static final String HMAC_SHA224 = "HmacSHA224";
+
+        /** Keyed-Hash Message Authentication Code (HMAC) key using SHA-256 as the hash. */
+        public static final String HMAC_SHA256 = "HmacSHA256";
+
+        /** Keyed-Hash Message Authentication Code (HMAC) key using SHA-384 as the hash. */
+        public static final String HMAC_SHA384 = "HmacSHA384";
+
+        /** Keyed-Hash Message Authentication Code (HMAC) key using SHA-512 as the hash. */
+        public static final String HMAC_SHA512 = "HmacSHA512";
+
+        /**
+         * @hide
+         */
+        static int toKeymasterSecretKeyAlgorithm(@AlgorithmEnum String algorithm) {
+            if (AES.equalsIgnoreCase(algorithm)) {
+                return KeymasterDefs.KM_ALGORITHM_AES;
+            } else if (algorithm.toUpperCase(Locale.US).startsWith("HMAC")) {
+                return KeymasterDefs.KM_ALGORITHM_HMAC;
+            } else {
+                throw new IllegalArgumentException(
+                        "Unsupported secret key algorithm: " + algorithm);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @AlgorithmEnum String fromKeymasterSecretKeyAlgorithm(
+                int keymasterAlgorithm, int keymasterDigest) {
+            switch (keymasterAlgorithm) {
+                case KeymasterDefs.KM_ALGORITHM_AES:
+                    if (keymasterDigest != -1) {
+                        throw new IllegalArgumentException("Digest not supported for AES key: "
+                                + Digest.fromKeymaster(keymasterDigest));
+                    }
+                    return AES;
+                case KeymasterDefs.KM_ALGORITHM_HMAC:
+                    switch (keymasterDigest) {
+                        case KeymasterDefs.KM_DIGEST_SHA1:
+                            return HMAC_SHA1;
+                        case KeymasterDefs.KM_DIGEST_SHA_2_224:
+                            return HMAC_SHA224;
+                        case KeymasterDefs.KM_DIGEST_SHA_2_256:
+                            return HMAC_SHA256;
+                        case KeymasterDefs.KM_DIGEST_SHA_2_384:
+                            return HMAC_SHA384;
+                        case KeymasterDefs.KM_DIGEST_SHA_2_512:
+                            return HMAC_SHA512;
+                        default:
+                            throw new IllegalArgumentException("Unsupported HMAC digest: "
+                                    + Digest.fromKeymaster(keymasterDigest));
+                    }
+                default:
+                    throw new IllegalArgumentException(
+                            "Unsupported algorithm: " + keymasterAlgorithm);
+            }
+        }
+
+        /**
+         * @hide
+         *
+         * @return keymaster digest or {@code -1} if the algorithm does not involve a digest.
+         */
+        static int toKeymasterDigest(@AlgorithmEnum String algorithm) {
+            String algorithmUpper = algorithm.toUpperCase(Locale.US);
+            if (algorithmUpper.startsWith("HMAC")) {
+                String digestUpper = algorithmUpper.substring("HMAC".length());
+                switch (digestUpper) {
+                    case "SHA1":
+                        return KeymasterDefs.KM_DIGEST_SHA1;
+                    case "SHA224":
+                        return KeymasterDefs.KM_DIGEST_SHA_2_224;
+                    case "SHA256":
+                        return KeymasterDefs.KM_DIGEST_SHA_2_256;
+                    case "SHA384":
+                        return KeymasterDefs.KM_DIGEST_SHA_2_384;
+                    case "SHA512":
+                        return KeymasterDefs.KM_DIGEST_SHA_2_512;
+                    default:
+                        throw new IllegalArgumentException(
+                                "Unsupported HMAC digest: " + digestUpper);
+                }
+            } else {
+                return -1;
+            }
+        }
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @StringDef({
+        BlockMode.ECB,
+        BlockMode.CBC,
+        BlockMode.CTR,
+        BlockMode.GCM,
+        })
+    public @interface BlockModeEnum {}
+
+    /**
+     * Block modes that can be used when encrypting/decrypting using a key.
+     */
+    public static abstract class BlockMode {
+        private BlockMode() {}
+
+        /** Electronic Codebook (ECB) block mode. */
+        public static final String ECB = "ECB";
+
+        /** Cipher Block Chaining (CBC) block mode. */
+        public static final String CBC = "CBC";
+
+        /** Counter (CTR) block mode. */
+        public static final String CTR = "CTR";
+
+        /** Galois/Counter Mode (GCM) block mode. */
+        public static final String GCM = "GCM";
+
+        /**
+         * @hide
+         */
+        static int toKeymaster(@BlockModeEnum String blockMode) {
+            if (ECB.equalsIgnoreCase(blockMode)) {
+                return KeymasterDefs.KM_MODE_ECB;
+            } else if (CBC.equalsIgnoreCase(blockMode)) {
+                return KeymasterDefs.KM_MODE_CBC;
+            } else if (CTR.equalsIgnoreCase(blockMode)) {
+                return KeymasterDefs.KM_MODE_CTR;
+            } else if (GCM.equalsIgnoreCase(blockMode)) {
+                return KeymasterDefs.KM_MODE_GCM;
+            } else {
+                throw new IllegalArgumentException("Unsupported block mode: " + blockMode);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @BlockModeEnum String fromKeymaster(int blockMode) {
+            switch (blockMode) {
+                case KeymasterDefs.KM_MODE_ECB:
+                    return ECB;
+                case KeymasterDefs.KM_MODE_CBC:
+                    return CBC;
+                case KeymasterDefs.KM_MODE_CTR:
+                    return CTR;
+                case KeymasterDefs.KM_MODE_GCM:
+                    return GCM;
+                default:
+                    throw new IllegalArgumentException("Unsupported block mode: " + blockMode);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @BlockModeEnum String[] allFromKeymaster(Collection<Integer> blockModes) {
+            if ((blockModes == null) || (blockModes.isEmpty())) {
+                return EmptyArray.STRING;
+            }
+            @BlockModeEnum String[] result = new String[blockModes.size()];
+            int offset = 0;
+            for (int blockMode : blockModes) {
+                result[offset] = fromKeymaster(blockMode);
+                offset++;
+            }
+            return result;
+        }
+
+        /**
+         * @hide
+         */
+        static int[] allToKeymaster(@BlockModeEnum String[] blockModes) {
+            if ((blockModes == null) || (blockModes.length == 0)) {
+                return EmptyArray.INT;
+            }
+            int[] result = new int[blockModes.length];
+            for (int i = 0; i < blockModes.length; i++) {
+                result[i] = toKeymaster(blockModes[i]);
+            }
+            return result;
+        }
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @StringDef({
+        EncryptionPadding.NONE,
+        EncryptionPadding.PKCS7,
+        EncryptionPadding.RSA_PKCS1,
+        EncryptionPadding.RSA_OAEP,
+        })
+    public @interface EncryptionPaddingEnum {}
+
+    /**
+     * Padding schemes for encryption/decryption.
+     */
+    public static abstract class EncryptionPadding {
+        private EncryptionPadding() {}
+
+        /**
+         * No padding.
+         */
+        public static final String NONE = "NoPadding";
+
+        /**
+         * PKCS#7 padding.
+         */
+        public static final String PKCS7 = "PKCS7Padding";
+
+        /**
+         * RSA PKCS#1 v1.5 padding for encryption/decryption.
+         */
+        public static final String RSA_PKCS1 = "PKCS1Padding";
+
+        /**
+         * RSA Optimal Asymmetric Encryption Padding (OAEP).
+         */
+        public static final String RSA_OAEP = "OAEPPadding";
+
+        /**
+         * @hide
+         */
+        static int toKeymaster(@EncryptionPaddingEnum String padding) {
+            if (NONE.equalsIgnoreCase(padding)) {
+                return KeymasterDefs.KM_PAD_NONE;
+            } else if (PKCS7.equalsIgnoreCase(padding)) {
+                return KeymasterDefs.KM_PAD_PKCS7;
+            } else if (RSA_PKCS1.equalsIgnoreCase(padding)) {
+                return KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_ENCRYPT;
+            } else if (RSA_OAEP.equalsIgnoreCase(padding)) {
+                return KeymasterDefs.KM_PAD_RSA_OAEP;
+            } else {
+                throw new IllegalArgumentException(
+                        "Unsupported encryption padding scheme: " + padding);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @EncryptionPaddingEnum String fromKeymaster(int padding) {
+            switch (padding) {
+                case KeymasterDefs.KM_PAD_NONE:
+                    return NONE;
+                case KeymasterDefs.KM_PAD_PKCS7:
+                    return PKCS7;
+                case KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_ENCRYPT:
+                    return RSA_PKCS1;
+                case KeymasterDefs.KM_PAD_RSA_OAEP:
+                    return RSA_OAEP;
+                default:
+                    throw new IllegalArgumentException(
+                            "Unsupported encryption padding: " + padding);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static int[] allToKeymaster(@EncryptionPaddingEnum String[] paddings) {
+            if ((paddings == null) || (paddings.length == 0)) {
+                return EmptyArray.INT;
+            }
+            int[] result = new int[paddings.length];
+            for (int i = 0; i < paddings.length; i++) {
+                result[i] = toKeymaster(paddings[i]);
+            }
+            return result;
+        }
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @StringDef({
+        SignaturePadding.RSA_PKCS1,
+        SignaturePadding.RSA_PSS,
+        })
+    public @interface SignaturePaddingEnum {}
+
+    /**
+     * Padding schemes for signing/verification.
+     */
+    public static abstract class SignaturePadding {
+        private SignaturePadding() {}
+
+        /**
+         * RSA PKCS#1 v1.5 padding for signatures.
+         */
+        public static final String RSA_PKCS1 = "PKCS1";
+
+        /**
+         * RSA PKCS#1 v2.1 Probabilistic Signature Scheme (PSS) padding.
+         */
+        public static final String RSA_PSS = "PSS";
+
+        /**
+         * @hide
+         */
+        static int toKeymaster(@SignaturePaddingEnum String padding) {
+            switch (padding.toUpperCase(Locale.US)) {
+                case RSA_PKCS1:
+                    return KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN;
+                case RSA_PSS:
+                    return KeymasterDefs.KM_PAD_RSA_PSS;
+                default:
+                    throw new IllegalArgumentException(
+                            "Unsupported signature padding scheme: " + padding);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @SignaturePaddingEnum String fromKeymaster(int padding) {
+            switch (padding) {
+                case KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN:
+                    return RSA_PKCS1;
+                case KeymasterDefs.KM_PAD_RSA_PSS:
+                    return RSA_PSS;
+                default:
+                    throw new IllegalArgumentException("Unsupported signature padding: " + padding);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static int[] allToKeymaster(@SignaturePaddingEnum String[] paddings) {
+            if ((paddings == null) || (paddings.length == 0)) {
+                return EmptyArray.INT;
+            }
+            int[] result = new int[paddings.length];
+            for (int i = 0; i < paddings.length; i++) {
+                result[i] = toKeymaster(paddings[i]);
+            }
+            return result;
+        }
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @StringDef({
+        Digest.NONE,
+        Digest.MD5,
+        Digest.SHA1,
+        Digest.SHA224,
+        Digest.SHA256,
+        Digest.SHA384,
+        Digest.SHA512,
+        })
+    public @interface DigestEnum {}
+
+    /**
+     * Digests that can be used with a key when signing or generating Message Authentication
+     * Codes (MACs).
+     */
+    public static abstract class Digest {
+        private Digest() {}
+
+        /**
+         * No digest: sign/authenticate the raw message.
+         */
+        public static final String NONE = "NONE";
+
+        /**
+         * MD5 digest.
+         */
+        public static final String MD5 = "MD5";
+
+        /**
+         * SHA-1 digest.
+         */
+        public static final String SHA1 = "SHA-1";
+
+        /**
+         * SHA-2 224 (aka SHA-224) digest.
+         */
+        public static final String SHA224 = "SHA-224";
+
+        /**
+         * SHA-2 256 (aka SHA-256) digest.
+         */
+        public static final String SHA256 = "SHA-256";
+
+        /**
+         * SHA-2 384 (aka SHA-384) digest.
+         */
+        public static final String SHA384 = "SHA-384";
+
+        /**
+         * SHA-2 512 (aka SHA-512) digest.
+         */
+        public static final String SHA512 = "SHA-512";
+
+        /**
+         * @hide
+         */
+        static int toKeymaster(@DigestEnum String digest) {
+            switch (digest.toUpperCase(Locale.US)) {
+                case SHA1:
+                    return KeymasterDefs.KM_DIGEST_SHA1;
+                case SHA224:
+                    return KeymasterDefs.KM_DIGEST_SHA_2_224;
+                case SHA256:
+                    return KeymasterDefs.KM_DIGEST_SHA_2_256;
+                case SHA384:
+                    return KeymasterDefs.KM_DIGEST_SHA_2_384;
+                case SHA512:
+                    return KeymasterDefs.KM_DIGEST_SHA_2_512;
+                case NONE:
+                    return KeymasterDefs.KM_DIGEST_NONE;
+                case MD5:
+                    return KeymasterDefs.KM_DIGEST_MD5;
+                default:
+                    throw new IllegalArgumentException("Unsupported digest algorithm: " + digest);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @DigestEnum String fromKeymaster(int digest) {
+            switch (digest) {
+                case KeymasterDefs.KM_DIGEST_NONE:
+                    return NONE;
+                case KeymasterDefs.KM_DIGEST_MD5:
+                    return MD5;
+                case KeymasterDefs.KM_DIGEST_SHA1:
+                    return SHA1;
+                case KeymasterDefs.KM_DIGEST_SHA_2_224:
+                    return SHA224;
+                case KeymasterDefs.KM_DIGEST_SHA_2_256:
+                    return SHA256;
+                case KeymasterDefs.KM_DIGEST_SHA_2_384:
+                    return SHA384;
+                case KeymasterDefs.KM_DIGEST_SHA_2_512:
+                    return SHA512;
+                default:
+                    throw new IllegalArgumentException("Unsupported digest algorithm: " + digest);
+            }
+        }
+
+        /**
+         * @hide
+         */
+        static @DigestEnum String[] allFromKeymaster(Collection<Integer> digests) {
+            if (digests.isEmpty()) {
+                return EmptyArray.STRING;
+            }
+            String[] result = new String[digests.size()];
+            int offset = 0;
+            for (int digest : digests) {
+                result[offset] = fromKeymaster(digest);
+                offset++;
+            }
+            return result;
+        }
+
+        /**
+         * @hide
+         */
+        static int[] allToKeymaster(@DigestEnum String[] digests) {
+            if ((digests == null) || (digests.length == 0)) {
+                return EmptyArray.INT;
+            }
+            int[] result = new int[digests.length];
+            int offset = 0;
+            for (@DigestEnum String digest : digests) {
+                result[offset] = toKeymaster(digest);
+                offset++;
+            }
+            return result;
+        }
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
     @IntDef({Origin.GENERATED, Origin.IMPORTED, Origin.UNKNOWN})
     public @interface OriginEnum {}
 
diff --git a/keystore/java/android/security/KeyStoreKeySpec.java b/keystore/java/android/security/KeyStoreKeySpec.java
index 96d58d8..7533bdc 100644
--- a/keystore/java/android/security/KeyStoreKeySpec.java
+++ b/keystore/java/android/security/KeyStoreKeySpec.java
@@ -32,10 +32,10 @@
     private final Date mKeyValidityForOriginationEnd;
     private final Date mKeyValidityForConsumptionEnd;
     private final @KeyStoreKeyProperties.PurposeEnum int mPurposes;
-    private final String[] mEncryptionPaddings;
-    private final String[] mSignaturePaddings;
-    private final String[] mDigests;
-    private final String[] mBlockModes;
+    private final @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
+    private final @KeyStoreKeyProperties.SignaturePaddingEnum String[] mSignaturePaddings;
+    private final @KeyStoreKeyProperties.DigestEnum String[] mDigests;
+    private final @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
     private final boolean mUserAuthenticationRequired;
     private final int mUserAuthenticationValidityDurationSeconds;
     private final boolean mUserAuthenticationRequirementTeeEnforced;
@@ -51,10 +51,10 @@
             Date keyValidityForOriginationEnd,
             Date keyValidityForConsumptionEnd,
             @KeyStoreKeyProperties.PurposeEnum int purposes,
-            String[] encryptionPaddings,
-            String[] signaturePaddings,
-            String[] digests,
-            String[] blockModes,
+            @KeyStoreKeyProperties.EncryptionPaddingEnum String[] encryptionPaddings,
+            @KeyStoreKeyProperties.SignaturePaddingEnum String[] signaturePaddings,
+            @KeyStoreKeyProperties.DigestEnum String[] digests,
+            @KeyStoreKeyProperties.BlockModeEnum String[] blockModes,
             boolean userAuthenticationRequired,
             int userAuthenticationValidityDurationSeconds,
             boolean userAuthenticationRequirementTeeEnforced) {
@@ -143,28 +143,28 @@
     /**
      * Gets the set of block modes with which the key can be used.
      */
-    public String[] getBlockModes() {
+    public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() {
         return ArrayUtils.cloneIfNotEmpty(mBlockModes);
     }
 
     /**
      * Gets the set of padding modes with which the key can be used when encrypting/decrypting.
      */
-    public String[] getEncryptionPaddings() {
+    public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() {
         return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings);
     }
 
     /**
      * Gets the set of padding modes with which the key can be used when signing/verifying.
      */
-    public String[] getSignaturePaddings() {
+    public @KeyStoreKeyProperties.SignaturePaddingEnum String[] getSignaturePaddings() {
         return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings);
     }
 
     /**
      * Gets the set of digest algorithms with which the key can be used.
      */
-    public String[] getDigests() {
+    public @KeyStoreKeyProperties.DigestEnum String[] getDigests() {
         return ArrayUtils.cloneIfNotEmpty(mDigests);
     }
 
@@ -179,10 +179,10 @@
 
     /**
      * Gets the duration of time (seconds) for which this key can be used after the user is
-     * successfully authenticated.
+     * successfully authenticated. This has effect only if user authentication is required.
      *
-     * @return duration in seconds or {@code -1} if not restricted. {@code 0} means authentication
-     *         is required for every use of the key.
+     * @return duration in seconds or {@code -1} if authentication is required for every use of the
+     *         key.
      *
      * @see #isUserAuthenticationRequired()
      */
diff --git a/keystore/java/android/security/KeyStoreParameter.java b/keystore/java/android/security/KeyStoreParameter.java
index b4747e9..8d7a19f 100644
--- a/keystore/java/android/security/KeyStoreParameter.java
+++ b/keystore/java/android/security/KeyStoreParameter.java
@@ -45,10 +45,10 @@
     private final Date mKeyValidityForOriginationEnd;
     private final Date mKeyValidityForConsumptionEnd;
     private final @KeyStoreKeyProperties.PurposeEnum int mPurposes;
-    private final String[] mEncryptionPaddings;
-    private final String[] mSignaturePaddings;
-    private final String[] mDigests;
-    private final String[] mBlockModes;
+    private final @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
+    private final @KeyStoreKeyProperties.SignaturePaddingEnum String[] mSignaturePaddings;
+    private final @KeyStoreKeyProperties.DigestEnum String[] mDigests;
+    private final @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
     private final boolean mRandomizedEncryptionRequired;
     private final boolean mUserAuthenticationRequired;
     private final int mUserAuthenticationValidityDurationSeconds;
@@ -60,10 +60,10 @@
             Date keyValidityForOriginationEnd,
             Date keyValidityForConsumptionEnd,
             @KeyStoreKeyProperties.PurposeEnum int purposes,
-            String[] encryptionPaddings,
-            String[] signaturePaddings,
-            String[] digests,
-            String[] blockModes,
+            @KeyStoreKeyProperties.EncryptionPaddingEnum String[] encryptionPaddings,
+            @KeyStoreKeyProperties.SignaturePaddingEnum String[] signaturePaddings,
+            @KeyStoreKeyProperties.DigestEnum String[] digests,
+            @KeyStoreKeyProperties.BlockModeEnum String[] blockModes,
             boolean randomizedEncryptionRequired,
             boolean userAuthenticationRequired,
             int userAuthenticationValidityDurationSeconds) {
@@ -151,7 +151,7 @@
     /**
      * Gets the set of padding schemes with which the key can be used when encrypting/decrypting.
      */
-    public String[] getEncryptionPaddings() {
+    public @KeyStoreKeyProperties.EncryptionPaddingEnum String[] getEncryptionPaddings() {
         return ArrayUtils.cloneIfNotEmpty(mEncryptionPaddings);
     }
 
@@ -159,7 +159,7 @@
      * Gets the set of padding schemes with which the key can be used when signing or verifying
      * signatures.
      */
-    public String[] getSignaturePaddings() {
+    public @KeyStoreKeyProperties.SignaturePaddingEnum String[] getSignaturePaddings() {
         return ArrayUtils.cloneIfNotEmpty(mSignaturePaddings);
     }
 
@@ -170,7 +170,7 @@
      *
      * @see #isDigestsSpecified()
      */
-    public String[] getDigests() {
+    public @KeyStoreKeyProperties.DigestEnum String[] getDigests() {
         if (mDigests == null) {
             throw new IllegalStateException("Digests not specified");
         }
@@ -190,7 +190,7 @@
     /**
      * Gets the set of block modes with which the key can be used.
      */
-    public String[] getBlockModes() {
+    public @KeyStoreKeyProperties.BlockModeEnum String[] getBlockModes() {
         return ArrayUtils.cloneIfNotEmpty(mBlockModes);
     }
 
@@ -218,10 +218,12 @@
 
     /**
      * Gets the duration of time (seconds) for which this key can be used after the user is
-     * successfully authenticated.
+     * successfully authenticated. This has effect only if user authentication is required.
      *
-     * @return duration in seconds or {@code -1} if not restricted. {@code 0} means authentication
-     *         is required for every use of the key.
+     * @return duration in seconds or {@code -1} if authentication is required for every use of the
+     *         key.
+     *
+     * @see #isUserAuthenticationRequired()
      */
     public int getUserAuthenticationValidityDurationSeconds() {
         return mUserAuthenticationValidityDurationSeconds;
@@ -251,10 +253,10 @@
         private Date mKeyValidityForOriginationEnd;
         private Date mKeyValidityForConsumptionEnd;
         private @KeyStoreKeyProperties.PurposeEnum int mPurposes;
-        private String[] mEncryptionPaddings;
-        private String[] mSignaturePaddings;
-        private String[] mDigests;
-        private String[] mBlockModes;
+        private @KeyStoreKeyProperties.EncryptionPaddingEnum String[] mEncryptionPaddings;
+        private @KeyStoreKeyProperties.SignaturePaddingEnum String[] mSignaturePaddings;
+        private @KeyStoreKeyProperties.DigestEnum String[] mDigests;
+        private @KeyStoreKeyProperties.BlockModeEnum String[] mBlockModes;
         private boolean mRandomizedEncryptionRequired = true;
         private boolean mUserAuthenticationRequired;
         private int mUserAuthenticationValidityDurationSeconds = -1;
@@ -292,6 +294,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
+         *
          * @see #setKeyValidityEnd(Date)
          */
         public Builder setKeyValidityStart(Date startDate) {
@@ -304,6 +308,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
+         *
          * @see #setKeyValidityStart(Date)
          * @see #setKeyValidityForConsumptionEnd(Date)
          * @see #setKeyValidityForOriginationEnd(Date)
@@ -319,6 +325,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
+         *
          * @see #setKeyValidityForConsumptionEnd(Date)
          */
         public Builder setKeyValidityForOriginationEnd(Date endDate) {
@@ -332,6 +340,8 @@
          *
          * <p>By default, the key is valid at any instant.
          *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
+         *
          * @see #setKeyValidityForOriginationEnd(Date)
          */
         public Builder setKeyValidityForConsumptionEnd(Date endDate) {
@@ -343,6 +353,8 @@
          * Sets the set of purposes for which the key can be used.
          *
          * <p>This must be specified for all keys. There is no default.
+         *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
          */
         public Builder setPurposes(@KeyStoreKeyProperties.PurposeEnum int purposes) {
             mPurposes = purposes;
@@ -355,8 +367,11 @@
          * rejected.
          *
          * <p>This must be specified for keys which are used for encryption/decryption.
+         *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
          */
-        public Builder setEncryptionPaddings(String... paddings) {
+        public Builder setEncryptionPaddings(
+                @KeyStoreKeyProperties.EncryptionPaddingEnum String... paddings) {
             mEncryptionPaddings = ArrayUtils.cloneIfNotEmpty(paddings);
             return this;
         }
@@ -367,8 +382,11 @@
          * rejected.
          *
          * <p>This must be specified for RSA keys which are used for signing/verification.
+         *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
          */
-        public Builder setSignaturePaddings(String... paddings) {
+        public Builder setSignaturePaddings(
+                @KeyStoreKeyProperties.SignaturePaddingEnum String... paddings) {
             mSignaturePaddings = ArrayUtils.cloneIfNotEmpty(paddings);
             return this;
         }
@@ -380,8 +398,10 @@
          *
          * <p>For HMAC keys, the default is the digest specified in {@link Key#getAlgorithm()}. For
          * asymmetric signing keys this constraint must be specified.
+         *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
          */
-        public Builder setDigests(String... digests) {
+        public Builder setDigests(@KeyStoreKeyProperties.DigestEnum String... digests) {
             mDigests = ArrayUtils.cloneIfNotEmpty(digests);
             return this;
         }
@@ -391,8 +411,10 @@
          * Attempts to use the key with any other block modes will be rejected.
          *
          * <p>This must be specified for encryption/decryption keys.
+         *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
          */
-        public Builder setBlockModes(String... blockModes) {
+        public Builder setBlockModes(@KeyStoreKeyProperties.BlockModeEnum String... blockModes) {
             mBlockModes = ArrayUtils.cloneIfNotEmpty(blockModes);
             return this;
         }
@@ -430,6 +452,8 @@
          * <li>If you are using RSA encryption without padding, consider switching to padding
          * schemes which offer {@code IND-CPA}, such as PKCS#1 or OAEP.</li>
          * </ul>
+         *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
          */
         public Builder setRandomizedEncryptionRequired(boolean required) {
             mRandomizedEncryptionRequired = required;
@@ -449,6 +473,8 @@
          * <a href="{@docRoot}training/articles/keystore.html#UserAuthentication">More
          * information</a>.
          *
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
+         *
          * @see #setUserAuthenticationValidityDurationSeconds(int)
          */
         public Builder setUserAuthenticationRequired(boolean required) {
@@ -462,7 +488,9 @@
          *
          * <p>By default, the user needs to authenticate for every use of the key.
          *
-         * @param seconds duration in seconds or {@code 0} if the user needs to authenticate for
+         * <p><b>NOTE: This has currently no effect on asymmetric key pairs.
+         *
+         * @param seconds duration in seconds or {@code -1} if the user needs to authenticate for
          *        every use of the key.
          *
          * @see #setUserAuthenticationRequired(boolean)
diff --git a/keystore/java/android/security/KeyStoreSecretKeyFactorySpi.java b/keystore/java/android/security/KeyStoreSecretKeyFactorySpi.java
index bfe09e3..ff79b7a 100644
--- a/keystore/java/android/security/KeyStoreSecretKeyFactorySpi.java
+++ b/keystore/java/android/security/KeyStoreSecretKeyFactorySpi.java
@@ -79,8 +79,8 @@
         int keySize;
         @KeyStoreKeyProperties.PurposeEnum int purposes;
         String[] encryptionPaddings;
-        String[] digests;
-        String[] blockModes;
+        @KeyStoreKeyProperties.DigestEnum String[] digests;
+        @KeyStoreKeyProperties.BlockModeEnum String[] blockModes;
         int keymasterSwEnforcedUserAuthenticators;
         int keymasterHwEnforcedUserAuthenticators;
         try {
@@ -105,10 +105,10 @@
 
             List<String> encryptionPaddingsList = new ArrayList<String>();
             for (int keymasterPadding : keyCharacteristics.getInts(KeymasterDefs.KM_TAG_PADDING)) {
-                String jcaPadding;
+                @KeyStoreKeyProperties.EncryptionPaddingEnum String jcaPadding;
                 try {
-                    jcaPadding = KeymasterUtils.getJcaEncryptionPaddingFromKeymasterPadding(
-                            keymasterPadding);
+                    jcaPadding =
+                            KeyStoreKeyProperties.EncryptionPadding.fromKeymaster(keymasterPadding);
                 } catch (IllegalArgumentException e) {
                     throw new InvalidKeySpecException(
                             "Unsupported encryption padding: " + keymasterPadding);
@@ -118,9 +118,9 @@
             encryptionPaddings =
                     encryptionPaddingsList.toArray(new String[encryptionPaddingsList.size()]);
 
-            digests = KeymasterUtils.getJcaDigestAlgorithmsFromKeymasterDigests(
+            digests = KeyStoreKeyProperties.Digest.allFromKeymaster(
                     keyCharacteristics.getInts(KeymasterDefs.KM_TAG_DIGEST));
-            blockModes = KeymasterUtils.getJcaBlockModesFromKeymasterBlockModes(
+            blockModes = KeyStoreKeyProperties.BlockMode.allFromKeymaster(
                     keyCharacteristics.getInts(KeymasterDefs.KM_TAG_BLOCK_MODE));
             keymasterSwEnforcedUserAuthenticators =
                     keyCharacteristics.swEnforced.getInt(KeymasterDefs.KM_TAG_USER_AUTH_TYPE, 0);
diff --git a/keystore/java/android/security/KeymasterUtils.java b/keystore/java/android/security/KeymasterUtils.java
index aa44ecd..df67ae7 100644
--- a/keystore/java/android/security/KeymasterUtils.java
+++ b/keystore/java/android/security/KeymasterUtils.java
@@ -21,11 +21,6 @@
 import android.security.keymaster.KeymasterArguments;
 import android.security.keymaster.KeymasterDefs;
 
-import libcore.util.EmptyArray;
-
-import java.util.Collection;
-import java.util.Locale;
-
 /**
  * @hide
  */
@@ -33,152 +28,6 @@
 
     private KeymasterUtils() {}
 
-    public static int getKeymasterAlgorithmFromJcaSecretKeyAlgorithm(String jcaKeyAlgorithm) {
-        if ("AES".equalsIgnoreCase(jcaKeyAlgorithm)) {
-            return KeymasterDefs.KM_ALGORITHM_AES;
-        } else if (jcaKeyAlgorithm.toUpperCase(Locale.US).startsWith("HMAC")) {
-            return KeymasterDefs.KM_ALGORITHM_HMAC;
-        } else {
-            throw new IllegalArgumentException(
-                    "Unsupported secret key algorithm: " + jcaKeyAlgorithm);
-        }
-    }
-
-    public static String getJcaSecretKeyAlgorithm(int keymasterAlgorithm, int keymasterDigest) {
-        switch (keymasterAlgorithm) {
-            case KeymasterDefs.KM_ALGORITHM_AES:
-                if (keymasterDigest != -1) {
-                    throw new IllegalArgumentException(
-                            "Digest not supported for AES key: " + keymasterDigest);
-                }
-                return "AES";
-            case KeymasterDefs.KM_ALGORITHM_HMAC:
-                switch (keymasterDigest) {
-                    case KeymasterDefs.KM_DIGEST_SHA1:
-                        return "HmacSHA1";
-                    case KeymasterDefs.KM_DIGEST_SHA_2_224:
-                        return "HmacSHA224";
-                    case KeymasterDefs.KM_DIGEST_SHA_2_256:
-                        return "HmacSHA256";
-                    case KeymasterDefs.KM_DIGEST_SHA_2_384:
-                        return "HmacSHA384";
-                    case KeymasterDefs.KM_DIGEST_SHA_2_512:
-                        return "HmacSHA512";
-                    default:
-                        throw new IllegalArgumentException(
-                                "Unsupported HMAC digest: " + keymasterDigest);
-                }
-            default:
-                throw new IllegalArgumentException("Unsupported algorithm: " + keymasterAlgorithm);
-        }
-    }
-
-    public static String getJcaKeyPairAlgorithmFromKeymasterAlgorithm(int keymasterAlgorithm) {
-        switch (keymasterAlgorithm) {
-            case KeymasterDefs.KM_ALGORITHM_RSA:
-                return "RSA";
-            case KeymasterDefs.KM_ALGORITHM_EC:
-                return "EC";
-            default:
-                throw new IllegalArgumentException("Unsupported algorithm: " + keymasterAlgorithm);
-        }
-    }
-
-    public static int getKeymasterDigestfromJcaSecretKeyAlgorithm(String jcaKeyAlgorithm) {
-        String algorithmUpper = jcaKeyAlgorithm.toUpperCase(Locale.US);
-        if (algorithmUpper.startsWith("HMAC")) {
-            String digestUpper = algorithmUpper.substring("HMAC".length());
-            switch (digestUpper) {
-                case "MD5":
-                    return KeymasterDefs.KM_DIGEST_MD5;
-                case "SHA1":
-                    return KeymasterDefs.KM_DIGEST_SHA1;
-                case "SHA224":
-                    return KeymasterDefs.KM_DIGEST_SHA_2_224;
-                case "SHA256":
-                    return KeymasterDefs.KM_DIGEST_SHA_2_256;
-                case "SHA384":
-                    return KeymasterDefs.KM_DIGEST_SHA_2_384;
-                case "SHA512":
-                    return KeymasterDefs.KM_DIGEST_SHA_2_512;
-                default:
-                    throw new IllegalArgumentException("Unsupported HMAC digest: " + digestUpper);
-            }
-        } else {
-            return -1;
-        }
-    }
-
-    public static int getKeymasterDigestFromJcaDigestAlgorithm(String jcaDigestAlgorithm) {
-        if (jcaDigestAlgorithm.equalsIgnoreCase("SHA-1")) {
-            return KeymasterDefs.KM_DIGEST_SHA1;
-        } else if (jcaDigestAlgorithm.equalsIgnoreCase("SHA-224")) {
-            return KeymasterDefs.KM_DIGEST_SHA_2_224;
-        } else if (jcaDigestAlgorithm.equalsIgnoreCase("SHA-256")) {
-            return KeymasterDefs.KM_DIGEST_SHA_2_256;
-        } else if (jcaDigestAlgorithm.equalsIgnoreCase("SHA-384")) {
-            return KeymasterDefs.KM_DIGEST_SHA_2_384;
-        } else if (jcaDigestAlgorithm.equalsIgnoreCase("SHA-512")) {
-            return KeymasterDefs.KM_DIGEST_SHA_2_512;
-        } else if (jcaDigestAlgorithm.equalsIgnoreCase("NONE")) {
-            return KeymasterDefs.KM_DIGEST_NONE;
-        } else if (jcaDigestAlgorithm.equalsIgnoreCase("MD5")) {
-            return KeymasterDefs.KM_DIGEST_MD5;
-        } else {
-            throw new IllegalArgumentException(
-                    "Unsupported digest algorithm: " + jcaDigestAlgorithm);
-        }
-    }
-
-    public static String getJcaDigestAlgorithmFromKeymasterDigest(int keymasterDigest) {
-        switch (keymasterDigest) {
-            case KeymasterDefs.KM_DIGEST_NONE:
-                return "NONE";
-            case KeymasterDefs.KM_DIGEST_MD5:
-                return "MD5";
-            case KeymasterDefs.KM_DIGEST_SHA1:
-                return "SHA-1";
-            case KeymasterDefs.KM_DIGEST_SHA_2_224:
-                return "SHA-224";
-            case KeymasterDefs.KM_DIGEST_SHA_2_256:
-                return "SHA-256";
-            case KeymasterDefs.KM_DIGEST_SHA_2_384:
-                return "SHA-384";
-            case KeymasterDefs.KM_DIGEST_SHA_2_512:
-                return "SHA-512";
-            default:
-                throw new IllegalArgumentException(
-                        "Unsupported digest algorithm: " + keymasterDigest);
-        }
-    }
-
-    public static String[] getJcaDigestAlgorithmsFromKeymasterDigests(
-            Collection<Integer> keymasterDigests) {
-        if (keymasterDigests.isEmpty()) {
-            return EmptyArray.STRING;
-        }
-        String[] result = new String[keymasterDigests.size()];
-        int offset = 0;
-        for (int keymasterDigest : keymasterDigests) {
-            result[offset] = getJcaDigestAlgorithmFromKeymasterDigest(keymasterDigest);
-            offset++;
-        }
-        return result;
-    }
-
-    public static int[] getKeymasterDigestsFromJcaDigestAlgorithms(String[] jcaDigestAlgorithms) {
-        if ((jcaDigestAlgorithms == null) || (jcaDigestAlgorithms.length == 0)) {
-            return EmptyArray.INT;
-        }
-        int[] result = new int[jcaDigestAlgorithms.length];
-        int offset = 0;
-        for (String jcaDigestAlgorithm : jcaDigestAlgorithms) {
-            result[offset] = getKeymasterDigestFromJcaDigestAlgorithm(jcaDigestAlgorithm);
-            offset++;
-        }
-        return result;
-    }
-
     public static int getDigestOutputSizeBits(int keymasterDigest) {
         switch (keymasterDigest) {
             case KeymasterDefs.KM_DIGEST_NONE:
@@ -200,60 +49,6 @@
         }
     }
 
-    public static int getKeymasterBlockModeFromJcaBlockMode(String jcaBlockMode) {
-        if ("ECB".equalsIgnoreCase(jcaBlockMode)) {
-            return KeymasterDefs.KM_MODE_ECB;
-        } else if ("CBC".equalsIgnoreCase(jcaBlockMode)) {
-            return KeymasterDefs.KM_MODE_CBC;
-        } else if ("CTR".equalsIgnoreCase(jcaBlockMode)) {
-            return KeymasterDefs.KM_MODE_CTR;
-        } else if ("GCM".equalsIgnoreCase(jcaBlockMode)) {
-            return KeymasterDefs.KM_MODE_GCM;
-        } else {
-            throw new IllegalArgumentException("Unsupported block mode: " + jcaBlockMode);
-        }
-    }
-
-    public static String getJcaBlockModeFromKeymasterBlockMode(int keymasterBlockMode) {
-        switch (keymasterBlockMode) {
-            case KeymasterDefs.KM_MODE_ECB:
-                return "ECB";
-            case KeymasterDefs.KM_MODE_CBC:
-                return "CBC";
-            case KeymasterDefs.KM_MODE_CTR:
-                return "CTR";
-            case KeymasterDefs.KM_MODE_GCM:
-                return "GCM";
-            default:
-                throw new IllegalArgumentException("Unsupported block mode: " + keymasterBlockMode);
-        }
-    }
-
-    public static String[] getJcaBlockModesFromKeymasterBlockModes(
-            Collection<Integer> keymasterBlockModes) {
-        if ((keymasterBlockModes == null) || (keymasterBlockModes.isEmpty())) {
-            return EmptyArray.STRING;
-        }
-        String[] result = new String[keymasterBlockModes.size()];
-        int offset = 0;
-        for (int keymasterBlockMode : keymasterBlockModes) {
-            result[offset] = getJcaBlockModeFromKeymasterBlockMode(keymasterBlockMode);
-            offset++;
-        }
-        return result;
-    }
-
-    public static int[] getKeymasterBlockModesFromJcaBlockModes(String[] jcaBlockModes) {
-        if ((jcaBlockModes == null) || (jcaBlockModes.length == 0)) {
-            return EmptyArray.INT;
-        }
-        int[] result = new int[jcaBlockModes.length];
-        for (int i = 0; i < jcaBlockModes.length; i++) {
-            result[i] = getKeymasterBlockModeFromJcaBlockMode(jcaBlockModes[i]);
-        }
-        return result;
-    }
-
     public static boolean isKeymasterBlockModeIndCpaCompatible(int keymasterBlockMode) {
         switch (keymasterBlockMode) {
             case KeymasterDefs.KM_MODE_ECB:
@@ -267,82 +62,6 @@
         }
     }
 
-    public static int getKeymasterPaddingFromJcaEncryptionPadding(String jcaPadding) {
-        if ("NoPadding".equalsIgnoreCase(jcaPadding)) {
-            return KeymasterDefs.KM_PAD_NONE;
-        } else if ("PKCS7Padding".equalsIgnoreCase(jcaPadding)) {
-            return KeymasterDefs.KM_PAD_PKCS7;
-        } else if ("PKCS1Padding".equalsIgnoreCase(jcaPadding)) {
-            return KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_ENCRYPT;
-        } else if ("OEAPPadding".equalsIgnoreCase(jcaPadding)) {
-            return KeymasterDefs.KM_PAD_RSA_OAEP;
-        } else {
-            throw new IllegalArgumentException(
-                    "Unsupported encryption padding scheme: " + jcaPadding);
-        }
-    }
-
-    public static String getJcaEncryptionPaddingFromKeymasterPadding(int keymasterPadding) {
-        switch (keymasterPadding) {
-            case KeymasterDefs.KM_PAD_NONE:
-                return "NoPadding";
-            case KeymasterDefs.KM_PAD_PKCS7:
-                return "PKCS7Padding";
-            case KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_ENCRYPT:
-                return "PKCS1Padding";
-            case KeymasterDefs.KM_PAD_RSA_OAEP:
-                return "OEAPPadding";
-            default:
-                throw new IllegalArgumentException(
-                        "Unsupported encryption padding: " + keymasterPadding);
-        }
-    }
-
-    public static int getKeymasterPaddingFromJcaSignaturePadding(String jcaPadding) {
-        if ("PKCS#1".equalsIgnoreCase(jcaPadding)) {
-            return KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN;
-        } if ("PSS".equalsIgnoreCase(jcaPadding)) {
-            return KeymasterDefs.KM_PAD_RSA_PSS;
-        } else {
-            throw new IllegalArgumentException(
-                    "Unsupported signature padding scheme: " + jcaPadding);
-        }
-    }
-
-    public static String getJcaSignaturePaddingFromKeymasterPadding(int keymasterPadding) {
-        switch (keymasterPadding) {
-            case KeymasterDefs.KM_PAD_RSA_PKCS1_1_5_SIGN:
-                return "PKCS#1";
-            case KeymasterDefs.KM_PAD_RSA_PSS:
-                return "PSS";
-            default:
-                throw new IllegalArgumentException(
-                        "Unsupported signature padding: " + keymasterPadding);
-        }
-    }
-
-    public static int[] getKeymasterPaddingsFromJcaEncryptionPaddings(String[] jcaPaddings) {
-        if ((jcaPaddings == null) || (jcaPaddings.length == 0)) {
-            return EmptyArray.INT;
-        }
-        int[] result = new int[jcaPaddings.length];
-        for (int i = 0; i < jcaPaddings.length; i++) {
-            result[i] = getKeymasterPaddingFromJcaEncryptionPadding(jcaPaddings[i]);
-        }
-        return result;
-    }
-
-    public static int[] getKeymasterPaddingsFromJcaSignaturePaddings(String[] jcaPaddings) {
-        if ((jcaPaddings == null) || (jcaPaddings.length == 0)) {
-            return EmptyArray.INT;
-        }
-        int[] result = new int[jcaPaddings.length];
-        for (int i = 0; i < jcaPaddings.length; i++) {
-            result[i] = getKeymasterPaddingFromJcaSignaturePadding(jcaPaddings[i]);
-        }
-        return result;
-    }
-
     /**
      * Adds keymaster arguments to express the key's authorization policy supported by user
      * authentication.
diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp
index 04ebe70..2ae7b08 100644
--- a/libs/androidfw/ResourceTypes.cpp
+++ b/libs/androidfw/ResourceTypes.cpp
@@ -3147,6 +3147,7 @@
 
 ResTable::Theme::Theme(const ResTable& table)
     : mTable(table)
+    , mTypeSpecFlags(0)
 {
     memset(mPackages, 0, sizeof(mPackages));
 }
@@ -3205,6 +3206,8 @@
         return N;
     }
 
+    mTypeSpecFlags |= bagTypeSpecFlags;
+
     uint32_t curPackage = 0xffffffff;
     ssize_t curPackageIndex = 0;
     package_info* curPI = NULL;
@@ -3323,6 +3326,32 @@
         }
     }
 
+    mTypeSpecFlags = other.mTypeSpecFlags;
+
+    if (kDebugTableTheme) {
+        ALOGI("Final theme:");
+        dumpToLog();
+    }
+
+    return NO_ERROR;
+}
+
+status_t ResTable::Theme::clear()
+{
+    if (kDebugTableTheme) {
+        ALOGI("Clearing theme %p...\n", this);
+        dumpToLog();
+    }
+
+    for (size_t i = 0; i < Res_MAXPACKAGE; i++) {
+        if (mPackages[i] != NULL) {
+            free_package(mPackages[i]);
+            mPackages[i] = NULL;
+        }
+    }
+
+    mTypeSpecFlags = 0;
+
     if (kDebugTableTheme) {
         ALOGI("Final theme:");
         dumpToLog();
@@ -3417,6 +3446,11 @@
             inoutTypeSpecFlags, inoutConfig);
 }
 
+uint32_t ResTable::Theme::getChangingConfigurations() const
+{
+    return mTypeSpecFlags;
+}
+
 void ResTable::Theme::dumpToLog() const
 {
     ALOGI("Theme %p:\n", this);
diff --git a/libs/hwui/Android.common.mk b/libs/hwui/Android.common.mk
index 836f868..8a4e609 100644
--- a/libs/hwui/Android.common.mk
+++ b/libs/hwui/Android.common.mk
@@ -63,6 +63,7 @@
     PixelBuffer.cpp \
     Program.cpp \
     ProgramCache.cpp \
+    Properties.cpp \
     RenderBufferCache.cpp \
     RenderNode.cpp \
     RenderProperties.cpp \
diff --git a/libs/hwui/AssetAtlas.cpp b/libs/hwui/AssetAtlas.cpp
index 882826e..2889d2f 100644
--- a/libs/hwui/AssetAtlas.cpp
+++ b/libs/hwui/AssetAtlas.cpp
@@ -112,9 +112,6 @@
     Texture* const mDelegate;
 }; // struct DelegateTexture
 
-/**
- * TODO: This method does not take the rotation flag into account
- */
 void AssetAtlas::createEntries(Caches& caches, int64_t* map, int count) {
     const float width = float(mTexture->width);
     const float height = float(mTexture->height);
@@ -128,7 +125,6 @@
         // pointers on 64 bit architectures.
         const int x = static_cast<int>(map[i++]);
         const int y = static_cast<int>(map[i++]);
-        bool rotated = map[i++] > 0;
 
         // Bitmaps should never be null, we're just extra paranoid
         if (!pixelRef) continue;
@@ -142,7 +138,7 @@
         texture->width = pixelRef->info().width();
         texture->height = pixelRef->info().height();
 
-        Entry* entry = new Entry(pixelRef, x, y, rotated, texture, mapper, *this);
+        Entry* entry = new Entry(pixelRef, texture, mapper, *this);
         texture->uvMapper = &entry->uvMapper;
 
         mEntries.add(entry->pixelRef, entry);
diff --git a/libs/hwui/AssetAtlas.h b/libs/hwui/AssetAtlas.h
index 17c5281..f1cd0b4 100644
--- a/libs/hwui/AssetAtlas.h
+++ b/libs/hwui/AssetAtlas.h
@@ -45,8 +45,8 @@
 class AssetAtlas {
 public:
     /**
-     * Entry representing the position and rotation of a
-     * bitmap inside the atlas.
+     * Entry representing the texture and uvMapper of a PixelRef in the
+     * atlas
      */
     class Entry {
     public:
@@ -78,30 +78,15 @@
         SkPixelRef* pixelRef;
 
         /**
-         * Location of the bitmap inside the atlas, in pixels.
-         */
-        int x;
-        int y;
-
-        /**
-         * If set, the bitmap is rotated 90 degrees (clockwise)
-         * inside the atlas.
-         */
-        bool rotated;
-
-        /**
          * Atlas this entry belongs to.
          */
         const AssetAtlas& atlas;
 
-        Entry(SkPixelRef* pixelRef, int x, int y, bool rotated,
-                    Texture* texture, const UvMapper& mapper, const AssetAtlas& atlas)
+        Entry(SkPixelRef* pixelRef, Texture* texture, const UvMapper& mapper,
+                    const AssetAtlas& atlas)
                 : texture(texture)
                 , uvMapper(mapper)
                 , pixelRef(pixelRef)
-                , x(x)
-                , y(y)
-                , rotated(rotated)
                 , atlas(atlas) {
         }
 
@@ -120,8 +105,7 @@
      * Initializes the atlas with the specified buffer and
      * map. The buffer is a gralloc'd texture that will be
      * used as an EGLImage. The map is a list of SkBitmap*
-     * and their (x, y) positions as well as their rotation
-     * flags.
+     * and their (x, y) positions
      *
      * This method returns immediately if the atlas is already
      * initialized. To re-initialize the atlas, you must
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index fd5a2ce..f75d6a0 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -57,14 +57,8 @@
     init();
     initFont();
     initConstraints();
-    initProperties();
     initStaticProperties();
     initExtensions();
-    initTempProperties();
-
-    mDebugLevel = readDebugLevel();
-    ALOGD_IF(mDebugLevel != kDebugDisabled,
-            "Enabling debug mode %d", mDebugLevel);
 }
 
 bool Caches::init() {
@@ -77,10 +71,6 @@
 
     mFunctorsCount = 0;
 
-    debugLayersUpdates = false;
-    debugOverdraw = false;
-    debugStencilClip = kStencilHide;
-
     patchCache.init();
 
     mInitialized = true;
@@ -124,66 +114,6 @@
     }
 }
 
-bool Caches::initProperties() {
-    bool prevDebugLayersUpdates = debugLayersUpdates;
-    bool prevDebugOverdraw = debugOverdraw;
-    StencilClipDebug prevDebugStencilClip = debugStencilClip;
-
-    char property[PROPERTY_VALUE_MAX];
-    if (property_get(PROPERTY_DEBUG_LAYERS_UPDATES, property, nullptr) > 0) {
-        INIT_LOGD("  Layers updates debug enabled: %s", property);
-        debugLayersUpdates = !strcmp(property, "true");
-    } else {
-        debugLayersUpdates = false;
-    }
-
-    debugOverdraw = false;
-    if (property_get(PROPERTY_DEBUG_OVERDRAW, property, nullptr) > 0) {
-        INIT_LOGD("  Overdraw debug enabled: %s", property);
-        if (!strcmp(property, "show")) {
-            debugOverdraw = true;
-            mOverdrawDebugColorSet = kColorSet_Default;
-        } else if (!strcmp(property, "show_deuteranomaly")) {
-            debugOverdraw = true;
-            mOverdrawDebugColorSet = kColorSet_Deuteranomaly;
-        }
-    }
-
-    // See Properties.h for valid values
-    if (property_get(PROPERTY_DEBUG_STENCIL_CLIP, property, nullptr) > 0) {
-        INIT_LOGD("  Stencil clip debug enabled: %s", property);
-        if (!strcmp(property, "hide")) {
-            debugStencilClip = kStencilHide;
-        } else if (!strcmp(property, "highlight")) {
-            debugStencilClip = kStencilShowHighlight;
-        } else if (!strcmp(property, "region")) {
-            debugStencilClip = kStencilShowRegion;
-        }
-    } else {
-        debugStencilClip = kStencilHide;
-    }
-
-    if (property_get(PROPERTY_DISABLE_DRAW_DEFER, property, "false")) {
-        drawDeferDisabled = !strcasecmp(property, "true");
-        INIT_LOGD("  Draw defer %s", drawDeferDisabled ? "disabled" : "enabled");
-    } else {
-        drawDeferDisabled = false;
-        INIT_LOGD("  Draw defer enabled");
-    }
-
-    if (property_get(PROPERTY_DISABLE_DRAW_REORDER, property, "false")) {
-        drawReorderDisabled = !strcasecmp(property, "true");
-        INIT_LOGD("  Draw reorder %s", drawReorderDisabled ? "disabled" : "enabled");
-    } else {
-        drawReorderDisabled = false;
-        INIT_LOGD("  Draw reorder enabled");
-    }
-
-    return (prevDebugLayersUpdates != debugLayersUpdates)
-            || (prevDebugOverdraw != debugOverdraw)
-            || (prevDebugStencilClip != debugStencilClip);
-}
-
 void Caches::terminate() {
     if (!mInitialized) return;
     mRegionMesh.release();
@@ -231,7 +161,9 @@
     };
     if (amount < 1) amount = 1;
     if (amount > 4) amount = 4;
-    return sOverdrawColors[mOverdrawDebugColorSet][amount - 1];
+
+    int overdrawColorIndex = static_cast<int>(Properties::overdrawColorSet);
+    return sOverdrawColors[overdrawColorIndex][amount - 1];
 }
 
 void Caches::dumpMemoryUsage() {
@@ -351,13 +283,13 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 void Caches::startTiling(GLuint x, GLuint y, GLuint width, GLuint height, bool discard) {
-    if (mExtensions.hasTiledRendering() && !debugOverdraw) {
+    if (mExtensions.hasTiledRendering() && !Properties::debugOverdraw) {
         glStartTilingQCOM(x, y, width, height, (discard ? GL_NONE : GL_COLOR_BUFFER_BIT0_QCOM));
     }
 }
 
 void Caches::endTiling() {
-    if (mExtensions.hasTiledRendering() && !debugOverdraw) {
+    if (mExtensions.hasTiledRendering() && !Properties::debugOverdraw) {
         glEndTilingQCOM(GL_COLOR_BUFFER_BIT0_QCOM);
     }
 }
@@ -395,44 +327,5 @@
 // Temporary Properties
 ///////////////////////////////////////////////////////////////////////////////
 
-void Caches::initTempProperties() {
-    propertyLightRadius = -1.0f;
-    propertyLightPosY = -1.0f;
-    propertyLightPosZ = -1.0f;
-    propertyAmbientRatio = -1.0f;
-    propertyAmbientShadowStrength = -1;
-    propertySpotShadowStrength = -1;
-}
-
-void Caches::setTempProperty(const char* name, const char* value) {
-    ALOGD("setting property %s to %s", name, value);
-    if (!strcmp(name, "ambientRatio")) {
-        propertyAmbientRatio = fmin(fmax(atof(value), 0.0), 10.0);
-        ALOGD("ambientRatio = %.2f", propertyAmbientRatio);
-        return;
-    } else if (!strcmp(name, "lightRadius")) {
-        propertyLightRadius = fmin(fmax(atof(value), 0.0), 3000.0);
-        ALOGD("lightRadius = %.2f", propertyLightRadius);
-        return;
-    } else if (!strcmp(name, "lightPosY")) {
-        propertyLightPosY = fmin(fmax(atof(value), 0.0), 3000.0);
-        ALOGD("lightPos Y = %.2f", propertyLightPosY);
-        return;
-    } else if (!strcmp(name, "lightPosZ")) {
-        propertyLightPosZ = fmin(fmax(atof(value), 0.0), 3000.0);
-        ALOGD("lightPos Z = %.2f", propertyLightPosZ);
-        return;
-    } else if (!strcmp(name, "ambientShadowStrength")) {
-        propertyAmbientShadowStrength = atoi(value);
-        ALOGD("ambient shadow strength = 0x%x out of 0xff", propertyAmbientShadowStrength);
-        return;
-    } else if (!strcmp(name, "spotShadowStrength")) {
-        propertySpotShadowStrength = atoi(value);
-        ALOGD("spot shadow strength = 0x%x out of 0xff", propertySpotShadowStrength);
-        return;
-    }
-    ALOGD("    failed");
-}
-
 }; // namespace uirenderer
 }; // namespace android
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 8aea8ff..804f609 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -80,7 +80,7 @@
     }
 
     static bool hasInstance() {
-        return sInstance != 0;
+        return sInstance != nullptr;
     }
 private:
     Caches(RenderState& renderState);
@@ -99,11 +99,6 @@
     bool init();
 
     /**
-     * Initialize global system properties.
-     */
-    bool initProperties();
-
-    /**
      * Flush the cache.
      *
      * @param mode Indicates how much of the cache should be flushed
@@ -117,14 +112,6 @@
     void terminate();
 
     /**
-     * Indicates whether the renderer is in debug mode.
-     * This debug mode provides limited information to app developers.
-     */
-    DebugLevel getDebugLevel() const {
-        return mDebugLevel;
-    }
-
-    /**
      * Returns a non-premultiplied ARGB color for the specified
      * amount of overdraw (1 for 1x, 2 for 2x, etc.)
      */
@@ -162,22 +149,9 @@
     void registerFunctors(uint32_t functorCount);
     void unregisterFunctors(uint32_t functorCount);
 
-    bool drawDeferDisabled;
-    bool drawReorderDisabled;
-
     // Misc
     GLint maxTextureSize;
 
-    // Debugging
-    bool debugLayersUpdates;
-    bool debugOverdraw;
-
-    enum StencilClipDebug {
-        kStencilHide,
-        kStencilShowHighlight,
-        kStencilShowRegion
-    };
-    StencilClipDebug debugStencilClip;
 private:
     // Declared before gradientCache and programCache which need this to initialize.
     // TODO: cleanup / move elsewhere
@@ -207,17 +181,6 @@
     PFNGLPUSHGROUPMARKEREXTPROC startMark;
     PFNGLPOPGROUPMARKEREXTPROC endMark;
 
-    // TEMPORARY properties
-    void initTempProperties();
-    void setTempProperty(const char* name, const char* value);
-
-    float propertyLightRadius;
-    float propertyLightPosY;
-    float propertyLightPosZ;
-    float propertyAmbientRatio;
-    int propertyAmbientShadowStrength;
-    int propertySpotShadowStrength;
-
     void setProgram(const ProgramDescription& description);
     void setProgram(Program* program);
 
@@ -227,10 +190,6 @@
     TextureState& textureState() { return *mTextureState; }
 
 private:
-    enum OverdrawColorSet {
-        kColorSet_Default = 0,
-        kColorSet_Deuteranomaly
-    };
 
     void initFont();
     void initExtensions();
@@ -249,13 +208,10 @@
     mutable Mutex mGarbageLock;
     Vector<Layer*> mLayerGarbage;
 
-    DebugLevel mDebugLevel;
     bool mInitialized;
 
     uint32_t mFunctorsCount;
 
-    OverdrawColorSet mOverdrawDebugColorSet;
-
     // TODO: move below to RenderState
     PixelBufferState* mPixelBufferState = nullptr;
     TextureState* mTextureState = nullptr;
diff --git a/libs/hwui/DeferredDisplayList.cpp b/libs/hwui/DeferredDisplayList.cpp
index dd6af03..6fcf958 100644
--- a/libs/hwui/DeferredDisplayList.cpp
+++ b/libs/hwui/DeferredDisplayList.cpp
@@ -28,6 +28,7 @@
 #include "DeferredDisplayList.h"
 #include "DisplayListOp.h"
 #include "OpenGLRenderer.h"
+#include "Properties.h"
 #include "utils/MathUtils.h"
 
 #if DEBUG_DEFER
@@ -502,7 +503,7 @@
         resetBatchingState();
     }
 
-    if (CC_UNLIKELY(renderer.getCaches().drawReorderDisabled)) {
+    if (CC_UNLIKELY(Properties::drawReorderDisabled)) {
         // TODO: elegant way to reuse batches?
         DrawBatch* b = new DrawBatch(deferInfo);
         b->add(op, state, deferInfo.opaqueOverBounds);
diff --git a/libs/hwui/DisplayList.cpp b/libs/hwui/DisplayList.cpp
index 4540bec..e679bff 100644
--- a/libs/hwui/DisplayList.cpp
+++ b/libs/hwui/DisplayList.cpp
@@ -41,10 +41,6 @@
     ResourceCache& resourceCache = ResourceCache::getInstance();
     resourceCache.lock();
 
-    for (size_t i = 0; i < bitmapResources.size(); i++) {
-        resourceCache.decrementRefcountLocked(bitmapResources.itemAt(i));
-    }
-
     for (size_t i = 0; i < patchResources.size(); i++) {
         resourceCache.decrementRefcountLocked(patchResources.itemAt(i));
     }
@@ -59,7 +55,6 @@
         delete path;
     }
 
-    bitmapResources.clear();
     patchResources.clear();
     pathResources.clear();
     paints.clear();
diff --git a/libs/hwui/DisplayListCanvas.h b/libs/hwui/DisplayListCanvas.h
index 0064236..d997ef4 100644
--- a/libs/hwui/DisplayListCanvas.h
+++ b/libs/hwui/DisplayListCanvas.h
@@ -350,9 +350,10 @@
         // correctly, such as creating the bitmap from scratch, drawing with it, changing its
         // contents, and drawing again. The only fix would be to always copy it the first time,
         // which doesn't seem worth the extra cycles for this unlikely case.
-        const SkBitmap* cachedBitmap = mResourceCache.insert(bitmap);
-        mDisplayListData->bitmapResources.add(cachedBitmap);
-        return cachedBitmap;
+        SkBitmap* localBitmap = new (alloc()) SkBitmap(bitmap);
+        alloc().autoDestroy(localBitmap);
+        mDisplayListData->bitmapResources.push_back(localBitmap);
+        return localBitmap;
     }
 
     inline const Res_png_9patch* refPatch(const Res_png_9patch* patch) {
diff --git a/libs/hwui/DrawProfiler.cpp b/libs/hwui/DrawProfiler.cpp
index ecde5ff..7addef9 100644
--- a/libs/hwui/DrawProfiler.cpp
+++ b/libs/hwui/DrawProfiler.cpp
@@ -18,12 +18,11 @@
 #include <cutils/compiler.h>
 
 #include "OpenGLRenderer.h"
-#include "Properties.h"
 
 #define DEFAULT_MAX_FRAMES 128
 
-#define RETURN_IF_PROFILING_DISABLED() if (CC_LIKELY(mType == kNone)) return
-#define RETURN_IF_DISABLED() if (CC_LIKELY(mType == kNone && !mShowDirtyRegions)) return
+#define RETURN_IF_PROFILING_DISABLED() if (CC_LIKELY(mType == ProfileType::None)) return
+#define RETURN_IF_DISABLED() if (CC_LIKELY(mType == ProfileType::None && !mShowDirtyRegions)) return
 
 #define NANOS_TO_MILLIS_FLOAT(nanos) ((nanos) * 0.000001f)
 
@@ -56,18 +55,7 @@
     return (int) (dp * density + 0.5f);
 }
 
-DrawProfiler::DrawProfiler()
-        : mType(kNone)
-        , mDensity(0)
-        , mData(nullptr)
-        , mDataSize(0)
-        , mCurrentFrame(-1)
-        , mPreviousTime(0)
-        , mVerticalUnit(0)
-        , mHorizontalUnit(0)
-        , mThresholdStroke(0)
-        , mShowDirtyRegions(false)
-        , mFlashToggle(false) {
+DrawProfiler::DrawProfiler() {
     setDensity(1);
 }
 
@@ -135,7 +123,7 @@
         }
     }
 
-    if (mType == kBars) {
+    if (mType == ProfileType::Bars) {
         prepareShapes(canvas->getViewportHeight());
         drawGraph(canvas);
         drawCurrentFrame(canvas);
@@ -217,32 +205,20 @@
     canvas->drawLines(pts, 4, &paint);
 }
 
-DrawProfiler::ProfileType DrawProfiler::loadRequestedProfileType() {
-    ProfileType type = kNone;
-    char buf[PROPERTY_VALUE_MAX] = {'\0',};
-    if (property_get(PROPERTY_PROFILE, buf, "") > 0) {
-        if (!strcmp(buf, PROPERTY_PROFILE_VISUALIZE_BARS)) {
-            type = kBars;
-        } else if (!strcmp(buf, "true")) {
-            type = kConsole;
-        }
-    }
-    return type;
-}
-
-bool DrawProfiler::loadSystemProperties() {
+bool DrawProfiler::consumeProperties() {
     bool changed = false;
-    ProfileType newType = loadRequestedProfileType();
+    ProfileType newType = Properties::getProfileType();
     if (newType != mType) {
         mType = newType;
-        if (mType == kNone) {
+        if (mType == ProfileType::None) {
             destroyData();
         } else {
             createData();
         }
         changed = true;
     }
-    bool showDirty = property_get_bool(PROPERTY_DEBUG_SHOW_DIRTY_REGIONS, false);
+
+    bool showDirty = Properties::showDirtyRegions;
     if (showDirty != mShowDirtyRegions) {
         mShowDirtyRegions = showDirty;
         changed = true;
diff --git a/libs/hwui/DrawProfiler.h b/libs/hwui/DrawProfiler.h
index de64088..ef6101c 100644
--- a/libs/hwui/DrawProfiler.h
+++ b/libs/hwui/DrawProfiler.h
@@ -16,9 +16,11 @@
 #ifndef DRAWPROFILER_H
 #define DRAWPROFILER_H
 
-#include <utils/Timers.h>
+#include "Properties.h"
 #include "Rect.h"
 
+#include <utils/Timers.h>
+
 namespace android {
 namespace uirenderer {
 
@@ -29,7 +31,7 @@
     DrawProfiler();
     ~DrawProfiler();
 
-    bool loadSystemProperties();
+    bool consumeProperties();
     void setDensity(float density);
 
     void startFrame(nsecs_t recordDurationNanos = 0);
@@ -43,12 +45,6 @@
     void dumpData(int fd);
 
 private:
-    enum ProfileType {
-        kNone,
-        kConsole,
-        kBars,
-    };
-
     typedef struct {
         float record;
         float prepare;
@@ -65,20 +61,18 @@
     void drawCurrentFrame(OpenGLRenderer* canvas);
     void drawThreshold(OpenGLRenderer* canvas);
 
-    ProfileType loadRequestedProfileType();
+    ProfileType mType = ProfileType::None;
+    float mDensity = 0;
 
-    ProfileType mType;
-    float mDensity;
+    FrameTimingData* mData = nullptr;
+    int mDataSize = 0;
 
-    FrameTimingData* mData;
-    int mDataSize;
+    int mCurrentFrame = -1;
+    nsecs_t mPreviousTime = 0;
 
-    int mCurrentFrame;
-    nsecs_t mPreviousTime;
-
-    int mVerticalUnit;
-    int mHorizontalUnit;
-    int mThresholdStroke;
+    int mVerticalUnit = 0;
+    int mHorizontalUnit = 0;
+    int mThresholdStroke = 0;
 
     /*
      * mRects represents an array of rect shapes, divided into NUM_ELEMENTS
@@ -87,11 +81,11 @@
      * OpenGLRenderer:drawRects() that makes up all the FrameTimingData:record
      * information.
      */
-    float** mRects;
+    float** mRects = nullptr;
 
-    bool mShowDirtyRegions;
+    bool mShowDirtyRegions = false;
     SkRect mDirtyRegion;
-    bool mFlashToggle;
+    bool mFlashToggle = false;
 };
 
 } /* namespace uirenderer */
diff --git a/libs/hwui/GlopBuilder.cpp b/libs/hwui/GlopBuilder.cpp
index 9ca6bc6..e25f81e 100644
--- a/libs/hwui/GlopBuilder.cpp
+++ b/libs/hwui/GlopBuilder.cpp
@@ -588,8 +588,8 @@
 
     // Enable debug highlight when what we're about to draw is tested against
     // the stencil buffer and if stencil highlight debugging is on
-    mDescription.hasDebugHighlight = !mCaches.debugOverdraw
-            && mCaches.debugStencilClip == Caches::kStencilShowHighlight
+    mDescription.hasDebugHighlight = !Properties::debugOverdraw
+            && Properties::debugStencilClip == StencilClipDebug::ShowHighlight
             && mRenderState.stencil().isTestEnabled();
 
     // serialize shader info into ShaderData
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 7fc31b8..09674f7 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -245,7 +245,7 @@
 #if DEBUG_MEMORY_USAGE
         mCaches.dumpMemoryUsage();
 #else
-        if (mCaches.getDebugLevel() & kDebugMemory) {
+        if (Properties::debugLevel & kDebugMemory) {
             mCaches.dumpMemoryUsage();
         }
 #endif
@@ -339,7 +339,7 @@
 }
 
 void OpenGLRenderer::renderOverdraw() {
-    if (mCaches.debugOverdraw && getTargetFbo() == 0) {
+    if (Properties::debugOverdraw && getTargetFbo() == 0) {
         const Rect* clip = &mTilingClip;
 
         mRenderState.scissor().setEnabled(true);
@@ -381,7 +381,7 @@
             debugOverdraw(false, false);
         }
 
-        if (CC_UNLIKELY(inFrame || mCaches.drawDeferDisabled)) {
+        if (CC_UNLIKELY(inFrame || Properties::drawDeferDisabled)) {
             layer->render(*this);
         } else {
             layer->defer(*this);
@@ -392,7 +392,7 @@
             startTilingCurrentClip();
         }
 
-        layer->debugDrawUpdate = mCaches.debugLayersUpdates;
+        layer->debugDrawUpdate = Properties::debugLayersUpdates;
         layer->hasDrawnSinceUpdate = false;
 
         return true;
@@ -407,7 +407,7 @@
     // in the layer updates list which will be cleared by flushLayers().
     int count = mLayerUpdates.size();
     if (count > 0) {
-        if (CC_UNLIKELY(mCaches.drawDeferDisabled)) {
+        if (CC_UNLIKELY(Properties::drawDeferDisabled)) {
             startMark("Layer Updates");
         } else {
             startMark("Defer Layer Updates");
@@ -419,7 +419,7 @@
             updateLayer(layer, false);
         }
 
-        if (CC_UNLIKELY(mCaches.drawDeferDisabled)) {
+        if (CC_UNLIKELY(Properties::drawDeferDisabled)) {
             mLayerUpdates.clear();
             mRenderState.bindFramebuffer(getTargetFbo());
         }
@@ -883,13 +883,13 @@
  * operations are correctly counted twice for overdraw. NOTE: assumes composeLayerRegion only used
  * by saveLayer's restore
  */
-#define DRAW_DOUBLE_STENCIL_IF(COND, DRAW_COMMAND) {                             \
-        DRAW_COMMAND;                                                            \
-        if (CC_UNLIKELY(mCaches.debugOverdraw && getTargetFbo() == 0 && COND)) { \
-            glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);                 \
-            DRAW_COMMAND;                                                        \
-            glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);                     \
-        }                                                                        \
+#define DRAW_DOUBLE_STENCIL_IF(COND, DRAW_COMMAND) { \
+        DRAW_COMMAND; \
+        if (CC_UNLIKELY(Properties::debugOverdraw && getTargetFbo() == 0 && COND)) { \
+            glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); \
+            DRAW_COMMAND; \
+            glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); \
+        } \
     }
 
 #define DRAW_DOUBLE_STENCIL(DRAW_COMMAND) DRAW_DOUBLE_STENCIL_IF(true, DRAW_COMMAND)
@@ -1324,7 +1324,7 @@
 }
 
 void OpenGLRenderer::setStencilFromClip() {
-    if (!mCaches.debugOverdraw) {
+    if (!Properties::debugOverdraw) {
         if (!currentSnapshot()->clipIsSimple()) {
             int incrementThreshold;
             EVENT_LOGD("setStencilFromClip - enabling");
@@ -1383,8 +1383,8 @@
             // Draw the region used to generate the stencil if the appropriate debug
             // mode is enabled
             // TODO: Implement for rectangle list clip areas
-            if (mCaches.debugStencilClip == Caches::kStencilShowRegion &&
-                    !clipArea.isRectangleList()) {
+            if (Properties::debugStencilClip == StencilClipDebug::ShowRegion
+                    && !clipArea.isRectangleList()) {
                 paint.setColor(0x7f0000ff);
                 paint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
                 drawRegionRects(currentSnapshot()->getClipRegion(), paint);
@@ -1469,7 +1469,7 @@
     if (renderNode && renderNode->isRenderable()) {
         // compute 3d ordering
         renderNode->computeOrdering();
-        if (CC_UNLIKELY(mCaches.drawDeferDisabled)) {
+        if (CC_UNLIKELY(Properties::drawDeferDisabled)) {
             startFrame();
             ReplayStateStruct replayStruct(*this, dirty, replayFlags);
             renderNode->replay(replayStruct, 0);
@@ -1478,7 +1478,7 @@
 
         // Don't avoid overdraw when visualizing, since that makes it harder to
         // debug where it's coming from, and when the problem occurs.
-        bool avoidOverdraw = !mCaches.debugOverdraw;
+        bool avoidOverdraw = !Properties::debugOverdraw;
         DeferredDisplayList deferredList(mState.currentClipRect(), avoidOverdraw);
         DeferStateStruct deferStruct(deferredList, *this, replayFlags);
         renderNode->defer(deferStruct, 0);
@@ -2452,8 +2452,8 @@
 
     // The caller has made sure casterAlpha > 0.
     float ambientShadowAlpha = mAmbientShadowAlpha;
-    if (CC_UNLIKELY(mCaches.propertyAmbientShadowStrength >= 0)) {
-        ambientShadowAlpha = mCaches.propertyAmbientShadowStrength;
+    if (CC_UNLIKELY(Properties::overrideAmbientShadowStrength >= 0)) {
+        ambientShadowAlpha = Properties::overrideAmbientShadowStrength;
     }
     if (ambientShadowVertexBuffer && ambientShadowAlpha > 0) {
         paint.setARGB(casterAlpha * ambientShadowAlpha, 0, 0, 0);
@@ -2461,8 +2461,8 @@
     }
 
     float spotShadowAlpha = mSpotShadowAlpha;
-    if (CC_UNLIKELY(mCaches.propertySpotShadowStrength >= 0)) {
-        spotShadowAlpha = mCaches.propertySpotShadowStrength;
+    if (CC_UNLIKELY(Properties::overrideSpotShadowStrength >= 0)) {
+        spotShadowAlpha = Properties::overrideSpotShadowStrength;
     }
     if (spotShadowVertexBuffer && spotShadowAlpha > 0) {
         paint.setARGB(casterAlpha * spotShadowAlpha, 0, 0, 0);
diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp
index bdb44a6..74964f6 100644
--- a/libs/hwui/PathCache.cpp
+++ b/libs/hwui/PathCache.cpp
@@ -153,7 +153,7 @@
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
     mMaxTextureSize = maxTextureSize;
 
-    mDebugEnabled = readDebugLevel() & kDebugCaches;
+    mDebugEnabled = Properties::debugLevel & kDebugCaches;
 }
 
 PathCache::~PathCache() {
diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp
new file mode 100644
index 0000000..fd32b6f
--- /dev/null
+++ b/libs/hwui/Properties.cpp
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+#include "Properties.h"
+
+#include "Debug.h"
+
+#include <cmath>
+#include <cutils/log.h>
+
+namespace android {
+namespace uirenderer {
+
+bool Properties::drawDeferDisabled = false;
+bool Properties::drawReorderDisabled = false;
+bool Properties::debugLayersUpdates = false;
+bool Properties::debugOverdraw = false;
+bool Properties::showDirtyRegions = false;
+
+DebugLevel Properties::debugLevel = kDebugDisabled;
+OverdrawColorSet Properties::overdrawColorSet = OverdrawColorSet::Default;
+StencilClipDebug Properties::debugStencilClip = StencilClipDebug::Hide;
+
+float Properties::overrideLightRadius = -1.0f;
+float Properties::overrideLightPosY = -1.0f;
+float Properties::overrideLightPosZ = -1.0f;
+float Properties::overrideAmbientRatio = -1.0f;
+int Properties::overrideAmbientShadowStrength = -1;
+int Properties::overrideSpotShadowStrength = -1;
+
+ProfileType Properties::sProfileType = ProfileType::None;
+bool Properties::sDisableProfileBars = false;
+
+bool Properties::load() {
+    char property[PROPERTY_VALUE_MAX];
+    bool prevDebugLayersUpdates = debugLayersUpdates;
+    bool prevDebugOverdraw = debugOverdraw;
+    StencilClipDebug prevDebugStencilClip = debugStencilClip;
+
+
+    debugOverdraw = false;
+    if (property_get(PROPERTY_DEBUG_OVERDRAW, property, nullptr) > 0) {
+        INIT_LOGD("  Overdraw debug enabled: %s", property);
+        if (!strcmp(property, "show")) {
+            debugOverdraw = true;
+            overdrawColorSet = OverdrawColorSet::Default;
+        } else if (!strcmp(property, "show_deuteranomaly")) {
+            debugOverdraw = true;
+            overdrawColorSet = OverdrawColorSet::Deuteranomaly;
+        }
+    }
+
+    // See Properties.h for valid values
+    if (property_get(PROPERTY_DEBUG_STENCIL_CLIP, property, nullptr) > 0) {
+        INIT_LOGD("  Stencil clip debug enabled: %s", property);
+        if (!strcmp(property, "hide")) {
+            debugStencilClip = StencilClipDebug::Hide;
+        } else if (!strcmp(property, "highlight")) {
+            debugStencilClip = StencilClipDebug::ShowHighlight;
+        } else if (!strcmp(property, "region")) {
+            debugStencilClip = StencilClipDebug::ShowRegion;
+        }
+    } else {
+        debugStencilClip = StencilClipDebug::Hide;
+    }
+
+    sProfileType = ProfileType::None;
+    if (property_get(PROPERTY_PROFILE, property, "") > 0) {
+        if (!strcmp(property, PROPERTY_PROFILE_VISUALIZE_BARS)) {
+            sProfileType = ProfileType::Bars;
+        } else if (!strcmp(property, "true")) {
+            sProfileType = ProfileType::Console;
+        }
+    }
+
+    debugLayersUpdates = property_get_bool(PROPERTY_DEBUG_LAYERS_UPDATES, false);
+    INIT_LOGD("  Layers updates debug enabled: %d", debugLayersUpdates);
+
+    drawDeferDisabled = property_get_bool(PROPERTY_DISABLE_DRAW_DEFER, false);
+    INIT_LOGD("  Draw defer %s", drawDeferDisabled ? "disabled" : "enabled");
+
+    drawReorderDisabled = property_get_bool(PROPERTY_DISABLE_DRAW_REORDER, false);
+    INIT_LOGD("  Draw reorder %s", drawReorderDisabled ? "disabled" : "enabled");
+
+    showDirtyRegions = property_get_bool(PROPERTY_DEBUG_SHOW_DIRTY_REGIONS, false);
+
+    debugLevel = kDebugDisabled;
+    if (property_get(PROPERTY_DEBUG, property, nullptr) > 0) {
+        debugLevel = (DebugLevel) atoi(property);
+    }
+
+    return (prevDebugLayersUpdates != debugLayersUpdates)
+            || (prevDebugOverdraw != debugOverdraw)
+            || (prevDebugStencilClip != debugStencilClip);
+}
+
+void Properties::overrideProperty(const char* name, const char* value) {
+    if (!strcmp(name, "disableProfileBars")) {
+        sDisableProfileBars = !strcmp(value, "true");
+        ALOGD("profile bars %s", sDisableProfileBars ? "disabled" : "enabled");
+        return;
+    } else if (!strcmp(name, "ambientRatio")) {
+        overrideAmbientRatio = fmin(fmax(atof(value), 0.0), 10.0);
+        ALOGD("ambientRatio = %.2f", overrideAmbientRatio);
+        return;
+    } else if (!strcmp(name, "lightRadius")) {
+        overrideLightRadius = fmin(fmax(atof(value), 0.0), 3000.0);
+        ALOGD("lightRadius = %.2f", overrideLightRadius);
+        return;
+    } else if (!strcmp(name, "lightPosY")) {
+        overrideLightPosY = fmin(fmax(atof(value), 0.0), 3000.0);
+        ALOGD("lightPos Y = %.2f", overrideLightPosY);
+        return;
+    } else if (!strcmp(name, "lightPosZ")) {
+        overrideLightPosZ = fmin(fmax(atof(value), 0.0), 3000.0);
+        ALOGD("lightPos Z = %.2f", overrideLightPosZ);
+        return;
+    } else if (!strcmp(name, "ambientShadowStrength")) {
+        overrideAmbientShadowStrength = atoi(value);
+        ALOGD("ambient shadow strength = 0x%x out of 0xff", overrideAmbientShadowStrength);
+        return;
+    } else if (!strcmp(name, "spotShadowStrength")) {
+        overrideSpotShadowStrength = atoi(value);
+        ALOGD("spot shadow strength = 0x%x out of 0xff", overrideSpotShadowStrength);
+        return;
+    }
+    ALOGD("failed overriding property %s to %s", name, value);
+}
+
+ProfileType Properties::getProfileType() {
+    if (CC_UNLIKELY(sDisableProfileBars && sProfileType == ProfileType::Bars))
+        return ProfileType::None;
+    return sProfileType;
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h
index a0312e1..46fa940 100644
--- a/libs/hwui/Properties.h
+++ b/libs/hwui/Properties.h
@@ -19,12 +19,16 @@
 
 #include <cutils/properties.h>
 #include <stdlib.h>
+#include <utils/Singleton.h>
 
 /**
  * This file contains the list of system properties used to configure
  * the OpenGLRenderer.
  */
 
+namespace android {
+namespace uirenderer {
+
 ///////////////////////////////////////////////////////////////////////////////
 // Compile-time properties
 ///////////////////////////////////////////////////////////////////////////////
@@ -253,12 +257,61 @@
 // Converts a number of kilo-bytes into bytes
 #define KB(s) s * 1024
 
-static inline DebugLevel readDebugLevel() {
-    char property[PROPERTY_VALUE_MAX];
-    if (property_get(PROPERTY_DEBUG, property, nullptr) > 0) {
-        return (DebugLevel) atoi(property);
-    }
-    return kDebugDisabled;
-}
+enum class ProfileType {
+    None,
+    Console,
+    Bars
+};
+
+enum class OverdrawColorSet {
+    Default = 0,
+    Deuteranomaly
+};
+
+enum class StencilClipDebug {
+    Hide,
+    ShowHighlight,
+    ShowRegion
+};
+
+/**
+ * Renderthread-only singleton which manages several static rendering properties. Most of these
+ * are driven by system properties which are queried once at initialization, and again if init()
+ * is called.
+ */
+class Properties {
+public:
+    static bool load();
+
+    static bool drawDeferDisabled;
+    static bool drawReorderDisabled;
+    static bool debugLayersUpdates;
+    static bool debugOverdraw;
+    static bool showDirtyRegions;
+
+    static DebugLevel debugLevel;
+    static OverdrawColorSet overdrawColorSet;
+    static StencilClipDebug debugStencilClip;
+
+    // Override the value for a subset of properties in this class
+    static void overrideProperty(const char* name, const char* value);
+
+    static float overrideLightRadius;
+    static float overrideLightPosY;
+    static float overrideLightPosZ;
+    static float overrideAmbientRatio;
+    static int overrideAmbientShadowStrength;
+    static int overrideSpotShadowStrength;
+
+    static ProfileType getProfileType();
+
+private:
+    static ProfileType sProfileType;
+    static bool sDisableProfileBars;
+
+}; // class Caches
+
+}; // namespace uirenderer
+}; // namespace android
 
 #endif // ANDROID_HWUI_PROPERTIES_H
diff --git a/libs/hwui/ResourceCache.cpp b/libs/hwui/ResourceCache.cpp
index 454fedc..75d8134 100644
--- a/libs/hwui/ResourceCache.cpp
+++ b/libs/hwui/ResourceCache.cpp
@@ -59,21 +59,6 @@
     mLock.unlock();
 }
 
-const SkBitmap* ResourceCache::insert(const SkBitmap& bitmapResource) {
-    Mutex::Autolock _l(mLock);
-
-    BitmapKey bitmapKey(bitmapResource);
-    ssize_t index = mBitmapCache.indexOfKey(bitmapKey);
-    if (index == NAME_NOT_FOUND) {
-        SkBitmap* cachedBitmap = new SkBitmap(bitmapResource);
-        index = mBitmapCache.add(bitmapKey, cachedBitmap);
-        return cachedBitmap;
-    }
-
-    mBitmapCache.keyAt(index).mRefCount++;
-    return mBitmapCache.valueAt(index);
-}
-
 void ResourceCache::incrementRefcount(void* resource, ResourceType resourceType) {
     Mutex::Autolock _l(mLock);
     incrementRefcountLocked(resource, resourceType);
@@ -98,11 +83,6 @@
     decrementRefcountLocked(resource);
 }
 
-void ResourceCache::decrementRefcount(const SkBitmap* bitmapResource) {
-    Mutex::Autolock _l(mLock);
-    decrementRefcountLocked(bitmapResource);
-}
-
 void ResourceCache::decrementRefcount(const Res_png_9patch* patchResource) {
     decrementRefcount((void*) patchResource);
 }
@@ -120,23 +100,6 @@
     }
 }
 
-void ResourceCache::decrementRefcountLocked(const SkBitmap* bitmapResource) {
-    BitmapKey bitmapKey(*bitmapResource);
-    ssize_t index = mBitmapCache.indexOfKey(bitmapKey);
-
-    LOG_ALWAYS_FATAL_IF(index == NAME_NOT_FOUND,
-                    "Decrementing the reference of an untracked Bitmap");
-
-    const BitmapKey& cacheEntry = mBitmapCache.keyAt(index);
-    if (cacheEntry.mRefCount == 1) {
-        // delete the bitmap and remove it from the cache
-        delete mBitmapCache.valueAt(index);
-        mBitmapCache.removeItemsAt(index);
-    } else {
-        cacheEntry.mRefCount--;
-    }
-}
-
 void ResourceCache::decrementRefcountLocked(const Res_png_9patch* patchResource) {
     decrementRefcountLocked((void*) patchResource);
 }
@@ -190,38 +153,5 @@
     delete ref;
 }
 
-///////////////////////////////////////////////////////////////////////////////
-// Bitmap Key
-///////////////////////////////////////////////////////////////////////////////
-
-void BitmapKey::operator=(const BitmapKey& other) {
-    this->mRefCount = other.mRefCount;
-    this->mBitmapDimensions = other.mBitmapDimensions;
-    this->mPixelRefOrigin = other.mPixelRefOrigin;
-    this->mPixelRefStableID = other.mPixelRefStableID;
-}
-
-bool BitmapKey::operator==(const BitmapKey& other) const {
-    return mPixelRefStableID == other.mPixelRefStableID &&
-           mPixelRefOrigin == other.mPixelRefOrigin &&
-           mBitmapDimensions == other.mBitmapDimensions;
-}
-
-bool BitmapKey::operator<(const BitmapKey& other) const {
-    if (mPixelRefStableID != other.mPixelRefStableID) {
-        return mPixelRefStableID < other.mPixelRefStableID;
-    }
-    if (mPixelRefOrigin.x() != other.mPixelRefOrigin.x()) {
-        return mPixelRefOrigin.x() < other.mPixelRefOrigin.x();
-    }
-    if (mPixelRefOrigin.y() != other.mPixelRefOrigin.y()) {
-        return mPixelRefOrigin.y() < other.mPixelRefOrigin.y();
-    }
-    if (mBitmapDimensions.width() != other.mBitmapDimensions.width()) {
-        return mBitmapDimensions.width() < other.mBitmapDimensions.width();
-    }
-    return mBitmapDimensions.height() < other.mBitmapDimensions.height();
-}
-
 }; // namespace uirenderer
 }; // namespace android
diff --git a/libs/hwui/ResourceCache.h b/libs/hwui/ResourceCache.h
index 6c483fa..4583c8d 100644
--- a/libs/hwui/ResourceCache.h
+++ b/libs/hwui/ResourceCache.h
@@ -51,37 +51,6 @@
     ResourceType resourceType;
 };
 
-class BitmapKey {
-public:
-    BitmapKey(const SkBitmap& bitmap)
-        : mRefCount(1)
-        , mBitmapDimensions(bitmap.dimensions())
-        , mPixelRefOrigin(bitmap.pixelRefOrigin())
-        , mPixelRefStableID(bitmap.pixelRef()->getStableID()) { }
-
-    void operator=(const BitmapKey& other);
-    bool operator==(const BitmapKey& other) const;
-    bool operator<(const BitmapKey& other) const;
-
-private:
-    // This constructor is only used by the KeyedVector implementation
-    BitmapKey()
-        : mRefCount(-1)
-        , mBitmapDimensions(SkISize::Make(0,0))
-        , mPixelRefOrigin(SkIPoint::Make(0,0))
-        , mPixelRefStableID(0) { }
-
-    // reference count of all HWUI object using this bitmap
-    mutable int mRefCount;
-
-    SkISize mBitmapDimensions;
-    SkIPoint mPixelRefOrigin;
-    uint32_t mPixelRefStableID;
-
-    friend class ResourceCache;
-    friend struct android::key_value_pair_t<BitmapKey, SkBitmap*>;
-};
-
 class ANDROID_API ResourceCache: public Singleton<ResourceCache> {
     ResourceCache();
     ~ResourceCache();
@@ -97,18 +66,10 @@
     void lock();
     void unlock();
 
-    /**
-     * The cache stores a copy of the provided resource or refs an existing resource
-     * if the bitmap has previously been inserted and returns the cached copy.
-     */
-    const SkBitmap* insert(const SkBitmap& resource);
-
     void incrementRefcount(const Res_png_9patch* resource);
 
-    void decrementRefcount(const SkBitmap* resource);
     void decrementRefcount(const Res_png_9patch* resource);
 
-    void decrementRefcountLocked(const SkBitmap* resource);
     void decrementRefcountLocked(const Res_png_9patch* resource);
 
     void destructor(Res_png_9patch* resource);
@@ -134,7 +95,6 @@
     mutable Mutex mLock;
 
     KeyedVector<const void*, ResourceReference*>* mCache;
-    KeyedVector<BitmapKey, SkBitmap*> mBitmapCache;
 };
 
 }; // namespace uirenderer
diff --git a/libs/hwui/ShadowTessellator.cpp b/libs/hwui/ShadowTessellator.cpp
index 30d3f41..fb28531 100644
--- a/libs/hwui/ShadowTessellator.cpp
+++ b/libs/hwui/ShadowTessellator.cpp
@@ -20,11 +20,13 @@
 #include <math.h>
 #include <utils/Log.h>
 #include <utils/Trace.h>
+#include <utils/Vector.h>
 
 #include "AmbientShadow.h"
-#include "Caches.h"
+#include "Properties.h"
 #include "ShadowTessellator.h"
 #include "SpotShadow.h"
+#include "Vector.h"
 
 namespace android {
 namespace uirenderer {
@@ -40,9 +42,8 @@
     float heightFactor = 1.0f / 128;
     const float geomFactor = 64;
 
-    Caches& caches = Caches::getInstance();
-    if (CC_UNLIKELY(caches.propertyAmbientRatio > 0.0f)) {
-        heightFactor *= caches.propertyAmbientRatio;
+    if (CC_UNLIKELY(Properties::overrideAmbientRatio > 0.0f)) {
+        heightFactor *= Properties::overrideAmbientRatio;
     }
 
     Rect ambientShadowBounds(casterBounds);
@@ -66,14 +67,12 @@
         const Rect& casterBounds, const Rect& localClip, VertexBuffer& shadowVertexBuffer) {
     ATRACE_CALL();
 
-    Caches& caches = Caches::getInstance();
-
     Vector3 adjustedLightCenter(lightCenter);
-    if (CC_UNLIKELY(caches.propertyLightPosY > 0)) {
-        adjustedLightCenter.y = - caches.propertyLightPosY; // negated since this shifts up
+    if (CC_UNLIKELY(Properties::overrideLightPosY > 0)) {
+        adjustedLightCenter.y = - Properties::overrideLightPosY; // negated since this shifts up
     }
-    if (CC_UNLIKELY(caches.propertyLightPosZ > 0)) {
-        adjustedLightCenter.z = caches.propertyLightPosZ;
+    if (CC_UNLIKELY(Properties::overrideLightPosZ > 0)) {
+        adjustedLightCenter.z = Properties::overrideLightPosZ;
     }
 
 #if DEBUG_SHADOW
@@ -87,8 +86,8 @@
     reverseReceiverTransform.loadInverse(receiverTransform);
     reverseReceiverTransform.mapPoint3d(adjustedLightCenter);
 
-    if (CC_UNLIKELY(caches.propertyLightRadius > 0)) {
-        lightRadius = caches.propertyLightRadius;
+    if (CC_UNLIKELY(Properties::overrideLightRadius > 0)) {
+        lightRadius = Properties::overrideLightRadius;
     }
 
     // Now light and caster are both in local space, we will check whether
diff --git a/libs/hwui/TessellationCache.cpp b/libs/hwui/TessellationCache.cpp
index 7edb9fb..fc173f7 100644
--- a/libs/hwui/TessellationCache.cpp
+++ b/libs/hwui/TessellationCache.cpp
@@ -311,7 +311,7 @@
 
     mCache.setOnEntryRemovedListener(&mBufferRemovedListener);
     mShadowCache.setOnEntryRemovedListener(&mBufferPairRemovedListener);
-    mDebugEnabled = readDebugLevel() & kDebugCaches;
+    mDebugEnabled = Properties::debugLevel & kDebugCaches;
 }
 
 TessellationCache::~TessellationCache() {
diff --git a/libs/hwui/TextDropShadowCache.cpp b/libs/hwui/TextDropShadowCache.cpp
index c2e88f3..8b1d4cb 100644
--- a/libs/hwui/TextDropShadowCache.cpp
+++ b/libs/hwui/TextDropShadowCache.cpp
@@ -123,7 +123,7 @@
 
 void TextDropShadowCache::init() {
     mCache.setOnEntryRemovedListener(this);
-    mDebugEnabled = readDebugLevel() & kDebugMoreCaches;
+    mDebugEnabled = Properties::debugLevel & kDebugMoreCaches;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index b911a0f..e59688c 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -66,7 +66,7 @@
     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize);
     INIT_LOGD("    Maximum texture dimension is %d pixels", mMaxTextureSize);
 
-    mDebugEnabled = readDebugLevel() & kDebugCaches;
+    mDebugEnabled = Properties::debugLevel & kDebugCaches;
 }
 
 TextureCache::~TextureCache() {
diff --git a/libs/hwui/renderstate/RenderState.cpp b/libs/hwui/renderstate/RenderState.cpp
index 7b44d6d..e54fa5a 100644
--- a/libs/hwui/renderstate/RenderState.cpp
+++ b/libs/hwui/renderstate/RenderState.cpp
@@ -154,7 +154,7 @@
 }
 
 void RenderState::debugOverdraw(bool enable, bool clear) {
-    if (mCaches->debugOverdraw && mFramebuffer == 0) {
+    if (Properties::debugOverdraw && mFramebuffer == 0) {
         if (clear) {
             scissor().setEnabled(false);
             stencil().clear();
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 7c04f40..17e47b9 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -112,9 +112,9 @@
 CREATE_BRIDGE1(loadSystemProperties, CanvasContext* context) {
     bool needsRedraw = false;
     if (Caches::hasInstance()) {
-        needsRedraw = Caches::getInstance().initProperties();
+        needsRedraw = Properties::load();
     }
-    if (args->context->profiler().loadSystemProperties()) {
+    if (args->context->profiler().consumeProperties()) {
         needsRedraw = true;
     }
     return (void*) needsRedraw;
@@ -135,7 +135,7 @@
     SETUP_TASK(setName);
     args->context = mContext;
     args->name = name;
-    postAndWait(task);
+    postAndWait(task); // block since name/value pointers owned by caller
 }
 
 CREATE_BRIDGE2(initialize, CanvasContext* context, ANativeWindow* window) {
@@ -331,7 +331,7 @@
     post(task);
 }
 
-CREATE_BRIDGE2(timMemory, RenderThread* thread, int level) {
+CREATE_BRIDGE2(trimMemory, RenderThread* thread, int level) {
     CanvasContext::trimMemory(*args->thread, args->level);
     return nullptr;
 }
@@ -340,13 +340,25 @@
     // Avoid creating a RenderThread to do a trimMemory.
     if (RenderThread::hasInstance()) {
         RenderThread& thread = RenderThread::getInstance();
-        SETUP_TASK(timMemory);
+        SETUP_TASK(trimMemory);
         args->thread = &thread;
         args->level = level;
         thread.queue(task);
     }
 }
 
+CREATE_BRIDGE2(overrideProperty, const char* name, const char* value) {
+    Properties::overrideProperty(args->name, args->value);
+    return nullptr;
+}
+
+void RenderProxy::overrideProperty(const char* name, const char* value) {
+    SETUP_TASK(overrideProperty);
+    args->name = name;
+    args->value = value;
+    staticPostAndWait(task); // expensive, but block here since name/value pointers owned by caller
+}
+
 CREATE_BRIDGE0(fence) {
     // Intentionally empty
     return nullptr;
@@ -383,8 +395,10 @@
     mRenderThread.queueAtFront(task);
 }
 
-CREATE_BRIDGE3(dumpProfileInfo, CanvasContext* context, int fd, int dumpFlags) {
+CREATE_BRIDGE4(dumpProfileInfo, CanvasContext* context, RenderThread* thread,
+        int fd, int dumpFlags) {
     args->context->profiler().dumpData(args->fd);
+    args->thread->jankTracker().dump(args->fd);
     if (args->dumpFlags & DumpFlags::kFrameStats) {
         args->context->dumpFrames(args->fd);
     }
@@ -397,11 +411,23 @@
 void RenderProxy::dumpProfileInfo(int fd, int dumpFlags) {
     SETUP_TASK(dumpProfileInfo);
     args->context = mContext;
+    args->thread = &mRenderThread;
     args->fd = fd;
     args->dumpFlags = dumpFlags;
     postAndWait(task);
 }
 
+CREATE_BRIDGE1(resetProfileInfo, CanvasContext* context) {
+    args->context->resetFrameStats();
+    return nullptr;
+}
+
+void RenderProxy::resetProfileInfo() {
+    SETUP_TASK(resetProfileInfo);
+    args->context = mContext;
+    postAndWait(task);
+}
+
 CREATE_BRIDGE2(dumpGraphicsMemory, int fd, RenderThread* thread) {
     args->thread->jankTracker().dump(args->fd);
 
diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h
index cc475fa..31456cd 100644
--- a/libs/hwui/renderthread/RenderProxy.h
+++ b/libs/hwui/renderthread/RenderProxy.h
@@ -90,12 +90,15 @@
 
     ANDROID_API void destroyHardwareResources();
     ANDROID_API static void trimMemory(int level);
+    ANDROID_API static void overrideProperty(const char* name, const char* value);
 
     ANDROID_API void fence();
     ANDROID_API void stopDrawing();
     ANDROID_API void notifyFramePending();
 
     ANDROID_API void dumpProfileInfo(int fd, int dumpFlags);
+    // Not exported, only used for testing
+    void resetProfileInfo();
     ANDROID_API static void dumpGraphicsMemory(int fd);
 
     ANDROID_API void setTextureAtlas(const sp<GraphicBuffer>& buffer, int64_t* map, size_t size);
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index 3ac2976..64075f1 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -144,6 +144,7 @@
         , mFrameCallbackTask(nullptr)
         , mRenderState(nullptr)
         , mEglManager(nullptr) {
+    Properties::load();
     mFrameCallbackTask = new DispatchFrameCallbacks(this);
     mLooper = new Looper(false);
     run("RenderThread");
diff --git a/libs/hwui/tests/TestContext.cpp b/libs/hwui/tests/TestContext.cpp
index 542bbae..3687a50 100644
--- a/libs/hwui/tests/TestContext.cpp
+++ b/libs/hwui/tests/TestContext.cpp
@@ -57,6 +57,10 @@
 }
 
 void TestContext::waitForVsync() {
+#if HWUI_NULL_GPU
+    return;
+#endif
+
     // Request vsync
     mDisplayEventReceiver.requestNextVsync();
 
@@ -71,4 +75,3 @@
 } // namespace test
 } // namespace uirenderer
 } // namespace android
-
diff --git a/libs/hwui/tests/how_to_run.txt b/libs/hwui/tests/how_to_run.txt
new file mode 100644
index 0000000..686cd78
--- /dev/null
+++ b/libs/hwui/tests/how_to_run.txt
@@ -0,0 +1,17 @@
+mmm -j8 frameworks/base/libs/hwui/tests/ &&
+    adb push $OUT/data/local/tmp/hwuitest /data/local/tmp/hwuitest &&
+    adb shell /data/local/tmp/hwuitest
+
+
+Command arguments:
+hwuitest [testname]
+
+Default test is 'shadowgrid'
+
+List of tests:
+
+shadowgrid: creates a grid of rounded rects that cast shadows, high CPU & GPU load
+
+rectgrid: creates a grid of 1x1 rects
+
+oval: draws 1 oval
diff --git a/libs/hwui/tests/main.cpp b/libs/hwui/tests/main.cpp
index 62782af..2f79c58 100644
--- a/libs/hwui/tests/main.cpp
+++ b/libs/hwui/tests/main.cpp
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-#include <stdio.h>
-
 #include <cutils/log.h>
 #include <gui/Surface.h>
 #include <ui/PixelFormat.h>
@@ -28,6 +26,9 @@
 
 #include "TestContext.h"
 
+#include <stdio.h>
+#include <unistd.h>
+
 using namespace android;
 using namespace android::uirenderer;
 using namespace android::uirenderer::renderthread;
@@ -57,13 +58,20 @@
 class TreeContentAnimation {
 public:
     virtual ~TreeContentAnimation() {}
-    virtual int getFrameCount() { return 150; }
+    int frameCount = 150;
+    virtual int getFrameCount() { return frameCount; }
+    virtual void setFrameCount(int fc) {
+        if (fc > 0) {
+            frameCount = fc;
+        }
+    }
     virtual void createContent(int width, int height, DisplayListCanvas* renderer) = 0;
     virtual void doFrame(int frameNr) = 0;
 
     template <class T>
-    static void run() {
+    static void run(int frameCount) {
         T animation;
+        animation.setFrameCount(frameCount);
 
         TestContext testContext;
 
@@ -93,16 +101,27 @@
         animation.createContent(width, height, renderer);
         endRecording(renderer, rootNode);
 
-        for (int i = 0; i < animation.getFrameCount(); i++) {
-#if !HWUI_NULL_GPU
+        // Do a few cold runs then reset the stats so that the caches are all hot
+        for (int i = 0; i < 3; i++) {
             testContext.waitForVsync();
-#endif
+            proxy->syncAndDrawFrame();
+        }
+        proxy->resetProfileInfo();
 
+        for (int i = 0; i < animation.getFrameCount(); i++) {
+            testContext.waitForVsync();
+
+            // workaround b/20853441
+            proxy->fence();
             ATRACE_NAME("UI-Draw Frame");
+            nsecs_t vsync = systemTime(CLOCK_MONOTONIC);
+            UiFrameInfoBuilder(proxy->frameInfo())
+                    .setVsync(vsync, vsync);
             animation.doFrame(i);
             proxy->syncAndDrawFrame();
         }
 
+        proxy->dumpProfileInfo(STDOUT_FILENO, 0);
         rootNode->decStrong(nullptr);
     }
 };
@@ -125,9 +144,10 @@
         renderer->insertReorderBarrier(false);
     }
     void doFrame(int frameNr) override {
+        int curFrame = frameNr % 150;
         for (size_t ci = 0; ci < cards.size(); ci++) {
-            cards[ci]->mutateStagingProperties().setTranslationX(frameNr);
-            cards[ci]->mutateStagingProperties().setTranslationY(frameNr);
+            cards[ci]->mutateStagingProperties().setTranslationX(curFrame);
+            cards[ci]->mutateStagingProperties().setTranslationY(curFrame);
             cards[ci]->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
         }
     }
@@ -147,6 +167,47 @@
     }
 };
 
+class ShadowGrid2Animation : public TreeContentAnimation {
+public:
+    std::vector< sp<RenderNode> > cards;
+    void createContent(int width, int height, DisplayListCanvas* renderer) override {
+        renderer->drawColor(0xFFFFFFFF, SkXfermode::kSrcOver_Mode);
+        renderer->insertReorderBarrier(true);
+
+        for (int x = dp(8); x < (width - dp(58)); x += dp(58)) {
+            for (int y = dp(8); y < (height - dp(58)); y += dp(58)) {
+                sp<RenderNode> card = createCard(x, y, dp(50), dp(50));
+                renderer->drawRenderNode(card.get());
+                cards.push_back(card);
+            }
+        }
+
+        renderer->insertReorderBarrier(false);
+    }
+    void doFrame(int frameNr) override {
+        int curFrame = frameNr % 150;
+        for (size_t ci = 0; ci < cards.size(); ci++) {
+            cards[ci]->mutateStagingProperties().setTranslationX(curFrame);
+            cards[ci]->mutateStagingProperties().setTranslationY(curFrame);
+            cards[ci]->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
+        }
+    }
+private:
+    sp<RenderNode> createCard(int x, int y, int width, int height) {
+        sp<RenderNode> node = new RenderNode();
+        node->mutateStagingProperties().setLeftTopRightBottom(x, y, x + width, y + height);
+        node->mutateStagingProperties().setElevation(dp(16));
+        node->mutateStagingProperties().mutableOutline().setRoundRect(0, 0, width, height, dp(6), 1);
+        node->mutateStagingProperties().mutableOutline().setShouldClip(true);
+        node->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y | RenderNode::Z);
+
+        DisplayListCanvas* renderer = startRecording(node.get());
+        renderer->drawColor(0xFFEEEEEE, SkXfermode::kSrcOver_Mode);
+        endRecording(renderer, node.get());
+        return node;
+    }
+};
+
 class RectGridAnimation : public TreeContentAnimation {
 public:
     sp<RenderNode> card;
@@ -160,8 +221,9 @@
         renderer->insertReorderBarrier(false);
     }
     void doFrame(int frameNr) override {
-        card->mutateStagingProperties().setTranslationX(frameNr);
-        card->mutateStagingProperties().setTranslationY(frameNr);
+        int curFrame = frameNr % 150;
+        card->mutateStagingProperties().setTranslationX(curFrame);
+        card->mutateStagingProperties().setTranslationY(curFrame);
         card->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
     }
 private:
@@ -208,8 +270,9 @@
     }
 
     void doFrame(int frameNr) override {
-        card->mutateStagingProperties().setTranslationX(frameNr);
-        card->mutateStagingProperties().setTranslationY(frameNr);
+        int curFrame = frameNr % 150;
+        card->mutateStagingProperties().setTranslationX(curFrame);
+        card->mutateStagingProperties().setTranslationY(curFrame);
         card->setPropertyFieldsDirty(RenderNode::X | RenderNode::Y);
     }
 private:
@@ -236,10 +299,11 @@
     }
 };
 
-typedef void (*testProc)();
+typedef void (*testProc)(int);
 
 std::map<const char*, testProc, cstr_cmp> gTestMap {
     {"shadowgrid", TreeContentAnimation::run<ShadowGridAnimation>},
+    {"shadowgrid2", TreeContentAnimation::run<ShadowGrid2Animation>},
     {"rectgrid", TreeContentAnimation::run<RectGridAnimation> },
     {"oval", TreeContentAnimation::run<OvalAnimation> },
 };
@@ -251,7 +315,28 @@
         printf("Error: couldn't find test %s\n", testName);
         return 1;
     }
-    proc();
+    int loopCount = 1;
+    if (argc > 2) {
+        loopCount = atoi(argv[2]);
+        if (!loopCount) {
+            printf("Invalid loop count!\n");
+            return 1;
+        }
+    }
+    int frameCount = 150;
+    if (argc > 3) {
+        frameCount = atoi(argv[3]);
+        if (frameCount < 1) {
+            printf("Invalid frame count!\n");
+            return 1;
+        }
+    }
+    if (loopCount < 0) {
+        loopCount = INT_MAX;
+    }
+    for (int i = 0; i < loopCount; i++) {
+        proc(frameCount);
+    }
     printf("Success!\n");
     return 0;
 }
diff --git a/libs/hwui/unit_tests/Android.mk b/libs/hwui/unit_tests/Android.mk
index 51601b0..917e646 100644
--- a/libs/hwui/unit_tests/Android.mk
+++ b/libs/hwui/unit_tests/Android.mk
@@ -27,6 +27,7 @@
 
 LOCAL_SRC_FILES += \
     unit_tests/ClipAreaTests.cpp \
+    unit_tests/DamageAccumulatorTests.cpp \
     unit_tests/LinearAllocatorTests.cpp \
     unit_tests/main.cpp
 
diff --git a/libs/hwui/unit_tests/DamageAccumulatorTests.cpp b/libs/hwui/unit_tests/DamageAccumulatorTests.cpp
new file mode 100644
index 0000000..c8d6004
--- /dev/null
+++ b/libs/hwui/unit_tests/DamageAccumulatorTests.cpp
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+#include <gtest/gtest.h>
+
+#include <DamageAccumulator.h>
+#include <Matrix.h>
+#include <utils/LinearAllocator.h>
+
+#include <SkRect.h>
+
+using namespace android;
+using namespace android::uirenderer;
+
+// Test that push & pop are propegating the dirty rect
+// There is no transformation of the dirty rect, the input is the same
+// as the output.
+TEST(DamageAccumulator, identity) {
+    DamageAccumulator da;
+    Matrix4 identity;
+    SkRect curDirty;
+    identity.loadIdentity();
+    da.pushTransform(&identity);
+    da.dirty(50, 50, 100, 100);
+    da.pushTransform(&identity);
+    da.peekAtDirty(&curDirty);
+    ASSERT_EQ(SkRect(), curDirty);
+    da.popTransform();
+    da.peekAtDirty(&curDirty);
+    ASSERT_EQ(SkRect::MakeLTRB(50, 50, 100, 100), curDirty);
+    da.popTransform();
+    da.finish(&curDirty);
+    ASSERT_EQ(SkRect::MakeLTRB(50, 50, 100, 100), curDirty);
+}
+
+// Test that transformation is happening at the correct levels via
+// peekAtDirty & popTransform. Just uses a simple translate to test this
+TEST(DamageAccumulator, translate) {
+    DamageAccumulator da;
+    Matrix4 translate;
+    SkRect curDirty;
+    translate.loadTranslate(25, 25, 0);
+    da.pushTransform(&translate);
+    da.dirty(50, 50, 100, 100);
+    da.peekAtDirty(&curDirty);
+    ASSERT_EQ(SkRect::MakeLTRB(50, 50, 100, 100), curDirty);
+    da.popTransform();
+    da.finish(&curDirty);
+    ASSERT_EQ(SkRect::MakeLTRB(75, 75, 125, 125), curDirty);
+}
+
+// Test that dirty rectangles are being unioned across "siblings
+TEST(DamageAccumulator, union) {
+    DamageAccumulator da;
+    Matrix4 identity;
+    SkRect curDirty;
+    identity.loadIdentity();
+    da.pushTransform(&identity);
+    da.pushTransform(&identity);
+    da.dirty(50, 50, 100, 100);
+    da.popTransform();
+    da.pushTransform(&identity);
+    da.dirty(150, 50, 200, 125);
+    da.popTransform();
+    da.popTransform();
+    da.finish(&curDirty);
+    ASSERT_EQ(SkRect::MakeLTRB(50, 50, 200, 125), curDirty);
+}
diff --git a/media/java/android/media/AudioDevicePort.java b/media/java/android/media/AudioDevicePort.java
index 82da27d..c078260 100644
--- a/media/java/android/media/AudioDevicePort.java
+++ b/media/java/android/media/AudioDevicePort.java
@@ -83,6 +83,16 @@
         if (o == null || !(o instanceof AudioDevicePort)) {
             return false;
         }
+        AudioDevicePort other = (AudioDevicePort)o;
+        if (mType != other.type()) {
+            return false;
+        }
+        if (mAddress == null && other.address() != null) {
+            return false;
+        }
+        if (!mAddress.equals(other.address())) {
+            return false;
+        }
         return super.equals(o);
     }
 
diff --git a/media/java/android/media/AudioDevicesManager.java b/media/java/android/media/AudioDevicesManager.java
index ca238d7..8b83c17 100644
--- a/media/java/android/media/AudioDevicesManager.java
+++ b/media/java/android/media/AudioDevicesManager.java
@@ -96,7 +96,7 @@
      * @param flags A set of bitflags specifying the criteria to test.
      * @see {@link LIST_DEVICES_OUTPUTS} and {@link LIST_DEVICES_INPUTS}
      **/
-    private boolean checkFlags(AudioDevicePort port, int flags) {
+    private static boolean checkFlags(AudioDevicePort port, int flags) {
         return port.role() == AudioPort.ROLE_SINK && (flags & LIST_DEVICES_OUTPUTS) != 0 ||
                port.role() == AudioPort.ROLE_SOURCE && (flags & LIST_DEVICES_INPUTS) != 0;
     }
@@ -110,8 +110,21 @@
      * @return A (possibly zero-length) array of AudioDeviceInfo objects.
      */
     public AudioDeviceInfo[] listDevices(int flags) {
+        return listDevicesStatic(flags);
+    }
+
+    /**
+     * Generates a list of AudioDeviceInfo objects corresponding to the audio devices currently
+     * connected to the system and meeting the criteria specified in the <code>flags</code>
+     * parameter.
+     * @param flags A set of bitflags specifying the criteria to test.
+     * @see {@link LIST_DEVICES_OUTPUTS}, {@link LIST_DEVICES_INPUTS} and {@link LIST_DEVICES_ALL}.
+     * @return A (possibly zero-length) array of AudioDeviceInfo objects.
+     * @hide
+     */
+    public static AudioDeviceInfo[] listDevicesStatic(int flags) {
         ArrayList<AudioDevicePort> ports = new ArrayList<AudioDevicePort>();
-        int status = mAudioManager.listAudioDevicePorts(ports);
+        int status = AudioManager.listAudioDevicePorts(ports);
         if (status != AudioManager.SUCCESS) {
             // fail and bail!
             return new AudioDeviceInfo[0];
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 6eaf812..19900d0 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -3401,7 +3401,7 @@
      * @param ports An AudioPort ArrayList where the list will be returned.
      * @hide
      */
-    public int listAudioPorts(ArrayList<AudioPort> ports) {
+    public static int listAudioPorts(ArrayList<AudioPort> ports) {
         return updateAudioPortCache(ports, null);
     }
 
@@ -3410,7 +3410,7 @@
      * @see listAudioPorts(ArrayList<AudioPort>)
      * @hide
      */
-    public int listAudioDevicePorts(ArrayList<AudioDevicePort> devices) {
+    public static int listAudioDevicePorts(ArrayList<AudioDevicePort> devices) {
         ArrayList<AudioPort> ports = new ArrayList<AudioPort>();
         int status = updateAudioPortCache(ports, null);
         if (status == SUCCESS) {
@@ -3447,7 +3447,7 @@
      *         patch[0] contains the newly created patch
      * @hide
      */
-    public int createAudioPatch(AudioPatch[] patch,
+    public static int createAudioPatch(AudioPatch[] patch,
                                  AudioPortConfig[] sources,
                                  AudioPortConfig[] sinks) {
         return AudioSystem.createAudioPatch(patch, sources, sinks);
@@ -3464,7 +3464,7 @@
      *         - {@link #ERROR} if patch cannot be released for any other reason.
      * @hide
      */
-    public int releaseAudioPatch(AudioPatch patch) {
+    public static int releaseAudioPatch(AudioPatch patch) {
         return AudioSystem.releaseAudioPatch(patch);
     }
 
@@ -3473,7 +3473,7 @@
      * @param patches An AudioPatch array where the list will be returned.
      * @hide
      */
-    public int listAudioPatches(ArrayList<AudioPatch> patches) {
+    public static int listAudioPatches(ArrayList<AudioPatch> patches) {
         return updateAudioPortCache(null, patches);
     }
 
@@ -3482,7 +3482,7 @@
      * AudioGain.buildConfig()
      * @hide
      */
-    public int setAudioPortGain(AudioPort port, AudioGainConfig gain) {
+    public static int setAudioPortGain(AudioPort port, AudioGainConfig gain) {
         if (port == null || gain == null) {
             return ERROR_BAD_VALUE;
         }
diff --git a/media/java/android/media/AudioMixPort.java b/media/java/android/media/AudioMixPort.java
index 9fac8d1..ab55c8d 100644
--- a/media/java/android/media/AudioMixPort.java
+++ b/media/java/android/media/AudioMixPort.java
@@ -20,16 +20,21 @@
  * The AudioMixPort is a specialized type of AudioPort
  * describing an audio mix or stream at an input or output stream of the audio
  * framework.
+ * In addition to base audio port attributes, the mix descriptor contains:
+ * - the unique audio I/O handle assigned by AudioFlinger to this mix.
  * @see AudioPort
  * @hide
  */
 
 public class AudioMixPort extends AudioPort {
 
-    AudioMixPort(AudioHandle handle, int role, String deviceName,
+    private final int mIoHandle;
+
+    AudioMixPort(AudioHandle handle, int ioHandle, int role, String deviceName,
             int[] samplingRates, int[] channelMasks,
             int[] formats, AudioGain[] gains) {
         super(handle, role, deviceName, samplingRates, channelMasks, formats, gains);
+        mIoHandle = ioHandle;
     }
 
     /**
@@ -41,11 +46,23 @@
         return new AudioMixPortConfig(this, samplingRate, channelMask, format, gain);
     }
 
+    /**
+     * Get the device type (e.g AudioManager.DEVICE_OUT_SPEAKER)
+     */
+    public int ioHandle() {
+        return mIoHandle;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (o == null || !(o instanceof AudioMixPort)) {
             return false;
         }
+        AudioMixPort other = (AudioMixPort)o;
+        if (mIoHandle != other.ioHandle()) {
+            return false;
+        }
+
         return super.equals(o);
     }
 
diff --git a/media/java/android/media/AudioPort.java b/media/java/android/media/AudioPort.java
index 88e784a..7328d7a 100644
--- a/media/java/android/media/AudioPort.java
+++ b/media/java/android/media/AudioPort.java
@@ -93,6 +93,14 @@
     }
 
     /**
+     * Get the system unique device ID.
+     */
+    public int id() {
+        return mHandle.id();
+    }
+
+
+    /**
      * Get the audio port role
      */
     public int role() {
diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java
index 472da02..11671d8 100644
--- a/media/java/android/media/AudioRecord.java
+++ b/media/java/android/media/AudioRecord.java
@@ -116,11 +116,6 @@
      */
     private static final int NATIVE_EVENT_NEW_POS = 3;
 
-    /**
-     * Event id denotes when the routing changes.
-     */
-    private final static int NATIVE_EVENT_ROUTING_CHANGE = 1000;
-
     private final static String TAG = "android.media.AudioRecord";
 
     /** @hide */
@@ -161,6 +156,12 @@
     @SuppressWarnings("unused")
     private long mNativeCallbackCookie;
 
+    /**
+     * Accessed by native methods: provides access to the JNIDeviceCallback instance.
+     */
+    @SuppressWarnings("unused")
+    private long mNativeDeviceCallback;
+
 
     //---------------------------------------------------------
     // Member variables
@@ -1205,6 +1206,17 @@
      * Returns an {@link AudioDeviceInfo} identifying the current routing of this AudioRecord.
      */
     public AudioDeviceInfo getRoutedDevice() {
+        int deviceId = native_getRoutedDeviceId();
+        if (deviceId == 0) {
+            return null;
+        }
+        AudioDeviceInfo[] devices =
+                AudioDevicesManager.listDevicesStatic(AudioDevicesManager.LIST_DEVICES_INPUTS);
+        for (int i = 0; i < devices.length; i++) {
+            if (devices[i].getId() == deviceId) {
+                return devices[i];
+            }
+        }
         return null;
     }
 
@@ -1224,6 +1236,9 @@
             android.os.Handler handler) {
         if (listener != null && !mRoutingChangeListeners.containsKey(listener)) {
             synchronized (mRoutingChangeListeners) {
+                if (mRoutingChangeListeners.size() == 0) {
+                    native_enableDeviceCallback();
+                }
                 mRoutingChangeListeners.put(
                     listener, new NativeRoutingEventHandlerDelegate(this, listener, handler));
             }
@@ -1238,6 +1253,9 @@
         synchronized (mRoutingChangeListeners) {
             if (mRoutingChangeListeners.containsKey(listener)) {
                 mRoutingChangeListeners.remove(listener);
+                if (mRoutingChangeListeners.size() == 0) {
+                    native_disableDeviceCallback();
+                }
             }
         }
     }
@@ -1271,7 +1289,7 @@
                             return;
                         }
                         switch(msg.what) {
-                        case NATIVE_EVENT_ROUTING_CHANGE:
+                        case AudioSystem.NATIVE_EVENT_ROUTING_CHANGE:
                             if (listener != null) {
                                 listener.onAudioRecordRouting(record);
                             }
@@ -1299,10 +1317,11 @@
         synchronized (mRoutingChangeListeners) {
             values = mRoutingChangeListeners.values();
         }
+        AudioManager.resetAudioPortGeneration();
         for(NativeRoutingEventHandlerDelegate delegate : values) {
             Handler handler = delegate.getHandler();
             if (handler != null) {
-                handler.sendEmptyMessage(NATIVE_EVENT_ROUTING_CHANGE);
+                handler.sendEmptyMessage(AudioSystem.NATIVE_EVENT_ROUTING_CHANGE);
             }
         }
     }
@@ -1341,10 +1360,14 @@
             return false;
         }
 
-        mPreferredDevice = deviceInfo;
-        int preferredDeviceId = mPreferredDevice != null ? deviceInfo.getId() : 0;
-
-        return native_setInputDevice(preferredDeviceId);
+        int preferredDeviceId = deviceInfo != null ? deviceInfo.getId() : 0;
+        boolean status = native_setInputDevice(preferredDeviceId);
+        if (status == true) {
+            synchronized (this) {
+                mPreferredDevice = deviceInfo;
+            }
+        }
+        return status;
     }
 
     /**
@@ -1352,7 +1375,9 @@
      * is not guarenteed to correspond to the actual device being used for recording.
      */
     public AudioDeviceInfo getPreferredInputDevice() {
-        return mPreferredDevice;
+        synchronized (this) {
+            return mPreferredDevice;
+        }
     }
 
     //---------------------------------------------------------
@@ -1435,6 +1460,11 @@
             return;
         }
 
+        if (what == AudioSystem.NATIVE_EVENT_ROUTING_CHANGE) {
+            recorder.broadcastRoutingChange();
+            return;
+        }
+
         if (recorder.mEventHandler != null) {
             Message m =
                 recorder.mEventHandler.obtainMessage(what, arg1, arg2, obj);
@@ -1486,7 +1516,9 @@
             int sampleRateInHz, int channelCount, int audioFormat);
 
     private native final boolean native_setInputDevice(int deviceId);
-
+    private native final int native_getRoutedDeviceId();
+    private native final void native_enableDeviceCallback();
+    private native final void native_disableDeviceCallback();
 
     //---------------------------------------------------------
     // Utility methods
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 3dae543..ee12374 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -721,5 +721,11 @@
             (1 << STREAM_RING) |
             (1 << STREAM_NOTIFICATION) |
             (1 << STREAM_SYSTEM);
+
+    /**
+     * Event posted by AudioTrack and AudioRecord JNI (JNIDeviceCallback) when routing changes.
+     * Keep in sync with core/jni/android_media_DeviceCallback.h.
+     */
+    final static int NATIVE_EVENT_ROUTING_CHANGE = 1000;
 }
 
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index cb05cc5..a66a1e5 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -178,12 +178,6 @@
      */
     private static final int NATIVE_EVENT_NEW_POS = 4;
 
-    /**
-     * Event id denotes when the routing changes.
-     */
-    private final static int NATIVE_EVENT_ROUTING_CHANGE = 1000;
-
-
     private final static String TAG = "android.media.AudioTrack";
 
 
@@ -2057,11 +2051,14 @@
         if (deviceInfo != null && !deviceInfo.isSink()) {
             return false;
         }
-
-        mPreferredDevice = deviceInfo;
-        int preferredDeviceId = mPreferredDevice != null ? deviceInfo.getId() : 0;
-
-        return native_setOutputDevice(preferredDeviceId);
+        int preferredDeviceId = deviceInfo != null ? deviceInfo.getId() : 0;
+        boolean status = native_setOutputDevice(preferredDeviceId);
+        if (status == true) {
+            synchronized (this) {
+                mPreferredDevice = deviceInfo;
+            }
+        }
+        return status;
     }
 
     /**
@@ -2069,7 +2066,9 @@
      * is not guaranteed to correspond to the actual device being used for playback.
      */
     public AudioDeviceInfo getPreferredOutputDevice() {
-        return mPreferredDevice;
+        synchronized (this) {
+            return mPreferredDevice;
+        }
     }
 
     //--------------------------------------------------------------------------
@@ -2079,6 +2078,17 @@
      * Returns an {@link AudioDeviceInfo} identifying the current routing of this AudioTrack.
      */
     public AudioDeviceInfo getRoutedDevice() {
+        int deviceId = native_getRoutedDeviceId();
+        if (deviceId == 0) {
+            return null;
+        }
+        AudioDeviceInfo[] devices =
+                AudioDevicesManager.listDevicesStatic(AudioDevicesManager.LIST_DEVICES_OUTPUTS);
+        for (int i = 0; i < devices.length; i++) {
+            if (devices[i].getId() == deviceId) {
+                return devices[i];
+            }
+        }
         return null;
     }
 
@@ -2098,6 +2108,9 @@
             android.os.Handler handler) {
         if (listener != null && !mRoutingChangeListeners.containsKey(listener)) {
             synchronized (mRoutingChangeListeners) {
+                if (mRoutingChangeListeners.size() == 0) {
+                    native_enableDeviceCallback();
+                }
                 mRoutingChangeListeners.put(
                     listener, new NativeRoutingEventHandlerDelegate(this, listener, handler));
             }
@@ -2113,6 +2126,9 @@
             if (mRoutingChangeListeners.containsKey(listener)) {
                 mRoutingChangeListeners.remove(listener);
             }
+            if (mRoutingChangeListeners.size() == 0) {
+                native_disableDeviceCallback();
+            }
         }
     }
 
@@ -2124,10 +2140,11 @@
         synchronized (mRoutingChangeListeners) {
             values = mRoutingChangeListeners.values();
         }
+        AudioManager.resetAudioPortGeneration();
         for(NativeRoutingEventHandlerDelegate delegate : values) {
             Handler handler = delegate.getHandler();
             if (handler != null) {
-                handler.sendEmptyMessage(NATIVE_EVENT_ROUTING_CHANGE);
+                handler.sendEmptyMessage(AudioSystem.NATIVE_EVENT_ROUTING_CHANGE);
             }
         }
     }
@@ -2240,7 +2257,7 @@
                             return;
                         }
                         switch(msg.what) {
-                        case NATIVE_EVENT_ROUTING_CHANGE:
+                        case AudioSystem.NATIVE_EVENT_ROUTING_CHANGE:
                             if (listener != null) {
                                 listener.onAudioTrackRouting(track);
                             }
@@ -2273,6 +2290,10 @@
             return;
         }
 
+        if (what == AudioSystem.NATIVE_EVENT_ROUTING_CHANGE) {
+            track.broadcastRoutingChange();
+            return;
+        }
         NativePositionEventHandlerDelegate delegate = track.mEventHandlerDelegate;
         if (delegate != null) {
             Handler handler = delegate.getHandler();
@@ -2281,7 +2302,6 @@
                 handler.sendMessage(m);
             }
         }
-
     }
 
 
@@ -2362,6 +2382,9 @@
     private native final int native_setAuxEffectSendLevel(float level);
 
     private native final boolean native_setOutputDevice(int deviceId);
+    private native final int native_getRoutedDeviceId();
+    private native final void native_enableDeviceCallback();
+    private native final void native_disableDeviceCallback();
 
     //---------------------------------------------------------
     // Utility methods
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 8220a74..6f7b583 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -918,9 +918,9 @@
         }
 
         /**
-         * This indicates that no key has been set to perform the requested
-         * decrypt operation.  The operation can be retried after adding
-         * a decryption key.
+         * This indicates that the requested key was not found when trying to
+         * perform a decrypt operation.  The operation can be retried after adding
+         * the correct decryption key.
          */
         public static final int ERROR_NO_KEY = 1;
 
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 974c9af..89d419a 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -1733,6 +1733,72 @@
                         maxBlocks, maxBlocksPerSecond,
                         16 /* blockWidth */, 16 /* blockHeight */,
                         1 /* widthAlignment */, 1 /* heightAlignment */);
+            } else if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_MPEG2)) {
+                int maxWidth = 11, maxHeight = 9, maxRate = 15;
+                maxBlocks = 99;
+                maxBlocksPerSecond = 1485;
+                maxBps = 64000;
+                for (CodecProfileLevel profileLevel: profileLevels) {
+                    int MBPS = 0, FS = 0, BR = 0, FR = 0, W = 0, H = 0;
+                    boolean supported = true;
+                    switch (profileLevel.profile) {
+                        case CodecProfileLevel.MPEG2ProfileSimple:
+                            switch (profileLevel.level) {
+                                case CodecProfileLevel.MPEG2LevelML:
+                                    FR = 30; W = 45; H =  36; MBPS =  48600; FS =  1620; BR =  15000; break;
+                                default:
+                                    Log.w(TAG, "Unrecognized profile/level "
+                                            + profileLevel.profile + "/"
+                                            + profileLevel.level + " for " + mime);
+                                    errors |= ERROR_UNRECOGNIZED;
+                            }
+                            break;
+                        case CodecProfileLevel.MPEG2ProfileMain:
+                            switch (profileLevel.level) {
+                                case CodecProfileLevel.MPEG2LevelLL:
+                                    FR = 30; W = 22; H =  18; MBPS =  11880; FS =  396; BR =  4000; break;
+                                case CodecProfileLevel.MPEG2LevelML:
+                                    FR = 30; W = 45; H =  36; MBPS =  48600; FS =  1620; BR =  15000; break;
+                                case CodecProfileLevel.MPEG2LevelH14:
+                                    FR = 60; W = 90; H =  68; MBPS =  367200; FS =  6120; BR = 60000; break;
+                                case CodecProfileLevel.MPEG2LevelHL:
+                                    FR = 60; W = 120; H = 68; MBPS =  489600; FS =  8160; BR = 80000; break;
+                                default:
+                                    Log.w(TAG, "Unrecognized profile/level "
+                                            + profileLevel.profile + "/"
+                                            + profileLevel.level + " for " + mime);
+                                    errors |= ERROR_UNRECOGNIZED;
+                            }
+                            break;
+                        case CodecProfileLevel.MPEG2Profile422:
+                        case CodecProfileLevel.MPEG2ProfileSNR:
+                        case CodecProfileLevel.MPEG2ProfileSpatial:
+                        case CodecProfileLevel.MPEG2ProfileHigh:
+                            Log.i(TAG, "Unsupported profile "
+                                    + profileLevel.profile + " for " + mime);
+                            errors |= ERROR_UNSUPPORTED;
+                            supported = false;
+                            break;
+                        default:
+                            Log.w(TAG, "Unrecognized profile "
+                                    + profileLevel.profile + " for " + mime);
+                            errors |= ERROR_UNRECOGNIZED;
+                    }
+                    if (supported) {
+                        errors &= ~ERROR_NONE_SUPPORTED;
+                    }
+                    maxBlocksPerSecond = Math.max(MBPS, maxBlocksPerSecond);
+                    maxBlocks = Math.max(FS, maxBlocks);
+                    maxBps = Math.max(BR * 1000, maxBps);
+                    maxWidth = Math.max(W, maxWidth);
+                    maxHeight = Math.max(H, maxHeight);
+                    maxRate = Math.max(FR, maxRate);
+                }
+                applyMacroBlockLimits(maxWidth, maxHeight,
+                        maxBlocks, maxBlocksPerSecond,
+                        16 /* blockWidth */, 16 /* blockHeight */,
+                        1 /* widthAlignment */, 1 /* heightAlignment */);
+                mFrameRateRange = mFrameRateRange.intersect(12, maxRate);
             } else if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_MPEG4)) {
                 int maxWidth = 11, maxHeight = 9, maxRate = 15;
                 maxBlocks = 99;
@@ -2343,6 +2409,20 @@
         public static final int MPEG4Level4a     = 0x40;
         public static final int MPEG4Level5      = 0x80;
 
+        // from OMX_VIDEO_MPEG2PROFILETYPE
+        public static final int MPEG2ProfileSimple              = 0x00;
+        public static final int MPEG2ProfileMain                = 0x01;
+        public static final int MPEG2Profile422                 = 0x02;
+        public static final int MPEG2ProfileSNR                 = 0x03;
+        public static final int MPEG2ProfileSpatial             = 0x04;
+        public static final int MPEG2ProfileHigh                = 0x05;
+
+        // from OMX_VIDEO_MPEG2LEVELTYPE
+        public static final int MPEG2LevelLL     = 0x00;
+        public static final int MPEG2LevelML     = 0x01;
+        public static final int MPEG2LevelH14    = 0x02;
+        public static final int MPEG2LevelHL     = 0x03;
+
         // from OMX_AUDIO_AACPROFILETYPE
         public static final int AACObjectMain       = 1;
         public static final int AACObjectLC         = 2;
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 6ec10c7..b3c1b4d 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -2824,6 +2824,13 @@
                         mSubtitleController.selectDefaultTrack();
                     }
                     break;
+                case MEDIA_INFO_BUFFERING_START:
+                case MEDIA_INFO_BUFFERING_END:
+                    TimeProvider timeProvider = mTimeProvider;
+                    if (timeProvider != null) {
+                        timeProvider.onBuffering(msg.arg1 == MEDIA_INFO_BUFFERING_START);
+                    }
+                    break;
                 }
 
                 if (mOnInfoListener != null) {
@@ -3362,6 +3369,7 @@
         private MediaPlayer mPlayer;
         private boolean mPaused = true;
         private boolean mStopped = true;
+        private boolean mBuffering;
         private long mLastReportedTime;
         private long mTimeAdjustment;
         // since we are expecting only a handful listeners per stream, there is
@@ -3455,12 +3463,22 @@
         }
 
         /** @hide */
+        public void onBuffering(boolean buffering) {
+            synchronized (this) {
+                if (DEBUG) Log.d(TAG, "onBuffering: " + buffering);
+                mBuffering = buffering;
+                scheduleNotification(REFRESH_AND_NOTIFY_TIME, 0 /* delay */);
+            }
+        }
+
+        /** @hide */
         public void onStopped() {
             synchronized(this) {
                 if (DEBUG) Log.d(TAG, "onStopped");
                 mPaused = true;
                 mStopped = true;
                 mSeeking = false;
+                mBuffering = false;
                 scheduleNotification(NOTIFY_STOP, 0 /* delay */);
             }
         }
@@ -3481,6 +3499,7 @@
                 synchronized(this) {
                     mStopped = false;
                     mSeeking = true;
+                    mBuffering = false;
                     scheduleNotification(NOTIFY_SEEK, 0 /* delay */);
                 }
             }
@@ -3683,7 +3702,7 @@
                         nanoTime >= mLastNanoTime + MAX_NS_WITHOUT_POSITION_CHECK) {
                     try {
                         mLastTimeUs = mPlayer.getCurrentPosition() * 1000L;
-                        mPaused = !mPlayer.isPlaying();
+                        mPaused = !mPlayer.isPlaying() || mBuffering;
                         if (DEBUG) Log.v(TAG, (mPaused ? "paused" : "playing") + " at " + mLastTimeUs);
                     } catch (IllegalStateException e) {
                         if (mPausing) {
diff --git a/media/java/android/media/midi/MidiDeviceInfo.java b/media/java/android/media/midi/MidiDeviceInfo.java
index 35374ed..57607e9 100644
--- a/media/java/android/media/midi/MidiDeviceInfo.java
+++ b/media/java/android/media/midi/MidiDeviceInfo.java
@@ -298,6 +298,9 @@
 
     @Override
     public String toString() {
+        // This is a hack to force the mProperties Bundle to unparcel so we can
+        // print all the names and values.
+        mProperties.getString(PROPERTY_NAME);
         return ("MidiDeviceInfo[mType=" + mType +
                 ",mInputPortCount=" + mInputPortCount +
                 ",mOutputPortCount=" + mOutputPortCount +
diff --git a/media/java/android/media/midi/MidiDeviceStatus.java b/media/java/android/media/midi/MidiDeviceStatus.java
index 7522dcf..d4abeff 100644
--- a/media/java/android/media/midi/MidiDeviceStatus.java
+++ b/media/java/android/media/midi/MidiDeviceStatus.java
@@ -89,10 +89,9 @@
 
     @Override
     public String toString() {
-        StringBuilder builder = new StringBuilder(mDeviceInfo.toString());
         int inputPortCount = mDeviceInfo.getInputPortCount();
         int outputPortCount = mDeviceInfo.getOutputPortCount();
-        builder.append(" mInputPortOpen=[");
+        StringBuilder builder = new StringBuilder("mInputPortOpen=[");
         for (int i = 0; i < inputPortCount; i++) {
             builder.append(mInputPortOpen[i]);
             if (i < inputPortCount -1) {
diff --git a/media/java/android/media/routing/IMediaRouteClientCallback.aidl b/media/java/android/media/routing/IMediaRouteClientCallback.aidl
deleted file mode 100644
index d90ea3b..0000000
--- a/media/java/android/media/routing/IMediaRouteClientCallback.aidl
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (C) 2014 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.media.routing;
-
-import android.media.routing.MediaRouteSelector;
-import android.media.routing.ParcelableConnectionInfo;
-import android.media.routing.ParcelableDestinationInfo;
-import android.media.routing.ParcelableRouteInfo;
-import android.os.IBinder;
-import android.os.Bundle;
-
-/**
- * @hide
- */
-oneway interface IMediaRouteClientCallback {
-    void onDestinationFound(int seq, in ParcelableDestinationInfo destination,
-            in ParcelableRouteInfo[] routes);
-
-    void onDestinationLost(int seq, String id);
-
-    void onDiscoveryFailed(int seq, int error, in CharSequence message, in Bundle extras);
-
-    void onConnected(int seq, in ParcelableConnectionInfo connection);
-
-    void onDisconnected(int seq);
-
-    void onConnectionFailed(int seq, int error, in CharSequence message, in Bundle extras);
-}
diff --git a/media/java/android/media/routing/IMediaRouteService.aidl b/media/java/android/media/routing/IMediaRouteService.aidl
deleted file mode 100644
index 493ab6d..0000000
--- a/media/java/android/media/routing/IMediaRouteService.aidl
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2014 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.media.routing;
-
-import android.media.routing.IMediaRouteClientCallback;
-import android.media.routing.MediaRouteSelector;
-import android.os.Bundle;
-
-/**
- * Interface to an app's MediaRouteService.
- * @hide
- */
-oneway interface IMediaRouteService {
-    void registerClient(int clientUid, String clientPackageName,
-            in IMediaRouteClientCallback callback);
-
-    void unregisterClient(in IMediaRouteClientCallback callback);
-
-    void startDiscovery(in IMediaRouteClientCallback callback, int seq,
-            in List<MediaRouteSelector> selectors, int flags);
-
-    void stopDiscovery(in IMediaRouteClientCallback callback);
-
-    void connect(in IMediaRouteClientCallback callback, int seq,
-            String destinationId, String routeId, int flags, in Bundle extras);
-
-    void disconnect(in IMediaRouteClientCallback callback);
-
-    void pauseStream(in IMediaRouteClientCallback callback);
-
-    void resumeStream(in IMediaRouteClientCallback callback);
-}
-
diff --git a/media/java/android/media/routing/IMediaRouter.aidl b/media/java/android/media/routing/IMediaRouter.aidl
deleted file mode 100644
index 0abb258..0000000
--- a/media/java/android/media/routing/IMediaRouter.aidl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2014 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.media.routing;
-
-/** @hide */
-interface IMediaRouter {
-
-}
-
diff --git a/media/java/android/media/routing/IMediaRouterDelegate.aidl b/media/java/android/media/routing/IMediaRouterDelegate.aidl
deleted file mode 100644
index 35f84c8..0000000
--- a/media/java/android/media/routing/IMediaRouterDelegate.aidl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2014 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.media.routing;
-
-/** @hide */
-interface IMediaRouterDelegate {
-
-}
-
diff --git a/media/java/android/media/routing/IMediaRouterRoutingCallback.aidl b/media/java/android/media/routing/IMediaRouterRoutingCallback.aidl
deleted file mode 100644
index 173ae55..0000000
--- a/media/java/android/media/routing/IMediaRouterRoutingCallback.aidl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2014 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.media.routing;
-
-/** @hide */
-interface IMediaRouterRoutingCallback {
-
-}
-
diff --git a/media/java/android/media/routing/IMediaRouterStateCallback.aidl b/media/java/android/media/routing/IMediaRouterStateCallback.aidl
deleted file mode 100644
index 0299904..0000000
--- a/media/java/android/media/routing/IMediaRouterStateCallback.aidl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (C) 2014 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.media.routing;
-
-/** @hide */
-interface IMediaRouterStateCallback {
-
-}
-
diff --git a/media/java/android/media/routing/MediaRouteSelector.aidl b/media/java/android/media/routing/MediaRouteSelector.aidl
deleted file mode 100644
index 37bfa4a..0000000
--- a/media/java/android/media/routing/MediaRouteSelector.aidl
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2014, 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.media.routing;
-
-parcelable MediaRouteSelector;
diff --git a/media/java/android/media/routing/MediaRouteSelector.java b/media/java/android/media/routing/MediaRouteSelector.java
deleted file mode 100644
index 0bfc796..0000000
--- a/media/java/android/media/routing/MediaRouteSelector.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * Copyright (C) 2014 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.media.routing;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.media.routing.MediaRouter.RouteFeatures;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.text.TextUtils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A media route selector consists of a set of constraints that are used to select
- * the routes to which an application would like to connect.  The constraints consist
- * of a set of required or optional features and protocols.  The constraints may also
- * require the use of a specific media route service package or additional characteristics
- * that are described by a bundle of extra parameters.
- * <p>
- * The application will typically create several different selectors that express
- * various combinations of characteristics that it would like to use together when
- * it connects to a destination media device.  For each destination that is discovered,
- * media route services will publish some number of routes and include information
- * about which selector each route matches.  The application will then choose among
- * these routes to determine which best satisfies its desired purpose and connect to it.
- * </p>
- */
-public final class MediaRouteSelector implements Parcelable {
-    private final int mRequiredFeatures;
-    private final int mOptionalFeatures;
-    private final List<String> mRequiredProtocols;
-    private final List<String> mOptionalProtocols;
-    private final String mServicePackageName;
-    private final Bundle mExtras;
-
-    MediaRouteSelector(int requiredFeatures, int optionalFeatures,
-            List<String> requiredProtocols, List<String> optionalProtocols,
-            String servicePackageName, Bundle extras) {
-        mRequiredFeatures = requiredFeatures;
-        mOptionalFeatures = optionalFeatures;
-        mRequiredProtocols = requiredProtocols;
-        mOptionalProtocols = optionalProtocols;
-        mServicePackageName = servicePackageName;
-        mExtras = extras;
-    }
-
-    /**
-     * Gets the set of required route features.
-     *
-     * @return A set of required route feature flags.
-     */
-    public @RouteFeatures int getRequiredFeatures() {
-        return mRequiredFeatures;
-    }
-
-    /**
-     * Gets the set of optional route features.
-     *
-     * @return A set of optional route feature flags.
-     */
-    public @RouteFeatures int getOptionalFeatures() {
-        return mOptionalFeatures;
-    }
-
-    /**
-     * Gets the list of route protocols that a route must support in order to be selected.
-     * <p>
-     * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-     * for more information.
-     * </p>
-     *
-     * @return The list of fully qualified route protocol names.
-     */
-    public @NonNull List<String> getRequiredProtocols() {
-        return mRequiredProtocols;
-    }
-
-    /**
-     * Gets the list of optional route protocols that a client may use if they are available.
-     * <p>
-     * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-     * for more information.
-     * </p>
-     *
-     * @return The list of optional fully qualified route protocol names.
-     */
-    public @NonNull List<String> getOptionalProtocols() {
-        return mOptionalProtocols;
-    }
-
-    /**
-     * Returns true if the selector includes a required or optional request for
-     * the specified protocol using its fully qualified class name.
-     * <p>
-     * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-     * for more information.
-     * </p>
-     *
-     * @param clazz The protocol class.
-     * @return True if the protocol was requested.
-     */
-    public boolean containsProtocol(@NonNull Class<?> clazz) {
-        return containsProtocol(clazz.getName());
-    }
-
-    /**
-     * Returns true if the selector includes a required or optional request for
-     * the specified protocol.
-     * <p>
-     * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-     * for more information.
-     * </p>
-     *
-     * @param name The name of the protocol.
-     * @return True if the protocol was requested.
-     */
-    public boolean containsProtocol(@NonNull String name) {
-        return mRequiredProtocols.contains(name)
-                || mOptionalProtocols.contains(name);
-    }
-
-    /**
-     * Gets the package name of a specific media route service that this route selector
-     * requires.
-     *
-     * @return The required media route service package name, or null if none.
-     */
-    public @Nullable String getServicePackageName() {
-        return mServicePackageName;
-    }
-
-    /**
-     * Gets optional extras that may be used to select or configure routes for a
-     * particular purpose.  Some extras may be used by media route services to apply
-     * additional constraints or parameters for the routes to be discovered.
-     *
-     * @return The optional extras, or null if none.
-     */
-    public @Nullable Bundle getExtras() {
-        return mExtras;
-    }
-
-    @Override
-    public String toString() {
-        return "MediaRouteSelector{ "
-                + ", requiredFeatures=0x" + Integer.toHexString(mRequiredFeatures)
-                + ", optionalFeatures=0x" + Integer.toHexString(mOptionalFeatures)
-                + ", requiredProtocols=" + mRequiredProtocols
-                + ", optionalProtocols=" + mOptionalProtocols
-                + ", servicePackageName=" + mServicePackageName
-                + ", extras=" + mExtras + " }";
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(mRequiredFeatures);
-        dest.writeInt(mOptionalFeatures);
-        dest.writeStringList(mRequiredProtocols);
-        dest.writeStringList(mOptionalProtocols);
-        dest.writeString(mServicePackageName);
-        dest.writeBundle(mExtras);
-    }
-
-    public static final Parcelable.Creator<MediaRouteSelector> CREATOR =
-            new Parcelable.Creator<MediaRouteSelector>() {
-        @Override
-        public MediaRouteSelector createFromParcel(Parcel source) {
-            int requiredFeatures = source.readInt();
-            int optionalFeatures = source.readInt();
-            ArrayList<String> requiredProtocols = new ArrayList<String>();
-            ArrayList<String> optionalProtocols = new ArrayList<String>();
-            source.readStringList(requiredProtocols);
-            source.readStringList(optionalProtocols);
-            return new MediaRouteSelector(requiredFeatures, optionalFeatures,
-                    requiredProtocols, optionalProtocols,
-                    source.readString(), source.readBundle());
-        }
-
-        @Override
-        public MediaRouteSelector[] newArray(int size) {
-            return new MediaRouteSelector[size];
-        }
-    };
-
-    /**
-     * Builder for {@link MediaRouteSelector} objects.
-     */
-    public static final class Builder {
-        private int mRequiredFeatures;
-        private int mOptionalFeatures;
-        private final ArrayList<String> mRequiredProtocols = new ArrayList<String>();
-        private final ArrayList<String> mOptionalProtocols = new ArrayList<String>();
-        private String mServicePackageName;
-        private Bundle mExtras;
-
-        /**
-         * Creates an initially empty selector builder.
-         */
-        public Builder() {
-        }
-
-        /**
-         * Sets the set of required route features.
-         *
-         * @param features A set of required route feature flags.
-         */
-        public @NonNull Builder setRequiredFeatures(@RouteFeatures int features) {
-            mRequiredFeatures = features;
-            return this;
-        }
-
-        /**
-         * Sets the set of optional route features.
-         *
-         * @param features A set of optional route feature flags.
-         */
-        public @NonNull Builder setOptionalFeatures(@RouteFeatures int features) {
-            mOptionalFeatures = features;
-            return this;
-        }
-
-        /**
-         * Adds a route protocol that a route must support in order to be selected
-         * using its fully qualified class name.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         *
-         * @param clazz The protocol class.
-         * @return this
-         */
-        public @NonNull Builder addRequiredProtocol(@NonNull Class<?> clazz) {
-            if (clazz == null) {
-                throw new IllegalArgumentException("clazz must not be null");
-            }
-            return addRequiredProtocol(clazz.getName());
-        }
-
-        /**
-         * Adds a route protocol that a route must support in order to be selected.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         *
-         * @param name The fully qualified name of the required protocol.
-         * @return this
-         */
-        public @NonNull Builder addRequiredProtocol(@NonNull String name) {
-            if (TextUtils.isEmpty(name)) {
-                throw new IllegalArgumentException("name must not be null or empty");
-            }
-            mRequiredProtocols.add(name);
-            return this;
-        }
-
-        /**
-         * Adds an optional route protocol that a client may use if available
-         * using its fully qualified class name.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         *
-         * @param clazz The protocol class.
-         * @return this
-         */
-        public @NonNull Builder addOptionalProtocol(@NonNull Class<?> clazz) {
-            if (clazz == null) {
-                throw new IllegalArgumentException("clazz must not be null");
-            }
-            return addOptionalProtocol(clazz.getName());
-        }
-
-        /**
-         * Adds an optional route protocol that a client may use if available.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         *
-         * @param name The fully qualified name of the optional protocol.
-         * @return this
-         */
-        public @NonNull Builder addOptionalProtocol(@NonNull String name) {
-            if (TextUtils.isEmpty(name)) {
-                throw new IllegalArgumentException("name must not be null or empty");
-            }
-            mOptionalProtocols.add(name);
-            return this;
-        }
-
-        /**
-         * Sets the package name of the media route service to which this selector
-         * appertains.
-         * <p>
-         * If a package name is specified here then this selector will only be
-         * passed to media route services from that package.  This has the effect
-         * of restricting the set of matching routes to just those that are offered
-         * by that package.
-         * </p>
-         *
-         * @param packageName The required service package name, or null if none.
-         * @return this
-         */
-        public @NonNull Builder setServicePackageName(@Nullable String packageName) {
-            mServicePackageName = packageName;
-            return this;
-        }
-
-        /**
-         * Sets optional extras that may be used to select or configure routes for a
-         * particular purpose.  Some extras may be used by route services to specify
-         * additional constraints or parameters for the routes to be discovered.
-         *
-         * @param extras The optional extras, or null if none.
-         * @return this
-         */
-        public @NonNull Builder setExtras(@Nullable Bundle extras) {
-            mExtras = extras;
-            return this;
-        }
-
-        /**
-         * Builds the {@link MediaRouteSelector} object.
-         *
-         * @return The new media route selector instance.
-         */
-        public @NonNull MediaRouteSelector build() {
-            return new MediaRouteSelector(mRequiredFeatures, mOptionalFeatures,
-                    mRequiredProtocols, mOptionalProtocols, mServicePackageName, mExtras);
-        }
-    }
-}
diff --git a/media/java/android/media/routing/MediaRouteService.java b/media/java/android/media/routing/MediaRouteService.java
deleted file mode 100644
index 4d5a8a9..0000000
--- a/media/java/android/media/routing/MediaRouteService.java
+++ /dev/null
@@ -1,1023 +0,0 @@
-/*
- * Copyright (C) 2014 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.media.routing;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SdkConstant;
-import android.app.Service;
-import android.content.Intent;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.media.routing.MediaRouter.ConnectionError;
-import android.media.routing.MediaRouter.ConnectionInfo;
-import android.media.routing.MediaRouter.ConnectionRequest;
-import android.media.routing.MediaRouter.DestinationInfo;
-import android.media.routing.MediaRouter.DiscoveryError;
-import android.media.routing.MediaRouter.DiscoveryRequest;
-import android.media.routing.MediaRouter.RouteInfo;
-import android.media.routing.MediaRouter.ServiceMetadata;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.util.ArrayMap;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Media route services implement strategies for discovering
- * and establishing connections to media devices and their routes.  These services
- * are also known as media route providers.
- * <p>
- * Each media route service subclass is responsible for enabling applications
- * and the system to interact with media devices of some kind.
- * For example, one particular media route service implementation might
- * offer support for discovering nearby wireless display devices and streaming
- * video contents to them; another media route service implementation might
- * offer support for discovering nearby speakers and streaming media appliances
- * and sending commands to play content on request.
- * </p><p>
- * Subclasses must override the {@link #onCreateClientSession} method to return
- * a {@link ClientSession} object that implements the {@link ClientSession#onStartDiscovery},
- * {@link ClientSession#onStopDiscovery}, and {@link ClientSession#onConnect} methods
- * to allow clients to discover and connect to media devices.
- * </p><p>
- * This object is not thread-safe.  All callbacks are invoked on the main looper.
- * </p>
- *
- * <h3>Clients</h3>
- * <p>
- * The clients of this API are media applications that would like to discover
- * and connect to media devices.  The client may also be the system, such as
- * when the user initiates display mirroring via the Cast Screen function.
- * </p><p>
- * There may be multiple client sessions active at the same time.  Each client
- * session can request discovery and connect to routes independently of any
- * other client.  It is the responsibility of the media route service to maintain
- * separate state for each client session and to ensure that clients cannot interfere
- * with one another in harmful ways.
- * </p><p>
- * Notwithstanding the requirement to support any number of concurrent client
- * sessions, the media route service may impose constraints on how many clients
- * can connect to the same media device in a particular mode at the same time.
- * In some cases, media devices may support connections from an arbitrary number
- * of clients simultaneously but often it may be necessary to ensure that only
- * one client is in control.  When this happens, the media route service should
- * report a connection error unless the connection request specifies that the
- * client should take control of the media device (and forcibly disconnect other
- * clients that may be using it).
- * </p>
- *
- * <h3>Destinations</h3>
- * <p>
- * The media devices to which an application may send media content are referred
- * to in the API as destinations.  Each destination therefore represents a single
- * independent device such as a speaker or TV set.  Destinations are given meaningful
- * names and descriptions to help the user associate them with devices in their
- * environment.
- * </p><p>
- * Destinations may be local or remote and may be accessed through various means,
- * often wirelessly.  The user may install media route services to enable
- * media applications to connect to a variety of destinations with different
- * capabilities.
- * </p>
- *
- * <h3>Routes</h3>
- * <p>
- * Routes represent possible usages or means of reaching and interacting with
- * a destination.  Since destinations may support many different features, they may
- * each offer multiple routes for applications to choose from based on their needs.
- * For example, one route might express the ability to stream locally rendered audio
- * and video to the device; another route might express the ability to send a URL for
- * the destination to download from the network and play all by itself.
- * </p><p>
- * Routes are discovered according to the set of capabilities that
- * an application or the system is seeking to use at a particular time.  For example,
- * if an application wants to stream music to a destination then it will ask the
- * {@link MediaRouter} to find routes to destinations can stream music and ignore
- * all other destinations that cannot.
- * </p><p>
- * In general, the application will inspect the set of routes that have been
- * offered then connect to the most appropriate route for its desired purpose.
- * </p>
- *
- * <h3>Discovery</h3>
- * <p>
- * Discovery is the process of finding destinations based on a description of the
- * kinds of routes that an application or the system would like to use.
- * </p><p>
- * Discovery begins when {@link ClientSession#onStartDiscovery} is called and ends when
- * {@link ClientSession#onStopDiscovery} is called.  There may be multiple simultaneous
- * discovery requests in progress at the same time from different clients.  It is up to
- * the media route service to perform these requests in parallel or multiplex them
- * as required.
- * </p><p>
- * Media route services are <em>strongly encouraged</em> to use the information
- * in the discovery request to optimize discovery and avoid redundant work.
- * In the case where no media device supported by the media route service
- * could possibly offer the requested capabilities, the
- * {@link ClientSession#onStartDiscovery} method should return <code>false</code> to
- * let the system know that it can unbind from the media route service and
- * release its resources.
- * </p>
- *
- * <h3>Settings</h3>
- * <p>
- * Many kinds of devices can be discovered on demand simply by scanning the local network
- * or using wireless protocols such as Bluetooth to find them.  However, in some cases
- * it may be necessary for the user to manually configure destinations before they
- * can be used (or to adjust settings later).  Actual user configuration of destinations
- * is beyond the scope of this API but media route services may specify an activity
- * in their manifest that the user can launch to perform these tasks.
- * </p><p>
- * Note that media route services that are installed from the store must be enabled
- * by the user before they become available for applications to use.
- * The {@link android.provider.Settings#ACTION_CAST_SETTINGS Settings.ACTION_CAST_SETTINGS}
- * settings activity provides the ability for the user to configure media route services.
- * </p>
- *
- * <h3>Manifest Declaration</h3>
- * <p>
- * Media route services must be declared in the manifest along with meta-data
- * about the kinds of routes that they are capable of discovering.  The system
- * uses this information to optimize the set of services to which it binds in
- * order to satisfy a particular discovery request.
- * </p><p>
- * To extend this class, you must declare the service in your manifest file with
- * the {@link android.Manifest.permission#BIND_MEDIA_ROUTE_SERVICE} permission
- * and include an intent filter with the {@link #SERVICE_INTERFACE} action.  You must
- * also add meta-data to describe the kinds of routes that your service is capable
- * of discovering.
- * </p><p>
- * For example:
- * </p><pre>
- * &lt;service android:name=".MediaRouteProvider"
- *          android:label="&#64;string/service_name"
- *          android:permission="android.permission.BIND_MEDIA_ROUTE_SERVICE">
- *     &lt;intent-filter>
- *         &lt;action android:name="android.media.routing.MediaRouteService" />
- *     &lt;/intent-filter>
- *
- *     TODO: INSERT METADATA DECLARATIONS HERE
- *
- * &lt;/service>
- * </pre>
- */
-public abstract class MediaRouteService extends Service {
-    private static final String TAG = "MediaRouteService";
-
-    private static final boolean DEBUG = true;
-
-    private final Handler mHandler;
-    private final BinderService mService;
-    private final ArrayMap<IBinder, ClientRecord> mClientRecords =
-            new ArrayMap<IBinder, ClientRecord>();
-
-    private ServiceMetadata mMetadata;
-
-    /**
-     * The {@link Intent} that must be declared as handled by the service.
-     */
-    @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION)
-    public static final String SERVICE_INTERFACE =
-            "android.media.routing.MediaRouteService";
-
-    /**
-     * Creates a media route service.
-     */
-    public MediaRouteService() {
-        mHandler = new Handler(true);
-        mService = new BinderService();
-    }
-
-    @Override
-    public @Nullable IBinder onBind(Intent intent) {
-        if (SERVICE_INTERFACE.equals(intent.getAction())) {
-            return mService;
-        }
-        return null;
-    }
-
-    /**
-     * Creates a new client session on behalf of a client.
-     * <p>
-     * The implementation should return a {@link ClientSession} for the client
-     * to use.  The media route service must take care to manage the state of
-     * each client session independently from any others that might also be
-     * in use at the same time.
-     * </p>
-     *
-     * @param client Information about the client.
-     * @return The client session object, or null if the client is not allowed
-     * to interact with this media route service.
-     */
-    public abstract @Nullable ClientSession onCreateClientSession(@NonNull ClientInfo client);
-
-    /**
-     * Gets metadata about this service.
-     * <p>
-     * Use this method to obtain a {@link ServiceMetadata} object to provide when creating
-     * a {@link android.media.routing.MediaRouter.DestinationInfo.Builder}.
-     * </p>
-     *
-     * @return Metadata about this service.
-     */
-    public @NonNull ServiceMetadata getServiceMetadata() {
-        if (mMetadata == null) {
-            try {
-                mMetadata = new ServiceMetadata(this);
-            } catch (NameNotFoundException ex) {
-                Log.wtf(TAG, "Could not retrieve own service metadata!");
-            }
-        }
-        return mMetadata;
-    }
-
-    /**
-     * Enables a single client to access the functionality of the media route service.
-     */
-    public static abstract class ClientSession {
-        /**
-         * Starts discovery.
-         * <p>
-         * If the media route service is capable of discovering routes that satisfy
-         * the request then this method should start discovery and return true.
-         * Otherwise, this method should return false.  If false is returned,
-         * then the framework will not call {@link #onStopDiscovery} since discovery
-         * was never actually started.
-         * </p><p>
-         * There may already be other discovery requests in progress at the same time
-         * for other clients; the media route service must keep track of them all.
-         * </p>
-         *
-         * @param req The discovery request to start.
-         * @param callback A callback to receive discovery events related to this
-         * particular request.  The events that the service sends to this callback
-         * will be sent to the client that initiated the discovery request.
-         * @return True if discovery has started.  False if the media route service
-         * is unable to discover routes that satisfy the request.
-         */
-        public abstract boolean onStartDiscovery(@NonNull DiscoveryRequest req,
-                @NonNull DiscoveryCallback callback);
-
-        /**
-         * Stops discovery.
-         * <p>
-         * If {@link #onStartDiscovery} returned true, then this method will eventually
-         * be called when the framework no longer requires this discovery request
-         * to be performed.
-         * </p><p>
-         * There may still be other discovery requests in progress for other clients;
-         * they must keep working until they have each been stopped by their client.
-         * </p>
-         */
-        public abstract void onStopDiscovery();
-
-        /**
-         * Starts connecting to a route.
-         *
-         * @param req The connection request.
-         * @param callback A callback to receive events connection events related
-         * to this particular request.  The events that the service sends to this callback
-         * will be sent to the client that initiated the discovery request.
-         * @return True if the connection is in progress, or false if the client
-         * unable to connect to the requested route.
-         */
-        public abstract boolean onConnect(@NonNull ConnectionRequest req,
-                @NonNull ConnectionCallback callback);
-
-        /**
-         * Called when the client requests to disconnect from the route
-         * or abort a connection attempt in progress.
-         */
-        public abstract void onDisconnect();
-
-        /**
-         * Called when the client requests to pause streaming of content to
-         * live audio/video routes such as when it goes into the background.
-         * <p>
-         * The default implementation does nothing.
-         * </p>
-         */
-        public void onPauseStream() { }
-
-        /**
-         * Called when the application requests to resume streaming of content to
-         * live audio/video routes such as when it returns to the foreground.
-         * <p>
-         * The default implementation does nothing.
-         * </p>
-         */
-        public void onResumeStream() { }
-
-        /**
-         * Called when the client is releasing the session.
-         * <p>
-         * The framework automatically takes care of stopping discovery and
-         * terminating the connection politely before calling this method to release
-         * the session.
-         * </p><p>
-         * The default implementation does nothing.
-         * </p>
-         */
-        public void onRelease() { }
-    }
-
-    /**
-     * Provides events in response to a discovery request.
-     */
-    public final class DiscoveryCallback {
-        private final ClientRecord mRecord;
-
-        DiscoveryCallback(ClientRecord record) {
-            mRecord = record;
-        }
-
-        /**
-         * Called by the service when a destination is found that
-         * offers one or more routes that satisfy the discovery request.
-         * <p>
-         * This method should be called whenever the list of available routes
-         * at a destination changes or whenever the properties of the destination
-         * itself change.
-         * </p>
-         *
-         * @param destination The destination that was found.
-         * @param routes The list of that destination's routes that satisfy the
-         * discovery request.
-         */
-        public void onDestinationFound(final @NonNull DestinationInfo destination,
-                final @NonNull List<RouteInfo> routes) {
-            if (destination == null) {
-                throw new IllegalArgumentException("destination must not be null");
-            }
-            if (routes == null) {
-                throw new IllegalArgumentException("routes must not be null");
-            }
-            for (int i = 0; i < routes.size(); i++) {
-                if (routes.get(i).getDestination() != destination) {
-                    throw new IllegalArgumentException("routes must refer to the "
-                            + "destination");
-                }
-            }
-
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    mRecord.dispatchDestinationFound(DiscoveryCallback.this,
-                            destination, routes);
-                }
-            });
-        }
-
-        /**
-         * Called by the service when a destination is no longer
-         * reachable or is no longer offering any routes that satisfy
-         * the discovery request.
-         *
-         * @param destination The destination that went away.
-         */
-        public void onDestinationLost(final @NonNull DestinationInfo destination) {
-            if (destination == null) {
-                throw new IllegalArgumentException("destination must not be null");
-            }
-
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    mRecord.dispatchDestinationLost(DiscoveryCallback.this, destination);
-                }
-            });
-        }
-
-        /**
-         * Called by the service when a discovery has failed in a non-recoverable manner.
-         *
-         * @param error The error code: one of
-         * {@link MediaRouter#DISCOVERY_ERROR_UNKNOWN},
-         * {@link MediaRouter#DISCOVERY_ERROR_ABORTED},
-         * or {@link MediaRouter#DISCOVERY_ERROR_NO_CONNECTIVITY}.
-         * @param message The localized error message, or null if none.  This message
-         * may be shown to the user.
-         * @param extras Additional information about the error which a client
-         * may use, or null if none.
-         */
-        public void onDiscoveryFailed(final @DiscoveryError int error,
-                final @Nullable CharSequence message, final @Nullable Bundle extras) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    mRecord.dispatchDiscoveryFailed(DiscoveryCallback.this,
-                            error, message, extras);
-                }
-            });
-        }
-    }
-
-    /**
-     * Provides events in response to a connection request.
-     */
-    public final class ConnectionCallback {
-        private final ClientRecord mRecord;
-
-        ConnectionCallback(ClientRecord record) {
-            mRecord = record;
-        }
-
-        /**
-         * Called by the service when the connection succeeds.
-         *
-         * @param connection Immutable information about the connection.
-         */
-        public void onConnected(final @NonNull ConnectionInfo connection) {
-            if (connection == null) {
-                throw new IllegalArgumentException("connection must not be null");
-            }
-
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    mRecord.dispatchConnected(ConnectionCallback.this, connection);
-                }
-            });
-        }
-
-        /**
-         * Called by the service when the connection is terminated normally.
-         * <p>
-         * Abnormal termination is reported via {@link #onConnectionFailed}.
-         * </p>
-         */
-        public void onDisconnected() {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    mRecord.dispatchDisconnected(ConnectionCallback.this);
-                }
-            });
-        }
-
-        /**
-         * Called by the service when a connection attempt or connection in
-         * progress has failed in a non-recoverable manner.
-         *
-         * @param error The error code: one of
-         * {@link MediaRouter#CONNECTION_ERROR_ABORTED},
-         * {@link MediaRouter#CONNECTION_ERROR_UNAUTHORIZED},
-         * {@link MediaRouter#CONNECTION_ERROR_UNREACHABLE},
-         * {@link MediaRouter#CONNECTION_ERROR_BUSY},
-         * {@link MediaRouter#CONNECTION_ERROR_TIMEOUT},
-         * {@link MediaRouter#CONNECTION_ERROR_BROKEN},
-         * or {@link MediaRouter#CONNECTION_ERROR_BARGED}.
-         * @param message The localized error message, or null if none.  This message
-         * may be shown to the user.
-         * @param extras Additional information about the error which a client
-         * may use, or null if none.
-         */
-        public void onConnectionFailed(final @ConnectionError int error,
-                final @Nullable CharSequence message, final @Nullable Bundle extras) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    mRecord.dispatchConnectionFailed(ConnectionCallback.this,
-                            error, message, extras);
-                }
-            });
-        }
-    }
-
-    /**
-     * Identifies a client of the media route service.
-     */
-    public static final class ClientInfo {
-        private final int mUid;
-        private final String mPackageName;
-
-        ClientInfo(int uid, String packageName) {
-            mUid = uid;
-            mPackageName = packageName;
-        }
-
-        /**
-         * Gets the UID of the client application.
-         */
-        public int getUid() {
-            return mUid;
-        }
-
-        /**
-         * Gets the package name of the client application.
-         */
-        public @NonNull String getPackageName() {
-            return mPackageName;
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "ClientInfo{ uid=" + mUid + ", package=" + mPackageName + " }";
-        }
-    }
-
-    private final class BinderService extends IMediaRouteService.Stub {
-        @Override
-        public void registerClient(final int clientUid, final String clientPackageName,
-                final IMediaRouteClientCallback callback) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientInfo client = new ClientInfo(clientUid, clientPackageName);
-                    if (DEBUG) {
-                        Log.d(TAG, "registerClient: client=" + client);
-                    }
-
-                    ClientSession session = onCreateClientSession(client);
-                    if (session == null) {
-                        // request refused by service
-                        Log.w(TAG, "Media route service refused to create session for client: "
-                                + "client=" + client);
-                        return;
-                    }
-
-                    ClientRecord record = new ClientRecord(callback, client, session);
-                    try {
-                        callback.asBinder().linkToDeath(record, 0);
-                    } catch (RemoteException ex) {
-                        // client died prematurely
-                        Log.w(TAG, "Client died prematurely while creating session: "
-                                + "client=" + client);
-                        record.release();
-                        return;
-                    }
-
-                    mClientRecords.put(callback.asBinder(), record);
-                }
-            });
-        }
-
-        @Override
-        public void unregisterClient(IMediaRouteClientCallback callback) {
-            unregisterClient(callback, false);
-        }
-
-        void unregisterClient(final IMediaRouteClientCallback callback,
-                final boolean died) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.remove(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "unregisterClient: client=" + record.getClientInfo()
-                                + ", died=" + died);
-                    }
-
-                    record.release();
-                    callback.asBinder().unlinkToDeath(record, 0);
-                }
-            });
-        }
-
-        @Override
-        public void startDiscovery(final IMediaRouteClientCallback callback,
-                final int seq, final List<MediaRouteSelector> selectors,
-                final int flags) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.get(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "startDiscovery: client=" + record.getClientInfo()
-                                + ", seq=" + seq + ", selectors=" + selectors
-                                + ", flags=0x" + Integer.toHexString(flags));
-                    }
-                    record.startDiscovery(seq, selectors, flags);
-                }
-            });
-        }
-
-        @Override
-        public void stopDiscovery(final IMediaRouteClientCallback callback) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.get(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "stopDiscovery: client=" + record.getClientInfo());
-                    }
-                    record.stopDiscovery();
-                }
-            });
-        }
-
-        @Override
-        public void connect(final IMediaRouteClientCallback callback,
-                final int seq, final String destinationId, final String routeId,
-                final int flags, final Bundle extras) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.get(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "connect: client=" + record.getClientInfo()
-                                + ", seq=" + seq + ", destinationId=" + destinationId
-                                + ", routeId=" + routeId
-                                + ", flags=0x" + Integer.toHexString(flags)
-                                + ", extras=" + extras);
-                    }
-                    record.connect(seq, destinationId, routeId, flags, extras);
-                }
-            });
-        }
-
-        @Override
-        public void disconnect(final IMediaRouteClientCallback callback) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.get(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "disconnect: client=" + record.getClientInfo());
-                    }
-                    record.disconnect();
-                }
-            });
-        }
-
-        @Override
-        public void pauseStream(final IMediaRouteClientCallback callback) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.get(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "pauseStream: client=" + record.getClientInfo());
-                    }
-                    record.pauseStream();
-                }
-            });
-        }
-
-        @Override
-        public void resumeStream(final IMediaRouteClientCallback callback) {
-            mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    ClientRecord record = mClientRecords.get(callback.asBinder());
-                    if (record == null) {
-                        return; // spurious
-                    }
-
-                    if (DEBUG) {
-                        Log.d(TAG, "resumeStream: client=" + record.getClientInfo());
-                    }
-                    record.resumeStream();
-                }
-            });
-        }
-    }
-
-    // Must be accessed on handler
-    private final class ClientRecord implements IBinder.DeathRecipient {
-        private final IMediaRouteClientCallback mClientCallback;
-        private final ClientInfo mClient;
-        private final ClientSession mSession;
-
-        private int mDiscoverySeq;
-        private DiscoveryRequest mDiscoveryRequest;
-        private DiscoveryCallback mDiscoveryCallback;
-        private final ArrayMap<String, DestinationRecord> mDestinations =
-                new ArrayMap<String, DestinationRecord>();
-
-        private int mConnectionSeq;
-        private ConnectionRequest mConnectionRequest;
-        private ConnectionCallback mConnectionCallback;
-        private ConnectionInfo mConnection;
-        private boolean mConnectionPaused;
-
-        public ClientRecord(IMediaRouteClientCallback callback,
-                ClientInfo client, ClientSession session) {
-            mClientCallback = callback;
-            mClient = client;
-            mSession = session;
-        }
-
-        // Invoked on binder thread unlike all other methods in this class.
-        @Override
-        public void binderDied() {
-            mService.unregisterClient(mClientCallback, true);
-        }
-
-        public ClientInfo getClientInfo() {
-            return mClient;
-        }
-
-        public void release() {
-            stopDiscovery();
-            disconnect();
-        }
-
-        public void startDiscovery(int seq, List<MediaRouteSelector> selectors,
-                int flags) {
-            stopDiscovery();
-
-            mDiscoverySeq = seq;
-            mDiscoveryRequest = new DiscoveryRequest(selectors);
-            mDiscoveryRequest.setFlags(flags);
-            mDiscoveryCallback = new DiscoveryCallback(this);
-            boolean started = mSession.onStartDiscovery(mDiscoveryRequest, mDiscoveryCallback);
-            if (!started) {
-                dispatchDiscoveryFailed(mDiscoveryCallback,
-                        MediaRouter.DISCOVERY_ERROR_ABORTED, null, null);
-                clearDiscovery();
-            }
-        }
-
-        public void stopDiscovery() {
-            if (mDiscoveryRequest != null) {
-                mSession.onStopDiscovery();
-                clearDiscovery();
-            }
-        }
-
-        private void clearDiscovery() {
-            mDestinations.clear();
-            mDiscoveryRequest = null;
-            mDiscoveryCallback = null;
-        }
-
-        public void connect(int seq, String destinationId, String routeId,
-                int flags, Bundle extras) {
-            disconnect();
-
-            mConnectionSeq = seq;
-            mConnectionCallback = new ConnectionCallback(this);
-
-            DestinationRecord destinationRecord = mDestinations.get(destinationId);
-            if (destinationRecord == null) {
-                Log.w(TAG, "Aborting connection to route since no matching destination "
-                        + "was found in the list of known destinations: "
-                        + "destinationId=" + destinationId);
-                dispatchConnectionFailed(mConnectionCallback,
-                        MediaRouter.CONNECTION_ERROR_ABORTED, null, null);
-                clearConnection();
-                return;
-            }
-
-            RouteInfo route = destinationRecord.getRoute(routeId);
-            if (route == null) {
-                Log.w(TAG, "Aborting connection to route since no matching route "
-                        + "was found in the list of known routes: "
-                        + "destination=" + destinationRecord.destination
-                        + ", routeId=" + routeId);
-                dispatchConnectionFailed(mConnectionCallback,
-                        MediaRouter.CONNECTION_ERROR_ABORTED, null, null);
-                clearConnection();
-                return;
-            }
-
-            mConnectionRequest = new ConnectionRequest(route);
-            mConnectionRequest.setFlags(flags);
-            mConnectionRequest.setExtras(extras);
-            boolean started = mSession.onConnect(mConnectionRequest, mConnectionCallback);
-            if (!started) {
-                dispatchConnectionFailed(mConnectionCallback,
-                        MediaRouter.CONNECTION_ERROR_ABORTED, null, null);
-                clearConnection();
-            }
-        }
-
-        public void disconnect() {
-            if (mConnectionRequest != null) {
-                mSession.onDisconnect();
-                clearConnection();
-            }
-        }
-
-        private void clearConnection() {
-            mConnectionRequest = null;
-            mConnectionCallback = null;
-            if (mConnection != null) {
-                mConnection.close();
-                mConnection = null;
-            }
-            mConnectionPaused = false;
-        }
-
-        public void pauseStream() {
-            if (mConnectionRequest != null && !mConnectionPaused) {
-                mConnectionPaused = true;
-                mSession.onPauseStream();
-            }
-        }
-
-        public void resumeStream() {
-            if (mConnectionRequest != null && mConnectionPaused) {
-                mConnectionPaused = false;
-                mSession.onResumeStream();
-            }
-        }
-
-        public void dispatchDestinationFound(DiscoveryCallback callback,
-                DestinationInfo destination, List<RouteInfo> routes) {
-            if (callback == mDiscoveryCallback) {
-                if (DEBUG) {
-                    Log.d(TAG, "destinationFound: destination=" + destination
-                            + ", routes=" + routes);
-                }
-                mDestinations.put(destination.getId(),
-                        new DestinationRecord(destination, routes));
-
-                ParcelableDestinationInfo pdi = new ParcelableDestinationInfo();
-                pdi.id = destination.getId();
-                pdi.name = destination.getName();
-                pdi.description = destination.getDescription();
-                pdi.iconResourceId = destination.getIconResourceId();
-                pdi.extras = destination.getExtras();
-                ArrayList<ParcelableRouteInfo> pris = new ArrayList<ParcelableRouteInfo>();
-                for (RouteInfo route : routes) {
-                    int selectorIndex = mDiscoveryRequest.getSelectors().indexOf(
-                            route.getSelector());
-                    if (selectorIndex < 0) {
-                        Log.w(TAG, "Ignoring route because the selector does not match "
-                                + "any of those that were originally supplied by the "
-                                + "client's discovery request: destination=" + destination
-                                + ", route=" + route);
-                        continue;
-                    }
-
-                    ParcelableRouteInfo pri = new ParcelableRouteInfo();
-                    pri.id = route.getId();
-                    pri.selectorIndex = selectorIndex;
-                    pri.features = route.getFeatures();
-                    pri.protocols = route.getProtocols().toArray(
-                            new String[route.getProtocols().size()]);
-                    pri.extras = route.getExtras();
-                    pris.add(pri);
-                }
-                try {
-                    mClientCallback.onDestinationFound(mDiscoverySeq, pdi,
-                            pris.toArray(new ParcelableRouteInfo[pris.size()]));
-                } catch (RemoteException ex) {
-                    // binder death handled elsewhere
-                }
-            }
-        }
-
-        public void dispatchDestinationLost(DiscoveryCallback callback,
-                DestinationInfo destination) {
-            if (callback == mDiscoveryCallback) {
-                if (DEBUG) {
-                    Log.d(TAG, "destinationLost: destination=" + destination);
-                }
-
-                if (mDestinations.get(destination.getId()).destination == destination) {
-                    mDestinations.remove(destination.getId());
-                    try {
-                        mClientCallback.onDestinationLost(mDiscoverySeq, destination.getId());
-                    } catch (RemoteException ex) {
-                        // binder death handled elsewhere
-                    }
-                }
-            }
-        }
-
-        public void dispatchDiscoveryFailed(DiscoveryCallback callback,
-                int error, CharSequence message, Bundle extras) {
-            if (callback == mDiscoveryCallback) {
-                if (DEBUG) {
-                    Log.d(TAG, "discoveryFailed: error=" + error + ", message=" + message
-                            + ", extras=" + extras);
-                }
-
-                try {
-                    mClientCallback.onDiscoveryFailed(mDiscoverySeq, error, message, extras);
-                } catch (RemoteException ex) {
-                    // binder death handled elsewhere
-                }
-            }
-        }
-
-        public void dispatchConnected(ConnectionCallback callback, ConnectionInfo connection) {
-            if (callback == mConnectionCallback) {
-                if (DEBUG) {
-                    Log.d(TAG, "connected: connection=" + connection);
-                }
-                if (mConnection == null) {
-                    mConnection = connection;
-
-                    ParcelableConnectionInfo pci = new ParcelableConnectionInfo();
-                    pci.audioAttributes = connection.getAudioAttributes();
-                    pci.presentationDisplayId = connection.getPresentationDisplay() != null ?
-                            connection.getPresentationDisplay().getDisplayId() : -1;
-                    pci.protocolBinders = new IBinder[connection.getProtocols().size()];
-                    for (int i = 0; i < pci.protocolBinders.length; i++) {
-                        pci.protocolBinders[i] = connection.getProtocolBinder(i);
-                    }
-                    pci.extras = connection.getExtras();
-                    try {
-                        mClientCallback.onConnected(mConnectionSeq, pci);
-                    } catch (RemoteException ex) {
-                        // binder death handled elsewhere
-                    }
-                } else {
-                    Log.w(TAG, "Media route service called onConnected() while already "
-                            + "connected.");
-                }
-            }
-        }
-
-        public void dispatchDisconnected(ConnectionCallback callback) {
-            if (callback == mConnectionCallback) {
-                if (DEBUG) {
-                    Log.d(TAG, "disconnected");
-                }
-
-                if (mConnection != null) {
-                    mConnection.close();
-                    mConnection = null;
-
-                    try {
-                        mClientCallback.onDisconnected(mConnectionSeq);
-                    } catch (RemoteException ex) {
-                        // binder death handled elsewhere
-                    }
-                }
-            }
-        }
-
-        public void dispatchConnectionFailed(ConnectionCallback callback,
-                int error, CharSequence message, Bundle extras) {
-            if (callback == mConnectionCallback) {
-                if (DEBUG) {
-                    Log.d(TAG, "connectionFailed: error=" + error + ", message=" + message
-                            + ", extras=" + extras);
-                }
-
-                try {
-                    mClientCallback.onConnectionFailed(mConnectionSeq, error, message, extras);
-                } catch (RemoteException ex) {
-                    // binder death handled elsewhere
-                }
-            }
-        }
-    }
-
-    private static final class DestinationRecord {
-        public final DestinationInfo destination;
-        public final List<RouteInfo> routes;
-
-        public DestinationRecord(DestinationInfo destination, List<RouteInfo> routes) {
-            this.destination = destination;
-            this.routes = routes;
-        }
-
-        public RouteInfo getRoute(String routeId) {
-            final int count = routes.size();
-            for (int i = 0; i < count; i++) {
-                RouteInfo route = routes.get(i);
-                if (route.getId().equals(routeId)) {
-                    return route;
-                }
-            }
-            return null;
-        }
-    }
-}
diff --git a/media/java/android/media/routing/MediaRouter.java b/media/java/android/media/routing/MediaRouter.java
deleted file mode 100644
index 4f6d324..0000000
--- a/media/java/android/media/routing/MediaRouter.java
+++ /dev/null
@@ -1,1886 +0,0 @@
-/*
- * Copyright (C) 2014 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.media.routing;
-
-import android.annotation.DrawableRes;
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.Presentation;
-import android.app.Service;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ServiceInfo;
-import android.graphics.drawable.Drawable;
-import android.hardware.display.DisplayManager;
-import android.media.AudioAttributes;
-import android.media.AudioManager;
-import android.media.AudioTrack;
-import android.media.VolumeProvider;
-import android.media.session.MediaController;
-import android.media.session.MediaSession;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.text.TextUtils;
-import android.util.ArrayMap;
-import android.view.Display;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Media router allows applications to discover, connect to, control,
- * and send content to nearby media devices known as destinations.
- * <p>
- * There are generally two participants involved in media routing: an
- * application that wants to send media content to a destination and a
- * {@link MediaRouteService media route service} that provides the
- * service of transporting that content where it needs to go on behalf of the
- * application.
- * </p><p>
- * To send media content to a destination, the application must ask the system
- * to discover available routes to destinations that provide certain capabilities,
- * establish a connection to a route, then send messages through the connection to
- * control the routing of audio and video streams, launch remote applications,
- * and invoke other functions of the destination.
- * </p><p>
- * Media router objects are thread-safe.
- * </p>
- *
- * <h3>Destinations</h3>
- * <p>
- * The media devices to which an application may send media content are referred
- * to in the API as destinations.  Each destination therefore represents a single
- * independent device such as a speaker or TV set.  Destinations are given meaningful
- * names and descriptions to help the user associate them with devices in their
- * environment.
- * </p><p>
- * Destinations may be local or remote and may be accessed through various means,
- * often wirelessly.  The user may install media route services to enable
- * media applications to connect to a variety of destinations with different
- * capabilities.
- * </p>
- *
- * <h3>Routes</h3>
- * <p>
- * Routes represent possible usages or means of reaching and interacting with
- * a destination.  Since destinations may support many different features, they may
- * each offer multiple routes for applications to choose from based on their needs.
- * For example, one route might express the ability to stream locally rendered audio
- * and video to the device; another route might express the ability to send a URL for
- * the destination to download from the network and play all by itself.
- * </p><p>
- * Routes are discovered according to the set of capabilities that
- * an application or the system is seeking to use at a particular time.  For example,
- * if an application wants to stream music to a destination then it will ask the
- * {@link MediaRouter} to find routes to destinations can stream music and ignore
- * all other destinations that cannot.
- * </p><p>
- * In general, the application will inspect the set of routes that have been
- * offered then connect to the most appropriate route for its desired purpose.
- * </p>
- *
- * <h3>Route Selection</h3>
- * <p>
- * When the user open the media route chooser activity, the system will display
- * a list of nearby media destinations which have been discovered.  After the
- * choice is made the application may connect to one of the routes offered by
- * this destination and begin communicating with the destination.
- * </p><p>
- * Destinations are located through a process called discovery.  During discovery,
- * the system will start installed {@link MediaRouteService media route services}
- * to scan the network for nearby devices that offer the kinds of capabilities that the
- * application is seeking to use.  The application specifies the capabilities it requires by
- * adding {@link MediaRouteSelector media route selectors} to the media router
- * using the {@link #addSelector} method.  Only destinations that provide routes
- * which satisfy at least one of these media route selectors will be discovered.
- * </p><p>
- * Once the user has selected a destination, the application will be given a chance
- * to choose one of the routes to which it would like to connect.  The application
- * may switch to a different route from the same destination at a later time but
- * in order to connect to a new destination, the application must once again launch
- * the media route chooser activity to ask the user to choose a destination.
- * </p>
- *
- * <h3>Route Protocols</h3>
- * <p>
- * Route protocols express capabilities offered by routes.  Each media route selector
- * must specify at least one required protocol by which the routes will be selected.
- * </p><p>
- * The framework provides several predefined <code>MediaRouteProtocols</code> which are
- * defined in the <code>android-support-media-protocols.jar</code> support library.
- * Applications must statically link this library to make use of these protocols.
- * </p><p>
- * The static library approach is used to enable ongoing extension and refinement
- * of protocols in the SDK and interoperability with the media router implementation
- * for older platform versions which is offered by the framework support library.
- * </p><p>
- * Media route services may also define custom media route protocols of their own
- * to enable applications to access specialized capabilities of certain destinations
- * assuming they have linked in the required protocol code.
- * </p><p>
- * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code> for more information.
- * </p>
- *
- * <h3>Connections</h3>
- * <p>
- * After connecting to a media route, the application can send commands to
- * the route using any of the protocols that it requested.  If the route supports live
- * audio or video streaming then the application can create an {@link AudioTrack} or
- * {@link Presentation} to route locally generated content to the destination.
- * </p>
- *
- * <h3>Delegation</h3>
- * <p>
- * The creator of the media router is responsible for establishing the policy for
- * discovering and connecting to destinations.  UI components may observe the state
- * of the media router by {@link #createDelegate creating} a {@link Delegate}.
- * </p><p>
- * The media router should also be attached to the {@link MediaSession media session}
- * that is handling media playback lifecycle.  This will allow
- * authorized {@link MediaController media controllers}, possibly running in other
- * processes, to provide UI to examine and change the media destination by
- * {@link MediaController#createMediaRouterDelegate creating} a {@link Delegate}
- * for the media router associated with the session.
- * </p>
- */
-public final class MediaRouter {
-    private final DisplayManager mDisplayManager;
-
-    private final Object mLock = new Object();
-
-    private RoutingCallback mRoutingCallback;
-    private Handler mRoutingCallbackHandler;
-
-    private boolean mReleased;
-    private int mDiscoveryState;
-    private int mConnectionState;
-    private final ArrayList<MediaRouteSelector> mSelectors =
-            new ArrayList<MediaRouteSelector>();
-    private final ArrayMap<DestinationInfo, List<RouteInfo>> mDiscoveredDestinations =
-            new ArrayMap<DestinationInfo, List<RouteInfo>>();
-    private RouteInfo mSelectedRoute;
-    private ConnectionInfo mConnection;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = { DISCOVERY_STATE_STOPPED, DISCOVERY_STATE_STARTED })
-    public @interface DiscoveryState { }
-
-    /**
-     * Discovery state: Discovery is not currently in progress.
-     */
-    public static final int DISCOVERY_STATE_STOPPED = 0;
-
-    /**
-     * Discovery state: Discovery is being performed.
-     */
-    public static final int DISCOVERY_STATE_STARTED = 1;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = true, value = { DISCOVERY_FLAG_BACKGROUND })
-    public @interface DiscoveryFlags { }
-
-    /**
-     * Discovery flag: Indicates that the client has requested passive discovery in
-     * the background.  The media route service should try to use less power and rely
-     * more on its internal caches to minimize its impact.
-     */
-    public static final int DISCOVERY_FLAG_BACKGROUND = 1 << 0;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = { DISCOVERY_ERROR_UNKNOWN, DISCOVERY_ERROR_ABORTED,
-            DISCOVERY_ERROR_NO_CONNECTIVITY })
-    public @interface DiscoveryError { }
-
-    /**
-     * Discovery error: Unknown error; refer to the error message for details.
-     */
-    public static final int DISCOVERY_ERROR_UNKNOWN = 0;
-
-    /**
-     * Discovery error: The media router or media route service has decided not to
-     * handle the discovery request for some reason.
-     */
-    public static final int DISCOVERY_ERROR_ABORTED = 1;
-
-    /**
-     * Discovery error: The media route service is unable to perform discovery
-     * due to a lack of connectivity such as because the radio is disabled.
-     */
-    public static final int DISCOVERY_ERROR_NO_CONNECTIVITY = 2;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = { CONNECTION_STATE_DISCONNECTED, CONNECTION_STATE_CONNECTING,
-            CONNECTION_STATE_CONNECTED })
-    public @interface ConnectionState { }
-
-    /**
-     * Connection state: No destination has been selected.  Media content should
-     * be sent to the default output.
-     */
-    public static final int CONNECTION_STATE_DISCONNECTED = 0;
-
-    /**
-     * Connection state: The application is in the process of connecting to
-     * a route offered by the selected destination.
-     */
-    public static final int CONNECTION_STATE_CONNECTING = 1;
-
-    /**
-     * Connection state: The application has connected to a route offered by
-     * the selected destination.
-     */
-    public static final int CONNECTION_STATE_CONNECTED = 2;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = true, value = { CONNECTION_FLAG_BARGE })
-    public @interface ConnectionFlags { }
-
-    /**
-     * Connection flag: Indicates that the client has requested to barge in and evict
-     * other clients that might have already connected to the destination and that
-     * would otherwise prevent this client from connecting.  When this flag is not
-     * set, the media route service should be polite and report
-     * {@link MediaRouter#CONNECTION_ERROR_BUSY} in case the destination is
-     * already occupied and cannot accept additional connections.
-     */
-    public static final int CONNECTION_FLAG_BARGE = 1 << 0;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = { CONNECTION_ERROR_UNKNOWN, CONNECTION_ERROR_ABORTED,
-            CONNECTION_ERROR_UNAUTHORIZED, CONNECTION_ERROR_UNAUTHORIZED,
-            CONNECTION_ERROR_BUSY, CONNECTION_ERROR_TIMEOUT, CONNECTION_ERROR_BROKEN })
-    public @interface ConnectionError { }
-
-    /**
-     * Connection error: Unknown error; refer to the error message for details.
-     */
-    public static final int CONNECTION_ERROR_UNKNOWN = 0;
-
-    /**
-     * Connection error: The media router or media route service has decided not to
-     * handle the connection request for some reason.
-     */
-    public static final int CONNECTION_ERROR_ABORTED = 1;
-
-    /**
-     * Connection error: The device has refused the connection from this client.
-     * This error should be avoided because the media route service should attempt
-     * to filter out devices that the client cannot access as it performs discovery
-     * on behalf of that client.
-     */
-    public static final int CONNECTION_ERROR_UNAUTHORIZED = 2;
-
-    /**
-     * Connection error: The device is unreachable over the network.
-     */
-    public static final int CONNECTION_ERROR_UNREACHABLE = 3;
-
-    /**
-     * Connection error: The device is already busy serving another client and
-     * the connection request did not ask to barge in.
-     */
-    public static final int CONNECTION_ERROR_BUSY = 4;
-
-    /**
-     * Connection error: A timeout occurred during connection.
-     */
-    public static final int CONNECTION_ERROR_TIMEOUT = 5;
-
-    /**
-     * Connection error: The connection to the device was severed unexpectedly.
-     */
-    public static final int CONNECTION_ERROR_BROKEN = 6;
-
-    /**
-     * Connection error: The connection was terminated because a different client barged
-     * in and took control of the destination.
-     */
-    public static final int CONNECTION_ERROR_BARGED = 7;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = { DISCONNECTION_REASON_APPLICATION_REQUEST,
-            DISCONNECTION_REASON_USER_REQUEST, DISCONNECTION_REASON_ERROR })
-    public @interface DisconnectionReason { }
-
-    /**
-     * Disconnection reason: The application requested disconnection itself.
-     */
-    public static final int DISCONNECTION_REASON_APPLICATION_REQUEST = 0;
-
-    /**
-     * Disconnection reason: The user requested disconnection.
-     */
-    public static final int DISCONNECTION_REASON_USER_REQUEST = 1;
-
-    /**
-     * Disconnection reason: An error occurred.
-     */
-    public static final int DISCONNECTION_REASON_ERROR = 2;
-
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(flag = true, value = { ROUTE_FEATURE_LIVE_AUDIO, ROUTE_FEATURE_LIVE_VIDEO })
-    public @interface RouteFeatures { }
-
-    /**
-     * Route feature: Live audio.
-     * <p>
-     * A route that supports live audio streams audio rendered by the application
-     * to the destination.
-     * </p><p>
-     * To take advantage of live audio routing, the application must render its
-     * media using the audio attributes specified by {@link #getPreferredAudioAttributes}.
-     * </p>
-     *
-     * @see #getPreferredAudioAttributes
-     * @see android.media.AudioAttributes
-     */
-    public static final int ROUTE_FEATURE_LIVE_AUDIO = 1 << 0;
-
-    /**
-     * Route feature: Live video.
-     * <p>
-     * A route that supports live video streams video rendered by the application
-     * to the destination.
-     * </p><p>
-     * To take advantage of live video routing, the application must render its
-     * media to a {@link android.app.Presentation presentation window} on the
-     * display specified by {@link #getPreferredPresentationDisplay}.
-     * </p>
-     *
-     * @see #getPreferredPresentationDisplay
-     * @see android.app.Presentation
-     */
-    public static final int ROUTE_FEATURE_LIVE_VIDEO = 1 << 1;
-
-    /**
-     * Creates a media router.
-     *
-     * @param context The context with which the router is associated.
-     */
-    public MediaRouter(@NonNull Context context) {
-        if (context == null) {
-            throw new IllegalArgumentException("context must not be null");
-        }
-
-        mDisplayManager = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);
-    }
-
-    /** @hide */
-    public IMediaRouter getBinder() {
-        // todo
-        return null;
-    }
-
-    /**
-     * Disconnects from the selected destination and releases the media router.
-     * <p>
-     * This method should be called by the application when it no longer requires
-     * the media router to ensure that all bound resources may be cleaned up.
-     * </p>
-     */
-    public void release() {
-        synchronized (mLock) {
-            mReleased = true;
-            // todo
-        }
-    }
-
-    /**
-     * Returns true if the media router has been released.
-     */
-    public boolean isReleased() {
-        synchronized (mLock) {
-            return mReleased;
-        }
-    }
-
-    /**
-     * Gets the current route discovery state.
-     *
-     * @return The current discovery state: one of {@link #DISCOVERY_STATE_STOPPED},
-     * {@link #DISCOVERY_STATE_STARTED}.
-     */
-    public @DiscoveryState int getDiscoveryState() {
-        synchronized (mLock) {
-            return mDiscoveryState;
-        }
-    }
-
-    /**
-     * Gets the current route connection state.
-     *
-     * @return The current state: one of {@link #CONNECTION_STATE_DISCONNECTED},
-     * {@link #CONNECTION_STATE_CONNECTING} or {@link #CONNECTION_STATE_CONNECTED}.
-     */
-    public @ConnectionState int getConnectionState() {
-        synchronized (mLock) {
-            return mConnectionState;
-        }
-    }
-
-    /**
-     * Creates a media router delegate through which the destination of the media
-     * router may be controlled.
-     * <p>
-     * This is the point of entry for UI code that initiates discovery and
-     * connection to routes.
-     * </p>
-     */
-    public @NonNull Delegate createDelegate() {
-        return null; // todo
-    }
-
-    /**
-     * Sets a callback to participate in route discovery, filtering, and connection
-     * establishment.
-     *
-     * @param callback The callback to set, or null if none.
-     * @param handler The handler to receive callbacks, or null to use the current thread.
-     */
-    public void setRoutingCallback(@Nullable RoutingCallback callback,
-            @Nullable Handler handler) {
-        synchronized (mLock) {
-            if (callback == null) {
-                mRoutingCallback = null;
-                mRoutingCallbackHandler = null;
-            } else {
-                mRoutingCallback = callback;
-                mRoutingCallbackHandler = handler != null ? handler : new Handler();
-            }
-        }
-    }
-
-    /**
-     * Adds a media route selector to use to find destinations that have
-     * routes with the specified capabilities during route discovery.
-     */
-    public void addSelector(@NonNull MediaRouteSelector selector) {
-        if (selector == null) {
-            throw new IllegalArgumentException("selector must not be null");
-        }
-
-        synchronized (mLock) {
-            if (!mSelectors.contains(selector)) {
-                mSelectors.add(selector);
-                // todo
-            }
-        }
-    }
-
-    /**
-     * Removes a media route selector.
-     */
-    public void removeSelector(@NonNull MediaRouteSelector selector) {
-        if (selector == null) {
-            throw new IllegalArgumentException("selector must not be null");
-        }
-
-        synchronized (mLock) {
-            if (mSelectors.remove(selector)) {
-                // todo
-            }
-        }
-    }
-
-    /**
-     * Removes all media route selectors.
-     * <p>
-     * Note that at least one selector must be added in order to perform discovery.
-     * </p>
-     */
-    public void clearSelectors() {
-        synchronized (mLock) {
-            if (!mSelectors.isEmpty()) {
-                mSelectors.clear();
-                // todo
-            }
-        }
-    }
-
-    /**
-     * Gets a list of all media route selectors to consider during discovery.
-     */
-    public @NonNull List<MediaRouteSelector> getSelectors() {
-        synchronized (mLock) {
-            return new ArrayList<MediaRouteSelector>(mSelectors);
-        }
-    }
-
-    /**
-     * Gets the connection to the currently selected route.
-     *
-     * @return The connection to the currently selected route, or null if not connected.
-     */
-    public @NonNull ConnectionInfo getConnection() {
-        synchronized (mLock) {
-            return mConnection;
-        }
-    }
-
-    /**
-     * Gets the list of discovered destinations.
-     * <p>
-     * This list is only valid while discovery is running and is null otherwise.
-     * </p>
-     *
-     * @return The list of discovered destinations, or null if discovery is not running.
-     */
-    public @NonNull List<DestinationInfo> getDiscoveredDestinations() {
-        synchronized (mLock) {
-            if (mDiscoveryState == DISCOVERY_STATE_STARTED) {
-                return new ArrayList<DestinationInfo>(mDiscoveredDestinations.keySet());
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Gets the list of discovered routes for a particular destination.
-     * <p>
-     * This list is only valid while discovery is running and is null otherwise.
-     * </p>
-     *
-     * @param destination The destination for which to get the list of discovered routes.
-     * @return The list of discovered routes for the destination, or null if discovery
-     * is not running.
-     */
-    public @NonNull List<RouteInfo> getDiscoveredRoutes(@NonNull DestinationInfo destination) {
-        if (destination == null) {
-            throw new IllegalArgumentException("destination must not be null");
-        }
-        synchronized (mLock) {
-            if (mDiscoveryState == DISCOVERY_STATE_STARTED) {
-                List<RouteInfo> routes = mDiscoveredDestinations.get(destination);
-                if (routes != null) {
-                    return new ArrayList<RouteInfo>(routes);
-                }
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Gets the destination that has been selected.
-     *
-     * @return The selected destination, or null if disconnected.
-     */
-    public @Nullable DestinationInfo getSelectedDestination() {
-        synchronized (mLock) {
-            return mSelectedRoute != null ? mSelectedRoute.getDestination() : null;
-        }
-    }
-
-    /**
-     * Gets the route that has been selected.
-     *
-     * @return The selected destination, or null if disconnected.
-     */
-    public @Nullable RouteInfo getSelectedRoute() {
-        synchronized (mLock) {
-            return mSelectedRoute;
-        }
-    }
-
-    /**
-     * Gets the preferred audio attributes that should be used to stream live audio content
-     * based on the connected route.
-     * <p>
-     * Use an {@link AudioTrack} to send audio content to the destination with these
-     * audio attributes.
-     * </p><p>
-     * The preferred audio attributes may change when a connection is established but it
-     * will remain constant until disconnected.
-     * </p>
-     *
-     * @return The preferred audio attributes to use.  When connected, returns the
-     * route's audio attributes or null if it does not support live audio streaming.
-     * Otherwise returns audio attributes associated with {@link AudioAttributes#USAGE_MEDIA}.
-     */
-    public @Nullable AudioAttributes getPreferredAudioAttributes() {
-        synchronized (mLock) {
-            if (mConnection != null) {
-                return mConnection.getAudioAttributes();
-            }
-            return new AudioAttributes.Builder()
-                    .setLegacyStreamType(AudioManager.STREAM_MUSIC)
-                    .build();
-        }
-    }
-
-    /**
-     * Gets the preferred presentation display that should be used to stream live video content
-     * based on the connected route.
-     * <p>
-     * Use a {@link Presentation} to send video content to the destination with this display.
-     * </p><p>
-     * The preferred presentation display may change when a connection is established but it
-     * will remain constant until disconnected.
-     * </p>
-     *
-     * @return The preferred presentation display to use.  When connected, returns
-     * the route's presentation display or null if it does not support live video
-     * streaming.  Otherwise returns the first available
-     * {@link DisplayManager#DISPLAY_CATEGORY_PRESENTATION presentation display},
-     * such as a mirrored wireless or HDMI display or null if none.
-     */
-    public @Nullable Display getPreferredPresentationDisplay() {
-        synchronized (mLock) {
-            if (mConnection != null) {
-                return mConnection.getPresentationDisplay();
-            }
-            Display[] displays = mDisplayManager.getDisplays(
-                    DisplayManager.DISPLAY_CATEGORY_PRESENTATION);
-            return displays.length != 0 ? displays[0] : null;
-        }
-    }
-
-    /**
-     * Gets the preferred volume provider that should be used to control the volume
-     * of content rendered on the currently selected route.
-     * <p>
-     * The preferred volume provider may change when a connection is established but it
-     * will remain the same until disconnected.
-     * </p>
-     *
-     * @return The preferred volume provider to use, or null if the currently
-     * selected route does not support remote volume adjustment or if the connection
-     * is not yet established.  If no route is selected, returns null to indicate
-     * that system volume control should be used.
-     */
-    public @Nullable VolumeProvider getPreferredVolumeProvider() {
-        synchronized (mLock) {
-            if (mConnection != null) {
-                return mConnection.getVolumeProvider();
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Requests to pause streaming of live audio or video routes.
-     * Should be called when the application is going into the background and is
-     * no longer rendering content locally.
-     * <p>
-     * This method does nothing unless a connection has been established.
-     * </p>
-     */
-    public void pauseStream() {
-        // todo
-    }
-
-    /**
-     * Requests to resume streaming of live audio or video routes.
-     * May be called when the application is returning to the foreground and is
-     * about to resume rendering content locally.
-     * <p>
-     * This method does nothing unless a connection has been established.
-     * </p>
-     */
-    public void resumeStream() {
-        // todo
-    }
-
-    /**
-     * This class is used by UI components to let the user discover and
-     * select a destination to which the media router should connect.
-     * <p>
-     * This API has somewhat more limited functionality than the {@link MediaRouter}
-     * itself because it is designed to allow applications to control
-     * the destination of media router instances that belong to other processes.
-     * </p><p>
-     * To control the destination of your own media router, call
-     * {@link #createDelegate} to obtain a local delegate object.
-     * </p><p>
-     * To control the destination of a media router that belongs to another process,
-     * first obtain a {@link MediaController} that is associated with the media playback
-     * that is occurring in that process, then call
-     * {@link MediaController#createMediaRouterDelegate} to obtain an instance of
-     * its destination controls.  Note that special permissions may be required to
-     * obtain the {@link MediaController} instance in the first place.
-     * </p>
-     */
-    public static final class Delegate {
-        /**
-         * Returns true if the media router has been released.
-         */
-        public boolean isReleased() {
-            // todo
-            return false;
-        }
-
-        /**
-         * Gets the current route discovery state.
-         *
-         * @return The current discovery state: one of {@link #DISCOVERY_STATE_STOPPED},
-         * {@link #DISCOVERY_STATE_STARTED}.
-         */
-        public @DiscoveryState int getDiscoveryState() {
-            // todo
-            return -1;
-        }
-
-        /**
-         * Gets the current route connection state.
-         *
-         * @return The current state: one of {@link #CONNECTION_STATE_DISCONNECTED},
-         * {@link #CONNECTION_STATE_CONNECTING} or {@link #CONNECTION_STATE_CONNECTED}.
-         */
-        public @ConnectionState int getConnectionState() {
-            // todo
-            return -1;
-        }
-
-        /**
-         * Gets the currently selected destination.
-         *
-         * @return The destination information, or null if none.
-         */
-        public @Nullable DestinationInfo getSelectedDestination() {
-            return null;
-        }
-
-        /**
-         * Gets the list of discovered destinations.
-         * <p>
-         * This list is only valid while discovery is running and is null otherwise.
-         * </p>
-         *
-         * @return The list of discovered destinations, or null if discovery is not running.
-         */
-        public @NonNull List<DestinationInfo> getDiscoveredDestinations() {
-            return null;
-        }
-
-        /**
-         * Adds a callback to receive state changes.
-         *
-         * @param callback The callback to set, or null if none.
-         * @param handler The handler to receive callbacks, or null to use the current thread.
-         */
-        public void addStateCallback(@Nullable StateCallback callback,
-                @Nullable Handler handler) {
-            if (callback == null) {
-                throw new IllegalArgumentException("callback must not be null");
-            }
-            if (handler == null) {
-                handler = new Handler();
-            }
-            // todo
-        }
-
-        /**
-         * Removes a callback for state changes.
-         *
-         * @param callback The callback to set, or null if none.
-         */
-        public void removeStateCallback(@Nullable StateCallback callback) {
-            // todo
-        }
-
-        /**
-         * Starts performing discovery.
-         * <p>
-         * Performing discovery is expensive.  Make sure to call {@link #stopDiscovery}
-         * as soon as possible once a new destination has been selected to allow the system
-         * to stop services associated with discovery.
-         * </p>
-         *
-         * @param flags The discovery flags, such as {@link MediaRouter#DISCOVERY_FLAG_BACKGROUND}.
-         */
-        public void startDiscovery(@DiscoveryFlags int flags) {
-            // todo
-        }
-
-        /**
-         * Stops performing discovery.
-         */
-        public void stopDiscovery() {
-            // todo
-        }
-
-        /**
-         * Connects to a destination during route discovery.
-         * <p>
-         * This method may only be called while route discovery is active and the
-         * destination appears in the
-         * {@link #getDiscoveredDestinations list of discovered destinations}.
-         * If the media router is already connected to a route then it will first disconnect
-         * from the current route then connect to the new route.
-         * </p>
-         *
-         * @param destination The destination to which the media router should connect.
-         * @param flags The connection flags, such as {@link MediaRouter#CONNECTION_FLAG_BARGE}.
-         */
-        public void connect(@NonNull DestinationInfo destination, @DiscoveryFlags int flags) {
-            // todo
-        }
-
-        /**
-         * Disconnects from the currently selected destination.
-         * <p>
-         * Does nothing if not currently connected.
-         * </p>
-         *
-         * @param reason The reason for the disconnection: one of
-         * {@link #DISCONNECTION_REASON_APPLICATION_REQUEST},
-         * {@link #DISCONNECTION_REASON_USER_REQUEST}, or {@link #DISCONNECTION_REASON_ERROR}.
-         */
-        public void disconnect(@DisconnectionReason int reason) {
-            // todo
-        }
-    }
-
-    /**
-     * Describes immutable properties of a connection to a route.
-     */
-    public static final class ConnectionInfo {
-        private final RouteInfo mRoute;
-        private final AudioAttributes mAudioAttributes;
-        private final Display mPresentationDisplay;
-        private final VolumeProvider mVolumeProvider;
-        private final IBinder[] mProtocolBinders;
-        private final Object[] mProtocolInstances;
-        private final Bundle mExtras;
-        private final ArrayList<Closeable> mCloseables;
-
-        private static final Class<?>[] MEDIA_ROUTE_PROTOCOL_CTOR_PARAMETERS =
-                new Class<?>[] { IBinder.class };
-
-        ConnectionInfo(RouteInfo route,
-                AudioAttributes audioAttributes, Display display,
-                VolumeProvider volumeProvider, IBinder[] protocolBinders,
-                Bundle extras, ArrayList<Closeable> closeables) {
-            mRoute = route;
-            mAudioAttributes = audioAttributes;
-            mPresentationDisplay = display;
-            mVolumeProvider = volumeProvider;
-            mProtocolBinders = protocolBinders;
-            mProtocolInstances = new Object[mProtocolBinders.length];
-            mExtras = extras;
-            mCloseables = closeables;
-        }
-
-        /**
-         * Gets the route that is connected.
-         */
-        public @NonNull RouteInfo getRoute() {
-            return mRoute;
-        }
-
-        /**
-         * Gets the audio attributes which the client should use to stream audio
-         * to the destination, or null if the route does not support live audio streaming.
-         */
-        public @Nullable AudioAttributes getAudioAttributes() {
-            return mAudioAttributes;
-        }
-
-        /**
-         * Gets the display which the client should use to stream video to the
-         * destination using a {@link Presentation}, or null if the route does not
-         * support live video streaming.
-         */
-        public @Nullable Display getPresentationDisplay() {
-            return mPresentationDisplay;
-        }
-
-        /**
-         * Gets the route's volume provider, or null if none.
-         */
-        public @Nullable VolumeProvider getVolumeProvider() {
-            return mVolumeProvider;
-        }
-
-        /**
-         * Gets the set of supported route features.
-         */
-        public @RouteFeatures int getFeatures() {
-            return mRoute.getFeatures();
-        }
-
-        /**
-         * Gets the list of supported route protocols.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         */
-        public @NonNull List<String> getProtocols() {
-            return mRoute.getProtocols();
-        }
-
-        /**
-         * Gets an instance of a route protocol object that wraps the protocol binder
-         * and provides easy access to the protocol's functionality.
-         * <p>
-         * This is a convenience method which invokes {@link #getProtocolBinder(String)}
-         * using the name of the provided class then passes the resulting {@link IBinder}
-         * to a single-argument constructor of that class.
-         * </p><p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         */
-        @SuppressWarnings("unchecked")
-        public @Nullable <T> T getProtocolObject(Class<T> clazz) {
-            int index = getProtocols().indexOf(clazz.getName());
-            if (index < 0) {
-                return null;
-            }
-            if (mProtocolInstances[index] == null && mProtocolBinders[index] != null) {
-                final Constructor<T> ctor;
-                try {
-                    ctor = clazz.getConstructor(MEDIA_ROUTE_PROTOCOL_CTOR_PARAMETERS);
-                } catch (NoSuchMethodException ex) {
-                    throw new RuntimeException("Could not find public constructor "
-                            + "with IBinder argument in protocol class: " + clazz.getName(), ex);
-                }
-                try {
-                    mProtocolInstances[index] = ctor.newInstance(mProtocolBinders[index]);
-                } catch (InstantiationException | IllegalAccessException
-                        | InvocationTargetException ex) {
-                    throw new RuntimeException("Could create instance of protocol class: "
-                            + clazz.getName(), ex);
-                }
-            }
-            return (T)mProtocolInstances[index];
-        }
-
-        /**
-         * Gets the {@link IBinder} that provides access to the specified route protocol
-         * or null if the protocol is not supported.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         */
-        public @Nullable IBinder getProtocolBinder(@NonNull String name) {
-            int index = getProtocols().indexOf(name);
-            return index >= 0 ? mProtocolBinders[index] : null;
-        }
-
-        /**
-         * Gets the {@link IBinder} that provides access to the specified route protocol
-         * at the given index in the protocol list or null if the protocol is not supported.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         */
-        public @Nullable IBinder getProtocolBinder(int index) {
-            return mProtocolBinders[index];
-        }
-
-        /**
-         * Gets optional extra media route service or protocol specific information about
-         * the connection.  Use the service or protocol name as the prefix for
-         * any extras to avoid namespace collisions.
-         */
-        public @Nullable Bundle getExtras() {
-            return mExtras;
-        }
-
-        /**
-         * Closes all closeables associated with the connection when the connection
-         * is being torn down.
-         */
-        void close() {
-            final int count = mCloseables.size();
-            for (int i = 0; i < count; i++) {
-                try {
-                    mCloseables.get(i).close();
-                } catch (IOException ex) {
-                }
-            }
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "ConnectionInfo{ route=" + mRoute
-                    + ", audioAttributes=" + mAudioAttributes
-                    + ", presentationDisplay=" + mPresentationDisplay
-                    + ", volumeProvider=" + mVolumeProvider
-                    + ", protocolBinders=" + mProtocolBinders + " }";
-        }
-
-        /**
-         * Builds {@link ConnectionInfo} objects.
-         */
-        public static final class Builder {
-            private final RouteInfo mRoute;
-            private AudioAttributes mAudioAttributes;
-            private Display mPresentationDisplay;
-            private VolumeProvider mVolumeProvider;
-            private final IBinder[] mProtocols;
-            private Bundle mExtras;
-            private final ArrayList<Closeable> mCloseables = new ArrayList<Closeable>();
-
-            /**
-             * Creates a builder for connection information.
-             *
-             * @param route The route that is connected.
-             */
-            public Builder(@NonNull RouteInfo route) {
-                if (route == null) {
-                    throw new IllegalArgumentException("route");
-                }
-                mRoute = route;
-                mProtocols = new IBinder[route.getProtocols().size()];
-            }
-
-            /**
-             * Sets the audio attributes which the client should use to stream audio
-             * to the destination, or null if the route does not support live audio streaming.
-             */
-            public @NonNull Builder setAudioAttributes(
-                    @Nullable AudioAttributes audioAttributes) {
-                mAudioAttributes = audioAttributes;
-                return this;
-            }
-
-            /**
-             * Sets the display which the client should use to stream video to the
-             * destination using a {@link Presentation}, or null if the route does not
-             * support live video streaming.
-             */
-            public @NonNull Builder setPresentationDisplay(@Nullable Display display) {
-                mPresentationDisplay = display;
-                return this;
-            }
-
-            /**
-             * Sets the route's volume provider, or null if none.
-             */
-            public @NonNull Builder setVolumeProvider(@Nullable VolumeProvider provider) {
-                mVolumeProvider = provider;
-                return this;
-            }
-
-            /**
-             * Sets the binder stub of a supported route protocol using
-             * the protocol's fully qualified class name.  The protocol must be one
-             * of those that was indicated as being supported by the route.
-             * <p>
-             * If the stub implements {@link Closeable} then it will automatically
-             * be closed when the client disconnects from the route.
-             * </p><p>
-             * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-             * for more information.
-             * </p>
-             */
-            public @NonNull Builder setProtocolStub(@NonNull Class<?> clazz,
-                    @NonNull IInterface stub) {
-                if (clazz == null) {
-                    throw new IllegalArgumentException("clazz must not be null");
-                }
-                if (stub == null) {
-                    throw new IllegalArgumentException("stub must not be null");
-                }
-                if (stub instanceof Closeable) {
-                    mCloseables.add((Closeable)stub);
-                }
-                return setProtocolBinder(clazz.getName(), stub.asBinder());
-            }
-
-            /**
-             * Sets the binder interface of a supported route protocol by name.
-             * The protocol must be one of those that was indicated as being supported
-             * by the route.
-             * <p>
-             * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-             * for more information.
-             * </p>
-             */
-            public @NonNull Builder setProtocolBinder(@NonNull String name,
-                    @NonNull IBinder binder) {
-                if (TextUtils.isEmpty(name)) {
-                    throw new IllegalArgumentException("name must not be null or empty");
-                }
-                if (binder == null) {
-                    throw new IllegalArgumentException("binder must not be null");
-                }
-                int index = mRoute.getProtocols().indexOf(name);
-                if (index < 0) {
-                    throw new IllegalArgumentException("name must specify a protocol that "
-                            + "the route actually declared that it supports: "
-                            + "name=" + name + ", protocols=" + mRoute.getProtocols());
-                }
-                mProtocols[index] = binder;
-                return this;
-            }
-
-            /**
-             * Sets optional extra media route service or protocol specific information about
-             * the connection.  Use the service or protocol name as the prefix for
-             * any extras to avoid namespace collisions.
-             */
-            public @NonNull Builder setExtras(@Nullable Bundle extras) {
-                mExtras = extras;
-                return this;
-            }
-
-            /**
-             * Builds the {@link ConnectionInfo} object.
-             */
-            public @NonNull ConnectionInfo build() {
-                return new ConnectionInfo(mRoute,
-                        mAudioAttributes, mPresentationDisplay,
-                        mVolumeProvider, mProtocols, mExtras, mCloseables);
-            }
-        }
-    }
-
-    /**
-     * Describes one particular way of routing media content to a destination
-     * according to the capabilities specified by a media route selector on behalf
-     * of an application.
-     */
-    public static final class RouteInfo {
-        private final String mId;
-        private final DestinationInfo mDestination;
-        private final MediaRouteSelector mSelector;
-        private final int mFeatures;
-        private final ArrayList<String> mProtocols;
-        private final Bundle mExtras;
-
-        RouteInfo(String id, DestinationInfo destination, MediaRouteSelector selector,
-                int features, ArrayList<String> protocols, Bundle extras) {
-            mId = id;
-            mDestination = destination;
-            mSelector = selector;
-            mFeatures = features;
-            mProtocols = protocols;
-            mExtras = extras;
-        }
-
-        /**
-         * Gets the route's stable identifier.
-         * <p>
-         * The id is intended to uniquely identify the route among all routes that
-         * are offered by a particular destination in such a way that the client can
-         * refer to it at a later time.
-         * </p>
-         */
-        public @NonNull String getId() {
-            return mId;
-        }
-
-        /**
-         * Gets the destination that is offering this route.
-         */
-        public @NonNull DestinationInfo getDestination() {
-            return mDestination;
-        }
-
-        /**
-         * Gets the media route selector provided by the client for which this
-         * route was created.
-         * <p>
-         * It is implied that this route supports all of the required capabilities
-         * that were expressed in the selector.
-         * </p>
-         */
-        public @NonNull MediaRouteSelector getSelector() {
-            return mSelector;
-        }
-
-        /**
-         * Gets the set of supported route features.
-         */
-        public @RouteFeatures int getFeatures() {
-            return mFeatures;
-        }
-
-        /**
-         * Gets the list of supported route protocols.
-         * <p>
-         * Refer to <code>android.support.media.protocols.MediaRouteProtocol</code>
-         * for more information.
-         * </p>
-         */
-        public @NonNull List<String> getProtocols() {
-            return mProtocols;
-        }
-
-        /**
-         * Gets optional extra information about the route, or null if none.
-         */
-        public @Nullable Bundle getExtras() {
-            return mExtras;
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "RouteInfo{ id=" + mId + ", destination=" + mDestination
-                    + ", features=0x" + Integer.toHexString(mFeatures)
-                    + ", selector=" + mSelector + ", protocols=" + mProtocols
-                    + ", extras=" + mExtras + " }";
-        }
-
-        /**
-         * Builds {@link RouteInfo} objects.
-         */
-        public static final class Builder {
-            private final DestinationInfo mDestination;
-            private final String mId;
-            private final MediaRouteSelector mSelector;
-            private int mFeatures;
-            private final ArrayList<String> mProtocols = new ArrayList<String>();
-            private Bundle mExtras;
-
-            /**
-             * Creates a builder for route information.
-             *
-             * @param id The route's stable identifier.
-             * @param destination The destination of this route.
-             * @param selector The media route selector provided by the client for which
-             * this route was created.  This must be one of the selectors that was
-             * included in the discovery request.
-             */
-            public Builder(@NonNull String id, @NonNull DestinationInfo destination,
-                    @NonNull MediaRouteSelector selector) {
-                if (TextUtils.isEmpty(id)) {
-                    throw new IllegalArgumentException("id must not be null or empty");
-                }
-                if (destination == null) {
-                    throw new IllegalArgumentException("destination must not be null");
-                }
-                if (selector == null) {
-                    throw new IllegalArgumentException("selector must not be null");
-                }
-                mDestination = destination;
-                mId = id;
-                mSelector = selector;
-            }
-
-            /**
-             * Sets the set of supported route features.
-             */
-            public @NonNull Builder setFeatures(@RouteFeatures int features) {
-                mFeatures = features;
-                return this;
-            }
-
-            /**
-             * Adds a supported route protocol using its fully qualified class name.
-             * <p>
-             * If the protocol was not requested by the client in its selector
-             * then it will be silently discarded.
-             * </p>
-             */
-            public @NonNull <T extends IInterface> Builder addProtocol(@NonNull Class<T> clazz) {
-                if (clazz == null) {
-                    throw new IllegalArgumentException("clazz must not be null");
-                }
-                return addProtocol(clazz.getName());
-            }
-
-            /**
-             * Adds a supported route protocol by name.
-             * <p>
-             * If the protocol was not requested by the client in its selector
-             * then it will be silently discarded.
-             * </p>
-             */
-            public @NonNull Builder addProtocol(@NonNull String name) {
-                if (TextUtils.isEmpty(name)) {
-                    throw new IllegalArgumentException("name must not be null");
-                }
-                if (mSelector.containsProtocol(name)) {
-                    mProtocols.add(name);
-                }
-                return this;
-            }
-
-            /**
-             * Sets optional extra information about the route, or null if none.
-             */
-            public @NonNull Builder setExtras(@Nullable Bundle extras) {
-                mExtras = extras;
-                return this;
-            }
-
-            /**
-             * Builds the {@link RouteInfo} object.
-             * <p>
-             * Ensures that all required protocols have been supplied.
-             * </p>
-             */
-            public @NonNull RouteInfo build() {
-                int missingFeatures = mSelector.getRequiredFeatures() & ~mFeatures;
-                if (missingFeatures != 0) {
-                    throw new IllegalStateException("The media route selector "
-                            + "specified required features which this route does "
-                            + "not appear to support so it should not have been published: "
-                            + "missing 0x" + Integer.toHexString(missingFeatures));
-                }
-                for (String protocol : mSelector.getRequiredProtocols()) {
-                    if (!mProtocols.contains(protocol)) {
-                        throw new IllegalStateException("The media route selector "
-                                + "specified required protocols which this route "
-                                + "does not appear to support so it should not have "
-                                + "been published: missing " + protocol);
-                    }
-                }
-                return new RouteInfo(mId, mDestination, mSelector,
-                        mFeatures, mProtocols, mExtras);
-            }
-        }
-    }
-
-    /**
-     * Describes a destination for media content such as a device,
-     * an individual port on a device, or a group of devices.
-     */
-    public static final class DestinationInfo {
-        private final String mId;
-        private final ServiceMetadata mService;
-        private final CharSequence mName;
-        private final CharSequence mDescription;
-        private final int mIconResourceId;
-        private final Bundle mExtras;
-
-        DestinationInfo(String id, ServiceMetadata service,
-                CharSequence name, CharSequence description,
-                int iconResourceId, Bundle extras) {
-            mId = id;
-            mService = service;
-            mName = name;
-            mDescription = description;
-            mIconResourceId = iconResourceId;
-            mExtras = extras;
-        }
-
-        /**
-         * Gets the destination's stable identifier.
-         * <p>
-         * The id is intended to uniquely identify the destination among all destinations
-         * provided by the media route service in such a way that the client can
-         * refer to it at a later time.  Ideally, the id should be resilient to
-         * user-initiated actions such as changes to the name or description
-         * of the destination.
-         * </p>
-         */
-        public @NonNull String getId() {
-            return mId;
-        }
-
-        /**
-         * Gets metadata about the service that is providing access to this destination.
-         */
-        public @NonNull ServiceMetadata getServiceMetadata() {
-            return mService;
-        }
-
-        /**
-         * Gets the destination's name for display to the user.
-         */
-        public @NonNull CharSequence getName() {
-            return mName;
-        }
-
-        /**
-         * Gets the destination's description for display to the user, or null if none.
-         */
-        public @Nullable CharSequence getDescription() {
-            return mDescription;
-        }
-
-        /**
-         * Gets an icon resource from the service's package which is used
-         * to identify the destination, or -1 if none.
-         */
-        public @DrawableRes int getIconResourceId() {
-            return mIconResourceId;
-        }
-
-        /**
-         * Loads the icon drawable, or null if none.
-         */
-        public @Nullable Drawable loadIcon(@NonNull PackageManager pm) {
-            return mIconResourceId >= 0 ? mService.getDrawable(pm, mIconResourceId) : null;
-        }
-
-        /**
-         * Gets optional extra information about the destination, or null if none.
-         */
-        public @Nullable Bundle getExtras() {
-            return mExtras;
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "DestinationInfo{ id=" + mId + ", service=" + mService + ", name=" + mName
-                    + ", description=" + mDescription + ", iconResourceId=" + mIconResourceId
-                    + ", extras=" + mExtras + " }";
-        }
-
-        /**
-         * Builds {@link DestinationInfo} objects.
-         */
-        public static final class Builder {
-            private final String mId;
-            private final ServiceMetadata mService;
-            private final CharSequence mName;
-            private CharSequence mDescription;
-            private int mIconResourceId = -1;
-            private Bundle mExtras;
-
-            /**
-             * Creates a builder for destination information.
-             *
-             * @param id The destination's stable identifier.
-             * @param service Metatada about the service that is providing access to
-             * this destination.
-             * @param name The destination's name for display to the user.
-             */
-            public Builder(@NonNull String id, @NonNull ServiceMetadata service,
-                    @NonNull CharSequence name) {
-                if (TextUtils.isEmpty(id)) {
-                    throw new IllegalArgumentException("id must not be null or empty");
-                }
-                if (service == null) {
-                    throw new IllegalArgumentException("service must not be null");
-                }
-                if (TextUtils.isEmpty(name)) {
-                    throw new IllegalArgumentException("name must not be null or empty");
-                }
-                mId = id;
-                mService = service;
-                mName = name;
-            }
-
-            /**
-             * Sets the destination's description for display to the user, or null if none.
-             */
-            public @NonNull Builder setDescription(@Nullable CharSequence description) {
-                mDescription = description;
-                return this;
-            }
-
-            /**
-             * Sets an icon resource from this package used to identify the destination,
-             * or -1 if none.
-             */
-            public @NonNull Builder setIconResourceId(@DrawableRes int resid) {
-                mIconResourceId = resid;
-                return this;
-            }
-
-            /**
-             * Gets optional extra information about the destination, or null if none.
-             */
-            public @NonNull Builder setExtras(@Nullable Bundle extras) {
-                mExtras = extras;
-                return this;
-            }
-
-            /**
-             * Builds the {@link DestinationInfo} object.
-             */
-            public @NonNull DestinationInfo build() {
-                return new DestinationInfo(mId, mService, mName, mDescription,
-                        mIconResourceId, mExtras);
-            }
-        }
-    }
-
-    /**
-     * Describes metadata about a {@link MediaRouteService} which is providing
-     * access to certain kinds of destinations.
-     */
-    public static final class ServiceMetadata {
-        private final ServiceInfo mService;
-        private CharSequence mLabel;
-        private Drawable mIcon;
-
-        ServiceMetadata(Service service) throws NameNotFoundException {
-            mService = service.getPackageManager().getServiceInfo(
-                    new ComponentName(service, service.getClass()),
-                    PackageManager.GET_META_DATA);
-        }
-
-        ServiceMetadata(ServiceInfo service) {
-            mService = service;
-        }
-
-        /**
-         * Gets the service's component information including it name, label and icon.
-         */
-        public @NonNull ServiceInfo getService() {
-            return mService;
-        }
-
-        /**
-         * Gets the service's component name.
-         */
-        public @NonNull ComponentName getComponentName() {
-            return new ComponentName(mService.packageName, mService.name);
-        }
-
-        /**
-         * Gets the service's package name.
-         */
-        public @NonNull String getPackageName() {
-            return mService.packageName;
-        }
-
-        /**
-         * Gets the service's name for display to the user, or null if none.
-         */
-        public @NonNull CharSequence getLabel(@NonNull PackageManager pm) {
-            if (mLabel == null) {
-                mLabel = mService.loadLabel(pm);
-            }
-            return mLabel;
-        }
-
-        /**
-         * Gets the icon drawable, or null if none.
-         */
-        public @Nullable Drawable getIcon(@NonNull PackageManager pm) {
-            if (mIcon == null) {
-                mIcon = mService.loadIcon(pm);
-            }
-            return mIcon;
-        }
-
-        // TODO: add service metadata
-
-        Drawable getDrawable(PackageManager pm, int resid) {
-            return pm.getDrawable(getPackageName(), resid, mService.applicationInfo);
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "ServiceInfo{ service=" + getComponentName().toShortString() + " }";
-        }
-    }
-
-    /**
-     * Describes a request to discover routes on behalf of an application.
-     */
-    public static final class DiscoveryRequest {
-        private final ArrayList<MediaRouteSelector> mSelectors =
-                new ArrayList<MediaRouteSelector>();
-        private int mFlags;
-
-        DiscoveryRequest(@NonNull List<MediaRouteSelector> selectors) {
-            setSelectors(selectors);
-        }
-
-        /**
-         * Sets the list of media route selectors to consider during discovery.
-         */
-        public void setSelectors(@NonNull List<MediaRouteSelector> selectors) {
-            if (selectors == null) {
-                throw new IllegalArgumentException("selectors");
-            }
-            mSelectors.clear();
-            mSelectors.addAll(selectors);
-        }
-
-        /**
-         * Gets the list of media route selectors to consider during discovery.
-         */
-        public @NonNull List<MediaRouteSelector> getSelectors() {
-            return mSelectors;
-        }
-
-        /**
-         * Gets discovery flags, such as {@link MediaRouter#DISCOVERY_FLAG_BACKGROUND}.
-         */
-        public @DiscoveryFlags int getFlags() {
-            return mFlags;
-        }
-
-        /**
-         * Sets discovery flags, such as {@link MediaRouter#DISCOVERY_FLAG_BACKGROUND}.
-         */
-        public void setFlags(@DiscoveryFlags int flags) {
-            mFlags = flags;
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "DiscoveryRequest{ selectors=" + mSelectors
-                    + ", flags=0x" + Integer.toHexString(mFlags)
-                    + " }";
-        }
-    }
-
-    /**
-     * Describes a request to connect to a previously discovered route on
-     * behalf of an application.
-     */
-    public static final class ConnectionRequest {
-        private RouteInfo mRoute;
-        private int mFlags;
-        private Bundle mExtras;
-
-        ConnectionRequest(@NonNull RouteInfo route) {
-            setRoute(route);
-        }
-
-        /**
-         * Gets the route to which to connect.
-         */
-        public @NonNull RouteInfo getRoute() {
-            return mRoute;
-        }
-
-        /**
-         * Sets the route to which to connect.
-         */
-        public void setRoute(@NonNull RouteInfo route) {
-            if (route == null) {
-                throw new IllegalArgumentException("route must not be null");
-            }
-            mRoute = route;
-        }
-
-        /**
-         * Gets connection flags, such as {@link MediaRouter#CONNECTION_FLAG_BARGE}.
-         */
-        public @ConnectionFlags int getFlags() {
-            return mFlags;
-        }
-
-        /**
-         * Sets connection flags, such as {@link MediaRouter#CONNECTION_FLAG_BARGE}.
-         */
-        public void setFlags(@ConnectionFlags int flags) {
-            mFlags = flags;
-        }
-
-        /**
-         * Gets optional extras supplied by the application as part of the call to
-         * connect, or null if none.  The media route service may use this
-         * information to configure the route during connection.
-         */
-        public @Nullable Bundle getExtras() {
-            return mExtras;
-        }
-
-        /**
-         * Sets optional extras supplied by the application as part of the call to
-         * connect, or null if none.  The media route service may use this
-         * information to configure the route during connection.
-         */
-        public void setExtras(@Nullable Bundle extras) {
-            mExtras = extras;
-        }
-
-        @Override
-        public @NonNull String toString() {
-            return "ConnectionRequest{ route=" + mRoute
-                    + ", flags=0x" + Integer.toHexString(mFlags)
-                    + ", extras=" + mExtras + " }";
-        }
-    }
-
-    /**
-     * Callback interface to specify policy for route discovery, filtering,
-     * and connection establishment as well as observe media router state changes.
-     */
-    public static abstract class RoutingCallback extends StateCallback {
-        /**
-         * Called to prepare a discovery request object to specify the desired
-         * media route selectors when the media router has been asked to start discovery.
-         * <p>
-         * By default, the discovery request contains all of the selectors which
-         * have been added to the media router.  Subclasses may override the list of
-         * selectors by modifying the discovery request object before returning.
-         * </p>
-         *
-         * @param request The discovery request object which may be modified by
-         * this method to alter how discovery will be performed.
-         * @param selectors The immutable list of media route selectors which were
-         * added to the media router.
-         * @return True to allow discovery to proceed or false to abort it.
-         * By default, this methods returns true.
-         */
-        public boolean onPrepareDiscoveryRequest(@NonNull DiscoveryRequest request,
-                @NonNull List<MediaRouteSelector> selectors) {
-            return true;
-        }
-
-        /**
-         * Called to prepare a connection request object to specify the desired
-         * route and connection parameters when the media router has been asked to
-         * connect to a particular destination.
-         * <p>
-         * By default, the connection request specifies the first available route
-         * to the destination.  Subclasses may override the route and destination
-         * or set additional connection parameters by modifying the connection request
-         * object before returning.
-         * </p>
-         *
-         * @param request The connection request object which may be modified by
-         * this method to alter how the connection will be established.
-         * @param destination The destination to which the media router was asked
-         * to connect.
-         * @param routes The list of routes that belong to that destination sorted
-         * in the same order as their matching media route selectors which were
-         * used during discovery.
-         * @return True to allow the connection to proceed or false to abort it.
-         * By default, this methods returns true.
-         */
-        public boolean onPrepareConnectionRequest(
-                @NonNull ConnectionRequest request,
-                @NonNull DestinationInfo destination, @NonNull List<RouteInfo> routes) {
-            return true;
-        }
-    }
-
-    /**
-     * Callback class to receive events from a {@link MediaRouter.Delegate}.
-     */
-    public static abstract class StateCallback {
-        /**
-         * Called when the media router has been released.
-         */
-        public void onReleased() { }
-
-        /**
-         * Called when the discovery state has changed.
-         *
-         * @param state The new discovery state: one of
-         * {@link #DISCOVERY_STATE_STOPPED} or {@link #DISCOVERY_STATE_STARTED}.
-         */
-        public void onDiscoveryStateChanged(@DiscoveryState int state) { }
-
-        /**
-         * Called when the connection state has changed.
-         *
-         * @param state The new connection state: one of
-         * {@link #CONNECTION_STATE_DISCONNECTED}, {@link #CONNECTION_STATE_CONNECTING}
-         * or {@link #CONNECTION_STATE_CONNECTED}.
-         */
-        public void onConnectionStateChanged(@ConnectionState int state) { }
-
-        /**
-         * Called when the selected destination has changed.
-         *
-         * @param destination The new selected destination, or null if none.
-         */
-        public void onSelectedDestinationChanged(@Nullable DestinationInfo destination) { }
-
-        /**
-         * Called when route discovery has started.
-         */
-        public void onDiscoveryStarted() { }
-
-        /**
-         * Called when route discovery has stopped normally.
-         * <p>
-         * Abnormal termination is reported via {@link #onDiscoveryFailed}.
-         * </p>
-         */
-        public void onDiscoveryStopped() { }
-
-        /**
-         * Called when discovery has failed in a non-recoverable manner.
-         *
-         * @param error The error code: one of
-         * {@link MediaRouter#DISCOVERY_ERROR_UNKNOWN},
-         * {@link MediaRouter#DISCOVERY_ERROR_ABORTED},
-         * or {@link MediaRouter#DISCOVERY_ERROR_NO_CONNECTIVITY}.
-         * @param message The localized error message, or null if none.  This message
-         * may be shown to the user.
-         * @param extras Additional information about the error which a client
-         * may use, or null if none.
-         */
-        public void onDiscoveryFailed(@DiscoveryError int error, @Nullable CharSequence message,
-                @Nullable Bundle extras) { }
-
-        /**
-         * Called when a new destination is found or has changed during discovery.
-         * <p>
-         * Certain destinations may be omitted because they have been filtered
-         * out by the media router's routing callback.
-         * </p>
-         *
-         * @param destination The destination that was found.
-         */
-        public void onDestinationFound(@NonNull DestinationInfo destination) { }
-
-        /**
-         * Called when a destination is no longer reachable or is no longer
-         * offering any routes that satisfy the discovery request.
-         *
-         * @param destination The destination that went away.
-         */
-        public void onDestinationLost(@NonNull DestinationInfo destination) { }
-
-        /**
-         * Called when a connection attempt begins.
-         */
-        public void onConnecting() { }
-
-        /**
-         * Called when the connection succeeds.
-         */
-        public void onConnected() { }
-
-        /**
-         * Called when the connection is terminated normally.
-         * <p>
-         * Abnormal termination is reported via {@link #onConnectionFailed}.
-         * </p>
-         */
-        public void onDisconnected() { }
-
-        /**
-         * Called when a connection attempt or connection in
-         * progress has failed in a non-recoverable manner.
-         *
-         * @param error The error code: one of
-         * {@link MediaRouter#CONNECTION_ERROR_ABORTED},
-         * {@link MediaRouter#CONNECTION_ERROR_UNAUTHORIZED},
-         * {@link MediaRouter#CONNECTION_ERROR_UNREACHABLE},
-         * {@link MediaRouter#CONNECTION_ERROR_BUSY},
-         * {@link MediaRouter#CONNECTION_ERROR_TIMEOUT},
-         * {@link MediaRouter#CONNECTION_ERROR_BROKEN},
-         * or {@link MediaRouter#CONNECTION_ERROR_BARGED}.
-         * @param message The localized error message, or null if none.  This message
-         * may be shown to the user.
-         * @param extras Additional information about the error which a client
-         * may use, or null if none.
-         */
-        public void onConnectionFailed(@ConnectionError int error,
-                @Nullable CharSequence message, @Nullable Bundle extras) { }
-    }
-}
diff --git a/media/java/android/media/routing/ParcelableConnectionInfo.aidl b/media/java/android/media/routing/ParcelableConnectionInfo.aidl
deleted file mode 100644
index 4a9ec94..0000000
--- a/media/java/android/media/routing/ParcelableConnectionInfo.aidl
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2014, 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.media.routing;
-
-parcelable ParcelableConnectionInfo;
diff --git a/media/java/android/media/routing/ParcelableConnectionInfo.java b/media/java/android/media/routing/ParcelableConnectionInfo.java
deleted file mode 100644
index 45cfe9f..0000000
--- a/media/java/android/media/routing/ParcelableConnectionInfo.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2014 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.media.routing;
-
-import android.media.AudioAttributes;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Internal parcelable representation of a media route connection.
- */
-class ParcelableConnectionInfo implements Parcelable {
-    public AudioAttributes audioAttributes;
-    public int presentationDisplayId = -1;
-    // todo: volume
-    public IBinder[] protocolBinders;
-    public Bundle extras;
-
-    public static final Parcelable.Creator<ParcelableConnectionInfo> CREATOR =
-            new Parcelable.Creator<ParcelableConnectionInfo>() {
-        @Override
-        public ParcelableConnectionInfo createFromParcel(Parcel source) {
-            ParcelableConnectionInfo info = new ParcelableConnectionInfo();
-            if (source.readInt() != 0) {
-                info.audioAttributes = AudioAttributes.CREATOR.createFromParcel(source);
-            }
-            info.presentationDisplayId = source.readInt();
-            info.protocolBinders = source.createBinderArray();
-            info.extras = source.readBundle();
-            return info;
-        }
-
-        @Override
-        public ParcelableConnectionInfo[] newArray(int size) {
-            return new ParcelableConnectionInfo[size];
-        }
-    };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        if (audioAttributes != null) {
-            dest.writeInt(1);
-            audioAttributes.writeToParcel(dest, flags);
-        } else {
-            dest.writeInt(0);
-        }
-        dest.writeInt(presentationDisplayId);
-        dest.writeBinderArray(protocolBinders);
-        dest.writeBundle(extras);
-    }
-}
diff --git a/media/java/android/media/routing/ParcelableDestinationInfo.aidl b/media/java/android/media/routing/ParcelableDestinationInfo.aidl
deleted file mode 100644
index bf1c198..0000000
--- a/media/java/android/media/routing/ParcelableDestinationInfo.aidl
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2014, 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.media.routing;
-
-parcelable ParcelableDestinationInfo;
diff --git a/media/java/android/media/routing/ParcelableDestinationInfo.java b/media/java/android/media/routing/ParcelableDestinationInfo.java
deleted file mode 100644
index eca5eec..0000000
--- a/media/java/android/media/routing/ParcelableDestinationInfo.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2014 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.media.routing;
-
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.text.TextUtils;
-
-/**
- * Internal parcelable representation of a media destination.
- */
-class ParcelableDestinationInfo implements Parcelable {
-    public String id;
-    public CharSequence name;
-    public CharSequence description;
-    public int iconResourceId;
-    public Bundle extras;
-
-    public static final Parcelable.Creator<ParcelableDestinationInfo> CREATOR =
-            new Parcelable.Creator<ParcelableDestinationInfo>() {
-        @Override
-        public ParcelableDestinationInfo createFromParcel(Parcel source) {
-            ParcelableDestinationInfo info = new ParcelableDestinationInfo();
-            info.id = source.readString();
-            info.name = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
-            info.description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source);
-            info.iconResourceId = source.readInt();
-            info.extras = source.readBundle();
-            return info;
-        }
-
-        @Override
-        public ParcelableDestinationInfo[] newArray(int size) {
-            return new ParcelableDestinationInfo[size];
-        }
-    };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(id);
-        TextUtils.writeToParcel(name, dest, flags);
-        TextUtils.writeToParcel(description, dest, flags);
-        dest.writeInt(iconResourceId);
-        dest.writeBundle(extras);
-    }
-}
diff --git a/media/java/android/media/routing/ParcelableRouteInfo.aidl b/media/java/android/media/routing/ParcelableRouteInfo.aidl
deleted file mode 100644
index 126afaa..0000000
--- a/media/java/android/media/routing/ParcelableRouteInfo.aidl
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2014, 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.media.routing;
-
-parcelable ParcelableRouteInfo;
diff --git a/media/java/android/media/routing/ParcelableRouteInfo.java b/media/java/android/media/routing/ParcelableRouteInfo.java
deleted file mode 100644
index fb1a547..0000000
--- a/media/java/android/media/routing/ParcelableRouteInfo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2014 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.media.routing;
-
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Internal parcelable representation of a media route.
- */
-class ParcelableRouteInfo implements Parcelable {
-    public String id;
-    public int selectorIndex; // index of selector within list used for discovery
-    public int features;
-    public String[] protocols;
-    public Bundle extras;
-
-    public static final Parcelable.Creator<ParcelableRouteInfo> CREATOR =
-            new Parcelable.Creator<ParcelableRouteInfo>() {
-        @Override
-        public ParcelableRouteInfo createFromParcel(Parcel source) {
-            ParcelableRouteInfo info = new ParcelableRouteInfo();
-            info.id = source.readString();
-            info.selectorIndex = source.readInt();
-            info.features = source.readInt();
-            info.protocols = source.createStringArray();
-            info.extras = source.readBundle();
-            return info;
-        }
-
-        @Override
-        public ParcelableRouteInfo[] newArray(int size) {
-            return new ParcelableRouteInfo[size];
-        }
-    };
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(id);
-        dest.writeInt(selectorIndex);
-        dest.writeInt(features);
-        dest.writeStringArray(protocols);
-        dest.writeBundle(extras);
-    }
-}
diff --git a/media/java/android/media/session/ISession.aidl b/media/java/android/media/session/ISession.aidl
index af3b72e..bd0019f 100644
--- a/media/java/android/media/session/ISession.aidl
+++ b/media/java/android/media/session/ISession.aidl
@@ -19,7 +19,6 @@
 import android.content.pm.ParceledListSlice;
 import android.media.AudioAttributes;
 import android.media.MediaMetadata;
-import android.media.routing.IMediaRouter;
 import android.media.session.ISessionController;
 import android.media.session.PlaybackState;
 import android.media.session.MediaSession;
@@ -35,7 +34,6 @@
     ISessionController getController();
     void setFlags(int flags);
     void setActive(boolean active);
-    void setMediaRouter(in IMediaRouter router);
     void setMediaButtonReceiver(in PendingIntent mbr);
     void setLaunchPendingIntent(in PendingIntent pi);
     void destroy();
diff --git a/media/java/android/media/session/ISessionController.aidl b/media/java/android/media/session/ISessionController.aidl
index 8d58a60..285e5f7 100644
--- a/media/java/android/media/session/ISessionController.aidl
+++ b/media/java/android/media/session/ISessionController.aidl
@@ -20,8 +20,6 @@
 import android.content.pm.ParceledListSlice;
 import android.media.MediaMetadata;
 import android.media.Rating;
-import android.media.routing.IMediaRouterDelegate;
-import android.media.routing.IMediaRouterStateCallback;
 import android.media.session.ISessionControllerCallback;
 import android.media.session.MediaSession;
 import android.media.session.ParcelableVolumeInfo;
@@ -51,8 +49,6 @@
     void adjustVolume(int direction, int flags, String packageName);
     void setVolumeTo(int value, int flags, String packageName);
 
-    IMediaRouterDelegate createMediaRouterDelegate(IMediaRouterStateCallback callback);
-
     // These commands are for the TransportControls
     void play();
     void playFromMediaId(String mediaId, in Bundle extras);
diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java
index dd81a22..2acee04 100644
--- a/media/java/android/media/session/MediaController.java
+++ b/media/java/android/media/session/MediaController.java
@@ -26,7 +26,6 @@
 import android.media.MediaMetadata;
 import android.media.Rating;
 import android.media.VolumeProvider;
-import android.media.routing.MediaRouter;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -120,17 +119,6 @@
     }
 
     /**
-     * Creates a media router delegate through which the destination of the media
-     * router may be observed and controlled.
-     *
-     * @return The media router delegate, or null if the media session does
-     * not support media routing.
-     */
-    public @Nullable MediaRouter.Delegate createMediaRouterDelegate() {
-        return new MediaRouter.Delegate();
-    }
-
-    /**
      * Send the specified media button event to the session. Only media keys can
      * be sent by this method, other keys will be ignored.
      *
diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java
index cee82b4..e1e9b79 100644
--- a/media/java/android/media/session/MediaSession.java
+++ b/media/java/android/media/session/MediaSession.java
@@ -29,7 +29,6 @@
 import android.media.MediaMetadata;
 import android.media.Rating;
 import android.media.VolumeProvider;
-import android.media.routing.MediaRouter;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -225,23 +224,6 @@
     }
 
     /**
-     * Associates a {@link MediaRouter} with this session to control the destination
-     * of media content.
-     * <p>
-     * A media router may only be associated with at most one session at a time.
-     * </p>
-     *
-     * @param router The media router, or null to remove the current association.
-     */
-    public void setMediaRouter(@Nullable MediaRouter router) {
-        try {
-            mBinder.setMediaRouter(router != null ? router.getBinder() : null);
-        } catch (RemoteException e) {
-            Log.wtf(TAG, "Failure in setMediaButtonReceiver.", e);
-        }
-    }
-
-    /**
      * Set a pending intent for your media button receiver to allow restarting
      * playback after the session has been stopped. If your app is started in
      * this way an {@link Intent#ACTION_MEDIA_BUTTON} intent will be sent via
diff --git a/media/java/android/media/tv/TvContentRating.java b/media/java/android/media/tv/TvContentRating.java
index daeb1cc..043b80e 100644
--- a/media/java/android/media/tv/TvContentRating.java
+++ b/media/java/android/media/tv/TvContentRating.java
@@ -783,10 +783,15 @@
     private final int mHashCode;
 
     /**
-     * Rating constant denoting unrated content.
+     * Rating constant denoting unrated content. Used to handle the case where the content rating
+     * information is missing.
+     *
+     * <p>TV input services can call {@link TvInputManager#isRatingBlocked} with this constant to
+     * determine whether they should block unrated content. The subsequent call to
+     * {@link TvInputService.Session#notifyContentBlocked} with the same constant notifies
+     * applications that the current program content is blocked by parental controls.
      */
-    public static final TvContentRating UNRATED = new TvContentRating("com.android.tv", "",
-            "UNRATED", null);
+    public static final TvContentRating UNRATED = new TvContentRating("null", "null", "null", null);
 
     /**
      * Creates a {@code TvContentRating} object with predefined content rating strings.
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 3272a23..dca0631 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -1035,7 +1035,7 @@
     /**
      * Checks whether a given TV content rating is blocked by the user.
      *
-     * @param rating The TV content rating to check.
+     * @param rating The TV content rating to check. Can be {@link TvContentRating#UNRATED}.
      * @return {@code true} if the given TV content rating is blocked, {@code false} otherwise.
      */
     public boolean isRatingBlocked(@NonNull TvContentRating rating) {
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index 34c36c3..c1035b0 100644
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -528,11 +528,12 @@
          * TvInputManager.isParentalControlsEnabled()} returns {@code true}). Whether the TV input
          * service should block the content or not is determined by invoking
          * {@link TvInputManager#isRatingBlocked TvInputManager.isRatingBlocked(TvContentRating)}
-         * with the content rating for the current program. Then the {@link TvInputManager} makes a
-         * judgment based on the user blocked ratings stored in the secure settings and returns the
-         * result. If the rating in question turns out to be blocked, the TV input service must
-         * immediately block the content and call this method with the content rating of the current
-         * program to prompt the PIN verification screen.
+         * with the content rating for the current program or {@link TvContentRating#UNRATED} in
+         * case the rating information is missing. Then the {@link TvInputManager} makes a judgment
+         * based on the user blocked ratings stored in the secure settings and returns the result.
+         * If the rating in question turns out to be blocked, the TV input service must immediately
+         * block the content and call this method with the content rating of the current program to
+         * prompt the PIN verification screen.
          *
          * <p>Each TV input service also needs to continuously listen to any changes made to the
          * parental controls settings by registering a broadcast receiver to receive
@@ -540,7 +541,8 @@
          * {@link TvInputManager#ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED} and immediately
          * reevaluate the current program with the new parental controls settings.
          *
-         * @param rating The content rating for the current TV program.
+         * @param rating The content rating for the current TV program. Can be
+         *            {@link TvContentRating#UNRATED}.
          * @see #notifyContentAllowed
          * @see TvInputManager
          */
diff --git a/media/jni/android_media_MediaSync.h b/media/jni/android_media_MediaSync.h
index fa5e5e0..5823057 100644
--- a/media/jni/android_media_MediaSync.h
+++ b/media/jni/android_media_MediaSync.h
@@ -26,7 +26,7 @@
 
 struct AudioPlaybackRate;
 class AudioTrack;
-struct IGraphicBufferProducer;
+class IGraphicBufferProducer;
 struct MediaClock;
 class MediaSync;
 
diff --git a/media/lib/remotedisplay/java/com/android/media/remotedisplay/RemoteDisplayProvider.java b/media/lib/remotedisplay/java/com/android/media/remotedisplay/RemoteDisplayProvider.java
index e2df77c..4d3edb8 100644
--- a/media/lib/remotedisplay/java/com/android/media/remotedisplay/RemoteDisplayProvider.java
+++ b/media/lib/remotedisplay/java/com/android/media/remotedisplay/RemoteDisplayProvider.java
@@ -287,7 +287,7 @@
      */
     public PendingIntent getSettingsPendingIntent() {
         if (mSettingsPendingIntent == null) {
-            Intent settingsIntent = new Intent(Settings.ACTION_WIFI_DISPLAY_SETTINGS);
+            Intent settingsIntent = new Intent(Settings.ACTION_CAST_SETTINGS);
             settingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                     | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
                     | Intent.FLAG_ACTIVITY_CLEAR_TOP);
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
index 86c23c7..16b4c43 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaNames.java
@@ -60,6 +60,7 @@
     public static final String VIDEO_H264_AAC = "/sdcard/media_api/video/H264_320_AAC_64.3gp";
     public static final String VIDEO_H264_AMR = "/sdcard/media_api/video/H264_320_AMRNB_6.3gp";
     public static final String VIDEO_HEVC_AAC = "/sdcard/media_api/video/HEVC_320_AAC_128.mp4";
+    public static final String VIDEO_MPEG2_AAC = "/sdcard/media_api/video/MPEG2_1500_AAC_128.mp4";
     public static final String VIDEO_HIGHRES_H263 = "/sdcard/media_api/video/H263_500_AMRNB_12.3gp";
     public static final String VIDEO_HIGHRES_MP4 = "/sdcard/media_api/video/H264_500_AAC_128.3gp";
     public static final String VIDEO_WEBM = "/sdcard/media_api/video/big-buck-bunny_trailer.webm";
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
index 244b07f..c5281657 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/performance/MediaPlayerPerformance.java
@@ -432,7 +432,22 @@
         assertTrue("HEVC playback memory test", memoryResult);
     }
 
-    // Test case 4: Capture the memory usage after every 20 video only recorded
+    // Test case 4: Capture the memory usage after every 20 mpeg2 playback
+    @LargeTest
+    public void testMPEG2VideoPlaybackMemoryUsage() throws Exception {
+        boolean memoryResult = false;
+
+        mStartPid = getMediaserverPid();
+        for (int i = 0; i < NUM_STRESS_LOOP; i++) {
+            mediaStressPlayback(MediaNames.VIDEO_MPEG2_AAC);
+            getMemoryWriteToLog(i);
+            writeProcmemInfo();
+        }
+        memoryResult = validateMemoryResult(mStartPid, mStartMemory, DECODER_LIMIT);
+        assertTrue("MPEG2 playback memory test", memoryResult);
+    }
+
+    // Test case 5: Capture the memory usage after every 20 video only recorded
     @LargeTest
     public void testH263RecordVideoOnlyMemoryUsage() throws Exception {
         if (mCamcorderProfile != null) {
@@ -453,7 +468,7 @@
         }
     }
 
-    // Test case 5: Capture the memory usage after every 20 video only recorded
+    // Test case 6: Capture the memory usage after every 20 video only recorded
     @LargeTest
     public void testMpeg4RecordVideoOnlyMemoryUsage() throws Exception {
         if (mCamcorderProfile != null) {
@@ -474,7 +489,7 @@
         }
     }
 
-    // Test case 6: Capture the memory usage after every 20 video and audio
+    // Test case 7: Capture the memory usage after every 20 video and audio
     // recorded
     @LargeTest
     public void testRecordVideoAudioMemoryUsage() throws Exception {
@@ -496,7 +511,7 @@
         }
     }
 
-    // Test case 7: Capture the memory usage after every 20 audio only recorded
+    // Test case 8: Capture the memory usage after every 20 audio only recorded
     @LargeTest
     public void testRecordAudioOnlyMemoryUsage() throws Exception {
         boolean memoryResult = false;
@@ -511,7 +526,7 @@
         assertTrue("audio record only memory test", memoryResult);
     }
 
-    // Test case 8: Capture the memory usage after every 20 camera preview
+    // Test case 9: Capture the memory usage after every 20 camera preview
     @LargeTest
     public void testCameraPreviewMemoryUsage() throws Exception {
         boolean memoryResult = false;
diff --git a/media/tests/contents/media_api/video/MPEG2_1500_AAC_128.mp4 b/media/tests/contents/media_api/video/MPEG2_1500_AAC_128.mp4
new file mode 100644
index 0000000..33f66a0
--- /dev/null
+++ b/media/tests/contents/media_api/video/MPEG2_1500_AAC_128.mp4
Binary files differ
diff --git a/native/android/sensor.cpp b/native/android/sensor.cpp
index 4e7c6be..26b41e8 100644
--- a/native/android/sensor.cpp
+++ b/native/android/sensor.cpp
@@ -35,9 +35,27 @@
 using android::SensorManager;
 using android::SensorEventQueue;
 using android::String8;
+using android::String16;
 
 /*****************************************************************************/
 
+android::Mutex android::SensorManager::sLock;
+std::map<String16, SensorManager*> android::SensorManager::sPackageInstances;
+
+ASensorManager* ASensorManager_getInstance()
+{
+    return ASensorManager_getInstanceForPackage(NULL);
+}
+
+ASensorManager* ASensorManager_getInstanceForPackage(const char* packageName)
+{
+    if (packageName) {
+        return &SensorManager::getInstanceForPackage(String16(packageName));
+    } else {
+        return &SensorManager::getInstanceForPackage(String16());
+    }
+}
+
 int ASensorManager_getSensorList(ASensorManager* manager,
         ASensorList* list)
 {
diff --git a/native/graphics/jni/bitmap.cpp b/native/graphics/jni/bitmap.cpp
index 0521833..6d2de98 100644
--- a/native/graphics/jni/bitmap.cpp
+++ b/native/graphics/jni/bitmap.cpp
@@ -62,7 +62,7 @@
         return ANDROID_BITMAP_RESULT_BAD_PARAMETER;
     }
 
-    SkPixelRef* pixelRef = GraphicsJNI::getSkPixelRef(env, jbitmap);
+    SkPixelRef* pixelRef = GraphicsJNI::refSkPixelRef(env, jbitmap);
     if (!pixelRef) {
         return ANDROID_BITMAP_RESULT_JNI_EXCEPTION;
     }
@@ -71,9 +71,9 @@
     void* addr = pixelRef->pixels();
     if (NULL == addr) {
         pixelRef->unlockPixels();
+        pixelRef->unref();
         return ANDROID_BITMAP_RESULT_ALLOCATION_FAILED;
     }
-    pixelRef->ref();
 
     if (addrPtr) {
         *addrPtr = addr;
@@ -86,7 +86,7 @@
         return ANDROID_BITMAP_RESULT_BAD_PARAMETER;
     }
 
-    SkPixelRef* pixelRef = GraphicsJNI::getSkPixelRef(env, jbitmap);
+    SkPixelRef* pixelRef = GraphicsJNI::refSkPixelRef(env, jbitmap);
     if (!pixelRef) {
         return ANDROID_BITMAP_RESULT_JNI_EXCEPTION;
     }
@@ -98,6 +98,12 @@
     pixelRef->notifyPixelsChanged();
 
     pixelRef->unlockPixels();
+    // Awkward in that we need to double-unref as the call to get the SkPixelRef
+    // did a ref(), so we need to unref() for the local ref and for the previous
+    // AndroidBitmap_lockPixels(). However this keeps GraphicsJNI a bit safer
+    // if others start using it without knowing about android::Bitmap's "fun"
+    // ref counting mechanism(s).
+    pixelRef->unref();
     pixelRef->unref();
 
     return ANDROID_BITMAP_RESULT_SUCCESS;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
index 2e0bece..202402f0 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
@@ -449,7 +449,7 @@
         InputStream src = null;
         OutputStream dst = null;
 
-        boolean errorOccurred = false;
+        IOException copyError = null;
         try {
             srcFile = mSrcClient.openFile(srcUri, "r", canceller);
             dstFile = mDstClient.openFile(dstUri, "w", canceller);
@@ -462,16 +462,14 @@
                 dst.write(buffer, 0, len);
                 makeProgress(len);
             }
+
             srcFile.checkError();
-            dstFile.checkError();
         } catch (IOException e) {
-            errorOccurred = true;
-            Log.e(TAG, "Error while copying " + srcUri.toString(), e);
+            copyError = e;
             try {
-                mFailedFiles.add(DocumentInfo.fromUri(getContentResolver(), srcUri));
-            } catch (FileNotFoundException ignore) {
-                Log.w(TAG, "Source file gone: " + srcUri, e);
-              // The source file is gone.
+                dstFile.closeWithError(copyError.getMessage());
+            } catch (IOException closeError) {
+                Log.e(TAG, "Error closing destination", closeError);
             }
         } finally {
             // This also ensures the file descriptors are closed.
@@ -479,7 +477,18 @@
             IoUtils.closeQuietly(dst);
         }
 
-        if (errorOccurred || mIsCancelled) {
+        if (copyError != null) {
+            // Log errors.
+            Log.e(TAG, "Error while copying " + srcUri.toString(), copyError);
+            try {
+                mFailedFiles.add(DocumentInfo.fromUri(getContentResolver(), srcUri));
+            } catch (FileNotFoundException ignore) {
+                Log.w(TAG, "Source file gone: " + srcUri, copyError);
+              // The source file is gone.
+            }
+        }
+
+        if (copyError != null || mIsCancelled) {
             // Clean up half-copied files.
             canceller.cancel();
             try {
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java
index 13f7daa..b1c84dd 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/CopyTest.java
@@ -16,23 +16,21 @@
 
 package com.android.documentsui;
 
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.app.NotificationManager;
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.ContextWrapper;
 import android.content.Intent;
+import android.content.pm.ProviderInfo;
+import android.database.ContentObserver;
 import android.database.Cursor;
 import android.net.Uri;
-import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
 import android.os.RemoteException;
 import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
 import android.test.MoreAsserts;
 import android.test.ServiceTestCase;
+import android.test.mock.MockContentResolver;
 import android.util.Log;
 
 import com.android.documentsui.model.DocumentInfo;
@@ -43,40 +41,93 @@
 import libcore.io.IoUtils;
 import libcore.io.Streams;
 
-import org.mockito.Mockito;
-
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.io.OutputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 public class CopyTest extends ServiceTestCase<CopyService> {
 
+    /**
+     * A test resolver that enables this test suite to listen for notifications that mark when copy
+     * operations are done.
+     */
+    class TestContentResolver extends MockContentResolver {
+        private CountDownLatch mReadySignal;
+        private CountDownLatch mNotificationSignal;
+
+        public TestContentResolver() {
+            mReadySignal = new CountDownLatch(1);
+        }
+
+        /**
+         * Wait for the given number of files to be copied to destination. Times out after 1 sec.
+         */
+        public void waitForChanges(int count) throws Exception {
+            // Wait for no more than 1 second by default.
+            waitForChanges(count, 1000);
+        }
+
+        /**
+         * Wait for files to be copied to destination.
+         *
+         * @param count Number of files to wait for.
+         * @param timeOut Timeout in ms. TimeoutException will be thrown if this function times out.
+         */
+        public void waitForChanges(int count, int timeOut) throws Exception {
+            mNotificationSignal = new CountDownLatch(count);
+            // Signal that the test is now waiting for files.
+            mReadySignal.countDown();
+            if (!mNotificationSignal.await(timeOut, TimeUnit.MILLISECONDS)) {
+                throw new TimeoutException("Timed out waiting for files to be copied.");
+            }
+        }
+
+        @Override
+        public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) {
+            // Wait until the test is ready to receive file notifications.
+            try {
+                mReadySignal.await();
+            } catch (InterruptedException e) {
+                Log.d(TAG, "Interrupted while waiting for file copy readiness");
+                Thread.currentThread().interrupt();
+            }
+            if (DocumentsContract.isDocumentUri(mContext, uri)) {
+                Log.d(TAG, "Notification: " + uri);
+                // Watch for document URI change notifications - this signifies the end of a copy.
+                mNotificationSignal.countDown();
+            }
+        }
+    };
+
     public CopyTest() {
         super(CopyService.class);
     }
 
-    private static String TAG = "CopyTest";
-    // This must match the authority for the StubProvider.
     private static String AUTHORITY = "com.android.documentsui.stubprovider";
+    private static String DST = "sd1";
+    private static String SRC = "sd0";
+    private static String TAG = "CopyTest";
     private List<RootInfo> mRoots;
     private Context mContext;
-    private ContentResolver mResolver;
+    private TestContentResolver mResolver;
     private ContentProviderClient mClient;
-    private NotificationManager mNotificationManager;
+    private StubProvider mStorage;
+    private Context mSystemContext;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        setupTestContext();
 
-        mResolver = mContext.getContentResolver();
+        setupTestContext();
         mClient = mResolver.acquireContentProviderClient(AUTHORITY);
 
         // Reset the stub provider's storage.
-        mClient.call("clear", "", null);
+        mStorage.clearCacheAndBuildRoots();
 
         mRoots = Lists.newArrayList();
         Uri queryUri = DocumentsContract.buildRootsUri(AUTHORITY);
@@ -84,9 +135,7 @@
         try {
             cursor = mClient.query(queryUri, null, null, null, null);
             while (cursor.moveToNext()) {
-                final RootInfo root = RootInfo.fromRootsCursor(AUTHORITY, cursor);
-                final String id = root.rootId;
-                mRoots.add(root);
+                mRoots.add(RootInfo.fromRootsCursor(AUTHORITY, cursor));
             }
         } finally {
             IoUtils.closeQuietly(cursor);
@@ -100,68 +149,94 @@
         super.tearDown();
     }
 
-    public List<Uri> setupTestFiles() throws Exception {
-        Uri rootUri = DocumentsContract.buildDocumentUri(AUTHORITY, mRoots.get(0).documentId);
-        List<Uri> testFiles = Lists.newArrayList(
-                DocumentsContract.createDocument(mClient, rootUri, "text/plain", "test0.txt"),
-                DocumentsContract.createDocument(mClient, rootUri, "text/plain", "test1.txt"),
-                DocumentsContract.createDocument(mClient, rootUri, "text/plain", "test2.txt")
-        );
-        String testContent[] = {
-                "The five boxing wizards jump quickly",
-                "The quick brown fox jumps over the lazy dog",
-                "Jackdaws love my big sphinx of quartz"
-        };
-        for (int i = 0; i < testFiles.size(); ++i) {
-            ParcelFileDescriptor pfd = null;
-            OutputStream out = null;
-            try {
-                pfd = mClient.openFile(testFiles.get(i), "w");
-                out = new ParcelFileDescriptor.AutoCloseOutputStream(pfd);
-                out.write(testContent[i].getBytes());
-            } finally {
-                IoUtils.closeQuietly(out);
-            }
-        }
-        return testFiles;
-    }
-
     /**
      * Test copying a single file.
      */
     public void testCopyFile() throws Exception {
-        Uri testFile = setupTestFiles().get(0);
+        String srcPath = "/test0.txt";
+        Uri testFile = mStorage.createFile(SRC, srcPath, "text/plain",
+                "The five boxing wizards jump quickly".getBytes());
 
-        // Just copy one file.
+        assertDstFileCountEquals(0);
+
         copyToDestination(Lists.newArrayList(testFile));
 
-        // A call to NotificationManager.cancel marks the end of the copy operation.
-        Mockito.verify(mNotificationManager, Mockito.timeout(1000)).cancel(Mockito.anyString(),
-                Mockito.anyInt());
+        // 2 operations: file creation, then writing data.
+        mResolver.waitForChanges(2);
 
         // Verify that one file was copied; check file contents.
         assertDstFileCountEquals(1);
-        assertCopied(testFile);
+        assertCopied(srcPath);
     }
 
     /**
      * Test copying multiple files.
      */
     public void testCopyMultipleFiles() throws Exception {
-        List<Uri> testFiles = setupTestFiles();
+        String testContent[] = {
+                "The five boxing wizards jump quickly",
+                "The quick brown fox jumps over the lazy dog",
+                "Jackdaws love my big sphinx of quartz"
+        };
+        String srcPaths[] = {
+                "/test0.txt",
+                "/test1.txt",
+                "/test2.txt"
+        };
+        List<Uri> testFiles = Lists.newArrayList(
+                mStorage.createFile(SRC, srcPaths[0], "text/plain", testContent[0].getBytes()),
+                mStorage.createFile(SRC, srcPaths[1], "text/plain", testContent[1].getBytes()),
+                mStorage.createFile(SRC, srcPaths[2], "text/plain", testContent[2].getBytes()));
+
+        assertDstFileCountEquals(0);
+
         // Copy all the test files.
         copyToDestination(testFiles);
 
-        // A call to NotificationManager.cancel marks the end of the copy operation.
-        Mockito.verify(mNotificationManager, Mockito.timeout(1000)).cancel(Mockito.anyString(),
-                Mockito.anyInt());
+        // 3 file creations, 3 file writes.
+        mResolver.waitForChanges(6);
 
         assertDstFileCountEquals(3);
-        for (Uri testFile : testFiles) {
-            assertCopied(testFile);
+        for (String path : srcPaths) {
+            assertCopied(path);
         }
     }
 
+    public void testCopyEmptyDir() throws Exception {
+        String srcPath = "/emptyDir";
+        Uri testDir = mStorage.createFile(SRC, srcPath, DocumentsContract.Document.MIME_TYPE_DIR,
+                null);
+
+        assertDstFileCountEquals(0);
+
+        copyToDestination(Lists.newArrayList(testDir));
+
+        // Just 1 operation: Directory creation.
+        mResolver.waitForChanges(1);
+
+        assertDstFileCountEquals(1);
+
+        File dst = mStorage.getFile(DST, srcPath);
+        assertTrue(dst.isDirectory());
+    }
+
+    public void testReadErrors() throws Exception {
+        String srcPath = "/test0.txt";
+        Uri testFile = mStorage.createFile(SRC, srcPath, "text/plain",
+                "The five boxing wizards jump quickly".getBytes());
+
+        assertDstFileCountEquals(0);
+
+        mStorage.simulateReadErrors(true);
+
+        copyToDestination(Lists.newArrayList(testFile));
+
+        // 3 operations: file creation, writing, then deletion (due to failed copy).
+        mResolver.waitForChanges(3);
+
+        assertDstFileCountEquals(0);
+    }
+
     /**
      * Copies the given files to a pre-determined destination.
      *
@@ -200,82 +275,55 @@
         assertEquals("Incorrect file count after copy", expected, count);
     }
 
-    /**
-     * Verifies that the file pointed to by the given URI was correctly copied to the destination.
-     */
-    private void assertCopied(Uri src) throws Exception {
-        Cursor cursor = null;
-        String srcName = null;
+    private void assertCopied(String path) throws Exception {
+        File srcFile = mStorage.getFile(SRC, path);
+        File dstFile = mStorage.getFile(DST, path);
+        assertNotNull(dstFile);
+
+        FileInputStream src = null;
+        FileInputStream dst = null;
         try {
-            cursor = mClient.query(src, null, null, null, null);
-            if (cursor.moveToFirst()) {
-                srcName = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
-            }
+            src = new FileInputStream(srcFile);
+            dst = new FileInputStream(dstFile);
+            byte[] srcbuf = Streams.readFully(src);
+            byte[] dstbuf = Streams.readFully(dst);
+
+            MoreAsserts.assertEquals(srcbuf, dstbuf);
         } finally {
-            IoUtils.closeQuietly(cursor);
+            IoUtils.closeQuietly(src);
+            IoUtils.closeQuietly(dst);
         }
-        Uri dst = getDstFileUri(srcName);
-
-        InputStream in0 = null;
-        InputStream in1 = null;
-        try {
-            in0 = new ParcelFileDescriptor.AutoCloseInputStream(mClient.openFile(src, "r"));
-            in1 = new ParcelFileDescriptor.AutoCloseInputStream(mClient.openFile(dst, "r"));
-
-            byte[] buffer0 = Streams.readFully(in0);
-            byte[] buffer1 = Streams.readFully(in1);
-
-            MoreAsserts.assertEquals(buffer0, buffer1);
-        } finally {
-            IoUtils.closeQuietly(in0);
-            IoUtils.closeQuietly(in1);
-        }
-    }
-
-    /**
-     * Generates a file URI from a given filename. This assumes the file already exists in the
-     * destination root.
-     */
-    private Uri getDstFileUri(String filename) throws RemoteException {
-        final Uri dstFileQuery = DocumentsContract.buildChildDocumentsUri(AUTHORITY,
-                mRoots.get(1).documentId);
-        Cursor cursor = null;
-        try {
-            // StubProvider doesn't seem to support query strings; filter the results manually.
-            cursor = mClient.query(dstFileQuery, null, null, null, null);
-            while (cursor.moveToNext()) {
-                if (filename.equals(getCursorString(cursor, Document.COLUMN_DISPLAY_NAME))) {
-                    return DocumentsContract.buildDocumentUri(AUTHORITY,
-                            getCursorString(cursor, Document.COLUMN_DOCUMENT_ID));
-                }
-            }
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-        return null;
     }
 
     /**
      * Sets up a ContextWrapper that substitutes a stub NotificationManager. This allows the test to
      * listen for notification events, to gauge copy progress.
+     *
+     * @throws FileNotFoundException
      */
-    private void setupTestContext() {
-        mContext = getSystemContext();
-        System.setProperty("dexmaker.dexcache", mContext.getCacheDir().getPath());
+    private void setupTestContext() throws FileNotFoundException {
+        mSystemContext = getSystemContext();
 
-        mNotificationManager = Mockito.spy((NotificationManager) mContext
-                .getSystemService(Context.NOTIFICATION_SERVICE));
-
-        // Insert a stub NotificationManager that enables us to listen for when copying is complete.
-        setContext(new ContextWrapper(mContext) {
+        // Set up the context with the test content resolver.
+        mResolver = new TestContentResolver();
+        mContext = new ContextWrapper(mSystemContext) {
             @Override
-            public Object getSystemService(String name) {
-                if (Context.NOTIFICATION_SERVICE.equals(name)) {
-                    return mNotificationManager;
-                } else {
-                    return super.getSystemService(name);
-                }
+            public ContentResolver getContentResolver() {
+                return mResolver;
             }
-        });
+        };
+        setContext(mContext);
+
+        // Create a local stub provider and add it to the content resolver.
+        ProviderInfo info = new ProviderInfo();
+        info.authority = AUTHORITY;
+        info.exported = true;
+        info.grantUriPermissions = true;
+        info.readPermission = android.Manifest.permission.MANAGE_DOCUMENTS;
+        info.writePermission = android.Manifest.permission.MANAGE_DOCUMENTS;
+
+        mStorage = new StubProvider();
+        mStorage.attachInfo(mContext, info);
+        mResolver.addProvider(AUTHORITY, mStorage);
     }
 }
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java b/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
index 438f6cd..8cef433 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
@@ -21,9 +21,10 @@
 import android.content.pm.ProviderInfo;
 import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
-import android.database.MatrixCursor.RowBuilder;
 import android.database.MatrixCursor;
+import android.database.MatrixCursor.RowBuilder;
 import android.graphics.Point;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.FileUtils;
@@ -32,15 +33,16 @@
 import android.provider.DocumentsContract.Document;
 import android.provider.DocumentsContract.Root;
 import android.provider.DocumentsProvider;
+import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
 import com.google.android.collect.Maps;
 
 import libcore.io.IoUtils;
 
-import java.io.FileOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -70,6 +72,7 @@
     private String mAuthority;
     private SharedPreferences mPrefs;
     private Map<String, RootInfo> mRoots;
+    private boolean mSimulateReadErrors;
 
     @Override
     public void attachInfo(Context context, ProviderInfo info) {
@@ -83,7 +86,8 @@
         return true;
     }
 
-    private void clearCacheAndBuildRoots() {
+    @VisibleForTesting
+    public void clearCacheAndBuildRoots() {
         final File cacheDir = getContext().getCacheDir();
         removeRecursively(cacheDir);
         mStorage.clear();
@@ -164,7 +168,7 @@
         } else {
             try {
                 if (!file.createNewFile()) {
-                    throw new FileNotFoundException();
+                    throw new IllegalStateException("The file " + file.getPath() + " already exists");
                 }
             } catch (IOException e) {
                 throw new FileNotFoundException();
@@ -173,6 +177,10 @@
 
         final StubDocument document = new StubDocument(file, mimeType, parentDocument);
         notifyParentChanged(document.parentId);
+        getContext().getContentResolver().notifyChange(
+                DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
+                null, false);
+
         return document.documentId;
     }
 
@@ -187,6 +195,9 @@
             document.rootInfo.size -= fileSize;
         }
         notifyParentChanged(document.parentId);
+        getContext().getContentResolver().notifyChange(
+                DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
+                null, false);
     }
 
     @Override
@@ -226,7 +237,17 @@
             throw new FileNotFoundException();
 
         if ("r".equals(mode)) {
-            return ParcelFileDescriptor.open(document.file, ParcelFileDescriptor.MODE_READ_ONLY);
+            ParcelFileDescriptor pfd = ParcelFileDescriptor.open(document.file,
+                    ParcelFileDescriptor.MODE_READ_ONLY);
+            if (mSimulateReadErrors) {
+                pfd = new ParcelFileDescriptor(pfd) {
+                    @Override
+                    public void checkError() throws IOException {
+                        throw new IOException("Test error");
+                    }
+                };
+            }
+            return pfd;
         }
         if ("w".equals(mode)) {
             return startWrite(document);
@@ -235,6 +256,11 @@
         throw new FileNotFoundException();
     }
 
+    @VisibleForTesting
+    public void simulateReadErrors(boolean b) {
+        mSimulateReadErrors = b;
+    }
+
     @Override
     public AssetFileDescriptor openDocumentThumbnail(
             String docId, Point sizeHint, CancellationSignal signal) throws FileNotFoundException {
@@ -281,11 +307,15 @@
                         }
                     }
                 } catch (IOException e) {
+                    Log.e(TAG, "Error on close", e);
                     closePipeWithErrorSilently(readPipe, e.getMessage());
                 } finally {
                     IoUtils.closeQuietly(inputStream);
                     IoUtils.closeQuietly(outputStream);
                     notifyParentChanged(document.parentId);
+                    getContext().getContentResolver().notifyChange(
+                            DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
+                            null, false);
                 }
             }
         }.start();
@@ -302,7 +332,6 @@
 
     @Override
     public Bundle call(String method, String arg, Bundle extras) {
-        Log.d(TAG, "call: " + method + arg);
         switch (method) {
             case "clear":
                 clearCacheAndBuildRoots();
@@ -376,30 +405,51 @@
         }
     }
 
-    public File createFile(String rootId, File parent, String mimeType, String name)
-            throws IOException {
-        StubDocument parentDoc = null;
+    @VisibleForTesting
+    public Uri createFile(String rootId, String path, String mimeType, byte[] content)
+            throws FileNotFoundException, IOException {
+        StubDocument root = mRoots.get(rootId).rootDocument;
+        if (root == null) {
+            throw new FileNotFoundException("No roots with the ID " + rootId + " were found");
+        }
+        File file = new File(root.file, path.substring(1));
+        StubDocument parent = mStorage.get(getDocumentIdForFile(file.getParentFile()));
         if (parent == null) {
-            // Use the root dir as the parent, if one wasn't specified.
-            parentDoc = mRoots.get(rootId).rootDocument;
-        } else {
-            // Verify that the parent exists and is a directory.
-            parentDoc = mStorage.get(getDocumentIdForFile(parent));
-            if (parentDoc == null) {
-                throw new IllegalArgumentException("Parent file not found.");
-            }
-            if (!Document.MIME_TYPE_DIR.equals(parentDoc.mimeType)) {
-                throw new IllegalArgumentException("Parent file must be a directory.");
-            }
+            parent = mStorage.get(createFile(rootId, file.getParentFile().getPath(),
+                    DocumentsContract.Document.MIME_TYPE_DIR, null));
         }
-        File file = new File(parentDoc.file, name);
-        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
-            file.mkdir();
+
+        if (DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) {
+            if (!file.mkdirs()) {
+                throw new FileNotFoundException("Couldn't create directory " + file.getPath());
+            }
         } else {
-            file.createNewFile();
+            if (!file.createNewFile()) {
+                throw new FileNotFoundException("Couldn't create file " + file.getPath());
+            }
+            // Add content to the file.
+            FileOutputStream fout = new FileOutputStream(file);
+            fout.write(content);
+            fout.close();
         }
-        new StubDocument(file, mimeType, parentDoc);
-        return file;
+        final StubDocument document = new StubDocument(file, mimeType, parent);
+        return DocumentsContract.buildDocumentUri(mAuthority,  document.documentId);
+    }
+
+    @VisibleForTesting
+    public File getFile(String rootId, String path) throws FileNotFoundException {
+        StubDocument root = mRoots.get(rootId).rootDocument;
+        if (root == null) {
+            throw new FileNotFoundException("No roots with the ID " + rootId + " were found");
+        }
+        // Convert the path string into a path that's relative to the root.
+        File needle = new File(root.file, path.substring(1));
+
+        StubDocument found = mStorage.get(getDocumentIdForFile(needle));
+        if (found == null) {
+            return null;
+        }
+        return found.file;
     }
 
     final class RootInfo {
diff --git a/packages/Keyguard/res/values/strings.xml b/packages/Keyguard/res/values/strings.xml
index e060b4a..49ce427 100644
--- a/packages/Keyguard/res/values/strings.xml
+++ b/packages/Keyguard/res/values/strings.xml
@@ -96,8 +96,6 @@
     <string name="keyguard_widget_24_hours_format" translatable="false">kk\uee01mm</string>
 
     <string name="keyguard_accessibility_pattern_unlock">Pattern unlock.</string>
-    <!-- Accessibility description of the face unlock. [CHAR_LIMIT=none] -->
-    <string name="keyguard_accessibility_face_unlock">Face unlock.</string>
     <!-- Accessibility description of the pin lock. [CHAR_LIMIT=none] -->
     <string name="keyguard_accessibility_pin_unlock">Pin unlock.</string>
     <!-- Accessibility description of the password lock. [CHAR_LIMIT=none] -->
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java
index 845d53a..929258d 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardPasswordView.java
@@ -162,7 +162,8 @@
             switchImeButton.setOnClickListener(new OnClickListener() {
                 public void onClick(View v) {
                     mCallback.userActivity(); // Leave the screen on a bit longer
-                    mImm.showInputMethodPicker();
+                    // Do not show auxiliary subtypes in password lock screen.
+                    mImm.showInputMethodPicker(false /* showAuxiliarySubtypes */);
                 }
             });
         }
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index c7b7628..d13d71c 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -58,7 +58,6 @@
 import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
 import android.hardware.fingerprint.FingerprintUtils;
 import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
-import android.service.trust.TrustAgentService;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
@@ -154,6 +153,7 @@
     private SubscriptionManager mSubscriptionManager;
     private List<SubscriptionInfo> mSubscriptionInfo;
     private boolean mFingerprintDetectionRunning;
+    private TrustManager mTrustManager;
 
     private final Handler mHandler = new Handler() {
         @Override
@@ -550,7 +550,7 @@
 
         @Override
         public void onAuthenticationError(int errMsgId, CharSequence errString) {
-            mHandler.obtainMessage(MSG_FINGERPRINT_ERROR, errMsgId, 0, errString);
+            mHandler.obtainMessage(MSG_FINGERPRINT_ERROR, errMsgId, 0, errString).sendToTarget();
         }
     };
     private CancellationSignal mFingerprintCancelSignal;
@@ -784,8 +784,8 @@
             e.printStackTrace();
         }
 
-        TrustManager trustManager = (TrustManager) context.getSystemService(Context.TRUST_SERVICE);
-        trustManager.registerTrustListener(this);
+        mTrustManager = (TrustManager) context.getSystemService(Context.TRUST_SERVICE);
+        mTrustManager.registerTrustListener(this);
 
         mFpm = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
         updateFingerprintListeningState();
@@ -801,7 +801,8 @@
     }
 
     private boolean shouldListenForFingerprint() {
-        return mScreenOn && mKeyguardIsVisible && !mSwitchingUser;
+        return mScreenOn && mKeyguardIsVisible && !mSwitchingUser
+                && mTrustManager.hasUserAuthenticatedSinceBoot(ActivityManager.getCurrentUser());
     }
 
     private void startListeningForFingerprint() {
diff --git a/packages/PrintSpooler/res/values/themes.xml b/packages/PrintSpooler/res/values/themes.xml
index 532b01f..db319e9 100644
--- a/packages/PrintSpooler/res/values/themes.xml
+++ b/packages/PrintSpooler/res/values/themes.xml
@@ -16,10 +16,7 @@
 
 <resources>
 
-    <style name="PrintActivity" parent="@android:style/Theme.Material">
-        <item name="android:colorPrimary">@*android:color/material_blue_grey_900</item>
-        <item name="android:colorPrimaryDark">@*android:color/material_blue_grey_950</item>
-        <item name="android:colorAccent">@*android:color/material_deep_teal_500</item>
+    <style name="PrintActivity" parent="@android:style/Theme.Material.Settings">
         <item name="android:windowIsTranslucent">true</item>
         <item name="android:windowBackground">@android:color/transparent</item>
         <item name="android:windowContentOverlay">@null</item>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index b2c9cd0..b702e35 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -64,6 +64,8 @@
     <string name="wifi_not_in_range">Not in range</string>
     <!-- Summary for the remembered network but no internet connection was detected. -->
     <string name="wifi_no_internet">No Internet Access Detected, won\'t automatically reconnect.</string>
+    <!-- Summary for saved networks -->
+    <string name="saved_network">Saved by <xliff:g id="name">%1$s</xliff:g></string>
 
     <!-- Status message of Wi-Fi when it is connected by a Wi-Fi assistant application. [CHAR LIMIT=NONE] -->
     <string name="connected_via_wfa">Connected via Wi\u2011Fi assistant</string>
@@ -71,6 +73,10 @@
     <string name="connected_via_passpoint">Connected via %1$s</string>
     <!-- Status message of Wi-Fi when network has matching passpoint credentials. [CHAR LIMIT=NONE] -->
     <string name="available_via_passpoint">Available via %1$s</string>
+    <!-- Package name for Settings app-->
+    <string name="settings_package" translatable="false">com.android.settings</string>
+    <!-- Package name for Certinstaller app-->
+    <string name="certinstaller_package" translatable="false">com.android.certinstaller</string>
 
     <!-- Summary for Connected wifi network without internet -->
     <string name="wifi_connected_no_internet">Connected, no Internet</string>
@@ -111,8 +117,10 @@
     <string name="bluetooth_profile_pbap_summary">Use for contact sharing</string>
     <!-- Bluetooth settings. The user-visible string that is used whenever referring to the PAN profile (sharing this device's Internet connection). [CHAR LIMIT=40] -->
     <string name="bluetooth_profile_pan_nap">Internet connection sharing</string>
-    <!-- Bluetooth settings.  The user-visible string that is used whenever referring to the map profile. -->
+    <!-- Bluetooth settings. The user-visible string that is used whenever referring to the map profile. -->
     <string name="bluetooth_profile_map">Message Access</string>
+    <!-- Bluetooth settings. The user-visible string that is used whenever referring to the SAP profile (sharing SIM card). -->
+    <string name="bluetooth_profile_sap">SIM Access</string>
 
     <!-- Bluetooth settings.  Connection options screen.  The summary for the A2DP checkbox preference when A2DP is connected. -->
     <string name="bluetooth_a2dp_profile_summary_connected">Connected to media audio</string>
@@ -122,6 +130,8 @@
     <string name="bluetooth_opp_profile_summary_connected">Connected to file transfer server</string>
     <!-- Bluetooth settings.  Connection options screen.  The summary for the map checkbox preference when map is connected. -->
     <string name="bluetooth_map_profile_summary_connected">Connected to map</string>
+    <!-- Bluetooth settings.  Connection options screen.  The summary for the sap checkbox preference when SAP is connected. -->
+    <string name="bluetooth_sap_profile_summary_connected">Connected to SAP</string>
     <!-- Bluetooth settings.  Connection options screen.  The summary for the OPP checkbox preference when OPP is not connected. -->
     <string name="bluetooth_opp_profile_summary_not_connected">Not connected to file transfer server</string>
     <!-- Bluetooth settings. Connection options screen. The summary for the HID checkbox preference when HID is connected. -->
@@ -137,6 +147,8 @@
     <string name="bluetooth_pan_profile_summary_use_for">Use for Internet access</string>
     <!-- Bluetooth settings. Connection options screen.  The summary for the map checkbox preference that describes how checking it will set the map profile as preferred. -->
     <string name="bluetooth_map_profile_summary_use_for">Use for map</string>
+    <!-- Bluetooth settings.  Connection options screen.  The summary for the sap checkbox preference that describes how checking it will set the sap profile as preferred. -->
+    <string name="bluetooth_sap_profile_summary_use_for">Use for SIM access</string>
     <!-- Bluetooth settings.  Connection options screen.  The summary for the A2DP checkbox preference that describes how checking it will set the A2DP profile as preferred. -->
     <string name="bluetooth_a2dp_profile_summary_use_for">Use for media audio</string>
     <!-- Bluetooth settings.  Connection options screen.  The summary for the headset checkbox preference that describes how checking it will set the headset profile as preferred. -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index dd2368f..7534b8e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -67,10 +67,6 @@
 
     private boolean mVisible;
 
-    private int mPhonebookPermissionChoice;
-
-    private int mMessagePermissionChoice;
-
     private int mMessageRejectionCount;
 
     private final Collection<Callback> mCallbacks = new ArrayList<Callback>();
@@ -556,6 +552,7 @@
             mConnectAfterPairing = false;  // cancel auto-connect
             setPhonebookPermissionChoice(ACCESS_UNKNOWN);
             setMessagePermissionChoice(ACCESS_UNKNOWN);
+            setSimPermissionChoice(ACCESS_UNKNOWN);
             mMessageRejectionCount = 0;
             saveMessageRejectionCount();
         }
@@ -732,6 +729,26 @@
         mDevice.setMessageAccessPermission(permission);
     }
 
+    public int getSimPermissionChoice() {
+        int permission = mDevice.getSimAccessPermission();
+        if (permission == BluetoothDevice.ACCESS_ALLOWED) {
+            return ACCESS_ALLOWED;
+        } else if (permission == BluetoothDevice.ACCESS_REJECTED) {
+            return ACCESS_REJECTED;
+        }
+        return ACCESS_UNKNOWN;
+    }
+
+    void setSimPermissionChoice(int permissionChoice) {
+        int permission = BluetoothDevice.ACCESS_UNKNOWN;
+        if (permissionChoice == ACCESS_ALLOWED) {
+            permission = BluetoothDevice.ACCESS_ALLOWED;
+        } else if (permissionChoice == ACCESS_REJECTED) {
+            permission = BluetoothDevice.ACCESS_REJECTED;
+        }
+        mDevice.setSimAccessPermission(permission);
+    }
+
     // Migrates data from old data store (in Settings app's shared preferences) to new (in Bluetooth
     // app's shared preferences).
     private void migrateMessagePermissionChoice() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
new file mode 100644
index 0000000..25c53e6
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
@@ -0,0 +1,216 @@
+/*
+ * 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.settingslib.bluetooth;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothClass;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothSap;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothUuid;
+import android.content.Context;
+import android.os.ParcelUuid;
+import android.util.Log;
+
+import com.android.settingslib.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * SapProfile handles Bluetooth SAP profile.
+ */
+final class SapProfile implements LocalBluetoothProfile {
+    private static final String TAG = "SapProfile";
+    private static boolean V = true;
+
+    private BluetoothSap mService;
+    private boolean mIsProfileReady;
+
+    private final LocalBluetoothAdapter mLocalAdapter;
+    private final CachedBluetoothDeviceManager mDeviceManager;
+    private final LocalBluetoothProfileManager mProfileManager;
+
+    static final ParcelUuid[] UUIDS = {
+        BluetoothUuid.SAP,
+    };
+
+    static final String NAME = "SAP";
+
+    // Order of this profile in device profiles list
+    private static final int ORDINAL = 10;
+
+    // These callbacks run on the main thread.
+    private final class SapServiceListener
+            implements BluetoothProfile.ServiceListener {
+
+        public void onServiceConnected(int profile, BluetoothProfile proxy) {
+            if (V) Log.d(TAG,"Bluetooth service connected");
+            mService = (BluetoothSap) proxy;
+            // We just bound to the service, so refresh the UI for any connected SAP devices.
+            List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+            while (!deviceList.isEmpty()) {
+                BluetoothDevice nextDevice = deviceList.remove(0);
+                CachedBluetoothDevice device = mDeviceManager.findDevice(nextDevice);
+                // we may add a new device here, but generally this should not happen
+                if (device == null) {
+                    Log.w(TAG, "SapProfile found new device: " + nextDevice);
+                    device = mDeviceManager.addDevice(mLocalAdapter, mProfileManager, nextDevice);
+                }
+                device.onProfileStateChanged(SapProfile.this,
+                        BluetoothProfile.STATE_CONNECTED);
+                device.refresh();
+            }
+
+            mProfileManager.callServiceConnectedListeners();
+            mIsProfileReady=true;
+        }
+
+        public void onServiceDisconnected(int profile) {
+            if (V) Log.d(TAG,"Bluetooth service disconnected");
+            mProfileManager.callServiceDisconnectedListeners();
+            mIsProfileReady=false;
+        }
+    }
+
+    public boolean isProfileReady() {
+        return mIsProfileReady;
+    }
+
+    SapProfile(Context context, LocalBluetoothAdapter adapter,
+            CachedBluetoothDeviceManager deviceManager,
+            LocalBluetoothProfileManager profileManager) {
+        mLocalAdapter = adapter;
+        mDeviceManager = deviceManager;
+        mProfileManager = profileManager;
+        mLocalAdapter.getProfileProxy(context, new SapServiceListener(),
+                BluetoothProfile.SAP);
+    }
+
+    public boolean isConnectable() {
+        return true;
+    }
+
+    public boolean isAutoConnectable() {
+        return true;
+    }
+
+    public boolean connect(BluetoothDevice device) {
+        if (mService == null) return false;
+        List<BluetoothDevice> sinks = mService.getConnectedDevices();
+        if (sinks != null) {
+            for (BluetoothDevice sink : sinks) {
+                mService.disconnect(sink);
+            }
+        }
+        return mService.connect(device);
+    }
+
+    public boolean disconnect(BluetoothDevice device) {
+        if (mService == null) return false;
+        List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+        if (!deviceList.isEmpty() && deviceList.get(0).equals(device)) {
+            if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON) {
+                mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+            }
+            return mService.disconnect(device);
+        } else {
+            return false;
+        }
+    }
+
+    public int getConnectionStatus(BluetoothDevice device) {
+        if (mService == null) return BluetoothProfile.STATE_DISCONNECTED;
+        List<BluetoothDevice> deviceList = mService.getConnectedDevices();
+
+        return !deviceList.isEmpty() && deviceList.get(0).equals(device)
+                ? mService.getConnectionState(device)
+                : BluetoothProfile.STATE_DISCONNECTED;
+    }
+
+    public boolean isPreferred(BluetoothDevice device) {
+        if (mService == null) return false;
+        return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF;
+    }
+
+    public int getPreferred(BluetoothDevice device) {
+        if (mService == null) return BluetoothProfile.PRIORITY_OFF;
+        return mService.getPriority(device);
+    }
+
+    public void setPreferred(BluetoothDevice device, boolean preferred) {
+        if (mService == null) return;
+        if (preferred) {
+            if (mService.getPriority(device) < BluetoothProfile.PRIORITY_ON) {
+                mService.setPriority(device, BluetoothProfile.PRIORITY_ON);
+            }
+        } else {
+            mService.setPriority(device, BluetoothProfile.PRIORITY_OFF);
+        }
+    }
+
+    public List<BluetoothDevice> getConnectedDevices() {
+        if (mService == null) return new ArrayList<BluetoothDevice>(0);
+        return mService.getDevicesMatchingConnectionStates(
+              new int[] {BluetoothProfile.STATE_CONNECTED,
+                         BluetoothProfile.STATE_CONNECTING,
+                         BluetoothProfile.STATE_DISCONNECTING});
+    }
+
+    public String toString() {
+        return NAME;
+    }
+
+    public int getOrdinal() {
+        return ORDINAL;
+    }
+
+    public int getNameResource(BluetoothDevice device) {
+        return R.string.bluetooth_profile_sap;
+    }
+
+    public int getSummaryResourceForDevice(BluetoothDevice device) {
+        int state = getConnectionStatus(device);
+        switch (state) {
+            case BluetoothProfile.STATE_DISCONNECTED:
+                return R.string.bluetooth_sap_profile_summary_use_for;
+
+            case BluetoothProfile.STATE_CONNECTED:
+                return R.string.bluetooth_sap_profile_summary_connected;
+
+            default:
+                return Utils.getConnectionStateSummary(state);
+        }
+    }
+
+    public int getDrawableResource(BluetoothClass btClass) {
+        return R.drawable.ic_bt_cellphone;
+    }
+
+    protected void finalize() {
+        if (V) Log.d(TAG, "finalize()");
+        if (mService != null) {
+            try {
+                BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.SAP,
+                                                                       mService);
+                mService = null;
+            }catch (Throwable t) {
+                Log.w(TAG, "Error cleaning up SAP proxy", t);
+            }
+        }
+    }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
index 1cf7248..c81f22a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java
@@ -32,7 +32,6 @@
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Message;
-import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.storage.StorageVolume;
@@ -349,6 +348,11 @@
         final Message finished = mMeasurementHandler.obtainMessage(MeasurementHandler.MSG_COMPLETED,
                 details);
 
+        if (mVolume == null || !mVolume.isMountedReadable()) {
+            finished.sendToTarget();
+            return;
+        }
+
         if (mSharedVolume != null && mSharedVolume.isMountedReadable()) {
             final File basePath = mSharedVolume.getPathForUser(currentUser);
 
@@ -375,8 +379,10 @@
         }
 
         final File file = mVolume.getPath();
-        details.totalSize = file.getTotalSpace();
-        details.availSize = file.getFreeSpace();
+        if (file != null) {
+            details.totalSize = file.getTotalSpace();
+            details.availSize = file.getFreeSpace();
+        }
 
         // Measure all apps hosted on this volume for all users
         if (mVolume.getType() == VolumeInfo.TYPE_PRIVATE) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 53e69e3..7eaa728 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -35,6 +35,12 @@
 import android.os.ServiceManager;
 import android.util.Log;
 import android.util.LruCache;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
+import android.os.UserHandle;
+import android.os.RemoteException;
+import android.app.AppGlobals;
 
 import com.android.settingslib.R;
 
@@ -288,12 +294,28 @@
     }
 
     public String getSavedNetworkSummary() {
-        // Update to new summary
-        if (mConfig != null && mConfig.isPasspoint()) {
-            return "";
-        } else {
-            return getSettingsSummary();
+        if (mConfig != null) {
+            PackageManager pm = mContext.getPackageManager();
+            String systemName = pm.getNameForUid(android.os.Process.SYSTEM_UID);
+            int userId = UserHandle.getUserId(mConfig.creatorUid);
+            ApplicationInfo appInfo = null;
+            if (mConfig.creatorName != null && mConfig.creatorName.equals(systemName)) {
+                appInfo = mContext.getApplicationInfo();
+            } else {
+                try {
+                    IPackageManager ipm = AppGlobals.getPackageManager();
+                    appInfo = ipm.getApplicationInfo(mConfig.creatorName, 0 /* flags */, userId);
+                } catch (RemoteException rex) {
+                }
+            }
+            if (appInfo != null &&
+                    !appInfo.packageName.equals(mContext.getString(R.string.settings_package)) &&
+                    !appInfo.packageName.equals(
+                    mContext.getString(R.string.certinstaller_package))) {
+                return mContext.getString(R.string.saved_network, appInfo.loadLabel(pm));
+            }
         }
+        return "";
     }
 
     public String getSummary() {
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 5b4b4fd..dda9358 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -121,7 +121,7 @@
 
         <activity
             android:name=".BugreportWarningActivity"
-            android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert"
+            android:theme="@*android:style/Theme.Material.DayNight.Dialog.Alert"
             android:finishOnCloseSystemDialogs="true"
             android:excludeFromRecents="true"
             android:exported="false" />
diff --git a/packages/SystemUI/res/drawable/ic_mic_26dp.xml b/packages/SystemUI/res/drawable/ic_mic_26dp.xml
new file mode 100644
index 0000000..83e4ba8
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_mic_26dp.xml
@@ -0,0 +1,24 @@
+<!--
+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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="26.0dp"
+        android:height="26.0dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M12.000000,14.000000c1.700000,0.000000 3.000000,-1.300000 3.000000,-3.000000l0.000000,-6.000000c0.000000,-1.700000 -1.300000,-3.000000 -3.000000,-3.000000c-1.700000,0.000000 -3.000000,1.300000 -3.000000,3.000000l0.000000,6.000000C9.000000,12.700000 10.300000,14.000000 12.000000,14.000000zM17.299999,11.000000c0.000000,3.000000 -2.500000,5.100000 -5.300000,5.100000c-2.800000,0.000000 -5.300000,-2.100000 -5.300000,-5.100000L5.000000,11.000000c0.000000,3.400000 2.700000,6.200000 6.000000,6.700000L11.000000,21.000000l2.000000,0.000000l0.000000,-3.300000c3.300000,-0.500000 6.000000,-3.300000 6.000000,-6.700000L17.299999,11.000001z"
+        android:fillColor="#FF000000"/>
+</vector>
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 1057464..5d0367e 100644
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -52,7 +52,7 @@
         android:contentDescription="@string/accessibility_camera_button" />
 
     <com.android.systemui.statusbar.KeyguardAffordanceView
-        android:id="@+id/phone_button"
+        android:id="@+id/left_button"
         android:layout_height="@dimen/keyguard_affordance_height"
         android:layout_width="@dimen/keyguard_affordance_width"
         android:layout_gravity="bottom|start"
diff --git a/packages/SystemUI/res/layout/zen_mode_panel.xml b/packages/SystemUI/res/layout/zen_mode_panel.xml
index 595c9ed..0264f3d 100644
--- a/packages/SystemUI/res/layout/zen_mode_panel.xml
+++ b/packages/SystemUI/res/layout/zen_mode_panel.xml
@@ -52,7 +52,7 @@
             android:layout_alignParentEnd="true"
             android:background="@drawable/btn_borderless_rect"
             android:clickable="true"
-            android:contentDescription="@string/accessibility_desc_confirm"
+            android:contentDescription="@string/accessibility_desc_close"
             android:scaleType="center"
             android:src="@drawable/ic_close"
             android:tint="@android:color/white" />
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 80fecac..8606a59 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -205,6 +205,8 @@
     <string name="accessibility_camera_button">Camera</string>
     <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_phone_button">Phone</string>
+    <!-- Content description of the phone button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+    <string name="accessibility_voice_assist_button">Voice Assist</string>
     <!-- Content description of the unlock button for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_unlock_button">Unlock</string>
     <!-- Click action label for accessibility for the unlock button. [CHAR LIMIT=NONE] -->
@@ -212,6 +214,8 @@
     <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
     <string name="phone_label">open phone</string>
     <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
+    <string name="voice_assist_label">open voice assist</string>
+    <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] -->
     <string name="camera_label">open camera</string>
     <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] -->
     <string name="recents_caption_resize">Select new task layout</string>
@@ -420,8 +424,8 @@
     <string name="accessibility_desc_settings">Settings</string>
     <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_desc_recent_apps">Overview.</string>
-    <!-- Content description for the confirm button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
-    <string name="accessibility_desc_confirm">Confirm</string>
+    <!-- Content description for the close button in the zen mode panel introduction message. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_desc_close">Close</string>
 
     <!-- Content description of the user tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
     <string name="accessibility_quick_settings_user">User <xliff:g id="user" example="John Doe">%s</xliff:g>.</string>
@@ -753,11 +757,14 @@
     <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] -->
     <string name="keyguard_unlock">Swipe up to unlock</string>
 
-    <!-- Shows when people have clicked at the left edge of the screen to explain how to open the phone. In right-to-left languages, this is the opposite direction. [CHAR LIMIT=60] -->
-    <string name="phone_hint">Swipe right for phone</string>
+    <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] -->
+    <string name="phone_hint">Swipe from icon for phone</string>
 
-    <!-- Shows when people have clicked at the right edge of the screen to explain how to open the phone. In right-to-left languages, this is the opposite direction. [CHAR LIMIT=60] -->
-    <string name="camera_hint">Swipe left for camera</string>
+    <!-- Shows when people have clicked on the voice assist icon [CHAR LIMIT=60] -->
+    <string name="voice_hint">Swipe from icon for voice assist</string>
+
+    <!-- Shows when people have clicked on the camera icon [CHAR LIMIT=60] -->
+    <string name="camera_hint">Swipe from icon for camera</string>
 
     <!-- Interruption level: None. [CHAR LIMIT=40] -->
     <string name="interruption_level_none">Total silence</string>
@@ -951,6 +958,12 @@
     <!-- Button label for ending zen mode in the volume dialog -->
     <string name="volume_zen_end_now">End now</string>
 
+    <!-- Content description for accessibility (not shown on the screen): volume dialog expand button. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_volume_expand">Expand</string>
+
+    <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] -->
+    <string name="accessibility_volume_collapse">Collapse</string>
+
     <!-- Screen pinning dialog title. -->
     <string name="screen_pinning_title">Screen is pinned</string>
     <!-- Screen pinning dialog description. -->
diff --git a/packages/SystemUI/src/com/android/systemui/EventLogConstants.java b/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
index c8af2d4..43a1be1 100644
--- a/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
+++ b/packages/SystemUI/src/com/android/systemui/EventLogConstants.java
@@ -34,4 +34,10 @@
     public static final int SYSUI_LOCKSCREEN_GESTURE_TAP_LOCK = 6;
     /** The user tapped a notification, needs to tap again to launch. */
     public static final int SYSUI_LOCKSCREEN_GESTURE_TAP_NOTIFICATION_ACTIVATE = 7;
+    /** The user swiped down to open quick settings, from keyguard. */
+    public static final int SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_QS = 8;
+    /** The user swiped down to open quick settings, from shade. */
+    public static final int SYSUI_SHADE_GESTURE_SWIPE_DOWN_QS = 9;
+    /** The user tapped on the status bar to open quick settings, from shade. */
+    public static final int SYSUI_TAP_TO_OPEN_QS = 10;
 }
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistGestureManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
similarity index 92%
rename from packages/SystemUI/src/com/android/systemui/assist/AssistGestureManager.java
rename to packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
index d9f2324..d1f8963 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistGestureManager.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
@@ -33,11 +33,11 @@
 import com.android.systemui.statusbar.phone.PhoneStatusBar;
 
 /**
- * Class to manage everything around the assist gesture.
+ * Class to manage everything related to assist in SystemUI.
  */
-public class AssistGestureManager {
+public class AssistManager {
 
-    private static final String TAG = "AssistGestureManager";
+    private static final String TAG = "AssistManager";
     private static final String ASSIST_ICON_METADATA_NAME =
             "com.android.systemui.action_assist_icon";
 
@@ -77,7 +77,7 @@
         }
     };
 
-    public AssistGestureManager(PhoneStatusBar bar, Context context) {
+    public AssistManager(PhoneStatusBar bar, Context context) {
         mContext = context;
         mBar = bar;
         mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
@@ -194,6 +194,14 @@
         }
     }
 
+    public void launchVoiceAssistFromKeyguard() {
+        try {
+            mVoiceInteractionManagerService.launchVoiceAssistFromKeyguard();
+        } catch (RemoteException e) {
+            Log.w(TAG, "Failed to call launchVoiceAssistFromKeyguard", e);
+        }
+    }
+
     private boolean getVoiceInteractorSupportsAssistGesture() {
         try {
             return mVoiceInteractionManagerService.activeServiceSupportsAssist();
@@ -203,7 +211,16 @@
         }
     }
 
-    private ComponentName getVoiceInteractorComponentName() {
+    public boolean canVoiceAssistBeLaunchedFromKeyguard() {
+        try {
+            return mVoiceInteractionManagerService.activeServiceSupportsLaunchFromKeyguard();
+        } catch (RemoteException e) {
+            Log.w(TAG, "Failed to call activeServiceSupportsLaunchFromKeyguard", e);
+            return false;
+        }
+    }
+
+    public ComponentName getVoiceInteractorComponentName() {
         try {
             return mVoiceInteractionManagerService.getActiveServiceComponentName();
         } catch (RemoteException e) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index b5c1ca8..f352849 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -33,6 +33,7 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.FontSizeUtils;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile.DetailAdapter;
@@ -182,8 +183,11 @@
     public void setExpanded(boolean expanded) {
         if (mExpanded == expanded) return;
         mExpanded = expanded;
+        MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, mExpanded);
         if (!mExpanded) {
             closeDetail();
+        } else {
+            logTiles();
         }
     }
 
@@ -365,9 +369,11 @@
             mDetailContent.removeAllViews();
             mDetail.bringToFront();
             mDetailContent.addView(r.detailView);
+            MetricsLogger.visible(mContext, detailAdapter.getMetricsCategory());
             setDetailRecord(r);
             listener = mHideGridContentWhenDone;
         } else {
+            MetricsLogger.hidden(mContext, mDetailRecord.detailAdapter.getMetricsCategory());
             mClosingDetail = true;
             setGridContentVisibility(true);
             listener = mTeardownDetailWhenDone;
@@ -387,9 +393,21 @@
             }
         }
         mBrightnessView.setVisibility(newVis);
+        if (mGridContentVisible != visible) {
+            MetricsLogger.visibility(mContext, MetricsLogger.QS_PANEL, newVis);
+        }
         mGridContentVisible = visible;
     }
 
+    private void logTiles() {
+        for (int i = 0; i < mRecords.size(); i++) {
+            TileRecord tileRecord = mRecords.get(i);
+            if (tileRecord.tile.getState().visible) {
+                MetricsLogger.visible(mContext, tileRecord.tile.getMetricsCategory());
+            }
+        }
+    }
+
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         final int width = MeasureSpec.getSize(widthMeasureSpec);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
index b9574dc..452fd44 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTile.java
@@ -29,6 +29,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.qs.QSTile.State;
 import com.android.systemui.statusbar.policy.BluetoothController;
 import com.android.systemui.statusbar.policy.CastController;
@@ -66,9 +67,17 @@
     private boolean mAnnounceNextStateChange;
 
     abstract protected TState newTileState();
-    abstract protected void handleClick();
     abstract protected void handleUpdateState(TState state, Object arg);
 
+    /**
+     * Declare the category of this tile.
+     *
+     * Categories are defined in {@link com.android.internal.logging.MetricsLogger}
+     * or if there is no relevant existing category you may define one in
+     * {@link com.android.systemui.qs.QSTile}.
+     */
+    abstract public int getMetricsCategory();
+
     protected QSTile(Host host) {
         mHost = host;
         mContext = host.getContext();
@@ -97,6 +106,7 @@
         View createDetailView(Context context, View convertView, ViewGroup parent);
         Intent getSettingsIntent();
         void setToggleState(boolean state);
+        int getMetricsCategory();
     }
 
     // safe to call from any thread
@@ -160,6 +170,10 @@
         handleRefreshState(null);
     }
 
+    protected void handleClick() {
+        MetricsLogger.action(mContext, getMetricsCategory(), getMetricsPackage());
+    };
+
     protected void handleSecondaryClick() {
         // optional
     }
@@ -168,6 +182,10 @@
         // optional
     }
 
+    protected String getMetricsPackage() {
+        return "";
+    }
+
     protected void handleRefreshState(Object arg) {
         handleUpdateState(mTmpState, arg);
         final boolean changed = mTmpState.copyTo(mState);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
index 2bc31fc..6744154 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
@@ -23,6 +23,7 @@
 import android.net.ConnectivityManager;
 import android.provider.Settings.Global;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.R;
 import com.android.systemui.qs.GlobalSetting;
 import com.android.systemui.qs.QSTile;
@@ -55,6 +56,7 @@
 
     @Override
     public void handleClick() {
+        super.handleClick();
         setEnabled(!mState.value);
         mEnable.setAllowAnimation(true);
         mDisable.setAllowAnimation(true);
@@ -85,6 +87,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_AIRPLANEMODE;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(R.string.accessibility_quick_settings_airplane_changed_on);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index b42b5f6..8eb624f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -25,6 +25,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSDetailItems;
@@ -74,6 +75,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         final boolean isEnabled = (Boolean)mState.value;
         mController.setBluetoothEnabled(!isEnabled);
     }
@@ -132,6 +134,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_BLUETOOTH;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(R.string.accessibility_quick_settings_bluetooth_changed_on);
@@ -182,6 +189,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsLogger.QS_BLUETOOTH_DETAILS;
+        }
+
+        @Override
         public View createDetailView(Context context, View convertView, ViewGroup parent) {
             mItems = QSDetailItems.convertOrInflate(context, convertView, parent);
             mItems.setTagSuffix("Bluetooth");
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
index 5bf6fb5..a3d7bcc 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
@@ -24,6 +24,7 @@
 import android.view.View.OnAttachStateChangeListener;
 import android.view.ViewGroup;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSDetailItems;
 import com.android.systemui.qs.QSDetailItems.Item;
@@ -85,6 +86,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         showDetail(true);
     }
 
@@ -113,6 +115,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_CAST;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (!mState.value) {
             // We only announce when it's turned off to avoid vocal overflow.
@@ -164,6 +171,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsLogger.QS_CAST_DETAILS;
+        }
+
+        @Override
         public View createDetailView(Context context, View convertView, ViewGroup parent) {
             mItems = QSDetailItems.convertOrInflate(context, convertView, parent);
             mItems.setTagSuffix("Cast");
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index 30f92b9..0026141 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -24,6 +24,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
 import com.android.systemui.qs.QSTileView;
@@ -75,6 +76,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         if (mDataController.isMobileDataSupported()) {
             showDetail(true);
         } else {
@@ -118,6 +120,11 @@
                 state.label);
     }
 
+    @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_CELLULAR;
+    }
+
     // Remove the period from the network name
     public static String removeTrailingPeriod(String string) {
         if (string == null) return null;
@@ -227,6 +234,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsLogger.QS_DATAUSAGEDETAIL;
+        }
+
+        @Override
         public View createDetailView(Context context, View convertView, ViewGroup parent) {
             final DataUsageDetailView v = (DataUsageDetailView) (convertView != null
                     ? convertView
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
index 4a33f55..6fa094e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
@@ -18,6 +18,7 @@
 
 import android.provider.Settings.Secure;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.Prefs;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
@@ -86,6 +87,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         mSetting.setValue(mState.value ? 0 : 1);
         mEnable.setAllowAnimation(true);
         mDisable.setAllowAnimation(true);
@@ -115,6 +117,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_COLORINVERSION;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index 5145bc7..e708a72 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -29,6 +29,7 @@
 import android.view.View.OnAttachStateChangeListener;
 import android.view.ViewGroup;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.Prefs;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
@@ -88,6 +89,7 @@
 
     @Override
     public void handleClick() {
+        super.handleClick();
         if (mState.value) {
             mController.setZen(Global.ZEN_MODE_OFF, null, TAG);
         } else {
@@ -135,6 +137,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_DND;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(R.string.accessibility_quick_settings_dnd_changed_on);
@@ -209,6 +216,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsLogger.QS_DND_DETAILS;
+        }
+
+        @Override
         public View createDetailView(Context context, View convertView, ViewGroup parent) {
             final ZenModePanel zmp = convertView != null ? (ZenModePanel) convertView
                     : (ZenModePanel) LayoutInflater.from(context).inflate(
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
index cb78deb..a1f3cde 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
@@ -18,6 +18,7 @@
 
 import android.app.ActivityManager;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
 import com.android.systemui.statusbar.policy.FlashlightController;
@@ -59,6 +60,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         if (ActivityManager.isUserAMonkey()) {
             return;
         }
@@ -84,6 +86,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_FLASHLIGHT;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(R.string.accessibility_quick_settings_flashlight_changed_on);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
index 6063f80..b864ff4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.content.Intent;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.Prefs;
 import com.android.systemui.R;
 import com.android.systemui.qs.UsageTracker;
@@ -68,6 +69,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         final boolean isEnabled = (Boolean) mState.value;
         mController.setHotspotEnabled(!isEnabled);
         mEnable.setAllowAnimation(true);
@@ -97,6 +99,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_HOTSPOT;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(R.string.accessibility_quick_settings_hotspot_changed_on);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java
index 2736530..20b5f04 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java
@@ -29,6 +29,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.qs.QSTile;
 
 import java.util.Arrays;
@@ -42,6 +43,7 @@
     private PendingIntent mOnLongClick;
     private String mOnLongClickUri;
     private int mCurrentUserId;
+    private String mIntentPackage;
 
     private IntentTile(Host host, String action) {
         super(host);
@@ -82,6 +84,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         sendIntent("click", mOnClick, mOnClickUri);
     }
 
@@ -133,6 +136,17 @@
         mOnClickUri = intent.getStringExtra("onClickUri");
         mOnLongClick = intent.getParcelableExtra("onLongClick");
         mOnLongClickUri = intent.getStringExtra("onLongClickUri");
+        mIntentPackage = intent.getStringExtra("package");
+    }
+
+    @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_INTENT;
+    }
+
+    @Override
+    protected String getMetricsPackage() {
+        return mIntentPackage == null ? "" : mIntentPackage;
     }
 
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
index 11ec722..ab22ada 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.qs.tiles;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
 import com.android.systemui.statusbar.policy.KeyguardMonitor;
@@ -58,6 +59,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         final boolean wasEnabled = (Boolean) mState.value;
         mController.setLocationEnabled(!wasEnabled);
         mEnable.setAllowAnimation(true);
@@ -87,6 +89,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_LOCATION;
+    }
+
+    @Override
     protected String composeChangeAnnouncement() {
         if (mState.value) {
             return mContext.getString(R.string.accessibility_quick_settings_location_changed_on);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
index f46b9a6..7e3fe76 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
@@ -18,6 +18,7 @@
 
 import android.content.res.Configuration;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSTile;
 import com.android.systemui.statusbar.policy.RotationLockController;
@@ -58,6 +59,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         if (mController == null) return;
         final boolean newState = !mState.value;
         mController.setRotationLocked(newState);
@@ -92,6 +94,11 @@
                 R.string.accessibility_rotation_lock_off);
     }
 
+    @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_ROTATIONLOCK;
+    }
+
     /**
      * Get the correct accessibility string based on the state
      *
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index d589366..228c293 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -26,6 +26,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.settingslib.wifi.AccessPoint;
 import com.android.systemui.R;
 import com.android.systemui.qs.QSDetailItems;
@@ -93,6 +94,7 @@
 
     @Override
     protected void handleClick() {
+        super.handleClick();
         mState.copyTo(mStateBeforeClick);
         mController.setWifiEnabled(!mState.enabled);
     }
@@ -159,6 +161,11 @@
     }
 
     @Override
+    public int getMetricsCategory() {
+        return MetricsLogger.QS_WIFI;
+    }
+
+    @Override
     protected boolean shouldAnnouncementBeDelayed() {
         return mStateBeforeClick.enabled == mState.enabled;
     }
@@ -274,6 +281,11 @@
         }
 
         @Override
+        public int getMetricsCategory() {
+            return MetricsLogger.QS_WIFI_DETAILS;
+        }
+
+        @Override
         public View createDetailView(Context context, View convertView, ViewGroup parent) {
             if (DEBUG) Log.d(TAG, "createDetailView convertView=" + (convertView != null));
             mAccessPoints = null;
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
index 1001feb..ad97f91 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java
@@ -39,7 +39,6 @@
 import com.android.systemui.recents.misc.DebugTrigger;
 import com.android.systemui.recents.misc.ReferenceCountedTrigger;
 import com.android.systemui.recents.misc.SystemServicesProxy;
-import com.android.systemui.recents.misc.Utilities;
 import com.android.systemui.recents.model.RecentsTaskLoadPlan;
 import com.android.systemui.recents.model.RecentsTaskLoader;
 import com.android.systemui.recents.model.Task;
@@ -392,15 +391,6 @@
         filter.addAction(Intent.ACTION_SCREEN_OFF);
         filter.addAction(SearchManager.INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED);
         registerReceiver(mSystemBroadcastReceiver, filter);
-
-        // Private API calls to make the shadows look better
-        try {
-            Utilities.setShadowProperty("ambientRatio", String.valueOf(1.5f));
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        } catch (InvocationTargetException e) {
-            e.printStackTrace();
-        }
     }
 
     /** Inflates the debug overlay if debug mode is enabled. */
diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java b/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
index 84544ff..e810410 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/misc/Utilities.java
@@ -22,27 +22,11 @@
 import android.graphics.Rect;
 import android.view.View;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 
 /* Common code */
 public class Utilities {
 
-    // Reflection methods for altering shadows
-    private static Method sPropertyMethod;
-    static {
-        try {
-            Class<?> c = Class.forName("android.view.DisplayListCanvas");
-            sPropertyMethod = c.getDeclaredMethod("setProperty", String.class, String.class);
-            if (!sPropertyMethod.isAccessible()) sPropertyMethod.setAccessible(true);
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        } catch (NoSuchMethodException e) {
-            e.printStackTrace();
-        }
-    }
-
     /** Scales a rect about its centroid */
     public static void scaleRectAboutCenter(Rect r, float scale) {
         if (scale != 1.0f) {
@@ -163,12 +147,6 @@
                     (1f - overlayAlpha) * Color.blue(overlayColor)));
     }
 
-    /** Sets some private shadow properties. */
-    public static void setShadowProperty(String property, String value)
-            throws IllegalAccessException, InvocationTargetException {
-        sPropertyMethod.invoke(null, property, value);
-    }
-
     /**
      * Cancels an animation ensuring that if it has listeners, onCancel and onEnd
      * are not called.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
index e632cc8..17e2cb5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableView.java
@@ -59,13 +59,6 @@
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         int ownMaxHeight = mMaxViewHeight;
-        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
-        boolean hasFixedHeight = heightMode == MeasureSpec.EXACTLY;
-        boolean isHeightLimited = heightMode == MeasureSpec.AT_MOST;
-        if (hasFixedHeight || isHeightLimited) {
-            int size = MeasureSpec.getSize(heightMeasureSpec);
-            ownMaxHeight = Math.min(ownMaxHeight, size);
-        }
         int newHeightSpec = MeasureSpec.makeMeasureSpec(ownMaxHeight, MeasureSpec.AT_MOST);
         int maxChildHeight = 0;
         int childCount = getChildCount();
@@ -92,8 +85,7 @@
                 mMatchParentViews.add(child);
             }
         }
-        int ownHeight = hasFixedHeight ? ownMaxHeight :
-                isHeightLimited ? Math.min(ownMaxHeight, maxChildHeight) : maxChildHeight;
+        int ownHeight = Math.min(ownMaxHeight, maxChildHeight);
         newHeightSpec = MeasureSpec.makeMeasureSpec(ownHeight, MeasureSpec.EXACTLY);
         for (View child : mMatchParentViews) {
             child.measure(getChildMeasureSpec(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
index 23810f9..ee5eb38 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ActivityStarter.java
@@ -25,4 +25,5 @@
  */
 public interface ActivityStarter {
     public void startActivity(Intent intent, boolean dismissShade);
+    void preventNextAnimation();
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
index 8343497..8bffdc9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
@@ -131,6 +131,10 @@
         mCenterIcon = mCallback.getCenterIcon();
         mRightIcon = mCallback.getRightIcon();
         mRightIcon.setIsLeft(false);
+        updatePreviews();
+    }
+
+    public void updatePreviews() {
         mLeftIcon.setPreviewView(mCallback.getLeftPreview());
         mRightIcon.setPreviewView(mCallback.getRightPreview());
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index fabc1a6..efc3ea0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -25,17 +25,13 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
-import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.InsetDrawable;
-import android.hardware.fingerprint.FingerprintManager;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.UserHandle;
-import android.os.Vibrator;
 import android.provider.MediaStore;
-import android.provider.Settings;
 import android.telecom.TelecomManager;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -54,6 +50,7 @@
 import com.android.systemui.EventLogConstants;
 import com.android.systemui.EventLogTags;
 import com.android.systemui.R;
+import com.android.systemui.assist.AssistManager;
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.KeyguardAffordanceView;
 import com.android.systemui.statusbar.KeyguardIndicationController;
@@ -85,12 +82,12 @@
     private static final long TRANSIENT_FP_ERROR_TIMEOUT = 1300;
 
     private KeyguardAffordanceView mCameraImageView;
-    private KeyguardAffordanceView mPhoneImageView;
+    private KeyguardAffordanceView mLeftAffordanceView;
     private LockIcon mLockIcon;
     private TextView mIndicationText;
     private ViewGroup mPreviewContainer;
 
-    private View mPhonePreview;
+    private View mLeftPreview;
     private View mCameraPreview;
 
     private ActivityStarter mActivityStarter;
@@ -104,6 +101,8 @@
 
     private final Interpolator mLinearOutSlowInInterpolator;
     private boolean mPrewarmSent;
+    private boolean mLeftIsVoiceAssist;
+    private AssistManager mAssistManager;
 
     public KeyguardBottomAreaView(Context context) {
         this(context, null);
@@ -133,8 +132,12 @@
                 label = getResources().getString(R.string.unlock_label);
             } else if (host == mCameraImageView) {
                 label = getResources().getString(R.string.camera_label);
-            } else if (host == mPhoneImageView) {
-                label = getResources().getString(R.string.phone_label);
+            } else if (host == mLeftAffordanceView) {
+                if (mLeftIsVoiceAssist) {
+                    label = getResources().getString(R.string.voice_assist_label);
+                } else {
+                    label = getResources().getString(R.string.phone_label);
+                }
             }
             info.addAction(new AccessibilityAction(ACTION_CLICK, label));
         }
@@ -149,8 +152,8 @@
                 } else if (host == mCameraImageView) {
                     launchCamera();
                     return true;
-                } else if (host == mPhoneImageView) {
-                    launchPhone();
+                } else if (host == mLeftAffordanceView) {
+                    launchLeftAffordance();
                     return true;
                 }
             }
@@ -164,29 +167,28 @@
         mLockPatternUtils = new LockPatternUtils(mContext);
         mPreviewContainer = (ViewGroup) findViewById(R.id.preview_container);
         mCameraImageView = (KeyguardAffordanceView) findViewById(R.id.camera_button);
-        mPhoneImageView = (KeyguardAffordanceView) findViewById(R.id.phone_button);
+        mLeftAffordanceView = (KeyguardAffordanceView) findViewById(R.id.left_button);
         mLockIcon = (LockIcon) findViewById(R.id.lock_icon);
         mIndicationText = (TextView) findViewById(R.id.keyguard_indication_text);
         watchForCameraPolicyChanges();
         updateCameraVisibility();
-        updatePhoneVisibility();
         mUnlockMethodCache = UnlockMethodCache.getInstance(getContext());
         mUnlockMethodCache.addListener(this);
         mLockIcon.update();
         setClipChildren(false);
         setClipToPadding(false);
         mPreviewInflater = new PreviewInflater(mContext, new LockPatternUtils(mContext));
-        inflatePreviews();
+        inflateCameraPreview();
         mLockIcon.setOnClickListener(this);
         mLockIcon.setOnLongClickListener(this);
         mCameraImageView.setOnClickListener(this);
-        mPhoneImageView.setOnClickListener(this);
+        mLeftAffordanceView.setOnClickListener(this);
         initAccessibility();
     }
 
     private void initAccessibility() {
         mLockIcon.setAccessibilityDelegate(mAccessibilityDelegate);
-        mPhoneImageView.setAccessibilityDelegate(mAccessibilityDelegate);
+        mLeftAffordanceView.setAccessibilityDelegate(mAccessibilityDelegate);
         mCameraImageView.setAccessibilityDelegate(mAccessibilityDelegate);
     }
 
@@ -247,9 +249,26 @@
         mCameraImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
     }
 
-    private void updatePhoneVisibility() {
-        boolean visible = isPhoneVisible();
-        mPhoneImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
+    private void updateLeftAffordanceIcon() {
+        mLeftIsVoiceAssist = canLaunchVoiceAssist();
+        int drawableId;
+        int contentDescription;
+        if (mLeftIsVoiceAssist) {
+            mLeftAffordanceView.setVisibility(View.VISIBLE);
+            drawableId = R.drawable.ic_mic_26dp;
+            contentDescription = R.string.accessibility_voice_assist_button;
+        } else {
+            boolean visible = isPhoneVisible();
+            mLeftAffordanceView.setVisibility(visible ? View.VISIBLE : View.GONE);
+            drawableId = R.drawable.ic_phone_24dp;
+            contentDescription = R.string.accessibility_phone_button;
+        }
+        mLeftAffordanceView.setImageDrawable(mContext.getDrawable(drawableId));
+        mLeftAffordanceView.setContentDescription(mContext.getString(contentDescription));
+    }
+
+    public boolean isLeftVoiceAssist() {
+        return mLeftIsVoiceAssist;
     }
 
     private boolean isPhoneVisible() {
@@ -287,9 +306,9 @@
     @Override
     public void onStateChanged(boolean accessibilityEnabled, boolean touchExplorationEnabled) {
         mCameraImageView.setClickable(touchExplorationEnabled);
-        mPhoneImageView.setClickable(touchExplorationEnabled);
+        mLeftAffordanceView.setClickable(touchExplorationEnabled);
         mCameraImageView.setFocusable(accessibilityEnabled);
-        mPhoneImageView.setFocusable(accessibilityEnabled);
+        mLeftAffordanceView.setFocusable(accessibilityEnabled);
         mLockIcon.update();
     }
 
@@ -297,8 +316,8 @@
     public void onClick(View v) {
         if (v == mCameraImageView) {
             launchCamera();
-        } else if (v == mPhoneImageView) {
-            launchPhone();
+        } else if (v == mLeftAffordanceView) {
+            launchLeftAffordance();
         } if (v == mLockIcon) {
             if (!mAccessibilityController.isAccessibilityEnabled()) {
                 handleTrustCircleClick();
@@ -363,6 +382,7 @@
                 @Override
                 public void run() {
                     mContext.startActivityAsUser(intent, UserHandle.CURRENT);
+                    mActivityStarter.preventNextAnimation();
                 }
             });
         } else {
@@ -373,7 +393,35 @@
         }
     }
 
-    public void launchPhone() {
+    public void launchLeftAffordance() {
+        if (mLeftIsVoiceAssist) {
+            launchVoiceAssist();
+        } else {
+            launchPhone();
+        }
+    }
+
+    private void launchVoiceAssist() {
+        Runnable runnable = new Runnable() {
+            @Override
+            public void run() {
+                mAssistManager.launchVoiceAssistFromKeyguard();
+                mActivityStarter.preventNextAnimation();
+            }
+        };
+        if (mPhoneStatusBar.isKeyguardCurrentlySecure()) {
+            AsyncTask.execute(runnable);
+        } else {
+            mPhoneStatusBar.executeRunnableDismissingKeyguard(runnable, false /* dismissShade */,
+                    false /* afterKeyguardGone */);
+        }
+    }
+
+    private boolean canLaunchVoiceAssist() {
+        return mAssistManager.canVoiceAssistBeLaunchedFromKeyguard();
+    }
+
+    private void launchPhone() {
         final TelecomManager tm = TelecomManager.from(mContext);
         if (tm.isInCall()) {
             AsyncTask.execute(new Runnable() {
@@ -397,19 +445,19 @@
         }
     }
 
-    public KeyguardAffordanceView getPhoneView() {
-        return mPhoneImageView;
+    public KeyguardAffordanceView getLeftView() {
+        return mLeftAffordanceView;
     }
 
-    public KeyguardAffordanceView getCameraView() {
+    public KeyguardAffordanceView getRightView() {
         return mCameraImageView;
     }
 
-    public View getPhonePreview() {
-        return mPhonePreview;
+    public View getLeftPreview() {
+        return mLeftPreview;
     }
 
-    public View getCameraPreview() {
+    public View getRightPreview() {
         return mCameraPreview;
     }
 
@@ -432,23 +480,35 @@
         updateCameraVisibility();
     }
 
-    private void inflatePreviews() {
-        mPhonePreview = mPreviewInflater.inflatePreview(PHONE_INTENT);
+    private void inflateCameraPreview() {
         mCameraPreview = mPreviewInflater.inflatePreview(getCameraIntent());
-        if (mPhonePreview != null) {
-            mPreviewContainer.addView(mPhonePreview);
-            mPhonePreview.setVisibility(View.INVISIBLE);
-        }
         if (mCameraPreview != null) {
             mPreviewContainer.addView(mCameraPreview);
             mCameraPreview.setVisibility(View.INVISIBLE);
         }
     }
 
+    private void updateLeftPreview() {
+        View previewBefore = mLeftPreview;
+        if (previewBefore != null) {
+            mPreviewContainer.removeView(previewBefore);
+        }
+        if (mLeftIsVoiceAssist) {
+            mLeftPreview = mPreviewInflater.inflatePreviewFromService(
+                    mAssistManager.getVoiceInteractorComponentName());
+        } else {
+            mLeftPreview = mPreviewInflater.inflatePreview(PHONE_INTENT);
+        }
+        if (mLeftPreview != null) {
+            mPreviewContainer.addView(mLeftPreview);
+            mLeftPreview.setVisibility(View.INVISIBLE);
+        }
+    }
+
     public void startFinishDozeAnimation() {
         long delay = 0;
-        if (mPhoneImageView.getVisibility() == View.VISIBLE) {
-            startFinishDozeAnimationElement(mPhoneImageView, delay);
+        if (mLeftAffordanceView.getVisibility() == View.VISIBLE) {
+            startFinishDozeAnimationElement(mLeftAffordanceView, delay);
             delay += DOZE_ANIMATION_STAGGER_DELAY;
         }
         startFinishDozeAnimationElement(mLockIcon, delay);
@@ -543,4 +603,14 @@
             KeyguardIndicationController keyguardIndicationController) {
         mIndicationController = keyguardIndicationController;
     }
+
+    public void setAssistManager(AssistManager assistManager) {
+        mAssistManager = assistManager;
+        updateLeftAffordance();
+    }
+
+    public void updateLeftAffordance() {
+        updateLeftAffordanceIcon();
+        updateLeftPreview();
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index c62ad66..7077a17 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -144,7 +144,7 @@
         @Override
         public void onClick(View view) {
             ((InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE))
-                    .showInputMethodPicker();
+                    .showInputMethodPicker(true /* showAuxiliarySubtypes */);
         }
     };
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index a8ecc42..f77ac4b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -39,6 +39,7 @@
 import android.widget.FrameLayout;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.keyguard.KeyguardStatusView;
 import com.android.systemui.EventLogConstants;
 import com.android.systemui.EventLogTags;
@@ -73,6 +74,10 @@
     private static final float HEADER_RUBBERBAND_FACTOR = 2.05f;
     private static final float LOCK_ICON_ACTIVE_SCALE = 1.2f;
 
+    private static final String COUNTER_PANEL_OPEN = "panel_open";
+    private static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs";
+    private static final String COUNTER_PANEL_OPEN_PEEK = "panel_open_peek";
+
     public static final long DOZE_ANIMATION_DURATION = 700;
 
     private KeyguardAffordanceHelper mAfforanceHelper;
@@ -541,6 +546,8 @@
         initDownStates(event);
         if (mHeadsUpTouchHelper.onInterceptTouchEvent(event)) {
             mIsExpansionFromHeadsUp = true;
+            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
+            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_PEEK, 1);
             return true;
         }
         if (!isFullyCollapsed() && onQsIntercept(event)) {
@@ -617,7 +624,7 @@
             case MotionEvent.ACTION_UP:
                 trackMovement(event);
                 if (mQsTracking) {
-                    flingQsWithCurrentVelocity(
+                    flingQsWithCurrentVelocity(y,
                             event.getActionMasked() == MotionEvent.ACTION_CANCEL);
                     mQsTracking = false;
                 }
@@ -655,9 +662,24 @@
         super.requestDisallowInterceptTouchEvent(disallowIntercept);
     }
 
-    private void flingQsWithCurrentVelocity(boolean isCancelMotionEvent) {
+    private void flingQsWithCurrentVelocity(float y, boolean isCancelMotionEvent) {
         float vel = getCurrentVelocity();
-        flingSettings(vel, flingExpandsQs(vel) && !isCancelMotionEvent);
+        final boolean expandsQs = flingExpandsQs(vel);
+        if (expandsQs) {
+            logQsSwipeDown(y);
+        }
+        flingSettings(vel, expandsQs && !isCancelMotionEvent);
+    }
+
+    private void logQsSwipeDown(float y) {
+        float vel = getCurrentVelocity();
+        final int gesture = mStatusBarState == StatusBarState.KEYGUARD
+                ? EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DOWN_QS
+                : EventLogConstants.SYSUI_SHADE_GESTURE_SWIPE_DOWN_QS;
+        EventLogTags.writeSysuiLockscreenGesture(
+                gesture,
+                (int) ((y - mInitialTouchY) / mStatusBar.getDisplayDensity()),
+                (int) (vel / mStatusBar.getDisplayDensity()));
     }
 
     private boolean flingExpandsQs(float vel) {
@@ -699,6 +721,7 @@
             return true;
         }
         if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) {
+            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN, 1);
             updateVerticalPanelPosition(event.getX());
         }
         super.onTouchEvent(event);
@@ -738,6 +761,7 @@
         if (mTwoFingerQsExpandPossible && event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
                 && event.getPointerCount() == 2
                 && event.getY(event.getActionIndex()) < mStatusBarMinHeight) {
+            MetricsLogger.count(mContext, COUNTER_PANEL_OPEN_QS, 1);
             mQsExpandImmediate = true;
             requestPanelHeightUpdate();
 
@@ -799,6 +823,7 @@
         }
         final float y = event.getY(pointerIndex);
         final float x = event.getX(pointerIndex);
+        final float h = y - mInitialTouchY;
 
         switch (event.getActionMasked()) {
             case MotionEvent.ACTION_DOWN:
@@ -826,7 +851,6 @@
                 break;
 
             case MotionEvent.ACTION_MOVE:
-                final float h = y - mInitialTouchY;
                 setQsExpansion(h + mInitialHeightOnTouch);
                 if (h >= getFalsingThreshold()) {
                     mQsTouchAboveFalsingThreshold = true;
@@ -842,9 +866,10 @@
                 float fraction = getQsExpansionFraction();
                 if ((fraction != 0f || y >= mInitialTouchY)
                         && (fraction != 1f || y <= mInitialTouchY)) {
-                    flingQsWithCurrentVelocity(
+                    flingQsWithCurrentVelocity(y,
                             event.getActionMasked() == MotionEvent.ACTION_CANCEL);
                 } else {
+                    logQsSwipeDown(y);
                     mScrollYOverride = -1;
                 }
                 if (mVelocityTracker != null) {
@@ -952,6 +977,10 @@
         } else {
             mKeyguardStatusBar.setAlpha(1f);
             mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE);
+            if (keyguardShowing && oldState != mStatusBarState) {
+                mKeyguardBottomArea.updateLeftAffordance();
+                mAfforanceHelper.updatePreviews();
+            }
         }
         resetVerticalPanelPosition();
         updateQsState();
@@ -1815,6 +1844,9 @@
             if (mQsExpanded) {
                 flingSettings(0 /* vel */, false /* expand */);
             } else if (mQsExpansionEnabled) {
+                EventLogTags.writeSysuiLockscreenGesture(
+                        EventLogConstants.SYSUI_TAP_TO_OPEN_QS,
+                        0, 0);
                 flingSettings(0 /* vel */, true /* expand */);
             }
         }
@@ -1831,7 +1863,7 @@
         if (start) {
             EventLogTags.writeSysuiLockscreenGesture(
                     EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DIALER, lengthDp, velocityDp);
-            mKeyguardBottomArea.launchPhone();
+            mKeyguardBottomArea.launchLeftAffordance();
         } else {
             EventLogTags.writeSysuiLockscreenGesture(
                     EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_CAMERA, lengthDp, velocityDp);
@@ -1912,15 +1944,19 @@
         if (rightIcon) {
             mStatusBar.onCameraHintStarted();
         } else {
-            mStatusBar.onPhoneHintStarted();
+            if (mKeyguardBottomArea.isLeftVoiceAssist()) {
+                mStatusBar.onVoiceAssistHintStarted();
+            } else {
+                mStatusBar.onPhoneHintStarted();
+            }
         }
     }
 
     @Override
     public KeyguardAffordanceView getLeftIcon() {
         return getLayoutDirection() == LAYOUT_DIRECTION_RTL
-                ? mKeyguardBottomArea.getCameraView()
-                : mKeyguardBottomArea.getPhoneView();
+                ? mKeyguardBottomArea.getRightView()
+                : mKeyguardBottomArea.getLeftView();
     }
 
     @Override
@@ -1931,22 +1967,22 @@
     @Override
     public KeyguardAffordanceView getRightIcon() {
         return getLayoutDirection() == LAYOUT_DIRECTION_RTL
-                ? mKeyguardBottomArea.getPhoneView()
-                : mKeyguardBottomArea.getCameraView();
+                ? mKeyguardBottomArea.getLeftView()
+                : mKeyguardBottomArea.getRightView();
     }
 
     @Override
     public View getLeftPreview() {
         return getLayoutDirection() == LAYOUT_DIRECTION_RTL
-                ? mKeyguardBottomArea.getCameraPreview()
-                : mKeyguardBottomArea.getPhonePreview();
+                ? mKeyguardBottomArea.getRightPreview()
+                : mKeyguardBottomArea.getLeftPreview();
     }
 
     @Override
     public View getRightPreview() {
         return getLayoutDirection() == LAYOUT_DIRECTION_RTL
-                ? mKeyguardBottomArea.getPhonePreview()
-                : mKeyguardBottomArea.getCameraPreview();
+                ? mKeyguardBottomArea.getLeftPreview()
+                : mKeyguardBottomArea.getRightPreview();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index f3d4c7f..d5209ea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -80,6 +80,14 @@
         }
     }
 
+    public void setBouncerShowing(boolean showing) {
+        if (mPanelHolder != null) {
+            mPanelHolder.setImportantForAccessibility(
+                    showing ? IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS
+                            : IMPORTANT_FOR_ACCESSIBILITY_AUTO);
+        }
+    }
+
     public float getBarHeight() {
         return getMeasuredHeight();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 85f312c..38812ce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -46,6 +46,7 @@
 public abstract class PanelView extends FrameLayout {
     public static final boolean DEBUG = PanelBar.DEBUG;
     public static final String TAG = PanelView.class.getSimpleName();
+
     private final void logf(String fmt, Object... args) {
         Log.v(TAG, (mViewName != null ? (mViewName + ": ") : "") + String.format(fmt, args));
     }
@@ -77,6 +78,7 @@
     private boolean mTouchStartedInEmptyArea;
     private boolean mMotionAborted;
     private boolean mUpwardsWhenTresholdReached;
+    private boolean mAnimatingOnDown;
 
     private ValueAnimator mHeightAnimator;
     private ObjectAnimator mPeekAnimator;
@@ -459,8 +461,8 @@
         switch (event.getActionMasked()) {
             case MotionEvent.ACTION_DOWN:
                 mStatusBar.userActivity();
-                if (mHeightAnimator != null && !mHintAnimationRunning ||
-                        mPeekPending || mPeekAnimator != null) {
+                mAnimatingOnDown = mHeightAnimator != null;
+                if (mAnimatingOnDown && mClosing && !mHintAnimationRunning || mPeekPending || mPeekAnimator != null) {
                     cancelHeightAnimator();
                     cancelPeek();
                     mTouchSlopExceeded = true;
@@ -501,8 +503,10 @@
             case MotionEvent.ACTION_MOVE:
                 final float h = y - mInitialTouchY;
                 trackMovement(event);
-                if (scrolledToBottom || mTouchStartedInEmptyArea) {
-                    if (h < -mTouchSlop && h < -Math.abs(x - mInitialTouchX)) {
+                if (scrolledToBottom || mTouchStartedInEmptyArea || mAnimatingOnDown) {
+                    float hAbs = Math.abs(h);
+                    if ((h < -mTouchSlop || (mAnimatingOnDown && hAbs > mTouchSlop))
+                            && hAbs > Math.abs(x - mInitialTouchX)) {
                         cancelHeightAnimator();
                         startExpandMotion(x, y, true /* startTracking */, mExpandedHeight);
                         return true;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 1c46d42..351977b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -76,6 +76,7 @@
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
+import android.view.ThreadedRenderer;
 import android.view.VelocityTracker;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
@@ -101,7 +102,7 @@
 import com.android.systemui.EventLogTags;
 import com.android.systemui.Prefs;
 import com.android.systemui.R;
-import com.android.systemui.assist.AssistGestureManager;
+import com.android.systemui.assist.AssistManager;
 import com.android.systemui.doze.DozeHost;
 import com.android.systemui.doze.DozeLog;
 import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -323,7 +324,7 @@
     private int mNavigationIconHints = 0;
     private HandlerThread mHandlerThread;
 
-    private AssistGestureManager mAssistGestureManager;
+    private AssistManager mAssistManager;
 
     // ensure quick settings is disabled until the current user makes it through the setup wizard
     private boolean mUserSetup = false;
@@ -645,8 +646,8 @@
                         new NavigationBarView.OnVerticalChangedListener() {
                     @Override
                     public void onVerticalChanged(boolean isVertical) {
-                        if (mAssistGestureManager != null) {
-                            mAssistGestureManager.onConfigurationChanged();
+                        if (mAssistManager != null) {
+                            mAssistManager.onConfigurationChanged();
                         }
                         mNotificationPanel.setQsScrimEnabled(!isVertical);
                     }
@@ -662,6 +663,8 @@
             // no window manager? good luck with that
         }
 
+        mAssistManager = new AssistManager(this, context);
+
         // figure out which pixel-format to use for the status bar.
         mPixelFormat = PixelFormat.OPAQUE;
 
@@ -720,6 +723,7 @@
         mKeyguardBottomArea =
                 (KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
         mKeyguardBottomArea.setActivityStarter(this);
+        mKeyguardBottomArea.setAssistManager(mAssistManager);
         mKeyguardIndicationController = new KeyguardIndicationController(mContext,
                 (KeyguardIndicationTextView) mStatusBarWindow.findViewById(
                         R.id.keyguard_indication_text));
@@ -841,7 +845,6 @@
         mBroadcastReceiver.onReceive(mContext,
                 new Intent(pm.isScreenOn() ? Intent.ACTION_SCREEN_ON : Intent.ACTION_SCREEN_OFF));
 
-        mAssistGestureManager = new AssistGestureManager(this, context);
 
         // receive broadcasts
         IntentFilter filter = new IntentFilter();
@@ -857,6 +860,12 @@
         // listen for USER_SETUP_COMPLETE setting (per-user)
         resetUserSetupObserver();
 
+        // disable profiling bars, since they overlap and clutter the output on app windows
+        ThreadedRenderer.overrideProperty("disableProfileBars", "true");
+
+        // Private API call to make the shadows look better for Recents
+        ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));
+
         return mStatusBarView;
     }
 
@@ -964,7 +973,7 @@
 
     public void invokeAssistGesture(boolean vibrate) {
         mHandler.removeCallbacks(mInvokeAssist);
-        mAssistGestureManager.onGestureInvoked(vibrate);
+        mAssistManager.onGestureInvoked(vibrate);
     }
 
     public int getStatusBarHeight() {
@@ -1044,7 +1053,7 @@
         mNavigationBarView.getBackButton().setLongClickable(true);
         mNavigationBarView.getBackButton().setOnLongClickListener(mLongPressBackRecentsListener);
         mNavigationBarView.getHomeButton().setOnTouchListener(mHomeActionListener);
-        mAssistGestureManager.onConfigurationChanged();
+        mAssistManager.onConfigurationChanged();
     }
 
     // For small-screen devices (read: phones) that lack hardware navigation buttons
@@ -1805,6 +1814,11 @@
         startActivityDismissingKeyguard(intent, false, dismissShade);
     }
 
+    @Override
+    public void preventNextAnimation() {
+        overrideActivityPendingAppTransition(true /* keyguardShowing */);
+    }
+
     public void setQsExpanded(boolean expanded) {
         mStatusBarWindowManager.setQsExpanded(expanded);
     }
@@ -1924,6 +1938,10 @@
         return mHeadsUpManager.isSnoozed(sbn.getPackageName());
     }
 
+    public boolean isKeyguardCurrentlySecure() {
+        return !mUnlockMethodCache.isCurrentlyInsecure();
+    }
+
     /**
      * All changes to the status bar and notifications funnel through here and are batched.
      */
@@ -2650,6 +2668,23 @@
         final boolean afterKeyguardGone = PreviewInflater.wouldLaunchResolverActivity(
                 mContext, intent, mCurrentUserId);
         final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
+        Runnable runnable = new Runnable() {
+            public void run() {
+                intent.setFlags(
+                        Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                mContext.startActivityAsUser(
+                        intent, new UserHandle(UserHandle.USER_CURRENT));
+                overrideActivityPendingAppTransition(
+                        keyguardShowing && !afterKeyguardGone);
+            }
+        };
+        executeRunnableDismissingKeyguard(runnable, dismissShade, afterKeyguardGone);
+    }
+
+    public void executeRunnableDismissingKeyguard(final Runnable runnable,
+            final boolean dismissShade,
+            final boolean afterKeyguardGone) {
+        final boolean keyguardShowing = mStatusBarKeyguardViewManager.isShowing();
         dismissKeyguardThenExecute(new OnDismissAction() {
             @Override
             public boolean onDismiss() {
@@ -2660,12 +2695,9 @@
                                 ActivityManagerNative.getDefault()
                                         .keyguardWaitingForActivityDrawn();
                             }
-                            intent.setFlags(
-                                    Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
-                            mContext.startActivityAsUser(
-                                    intent, new UserHandle(UserHandle.USER_CURRENT));
-                            overrideActivityPendingAppTransition(
-                                    keyguardShowing && !afterKeyguardGone);
+                            if (runnable != null) {
+                                runnable.run();
+                            }
                         } catch (RemoteException e) {
                         }
                     }
@@ -3019,7 +3051,7 @@
             mHandlerThread = null;
         }
         mContext.unregisterReceiver(mBroadcastReceiver);
-        mAssistGestureManager.destroy();
+        mAssistManager.destroy();
     }
 
     private boolean mDemoModeAllowed;
@@ -3467,6 +3499,10 @@
         mKeyguardIndicationController.showTransientIndication(R.string.camera_hint);
     }
 
+    public void onVoiceAssistHintStarted() {
+        mKeyguardIndicationController.showTransientIndication(R.string.voice_hint);
+    }
+
     public void onPhoneHintStarted() {
         mKeyguardIndicationController.showTransientIndication(R.string.phone_hint);
     }
@@ -3579,6 +3615,7 @@
     @Override
     public void setBouncerShowing(boolean bouncerShowing) {
         super.setBouncerShowing(bouncerShowing);
+        mStatusBarView.setBouncerShowing(bouncerShowing);
         disable(mDisabledUnmodified1, mDisabledUnmodified2, true /* animate */);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java
index f2b2f66..a7fdadc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileDataControllerImpl.java
@@ -162,7 +162,7 @@
                 usage.warningLevel = DEFAULT_WARNING_LEVEL;
             }
             if (usage != null) {
-                usage.carrier = mNetworkController.getMobileNetworkName();
+                usage.carrier = mNetworkController.getMobileDataNetworkName();
             }
             return usage;
         } catch (RemoteException e) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index c3c6b12..22bf47c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -84,6 +84,7 @@
         mapIconSets();
 
         mLastState.networkName = mCurrentState.networkName = mNetworkNameDefault;
+        mLastState.networkNameData = mCurrentState.networkNameData = mNetworkNameDefault;
         mLastState.enabled = mCurrentState.enabled = hasMobileData;
         mLastState.iconGroup = mCurrentState.iconGroup = mDefaultIcons;
         // Get initial data sim state.
@@ -294,6 +295,7 @@
         if (action.equals(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION)) {
             updateNetworkName(intent.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_SPN, false),
                     intent.getStringExtra(TelephonyIntents.EXTRA_SPN),
+                    intent.getStringExtra(TelephonyIntents.EXTRA_DATA_SPN),
                     intent.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_PLMN, false),
                     intent.getStringExtra(TelephonyIntents.EXTRA_PLMN));
             notifyListenersIfNecessary();
@@ -322,14 +324,18 @@
     /**
      * Updates the network's name based on incoming spn and plmn.
      */
-    void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plmn) {
+    void updateNetworkName(boolean showSpn, String spn, String dataSpn,
+            boolean showPlmn, String plmn) {
         if (CHATTY) {
-            Log.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn + " spn=" + spn
+            Log.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn
+                    + " spn=" + spn + " dataSpn=" + dataSpn
                     + " showPlmn=" + showPlmn + " plmn=" + plmn);
         }
         StringBuilder str = new StringBuilder();
+        StringBuilder strData = new StringBuilder();
         if (showPlmn && plmn != null) {
             str.append(plmn);
+            strData.append(plmn);
         }
         if (showSpn && spn != null) {
             if (str.length() != 0) {
@@ -342,6 +348,17 @@
         } else {
             mCurrentState.networkName = mNetworkNameDefault;
         }
+        if (showSpn && dataSpn != null) {
+            if (strData.length() != 0) {
+                strData.append(mNetworkNameSeparator);
+            }
+            strData.append(dataSpn);
+        }
+        if (strData.length() != 0) {
+            mCurrentState.networkNameData = strData.toString();
+        } else {
+            mCurrentState.networkNameData = mNetworkNameDefault;
+        }
     }
 
     /**
@@ -492,6 +509,7 @@
 
     static class MobileState extends SignalController.State {
         String networkName;
+        String networkNameData;
         boolean dataSim;
         boolean dataConnected;
         boolean isEmergency;
@@ -505,6 +523,7 @@
             MobileState state = (MobileState) s;
             dataSim = state.dataSim;
             networkName = state.networkName;
+            networkNameData = state.networkNameData;
             dataConnected = state.dataConnected;
             inetForNetwork = state.inetForNetwork;
             isEmergency = state.isEmergency;
@@ -518,6 +537,7 @@
             builder.append(',');
             builder.append("dataSim=").append(dataSim).append(',');
             builder.append("networkName=").append(networkName).append(',');
+            builder.append("networkNameData=").append(networkNameData).append(',');
             builder.append("dataConnected=").append(dataConnected).append(',');
             builder.append("inetForNetwork=").append(inetForNetwork).append(',');
             builder.append("isEmergency=").append(isEmergency).append(',');
@@ -529,6 +549,7 @@
         public boolean equals(Object o) {
             return super.equals(o)
                     && Objects.equals(((MobileState) o).networkName, networkName)
+                    && Objects.equals(((MobileState) o).networkNameData, networkNameData)
                     && ((MobileState) o).dataSim == dataSim
                     && ((MobileState) o).dataConnected == dataConnected
                     && ((MobileState) o).isEmergency == isEmergency
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 6d88535..df133e4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -246,9 +246,9 @@
         return mDefaultSignalController;
     }
 
-    public String getMobileNetworkName() {
+    public String getMobileDataNetworkName() {
         MobileSignalController controller = getDataController();
-        return controller != null ? controller.getState().networkName : "";
+        return controller != null ? controller.getState().networkNameData : "";
     }
 
     public boolean isEmergencyOnly() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java
index 5d89e2f..4269c19 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/PreviewInflater.java
@@ -21,6 +21,7 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -50,6 +51,15 @@
 
     public View inflatePreview(Intent intent) {
         WidgetInfo info = getWidgetInfo(intent);
+        return inflatePreview(info);
+    }
+
+    public View inflatePreviewFromService(ComponentName componentName) {
+        WidgetInfo info = getWidgetInfoFromService(componentName);
+        return inflatePreview(info);
+    }
+
+    private KeyguardPreviewContainer inflatePreview(WidgetInfo info) {
         if (info == null) {
             return null;
         }
@@ -77,8 +87,36 @@
         return widgetView;
     }
 
-    private WidgetInfo getWidgetInfo(Intent intent) {
+    private WidgetInfo getWidgetInfoFromService(ComponentName componentName) {
+        PackageManager packageManager = mContext.getPackageManager();
+        // Look for the preview specified in the service meta-data
+        try {
+            Bundle metaData = packageManager.getServiceInfo(
+                    componentName, PackageManager.GET_META_DATA).metaData;
+            return getWidgetInfoFromMetaData(componentName.getPackageName(), metaData);
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.w(TAG, "Failed to load preview; " + componentName.flattenToShortString()
+                    + " not found", e);
+        }
+        return null;
+    }
+
+    private WidgetInfo getWidgetInfoFromMetaData(String contextPackage,
+            Bundle metaData) {
+        if (metaData == null) {
+            return null;
+        }
+        int layoutId = metaData.getInt(META_DATA_KEYGUARD_LAYOUT);
+        if (layoutId == 0) {
+            return null;
+        }
         WidgetInfo info = new WidgetInfo();
+        info.contextPackage = contextPackage;
+        info.layoutId = layoutId;
+        return info;
+    }
+
+    private WidgetInfo getWidgetInfo(Intent intent) {
         PackageManager packageManager = mContext.getPackageManager();
         final List<ResolveInfo> appList = packageManager.queryIntentActivitiesAsUser(
                 intent, PackageManager.MATCH_DEFAULT_ONLY, KeyguardUpdateMonitor.getCurrentUser());
@@ -94,16 +132,8 @@
         if (resolved == null || resolved.activityInfo == null) {
             return null;
         }
-        if (resolved.activityInfo.metaData == null || resolved.activityInfo.metaData.isEmpty()) {
-            return null;
-        }
-        int layoutId = resolved.activityInfo.metaData.getInt(META_DATA_KEYGUARD_LAYOUT);
-        if (layoutId == 0) {
-            return null;
-        }
-        info.contextPackage = resolved.activityInfo.packageName;
-        info.layoutId = layoutId;
-        return info;
+        return getWidgetInfoFromMetaData(resolved.activityInfo.packageName,
+                resolved.activityInfo.metaData);
     }
 
     public static boolean wouldLaunchResolverActivity(Context ctx, Intent intent,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index 194bcfa..ad27c6e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -43,6 +43,7 @@
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 
+import com.android.internal.logging.MetricsLogger;
 import com.android.internal.util.UserIcons;
 import com.android.systemui.BitmapHelper;
 import com.android.systemui.GuestResumeSessionReceiver;
@@ -548,6 +549,11 @@
         @Override
         public void setToggleState(boolean state) {
         }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsLogger.QS_USERDETAIL;
+        }
     };
 
     private final KeyguardMonitor.Callback mCallback = new KeyguardMonitor.Callback() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
index 202063a..de28ac7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java
@@ -582,7 +582,7 @@
             return row.getIntrinsicHeight();
         } else if (child instanceof ExpandableView) {
             ExpandableView expandableView = (ExpandableView) child;
-            return expandableView.getActualHeight();
+            return expandableView.getIntrinsicHeight();
         }
         return child == null? mCollapsedSize : child.getHeight();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java
index 23a65e8..ca32567 100644
--- a/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/usb/UsbResolverActivity.java
@@ -93,7 +93,7 @@
     }
 
     @Override
-    protected void onTargetSelected(TargetInfo target, boolean alwaysCheck) {
+    protected boolean onTargetSelected(TargetInfo target, boolean alwaysCheck) {
         final ResolveInfo ri = target.getResolveInfo();
         try {
             IBinder b = ServiceManager.getService(USB_SERVICE);
@@ -129,5 +129,6 @@
         } catch (RemoteException e) {
             Log.e(TAG, "onIntentSelected failed", e);
         }
+        return true;
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
index 94340369..1e34663 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialog.java
@@ -16,6 +16,9 @@
 
 package com.android.systemui.volume;
 
+import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
 import android.animation.LayoutTransition;
 import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
@@ -32,6 +35,7 @@
 import android.graphics.drawable.Drawable;
 import android.media.AudioManager;
 import android.media.AudioSystem;
+import android.os.Debug;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -43,6 +47,8 @@
 import android.view.Gravity;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.View.AccessibilityDelegate;
+import android.view.View.OnAttachStateChangeListener;
 import android.view.View.OnClickListener;
 import android.view.View.OnLayoutChangeListener;
 import android.view.View.OnTouchListener;
@@ -50,6 +56,9 @@
 import android.view.ViewGroup.MarginLayoutParams;
 import android.view.Window;
 import android.view.WindowManager;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
 import android.view.animation.DecelerateInterpolator;
 import android.widget.ImageButton;
 import android.widget.LinearLayout;
@@ -97,6 +106,7 @@
     private final ZenFooter mZenFooter;
     private final LayoutTransition mLayoutTransition;
     private final Object mSafetyWarningLock = new Object();
+    private final Accessibility mAccessibility = new Accessibility();
 
     private boolean mShowing;
     private boolean mExpanded;
@@ -174,6 +184,8 @@
         mZenFooter = (ZenFooter) mDialog.findViewById(R.id.volume_zen_footer);
         mZenFooter.init(zenModeController);
 
+        mAccessibility.init();
+
         controller.addCallback(mControllerCallbackH, mHandler);
         controller.getState();
     }
@@ -409,10 +421,13 @@
 
     protected void rescheduleTimeoutH() {
         mHandler.removeMessages(H.DISMISS);
-        final int timeout = computeTimeoutH();
-        if (D.BUG) Log.d(TAG, "rescheduleTimeout " + timeout);
-        mHandler.sendMessageDelayed(mHandler
-                .obtainMessage(H.DISMISS, Events.DISMISS_REASON_TIMEOUT, 0), timeout);
+        int timeout = -1;
+        if (!mAccessibility.mFeedbackEnabled) {
+            timeout = computeTimeoutH();
+            mHandler.sendMessageDelayed(mHandler
+                    .obtainMessage(H.DISMISS, Events.DISMISS_REASON_TIMEOUT, 0), timeout);
+        }
+        if (D.BUG) Log.d(TAG, "rescheduleTimeout " + timeout + " " + Debug.getCaller());
         mController.userActivity();
     }
 
@@ -475,6 +490,8 @@
         if (res == mExpandButtonRes) return;
         mExpandButtonRes = res;
         mExpandButton.setImageResource(res);
+        mExpandButton.setContentDescription(mContext.getString(mExpanded ?
+                R.string.accessibility_volume_collapse : R.string.accessibility_volume_expand));
     }
 
     private boolean isVisibleH(VolumeRow row, boolean isActive) {
@@ -632,6 +649,7 @@
                 : (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes)
                         ? Events.ICON_STATE_UNMUTE
                 : Events.ICON_STATE_UNKNOWN;
+        row.icon.setContentDescription(ss.name);
 
         // update slider
         updateVolumeRowSliderH(row, zenMuted);
@@ -770,6 +788,7 @@
         public void onConfigurationChanged() {
             updateWindowWidthH();
             mSpTexts.update();
+            mZenFooter.onConfigurationChanged();
         }
 
         @Override
@@ -931,6 +950,56 @@
         }
     }
 
+    private final class Accessibility {
+        private AccessibilityManager mMgr;
+        private boolean mFeedbackEnabled;
+
+        public void init() {
+            mMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
+            mDialogView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
+                @Override
+                public void onViewDetachedFromWindow(View v) {
+                    // noop
+                }
+
+                @Override
+                public void onViewAttachedToWindow(View v) {
+                    updateFeedbackEnabled();
+                }
+            });
+            mDialogView.setAccessibilityDelegate(new AccessibilityDelegate() {
+                @Override
+                public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
+                        AccessibilityEvent event) {
+                    rescheduleTimeoutH();
+                    return super.onRequestSendAccessibilityEvent(host, child, event);
+                }
+            });
+            mMgr.addAccessibilityStateChangeListener(new AccessibilityStateChangeListener() {
+                @Override
+                public void onAccessibilityStateChanged(boolean enabled) {
+                    updateFeedbackEnabled();
+                }
+            });
+            updateFeedbackEnabled();
+        }
+
+        private void updateFeedbackEnabled() {
+            mFeedbackEnabled = computeFeedbackEnabled();
+        }
+
+        private boolean computeFeedbackEnabled() {
+            final List<AccessibilityServiceInfo> services =
+                    mMgr.getEnabledAccessibilityServiceList(FEEDBACK_ALL_MASK);
+            for (AccessibilityServiceInfo asi : services) {
+                if ((asi.feedbackType & FEEDBACK_ALL_MASK) != 0) {
+                    return true;
+                }
+            }
+            return false;
+        }
+    }
+
     private static class VolumeRow {
         private View view;
         private View space;
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
index 8aded45..ccb2b5a 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java
@@ -36,10 +36,11 @@
     private static final String TAG = Util.logTag(ZenFooter.class);
 
     private final Context mContext;
+    private final SpTexts mSpTexts;
 
     private TextView mSummaryLine1;
     private TextView mSummaryLine2;
-    private View mEndNowButton;
+    private TextView mEndNowButton;
     private int mZen = -1;
     private ZenModeConfig mConfig;
     private ZenModeController mController;
@@ -47,6 +48,7 @@
     public ZenFooter(Context context, AttributeSet attrs) {
         super(context, attrs);
         mContext = context;
+        mSpTexts = new SpTexts(mContext);
         setLayoutTransition(new LayoutTransition());
     }
 
@@ -55,7 +57,10 @@
         super.onFinishInflate();
         mSummaryLine1 = (TextView) findViewById(R.id.volume_zen_summary_line_1);
         mSummaryLine2 = (TextView) findViewById(R.id.volume_zen_summary_line_2);
-        mEndNowButton = findViewById(R.id.volume_zen_end_now);
+        mEndNowButton = (TextView) findViewById(R.id.volume_zen_end_now);
+        mSpTexts.add(mSummaryLine1);
+        mSpTexts.add(mSummaryLine2);
+        mSpTexts.add(mEndNowButton);
     }
 
     public void init(final ZenModeController controller) {
@@ -122,4 +127,8 @@
         Util.setText(mSummaryLine2, line2);
     }
 
+    public void onConfigurationChanged() {
+        mSpTexts.update();
+    }
+
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index a176c98..29f461e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -306,6 +306,6 @@
     }
 
    protected void assertNetworkNameEquals(String expected) {
-       assertEquals("Network name", expected, mNetworkController.getMobileNetworkName());
+       assertEquals("Network name", expected, mNetworkController.getMobileDataNetworkName());
    }
 }
diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml
index 375c5d8..32e1e6d 100644
--- a/packages/VpnDialogs/AndroidManifest.xml
+++ b/packages/VpnDialogs/AndroidManifest.xml
@@ -24,7 +24,7 @@
     <application android:label="VpnDialogs"
             android:allowBackup="false" >
         <activity android:name=".ConfirmDialog"
-                android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert">
+                android:theme="@*android:style/Theme.Material.DayNight.Dialog.Alert">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.DEFAULT"/>
@@ -32,7 +32,7 @@
         </activity>
 
         <activity android:name=".ManageDialog"
-                android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert"
+                android:theme="@*android:style/Theme.Material.DayNight.Dialog.Alert"
                 android:noHistory="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
diff --git a/packages/WallpaperCropper/res/values/styles.xml b/packages/WallpaperCropper/res/values/styles.xml
index a34b25a..e438c84 100644
--- a/packages/WallpaperCropper/res/values/styles.xml
+++ b/packages/WallpaperCropper/res/values/styles.xml
@@ -15,13 +15,13 @@
 -->
 
 <resources>
-    <style name="Theme.WallpaperCropper" parent="@android:style/Theme.DeviceDefault">
+    <style name="Theme.WallpaperCropper" parent="@android:style/Theme.Material.DayNight">
         <item name="android:actionBarStyle">@style/WallpaperCropperActionBar</item>
         <item name="android:windowFullscreen">true</item>
         <item name="android:windowActionBarOverlay">true</item>
     </style>
 
-    <style name="WallpaperCropperActionBar" parent="android:style/Widget.DeviceDefault.ActionBar">
+    <style name="WallpaperCropperActionBar" parent="@android:style/Widget.Material.ActionBar">
         <item name="android:displayOptions">showCustom</item>
         <item name="android:background">#88000000</item>
     </style>
diff --git a/rs/java/android/renderscript/RenderScript.java b/rs/java/android/renderscript/RenderScript.java
index e7f210b..4f10699 100644
--- a/rs/java/android/renderscript/RenderScript.java
+++ b/rs/java/android/renderscript/RenderScript.java
@@ -302,8 +302,12 @@
         long[] fieldIDs, long[] values, int[] sizes, long[] depClosures,
         long[] depFieldIDs) {
       validate();
-      return rsnClosureCreate(mContext, kernelID, returnValue, fieldIDs, values,
+      long c = rsnClosureCreate(mContext, kernelID, returnValue, fieldIDs, values,
           sizes, depClosures, depFieldIDs);
+      if (c == 0) {
+          throw new RSRuntimeException("Failed creating closure.");
+      }
+      return c;
     }
 
     native long rsnInvokeClosureCreate(long con, long invokeID, byte[] params,
@@ -311,8 +315,12 @@
     synchronized long nInvokeClosureCreate(long invokeID, byte[] params,
         long[] fieldIDs, long[] values, int[] sizes) {
       validate();
-      return rsnInvokeClosureCreate(mContext, invokeID, params, fieldIDs,
+      long c = rsnInvokeClosureCreate(mContext, invokeID, params, fieldIDs,
           values, sizes);
+      if (c == 0) {
+          throw new RSRuntimeException("Failed creating closure.");
+      }
+      return c;
     }
 
     native void rsnClosureSetArg(long con, long closureID, int index,
@@ -337,7 +345,11 @@
     synchronized long nScriptGroup2Create(String name, String cachePath,
                                           long[] closures) {
       validate();
-      return rsnScriptGroup2Create(mContext, name, cachePath, closures);
+      long g = rsnScriptGroup2Create(mContext, name, cachePath, closures);
+      if (g == 0) {
+          throw new RSRuntimeException("Failed creating script group.");
+      }
+      return g;
     }
 
     native void rsnScriptGroup2Execute(long con, long groupID);
diff --git a/rs/java/android/renderscript/Script.java b/rs/java/android/renderscript/Script.java
index 6a1efee..7cd6d09 100644
--- a/rs/java/android/renderscript/Script.java
+++ b/rs/java/android/renderscript/Script.java
@@ -182,9 +182,9 @@
         mRS.validateObject(ain);
         mRS.validateObject(aout);
 
-        if (ain == null && aout == null) {
+        if (ain == null && aout == null && sc == null) {
             throw new RSIllegalArgumentException(
-                "At least one of ain or aout is required to be non-null.");
+                "At least one of input allocation, output allocation, or LaunchOptions is required to be non-null.");
         }
 
         long[] in_ids = null;
diff --git a/rs/jni/android_renderscript_RenderScript.cpp b/rs/jni/android_renderscript_RenderScript.cpp
index 5ef807d..a49fb76 100644
--- a/rs/jni/android_renderscript_RenderScript.cpp
+++ b/rs/jni/android_renderscript_RenderScript.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#define LOG_TAG "libRS_jni"
+#define LOG_TAG "RenderScript_jni"
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -43,6 +43,9 @@
 
 //#define LOG_API ALOGE
 static constexpr bool kLogApi = false;
+static constexpr size_t kMaxNumberArgsAndBindings = 1000;
+static constexpr size_t kMaxNumberClosuresInScriptGroup = 1000000;
+static constexpr size_t kMaxNumberKernelArguments = 256;
 
 using namespace android;
 
@@ -328,79 +331,167 @@
                jlong returnValue, jlongArray fieldIDArray,
                jlongArray valueArray, jintArray sizeArray,
                jlongArray depClosureArray, jlongArray depFieldIDArray) {
+  jlong ret = 0;
+
   jlong* jFieldIDs = _env->GetLongArrayElements(fieldIDArray, nullptr);
   jsize fieldIDs_length = _env->GetArrayLength(fieldIDArray);
-  RsScriptFieldID* fieldIDs =
-      (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * fieldIDs_length);
-  for (int i = 0; i< fieldIDs_length; i++) {
-    fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
-  }
-
   jlong* jValues = _env->GetLongArrayElements(valueArray, nullptr);
   jsize values_length = _env->GetArrayLength(valueArray);
-  uintptr_t* values = (uintptr_t*)alloca(sizeof(uintptr_t) * values_length);
-  for (int i = 0; i < values_length; i++) {
-    values[i] = (uintptr_t)jValues[i];
-  }
-
-  jint* sizes = _env->GetIntArrayElements(sizeArray, nullptr);
+  jint* jSizes = _env->GetIntArrayElements(sizeArray, nullptr);
   jsize sizes_length = _env->GetArrayLength(sizeArray);
-
   jlong* jDepClosures =
       _env->GetLongArrayElements(depClosureArray, nullptr);
   jsize depClosures_length = _env->GetArrayLength(depClosureArray);
-  RsClosure* depClosures =
-      (RsClosure*)alloca(sizeof(RsClosure) * depClosures_length);
-  for (int i = 0; i < depClosures_length; i++) {
-    depClosures[i] = (RsClosure)jDepClosures[i];
-  }
-
   jlong* jDepFieldIDs =
       _env->GetLongArrayElements(depFieldIDArray, nullptr);
   jsize depFieldIDs_length = _env->GetArrayLength(depFieldIDArray);
-  RsScriptFieldID* depFieldIDs =
-      (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * depFieldIDs_length);
-  for (int i = 0; i < depClosures_length; i++) {
+
+  size_t numValues, numDependencies;
+  RsScriptFieldID* fieldIDs;
+  uintptr_t* values;
+  RsClosure* depClosures;
+  RsScriptFieldID* depFieldIDs;
+
+  if (fieldIDs_length != values_length || values_length != sizes_length) {
+      ALOGE("Unmatched field IDs, values, and sizes in closure creation.");
+      goto exit;
+  }
+
+  numValues = (size_t)fieldIDs_length;
+
+  if (depClosures_length != depFieldIDs_length) {
+      ALOGE("Unmatched closures and field IDs for dependencies in closure creation.");
+      goto exit;
+  }
+
+  numDependencies = (size_t)depClosures_length;
+
+  if (numDependencies > numValues) {
+      ALOGE("Unexpected number of dependencies in closure creation");
+      goto exit;
+  }
+
+  if (numValues > kMaxNumberArgsAndBindings) {
+      ALOGE("Too many arguments or globals in closure creation");
+      goto exit;
+  }
+
+  fieldIDs = (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * numValues);
+  if (fieldIDs == nullptr) {
+      goto exit;
+  }
+
+  for (size_t i = 0; i < numValues; i++) {
+    fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
+  }
+
+  values = (uintptr_t*)alloca(sizeof(uintptr_t) * numValues);
+  if (values == nullptr) {
+      goto exit;
+  }
+
+  for (size_t i = 0; i < numValues; i++) {
+    values[i] = (uintptr_t)jValues[i];
+  }
+
+  depClosures = (RsClosure*)alloca(sizeof(RsClosure) * numDependencies);
+  if (depClosures == nullptr) {
+      goto exit;
+  }
+
+  for (size_t i = 0; i < numDependencies; i++) {
+    depClosures[i] = (RsClosure)jDepClosures[i];
+  }
+
+  depFieldIDs = (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * numDependencies);
+  if (depFieldIDs == nullptr) {
+      goto exit;
+  }
+
+  for (size_t i = 0; i < numDependencies; i++) {
     depFieldIDs[i] = (RsClosure)jDepFieldIDs[i];
   }
 
-  return (jlong)(uintptr_t)rsClosureCreate(
+  ret = (jlong)(uintptr_t)rsClosureCreate(
       (RsContext)con, (RsScriptKernelID)kernelID, (RsAllocation)returnValue,
-      fieldIDs, (size_t)fieldIDs_length, values, (size_t)values_length,
-      (int*)sizes, (size_t)sizes_length,
-      depClosures, (size_t)depClosures_length,
-      depFieldIDs, (size_t)depFieldIDs_length);
+      fieldIDs, numValues, values, numValues,
+      (int*)jSizes, numValues,
+      depClosures, numDependencies,
+      depFieldIDs, numDependencies);
+
+exit:
+
+  _env->ReleaseLongArrayElements(depFieldIDArray, jDepFieldIDs, JNI_ABORT);
+  _env->ReleaseLongArrayElements(depClosureArray, jDepClosures, JNI_ABORT);
+  _env->ReleaseIntArrayElements (sizeArray,       jSizes,       JNI_ABORT);
+  _env->ReleaseLongArrayElements(valueArray,      jValues,      JNI_ABORT);
+  _env->ReleaseLongArrayElements(fieldIDArray,    jFieldIDs,    JNI_ABORT);
+
+  return ret;
 }
 
 static jlong
 nInvokeClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong invokeID,
                      jbyteArray paramArray, jlongArray fieldIDArray, jlongArray valueArray,
                      jintArray sizeArray) {
+  jlong ret = 0;
+
   jbyte* jParams = _env->GetByteArrayElements(paramArray, nullptr);
   jsize jParamLength = _env->GetArrayLength(paramArray);
-
   jlong* jFieldIDs = _env->GetLongArrayElements(fieldIDArray, nullptr);
   jsize fieldIDs_length = _env->GetArrayLength(fieldIDArray);
-  RsScriptFieldID* fieldIDs =
-      (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * fieldIDs_length);
-  for (int i = 0; i< fieldIDs_length; i++) {
+  jlong* jValues = _env->GetLongArrayElements(valueArray, nullptr);
+  jsize values_length = _env->GetArrayLength(valueArray);
+  jint* jSizes = _env->GetIntArrayElements(sizeArray, nullptr);
+  jsize sizes_length = _env->GetArrayLength(sizeArray);
+
+  size_t numValues;
+  RsScriptFieldID* fieldIDs;
+  uintptr_t* values;
+
+  if (fieldIDs_length != values_length || values_length != sizes_length) {
+      ALOGE("Unmatched field IDs, values, and sizes in closure creation.");
+      goto exit;
+  }
+
+  numValues = (size_t) fieldIDs_length;
+
+  if (numValues > kMaxNumberArgsAndBindings) {
+      ALOGE("Too many arguments or globals in closure creation");
+      goto exit;
+  }
+
+  fieldIDs = (RsScriptFieldID*)alloca(sizeof(RsScriptFieldID) * numValues);
+  if (fieldIDs == nullptr) {
+      goto exit;
+  }
+
+  for (size_t i = 0; i< numValues; i++) {
     fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i];
   }
 
-  jlong* jValues = _env->GetLongArrayElements(valueArray, nullptr);
-  jsize values_length = _env->GetArrayLength(valueArray);
-  uintptr_t* values = (uintptr_t*)alloca(sizeof(uintptr_t) * values_length);
-  for (int i = 0; i < values_length; i++) {
+  values = (uintptr_t*)alloca(sizeof(uintptr_t) * numValues);
+  if (values == nullptr) {
+      goto exit;
+  }
+
+  for (size_t i = 0; i < numValues; i++) {
     values[i] = (uintptr_t)jValues[i];
   }
 
-  jint* sizes = _env->GetIntArrayElements(sizeArray, nullptr);
-  jsize sizes_length = _env->GetArrayLength(sizeArray);
-
-  return (jlong)(uintptr_t)rsInvokeClosureCreate(
+  ret = (jlong)(uintptr_t)rsInvokeClosureCreate(
       (RsContext)con, (RsScriptInvokeID)invokeID, jParams, jParamLength,
-      fieldIDs, (size_t)fieldIDs_length, values, (size_t)values_length,
-      (int*)sizes, (size_t)sizes_length);
+      fieldIDs, numValues, values, numValues,
+      (int*)jSizes, numValues);
+
+exit:
+
+  _env->ReleaseIntArrayElements (sizeArray,       jSizes,       JNI_ABORT);
+  _env->ReleaseLongArrayElements(valueArray,      jValues,      JNI_ABORT);
+  _env->ReleaseLongArrayElements(fieldIDArray,    jFieldIDs,    JNI_ABORT);
+  _env->ReleaseByteArrayElements(paramArray,      jParams,      JNI_ABORT);
+
+  return ret;
 }
 
 static void
@@ -420,20 +511,40 @@
 static long
 nScriptGroup2Create(JNIEnv *_env, jobject _this, jlong con, jstring name,
                     jstring cacheDir, jlongArray closureArray) {
+  jlong ret = 0;
+
   AutoJavaStringToUTF8 nameUTF(_env, name);
   AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir);
 
   jlong* jClosures = _env->GetLongArrayElements(closureArray, nullptr);
   jsize numClosures = _env->GetArrayLength(closureArray);
-  RsClosure* closures = (RsClosure*)alloca(sizeof(RsClosure) * numClosures);
+
+  RsClosure* closures;
+
+  if (numClosures > (jsize) kMaxNumberClosuresInScriptGroup) {
+    ALOGE("Too many closures in script group");
+    goto exit;
+  }
+
+  closures = (RsClosure*)alloca(sizeof(RsClosure) * numClosures);
+  if (closures == nullptr) {
+      goto exit;
+  }
+
   for (int i = 0; i < numClosures; i++) {
     closures[i] = (RsClosure)jClosures[i];
   }
 
-  return (jlong)(uintptr_t)rsScriptGroup2Create(
+  ret = (jlong)(uintptr_t)rsScriptGroup2Create(
       (RsContext)con, nameUTF.c_str(), nameUTF.length(),
       cacheDirUTF.c_str(), cacheDirUTF.length(),
       closures, numClosures);
+
+exit:
+
+  _env->ReleaseLongArrayElements(closureArray, jClosures, JNI_ABORT);
+
+  return ret;
 }
 
 static void
@@ -1746,7 +1857,7 @@
                jintArray limits)
 {
     if (kLogApi) {
-        ALOGD("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot);
+        ALOGD("nScriptForEach, con(%p), s(%p), slot(%i) ains(%p) aout(%" PRId64 ")", (RsContext)con, (void *)script, slot, ains, aout);
     }
 
     jint   in_len = 0;
@@ -1756,8 +1867,14 @@
 
     if (ains != nullptr) {
         in_len = _env->GetArrayLength(ains);
-        in_ptr = _env->GetLongArrayElements(ains, nullptr);
+        if (in_len > (jint)kMaxNumberKernelArguments) {
+            ALOGE("Too many arguments in kernel launch.");
+            // TODO (b/20758983): Report back to Java and throw an exception
+            return;
+        }
 
+        // TODO (b/20760800): Check in_ptr is not null
+        in_ptr = _env->GetLongArrayElements(ains, nullptr);
         if (sizeof(RsAllocation) == sizeof(jlong)) {
             in_allocs = (RsAllocation*)in_ptr;
 
@@ -1765,6 +1882,11 @@
             // Convert from 64-bit jlong types to the native pointer type.
 
             in_allocs = (RsAllocation*)alloca(in_len * sizeof(RsAllocation));
+            if (in_allocs == nullptr) {
+                ALOGE("Failed launching kernel for lack of memory.");
+                _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT);
+                return;
+            }
 
             for (int index = in_len; --index >= 0;) {
                 in_allocs[index] = (RsAllocation)in_ptr[index];
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index bfe8b5c..6c1023c 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -9368,44 +9368,47 @@
                 throw new SecurityException("No permission to restore other packages");
             }
 
-            // So far so good; we're allowed to try to restore this package.  Now
-            // check whether there is data for it in the current dataset, falling back
-            // to the ancestral dataset if not.
-            long token = getAvailableRestoreToken(packageName);
-            if (DEBUG) Slog.v(TAG, "restorePackage pkg=" + packageName
-                    + " token=" + Long.toHexString(token));
-
-            // If we didn't come up with a place to look -- no ancestral dataset and
-            // the app has never been backed up from this device -- there's nothing
-            // to do but return failure.
-            if (token == 0) {
-                if (DEBUG) Slog.w(TAG, "No data available for this package; not restoring");
-                return -1;
-            }
-
-            String dirName;
-            try {
-                dirName = mRestoreTransport.transportDirName();
-            } catch (RemoteException e) {
-                // Transport went AWOL; fail.
-                Slog.e(TAG, "Unable to contact transport for restore");
-                return -1;
-            }
-
-            // Stop the session timeout until we finalize the restore
-            mBackupHandler.removeMessages(MSG_RESTORE_TIMEOUT);
-
-            // Ready to go:  enqueue the restore request and claim success
+            // So far so good; we're allowed to try to restore this package.
             long oldId = Binder.clearCallingIdentity();
-            mWakelock.acquire();
-            if (MORE_DEBUG) {
-                Slog.d(TAG, "restorePackage() : " + packageName);
+            try {
+                // Check whether there is data for it in the current dataset, falling back
+                // to the ancestral dataset if not.
+                long token = getAvailableRestoreToken(packageName);
+                if (DEBUG) Slog.v(TAG, "restorePackage pkg=" + packageName
+                        + " token=" + Long.toHexString(token));
+
+                // If we didn't come up with a place to look -- no ancestral dataset and
+                // the app has never been backed up from this device -- there's nothing
+                // to do but return failure.
+                if (token == 0) {
+                    if (DEBUG) Slog.w(TAG, "No data available for this package; not restoring");
+                    return -1;
+                }
+
+                String dirName;
+                try {
+                    dirName = mRestoreTransport.transportDirName();
+                } catch (RemoteException e) {
+                    // Transport went AWOL; fail.
+                    Slog.e(TAG, "Unable to contact transport for restore");
+                    return -1;
+                }
+
+                // Stop the session timeout until we finalize the restore
+                mBackupHandler.removeMessages(MSG_RESTORE_TIMEOUT);
+
+                // Ready to go:  enqueue the restore request and claim success
+                mWakelock.acquire();
+                if (MORE_DEBUG) {
+                    Slog.d(TAG, "restorePackage() : " + packageName);
+                }
+                Message msg = mBackupHandler.obtainMessage(MSG_RUN_RESTORE);
+                msg.obj = new RestoreParams(mRestoreTransport, dirName,
+                        observer, token, app, 0);
+                mBackupHandler.sendMessage(msg);
+            } finally {
+                Binder.restoreCallingIdentity(oldId);
             }
-            Message msg = mBackupHandler.obtainMessage(MSG_RUN_RESTORE);
-            msg.obj = new RestoreParams(mRestoreTransport, dirName,
-                    observer, token, app, 0);
-            mBackupHandler.sendMessage(msg);
-            Binder.restoreCallingIdentity(oldId);
             return 0;
         }
 
diff --git a/services/core/java/com/android/server/AssetAtlasService.java b/services/core/java/com/android/server/AssetAtlasService.java
index 26f4232..ebc810f 100644
--- a/services/core/java/com/android/server/AssetAtlasService.java
+++ b/services/core/java/com/android/server/AssetAtlasService.java
@@ -119,7 +119,6 @@
     // long0: SkBitmap*, the native bitmap object
     // long1: x position
     // long2: y position
-    // long3: rotated, 1 if the bitmap must be rotated, 0 otherwise
     private long[] mAtlasMap;
 
     /**
@@ -236,7 +235,7 @@
         /**
          * Renders a list of bitmaps into the atlas. The position of each bitmap
          * was decided by the packing algorithm and will be honored by this
-         * method. If need be this method will also rotate bitmaps.
+         * method.
          *
          * @param buffer The buffer to render the atlas entries into
          * @param atlas The atlas to pack the bitmaps into
@@ -280,16 +279,11 @@
 
                     canvas.save();
                     canvas.translate(entry.x, entry.y);
-                    if (entry.rotated) {
-                        canvas.translate(bitmap.getHeight(), 0.0f);
-                        canvas.rotate(90.0f);
-                    }
                     canvas.drawBitmap(bitmap, 0.0f, 0.0f, null);
                     canvas.restore();
                     atlasMap[mapIndex++] = bitmap.refSkPixelRef();
                     atlasMap[mapIndex++] = entry.x;
                     atlasMap[mapIndex++] = entry.y;
-                    atlasMap[mapIndex++] = entry.rotated ? 1 : 0;
                 }
             }
 
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 1019faa..32b91d2 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -512,7 +512,8 @@
     private void onBluetoothGattServiceUp() {
         if (DBG) Log.d(TAG,"BluetoothGatt Service is Up");
         try{
-            if (isBleAppPresent() == false && mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
+            if (isBleAppPresent() == false && mBluetooth != null
+                  && mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
                 mBluetooth.onLeServiceUp();
 
                 // waive WRITE_SECURE_SETTINGS permission check
@@ -531,32 +532,26 @@
      */
     private void sendBrEdrDownCallback() {
         if (DBG) Log.d(TAG,"Calling sendBrEdrDownCallback callbacks");
-        int n = mCallbacks.beginBroadcast();
+
+        if(mBluetooth == null) {
+            Log.w(TAG, "Bluetooth handle is null");
+            return;
+        }
 
         if (isBleAppPresent() == false) {
             try {
                 mBluetooth.onBrEdrDown();
             } catch(RemoteException e) {
-                Log.e(TAG,"Unable to call onBrEdrDown", e);
+                Log.e(TAG, "Call to onBrEdrDown() failed.", e);
             }
-        }
-        else{//need to stay at BLE ON. disconnect all Gatt connections
+        } else {
+            // Need to stay at BLE ON. Disconnect all Gatt connections
             try{
-                mBluetoothGatt.unregAll();//disconnectAll();
+                mBluetoothGatt.unregAll();
             } catch(RemoteException e) {
-                Log.e(TAG,"Unable to disconn all", e);
+                Log.e(TAG, "Unable to disconnect all apps.", e);
             }
         }
-
-        Log.d(TAG,"Broadcasting onBrEdrDown() to " + n + " receivers.");
-        for (int i=0; i <n; i++) {
-            try {
-                mCallbacks.getBroadcastItem(i).onBrEdrDown();
-            }  catch (RemoteException e) {
-                Log.e(TAG, "Unable to call sendBrEdrDownCallback() on callback #" + i, e);
-            }
-        }
-        mCallbacks.finishBroadcast();
     }
 
     /** @hide*/
diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
index 45909db..9511f54 100644
--- a/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -2038,11 +2038,9 @@
                         if (!mIWindowManager.inputMethodClientHasFocus(client)) {
                             if (DEBUG) Slog.w(TAG, "Ignoring hideSoftInput of uid "
                                     + uid + ": " + client);
-                            setImeWindowVisibilityStatusHiddenLocked();
                             return false;
                         }
                     } catch (RemoteException e) {
-                        setImeWindowVisibilityStatusHiddenLocked();
                         return false;
                     }
                 }
@@ -2238,7 +2236,8 @@
     }
 
     @Override
-    public void showInputMethodPickerFromClient(IInputMethodClient client) {
+    public void showInputMethodPickerFromClient(
+            IInputMethodClient client, int auxiliarySubtypeMode) {
         if (!calledFromValidUser()) {
             return;
         }
@@ -2251,7 +2250,8 @@
 
             // Always call subtype picker, because subtype picker is a superset of input method
             // picker.
-            mHandler.sendEmptyMessage(MSG_SHOW_IM_SUBTYPE_PICKER);
+            mHandler.sendMessage(mCaller.obtainMessageI(
+                    MSG_SHOW_IM_SUBTYPE_PICKER, auxiliarySubtypeMode));
         }
     }
 
@@ -2597,7 +2597,25 @@
         SomeArgs args;
         switch (msg.what) {
             case MSG_SHOW_IM_SUBTYPE_PICKER:
-                showInputMethodMenu();
+                final boolean showAuxSubtypes;
+                switch (msg.arg1) {
+                    case InputMethodManager.SHOW_IM_PICKER_MODE_AUTO:
+                        // This is undocumented so far, but IMM#showInputMethodPicker() has been
+                        // implemented so that auxiliary subtypes will be excluded when the soft
+                        // keyboard is invisible.
+                        showAuxSubtypes = mInputShown;
+                        break;
+                    case InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES:
+                        showAuxSubtypes = true;
+                        break;
+                    case InputMethodManager.SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES:
+                        showAuxSubtypes = false;
+                        break;
+                    default:
+                        Slog.e(TAG, "Unknown subtype picker mode = " + msg.arg1);
+                        return false;
+                }
+                showInputMethodMenu(showAuxSubtypes);
                 return true;
 
             case MSG_SHOW_IM_SUBTYPE_ENABLER:
@@ -2880,8 +2898,8 @@
                 && mKeyguardManager.isKeyguardLocked() && mKeyguardManager.isKeyguardSecure();
     }
 
-    private void showInputMethodMenu() {
-        if (DEBUG) Slog.v(TAG, "Show switching menu");
+    private void showInputMethodMenu(boolean showAuxSubtypes) {
+        if (DEBUG) Slog.v(TAG, "Show switching menu. showAuxSubtypes=" + showAuxSubtypes);
 
         final Context context = mContext;
         final boolean isScreenLocked = isScreenLocked();
@@ -2902,7 +2920,7 @@
 
             final List<ImeSubtypeListItem> imList =
                     mSwitchingController.getSortedInputMethodAndSubtypeListLocked(
-                            true /* showSubtypes */, mInputShown, isScreenLocked);
+                            true /* showSubtypes */, showAuxSubtypes, isScreenLocked);
 
             if (lastInputMethodSubtypeId == NOT_A_SUBTYPE_ID) {
                 final InputMethodSubtype currentSubtype = getCurrentInputMethodSubtypeLocked();
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index eea6234..82dbfeec 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -414,6 +414,11 @@
     ActivityRecord mFocusedActivity = null;
 
     /**
+     * User id of the last activity mFocusedActivity was set to.
+     */
+    private int mLastFocusedUserId;
+
+    /**
      * List of intents that were used to start the most recent tasks.
      */
     private final RecentTasks mRecentTasks;
@@ -2561,19 +2566,32 @@
                 mWindowManager.setFocusedApp(r.appToken, true);
             }
             applyUpdateLockStateLocked(r);
-            if (last != null && last.userId != mFocusedActivity.userId) {
+            if (mFocusedActivity.userId != mLastFocusedUserId) {
                 mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG);
                 mHandler.sendMessage(mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG,
                                 mFocusedActivity.userId, 0));
+                mLastFocusedUserId = mFocusedActivity.userId;
             }
         }
-        EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY, mCurrentUserId,
+        EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY,
+                mFocusedActivity == null ? -1 : mFocusedActivity.userId,
                 mFocusedActivity == null ? "NULL" : mFocusedActivity.shortComponentName);
     }
 
     final void clearFocusedActivity(ActivityRecord r) {
         if (mFocusedActivity == r) {
+            ActivityStack stack = mStackSupervisor.getFocusedStack();
+            if (stack != null) {
+                ActivityRecord top = stack.topActivity();
+                if (top != null && top.userId != mLastFocusedUserId) {
+                    mHandler.removeMessages(FOREGROUND_PROFILE_CHANGED_MSG);
+                    mHandler.sendMessage(mHandler.obtainMessage(FOREGROUND_PROFILE_CHANGED_MSG,
+                                    top.userId, 0));
+                    mLastFocusedUserId = top.userId;
+                }
+            }
             mFocusedActivity = null;
+            EventLog.writeEvent(EventLogTags.AM_FOCUSED_ACTIVITY, -1, "NULL");
         }
     }
 
@@ -10754,9 +10772,7 @@
 
     @Override
     public void killUid(int uid, String reason) {
-        if (Binder.getCallingUid() != Process.SYSTEM_UID) {
-            throw new SecurityException("killUid only available to the system");
-        }
+        enforceCallingPermission(Manifest.permission.KILL_UID, "killUid");
         synchronized (this) {
             killPackageProcessesLocked(null, UserHandle.getAppId(uid), UserHandle.getUserId(uid),
                     ProcessList.FOREGROUND_APP_ADJ-1, false, true, true, false,
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index a07591c9..ac55292 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -488,7 +488,8 @@
         try {
             // Restricted users are not allowed to create VPNs, they are tied to Owner
             UserInfo user = mgr.getUserInfo(mUserHandle);
-            if (user.isRestricted() || mgr.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
+            if (user.isRestricted() || mgr.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN,
+                    new UserHandle(mUserHandle))) {
                 throw new SecurityException("Restricted users cannot establish VPNs");
             }
 
@@ -896,7 +897,8 @@
         }
         UserManager mgr = UserManager.get(mContext);
         UserInfo user = mgr.getUserInfo(mUserHandle);
-        if (user.isRestricted() || mgr.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
+        if (user.isRestricted() || mgr.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN,
+                    new UserHandle(mUserHandle))) {
             throw new SecurityException("Restricted users cannot establish VPNs");
         }
 
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 7cccef2..3dc282b 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -52,6 +52,7 @@
 import android.content.pm.RegisteredServicesCacheListener;
 import android.content.pm.ResolveInfo;
 import android.content.pm.UserInfo;
+import android.database.ContentObserver;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.BatteryStats;
@@ -99,6 +100,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -157,7 +159,19 @@
     /**
      * How long to wait before considering an active sync to have timed-out, and cancelling it.
      */
-    private static final long ACTIVE_SYNC_TIMEOUT_MILLIS = 30L * 60 * 1000;  // 30 mins.
+    private static final long ACTIVE_SYNC_TIMEOUT_MILLIS = 30L * 60 * 1000;  // 30 mins
+
+    /**
+     * How long to delay each queued {@link SyncHandler} message that may have occurred before boot
+     * or befor the device became provisioned.
+     */
+    private static final long PER_SYNC_BOOT_DELAY_MILLIS = 3000L;  // 3 seconds
+
+    /**
+     * The maximum amount of time we're willing to delay syncs out of boot, after device has been
+     * provisioned, etc.
+     */
+    private static final long MAX_SYNC_BOOT_DELAY_MILLIS = 120000L;  // 2 minutes
 
     private static final String SYNC_WAKE_LOCK_PREFIX = "*sync*/";
     private static final String HANDLE_SYNC_ALARM_WAKE_LOCK = "SyncManagerHandleSyncAlarm";
@@ -198,6 +212,9 @@
     // its accessor, getConnManager().
     private ConnectivityManager mConnManagerDoNotUseDirectly;
 
+    /** Track whether the device has already been provisioned. */
+    private boolean mProvisioned;
+
     protected SyncAdaptersCache mSyncAdapters;
 
     private final AppIdleMonitor mAppIdleMonitor;
@@ -242,6 +259,7 @@
     private BroadcastReceiver mBootCompletedReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
+            mBootCompleted = true;
             mSyncHandler.onBootCompleted();
         }
     };
@@ -491,12 +509,41 @@
 
         mSyncStorageEngine.addStatusChangeListener(
                 ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, new ISyncStatusObserver.Stub() {
-            @Override
-            public void onStatusChanged(int which) {
-                // force the sync loop to run if the settings change
-                sendCheckAlarmsMessage();
+                    @Override
+                    public void onStatusChanged(int which) {
+                        // force the sync loop to run if the settings change
+                        sendCheckAlarmsMessage();
+                    }
+                });
+
+        mProvisioned = isDeviceProvisioned();
+        if (!mProvisioned) {
+            final ContentResolver resolver = context.getContentResolver();
+            ContentObserver provisionedObserver =
+                    new ContentObserver(null /* current thread */) {
+                        public void onChange(boolean selfChange) {
+                            mProvisioned |= isDeviceProvisioned();
+                            if (mProvisioned) {
+                                mSyncHandler.onDeviceProvisioned();
+                                resolver.unregisterContentObserver(this);
+                            }
+                        }
+                    };
+
+            synchronized (mSyncHandler) {
+                resolver.registerContentObserver(
+                        Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED),
+                        false /* notifyForDescendents */,
+                        provisionedObserver);
+
+                // The device *may* have been provisioned while we were registering above observer.
+                // Check again to make sure.
+                mProvisioned |= isDeviceProvisioned();
+                if (mProvisioned) {
+                    resolver.unregisterContentObserver(provisionedObserver);
+                }
             }
-        });
+        }
 
         if (!factoryTest) {
             // Register for account list updates for all users
@@ -510,6 +557,10 @@
         mSyncRandomOffsetMillis = mSyncStorageEngine.getSyncRandomOffset() * 1000;
     }
 
+    private boolean isDeviceProvisioned() {
+        final ContentResolver resolver = mContext.getContentResolver();
+        return (Settings.Global.getInt(resolver, Settings.Global.DEVICE_PROVISIONED, 0) != 0);
+    }
     /**
      * Return a random value v that satisfies minValue <= v < maxValue. The difference between
      * maxValue and minValue must be less than Integer.MAX_VALUE.
@@ -2000,20 +2051,36 @@
         public final SyncTimeTracker mSyncTimeTracker = new SyncTimeTracker();
         private final HashMap<String, PowerManager.WakeLock> mWakeLocks = Maps.newHashMap();
 
-        private List<Message> mBootQueue = new ArrayList<Message>();
+        private List<Message> mUnreadyQueue = new ArrayList<Message>();
 
-      public void onBootCompleted() {
+        void onBootCompleted() {
             if (Log.isLoggable(TAG, Log.VERBOSE)) {
                 Log.v(TAG, "Boot completed, clearing boot queue.");
             }
             doDatabaseCleanup();
             synchronized(this) {
                 // Dispatch any stashed messages.
-                for (Message message : mBootQueue) {
-                    sendMessage(message);
+                maybeEmptyUnreadyQueueLocked();
+            }
+        }
+
+        void onDeviceProvisioned() {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "mProvisioned=" + mProvisioned);
+            }
+            synchronized (this) {
+                maybeEmptyUnreadyQueueLocked();
+            }
+        }
+
+        private void maybeEmptyUnreadyQueueLocked() {
+            if (mProvisioned && mBootCompleted) {
+                // Dispatch any stashed messages.
+                for (int i=0; i<mUnreadyQueue.size(); i++) {
+                    sendMessageDelayed(mUnreadyQueue.get(i),
+                            Math.max(PER_SYNC_BOOT_DELAY_MILLIS * i, MAX_SYNC_BOOT_DELAY_MILLIS));
                 }
-                mBootQueue = null;
-                mBootCompleted = true;
+                mUnreadyQueue = null;
             }
         }
 
@@ -2030,20 +2097,23 @@
         }
 
         /**
-         * Stash any messages that come to the handler before boot is complete.
-         * {@link #onBootCompleted()} will disable this and dispatch all the messages collected.
+         * Stash any messages that come to the handler before boot is complete or before the device
+         * is properly provisioned (i.e. out of set-up wizard).
+         * {@link #onBootCompleted()} and {@link #onDeviceProvisioned(boolean)} both need to come
+         * in before we start syncing.
          * @param msg Message to dispatch at a later point.
          * @return true if a message was enqueued, false otherwise. This is to avoid losing the
          * message if we manage to acquire the lock but by the time we do boot has completed.
          */
         private boolean tryEnqueueMessageUntilReadyToRun(Message msg) {
             synchronized (this) {
-                if (!mBootCompleted) {
+                if (!mBootCompleted || !mProvisioned) {
                     // Need to copy the message bc looper will recycle it.
-                    mBootQueue.add(Message.obtain(msg));
+                    mUnreadyQueue.add(Message.obtain(msg));
                     return true;
+                } else {
+                    return false;
                 }
-                return false;
             }
         }
 
@@ -2100,7 +2170,7 @@
                         }
                         cancelActiveSync(expiredContext.mSyncOperation.target,
                                 expiredContext.mSyncOperation.extras);
-                        nextPendingSyncTime = maybeStartNextSyncLocked();
+                        nextPendingSyncTime = maybeStartNextSyncH();
                         break;
 
                     case SyncHandler.MESSAGE_CANCEL: {
@@ -2111,7 +2181,7 @@
                                     + payload + " bundle: " + extras);
                         }
                         cancelActiveSyncLocked(payload, extras);
-                        nextPendingSyncTime = maybeStartNextSyncLocked();
+                        nextPendingSyncTime = maybeStartNextSyncH();
                         break;
                     }
 
@@ -2120,17 +2190,17 @@
                             Log.v(TAG, "handleSyncHandlerMessage: MESSAGE_SYNC_FINISHED");
                         }
                         SyncHandlerMessagePayload payload = (SyncHandlerMessagePayload) msg.obj;
-                        if (!isSyncStillActive(payload.activeSyncContext)) {
+                        if (!isSyncStillActiveH(payload.activeSyncContext)) {
                             Log.d(TAG, "handleSyncHandlerMessage: dropping since the "
                                     + "sync is no longer active: "
                                     + payload.activeSyncContext);
                             break;
                         }
-                        runSyncFinishedOrCanceledLocked(payload.syncResult,
+                        runSyncFinishedOrCanceledH(payload.syncResult,
                                 payload.activeSyncContext);
 
                         // since a sync just finished check if it is time to start a new sync
-                        nextPendingSyncTime = maybeStartNextSyncLocked();
+                        nextPendingSyncTime = maybeStartNextSyncH();
                         break;
 
                     case SyncHandler.MESSAGE_SERVICE_CONNECTED: {
@@ -2140,7 +2210,7 @@
                                     + msgData.activeSyncContext);
                         }
                         // check that this isn't an old message
-                        if (isSyncStillActive(msgData.activeSyncContext)) {
+                        if (isSyncStillActiveH(msgData.activeSyncContext)) {
                             runBoundToAdapter(
                                     msgData.activeSyncContext,
                                     msgData.adapter);
@@ -2156,7 +2226,7 @@
                                     + currentSyncContext);
                         }
                         // check that this isn't an old message
-                        if (isSyncStillActive(currentSyncContext)) {
+                        if (isSyncStillActiveH(currentSyncContext)) {
                             // cancel the sync if we have a syncadapter, which means one is
                             // outstanding
                             try {
@@ -2174,10 +2244,10 @@
                             // which is a soft error
                             SyncResult syncResult = new SyncResult();
                             syncResult.stats.numIoExceptions++;
-                            runSyncFinishedOrCanceledLocked(syncResult, currentSyncContext);
+                            runSyncFinishedOrCanceledH(syncResult, currentSyncContext);
 
                             // since a sync just finished check if it is time to start a new sync
-                            nextPendingSyncTime = maybeStartNextSyncLocked();
+                            nextPendingSyncTime = maybeStartNextSyncH();
                         }
 
                         break;
@@ -2190,7 +2260,7 @@
                         }
                         mAlarmScheduleTime = null;
                         try {
-                            nextPendingSyncTime = maybeStartNextSyncLocked();
+                            nextPendingSyncTime = maybeStartNextSyncH();
                         } finally {
                             mHandleAlarmWakeLock.release();
                         }
@@ -2201,7 +2271,7 @@
                         if (Log.isLoggable(TAG, Log.VERBOSE)) {
                             Log.v(TAG, "handleSyncHandlerMessage: MESSAGE_CHECK_ALARMS");
                         }
-                        nextPendingSyncTime = maybeStartNextSyncLocked();
+                        nextPendingSyncTime = maybeStartNextSyncH();
                         break;
                 }
             } finally {
@@ -2393,7 +2463,7 @@
                     0 : (earliestFuturePollTime - nowAbsolute));
         }
 
-        private long maybeStartNextSyncLocked() {
+        private long maybeStartNextSyncH() {
             final boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE);
             if (isLoggable) Log.v(TAG, "maybeStartNextSync");
 
@@ -2612,7 +2682,7 @@
                 }
 
                 if (toReschedule != null) {
-                    runSyncFinishedOrCanceledLocked(null, toReschedule);
+                    runSyncFinishedOrCanceledH(null, toReschedule);
                     scheduleSyncOperation(toReschedule.mSyncOperation);
                 }
                 synchronized (mSyncQueue) {
@@ -2845,14 +2915,14 @@
                                     false /* no config settings */)) {
                         continue;
                     }
-                    runSyncFinishedOrCanceledLocked(null /* no result since this is a cancel */,
+                    runSyncFinishedOrCanceledH(null /* no result since this is a cancel */,
                             activeSyncContext);
                 }
             }
         }
 
-        private void runSyncFinishedOrCanceledLocked(SyncResult syncResult,
-                ActiveSyncContext activeSyncContext) {
+        private void runSyncFinishedOrCanceledH(SyncResult syncResult,
+                                                ActiveSyncContext activeSyncContext) {
             boolean isLoggable = Log.isLoggable(TAG, Log.VERBOSE);
 
             final SyncOperation syncOperation = activeSyncContext.mSyncOperation;
@@ -3257,7 +3327,7 @@
         }
     }
 
-    private boolean isSyncStillActive(ActiveSyncContext activeSyncContext) {
+    private boolean isSyncStillActiveH(ActiveSyncContext activeSyncContext) {
         for (ActiveSyncContext sync : mActiveSyncContexts) {
             if (sync == activeSyncContext) {
                 return true;
diff --git a/services/core/java/com/android/server/hdmi/Constants.java b/services/core/java/com/android/server/hdmi/Constants.java
index e434f39..8c12060 100644
--- a/services/core/java/com/android/server/hdmi/Constants.java
+++ b/services/core/java/com/android/server/hdmi/Constants.java
@@ -214,6 +214,10 @@
     //     values which denotes the device type in HDMI Spec 1.4.
     static final String PROPERTY_DEVICE_TYPE = "ro.hdmi.device_type";
 
+    // TODO(OEM): Set this to false to keep the playback device in sleep upon hotplug event.
+    //            True by default.
+    static final String PROPERTY_WAKE_ON_HOTPLUG = "ro.hdmi.wake_on_hotplug";
+
     // Set to false to allow playback device to go to suspend mode even
     // when it's an active source. True by default.
     static final String PROPERTY_KEEP_AWAKE = "persist.sys.hdmi.keep_awake";
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
index 89ffe45..fd3364a 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
@@ -34,6 +34,9 @@
 final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice {
     private static final String TAG = "HdmiCecLocalDevicePlayback";
 
+    private static final boolean WAKE_ON_HOTPLUG =
+            SystemProperties.getBoolean(Constants.PROPERTY_WAKE_ON_HOTPLUG, true);
+
     private boolean mIsActiveSource = false;
 
     // Used to keep the device awake while it is the active source. For devices that
@@ -130,7 +133,7 @@
         assertRunOnServiceThread();
         mCecMessageCache.flushAll();
         // We'll not clear mIsActiveSource on the hotplug event to pass CETC 11.2.2-2 ~ 3.
-        if (connected && mService.isPowerStandbyOrTransient()) {
+        if (WAKE_ON_HOTPLUG && connected && mService.isPowerStandbyOrTransient()) {
             mService.wakeUp();
         }
         if (!connected) {
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 5ac027d..e650456 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -486,6 +486,7 @@
             HdmiLogger.debug("Input not ready for device: %X; buffering the command", info.getId());
             mDelayedMessageBuffer.add(message);
         } else {
+            updateDevicePowerStatus(logicalAddress, HdmiControlManager.POWER_STATUS_ON);
             ActiveSource activeSource = ActiveSource.of(logicalAddress, physicalAddress);
             ActiveSourceHandler.create(this, null).process(activeSource, info.getDeviceType());
         }
@@ -1613,6 +1614,8 @@
 
         super.disableDevice(initiatedByCec, callback);
         clearDeviceInfoList();
+        getActiveSource().invalidate();
+        setActivePath(Constants.INVALID_PHYSICAL_ADDRESS);
         checkIfPendingActionsCleared();
     }
 
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index 09d0501..dca762c 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -27,9 +27,6 @@
 import android.media.MediaMetadata;
 import android.media.Rating;
 import android.media.VolumeProvider;
-import android.media.routing.IMediaRouter;
-import android.media.routing.IMediaRouterDelegate;
-import android.media.routing.IMediaRouterStateCallback;
 import android.media.session.ISession;
 import android.media.session.ISessionCallback;
 import android.media.session.ISessionController;
@@ -718,11 +715,6 @@
         }
 
         @Override
-        public void setMediaRouter(IMediaRouter router) {
-            mHandler.post(MessageHandler.MSG_UPDATE_SESSION_STATE);
-        }
-
-        @Override
         public void setMediaButtonReceiver(PendingIntent pi) {
             mMediaButtonReceiver = pi;
         }
@@ -1209,13 +1201,6 @@
         public boolean isTransportControlEnabled() {
             return MediaSessionRecord.this.isTransportControlEnabled();
         }
-
-        @Override
-        public IMediaRouterDelegate createMediaRouterDelegate(
-                IMediaRouterStateCallback callback) {
-            // todo
-            return null;
-        }
     }
 
     private class MessageHandler extends Handler {
diff --git a/services/core/java/com/android/server/notification/CalendarTracker.java b/services/core/java/com/android/server/notification/CalendarTracker.java
index 8734d97..28da73c 100644
--- a/services/core/java/com/android/server/notification/CalendarTracker.java
+++ b/services/core/java/com/android/server/notification/CalendarTracker.java
@@ -47,6 +47,7 @@
         Instances.EVENT_ID,
         Instances.OWNER_ACCOUNT,
         Instances.CALENDAR_ID,
+        Instances.AVAILABILITY,
     };
 
     private static final String INSTANCE_ORDER_BY = Instances.BEGIN + " ASC";
@@ -55,7 +56,6 @@
         Attendees.EVENT_ID,
         Attendees.ATTENDEE_EMAIL,
         Attendees.ATTENDEE_STATUS,
-        Attendees.ATTENDEE_TYPE,
     };
 
     private static final String ATTENDEE_SELECTION = Attendees.EVENT_ID + " = ? AND "
@@ -144,11 +144,14 @@
                 final int eventId = cursor.getInt(4);
                 final String owner = cursor.getString(5);
                 final long calendarId = cursor.getLong(6);
-                if (DEBUG) Log.d(TAG, String.format("%s %s-%s v=%s eid=%s o=%s cid=%s", title,
-                        new Date(begin), new Date(end), visible, eventId, owner, calendarId));
+                final int availability = cursor.getInt(7);
+                if (DEBUG) Log.d(TAG, String.format("%s %s-%s v=%s a=%s eid=%s o=%s cid=%s", title,
+                        new Date(begin), new Date(end), visible, availabilityToString(availability),
+                        eventId, owner, calendarId));
                 final boolean meetsTime = time >= begin && time < end;
                 final boolean meetsCalendar = visible
-                        && (filter.calendar == 0 || filter.calendar == calendarId);
+                        && (filter.calendar == 0 || filter.calendar == calendarId)
+                        && availability != Instances.AVAILABILITY_FREE;
                 if (meetsCalendar) {
                     if (DEBUG) Log.d(TAG, "  MEETS CALENDAR");
                     final boolean meetsAttendee = meetsAttendee(filter, eventId, owner);
@@ -191,16 +194,13 @@
                 final long rowEventId = cursor.getLong(0);
                 final String rowEmail = cursor.getString(1);
                 final int status = cursor.getInt(2);
-                final int type = cursor.getInt(3);
                 final boolean meetsReply = meetsReply(filter.reply, status);
-                final boolean meetsAttendance = meetsAttendance(filter.attendance, type);
                 if (DEBUG) Log.d(TAG, (DEBUG_ATTENDEES ? String.format(
                         "rowEventId=%s, rowEmail=%s, ", rowEventId, rowEmail) : "") +
-                        String.format("status=%s, type=%s, meetsReply=%s, meetsAttendance=%s",
-                        attendeeStatusToString(status), attendeeTypeToString(type), meetsReply,
-                        meetsAttendance));
+                        String.format("status=%s, meetsReply=%s",
+                        attendeeStatusToString(status), meetsReply));
                 final boolean eventMeets = rowEventId == eventId && Objects.equals(rowEmail, email)
-                        && meetsReply && meetsAttendance;
+                        && meetsReply;
                 rt |= eventMeets;
             }
             return rt;
@@ -232,24 +232,12 @@
         }
     }
 
-    private static String attendeeTypeToString(int type) {
-        switch (type) {
-            case Attendees.TYPE_NONE: return "TYPE_NONE";
-            case Attendees.TYPE_REQUIRED: return "TYPE_REQUIRED";
-            case Attendees.TYPE_OPTIONAL: return "TYPE_OPTIONAL";
-            case Attendees.TYPE_RESOURCE: return "TYPE_RESOURCE";
-            default: return "TYPE_" + type;
-        }
-    }
-
-    private static boolean meetsAttendance(int attendance, int attendeeType) {
-        switch (attendance) {
-            case EventInfo.ATTENDANCE_OPTIONAL:
-                return attendeeType == Attendees.TYPE_OPTIONAL;
-            case EventInfo.ATTENDANCE_REQUIRED:
-                return attendeeType == Attendees.TYPE_REQUIRED;
-            default: // EventInfo.ATTENDANCE_REQUIRED_OR_OPTIONAL
-                return true;
+    private static String availabilityToString(int availability) {
+        switch (availability) {
+            case Instances.AVAILABILITY_BUSY: return "AVAILABILITY_BUSY";
+            case Instances.AVAILABILITY_FREE: return "AVAILABILITY_FREE";
+            case Instances.AVAILABILITY_TENTATIVE: return "AVAILABILITY_TENTATIVE";
+            default: return "AVAILABILITY_UNKNOWN_" + availability;
         }
     }
 
@@ -257,10 +245,13 @@
         switch (reply) {
             case EventInfo.REPLY_YES:
                 return attendeeStatus == Attendees.ATTENDEE_STATUS_ACCEPTED;
+            case EventInfo.REPLY_YES_OR_MAYBE:
+                return attendeeStatus == Attendees.ATTENDEE_STATUS_ACCEPTED
+                        || attendeeStatus == Attendees.ATTENDEE_STATUS_TENTATIVE;
             case EventInfo.REPLY_ANY_EXCEPT_NO:
                 return attendeeStatus != Attendees.ATTENDEE_STATUS_DECLINED;
-            default: // EventInfo.REPLY_ANY
-                return true;
+            default:
+                return false;
         }
     }
 
diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java
index 2aaeb9d..80dc523 100644
--- a/services/core/java/com/android/server/notification/ZenModeFiltering.java
+++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java
@@ -86,7 +86,7 @@
             if (validator != null) {
                 final float contactAffinity = validator.getContactAffinity(userHandle, extras,
                         contactsTimeoutMs, timeoutAffinity);
-                return audienceMatches(config, contactAffinity);
+                return audienceMatches(config.allowCallsFrom, contactAffinity);
             }
         }
         return true;
@@ -133,14 +133,14 @@
                         ZenLog.traceIntercepted(record, "!allowCalls");
                         return true;
                     }
-                    return shouldInterceptAudience(config, record);
+                    return shouldInterceptAudience(config.allowCallsFrom, record);
                 }
                 if (isMessage(record)) {
                     if (!config.allowMessages) {
                         ZenLog.traceIntercepted(record, "!allowMessages");
                         return true;
                     }
-                    return shouldInterceptAudience(config, record);
+                    return shouldInterceptAudience(config.allowMessagesFrom, record);
                 }
                 if (isEvent(record)) {
                     if (!config.allowEvents) {
@@ -163,9 +163,8 @@
         }
     }
 
-    private static boolean shouldInterceptAudience(ZenModeConfig config,
-            NotificationRecord record) {
-        if (!audienceMatches(config, record.getContactAffinity())) {
+    private static boolean shouldInterceptAudience(int source, NotificationRecord record) {
+        if (!audienceMatches(source, record.getContactAffinity())) {
             ZenLog.traceIntercepted(record, "!audienceMatches");
             return true;
         }
@@ -219,8 +218,8 @@
         return record.isCategory(Notification.CATEGORY_MESSAGE) || isDefaultMessagingApp(record);
     }
 
-    private static boolean audienceMatches(ZenModeConfig config, float contactAffinity) {
-        switch (config.allowFrom) {
+    private static boolean audienceMatches(int source, float contactAffinity) {
+        switch (source) {
             case ZenModeConfig.SOURCE_ANYONE:
                 return true;
             case ZenModeConfig.SOURCE_CONTACT:
@@ -228,7 +227,7 @@
             case ZenModeConfig.SOURCE_STAR:
                 return contactAffinity >= ValidateNotificationPeople.STARRED_CONTACT;
             default:
-                Slog.w(TAG, "Encountered unknown source: " + config.allowFrom);
+                Slog.w(TAG, "Encountered unknown source: " + source);
                 return true;
         }
     }
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 83f0bcfc..e97def8 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -209,9 +209,11 @@
             pw.println(config);
             return;
         }
-        pw.printf("allow(calls=%s,repeatCallers=%s,events=%s,from=%s,messages=%s,reminders=%s)\n",
-                config.allowCalls, config.allowRepeatCallers, config.allowEvents, config.allowFrom,
-                config.allowMessages, config.allowReminders);
+        pw.printf("allow(calls=%s,callsFrom=%s,repeatCallers=%s,messages=%s,messagesFrom=%s,"
+                + "events=%s,reminders=%s)\n",
+                config.allowCalls, config.allowCallsFrom, config.allowRepeatCallers,
+                config.allowMessages, config.allowMessagesFrom,
+                config.allowEvents, config.allowReminders);
         pw.print(prefix); pw.print("  manualRule="); pw.println(config.manualRule);
         if (config.automaticRules.isEmpty()) return;
         final int N = config.automaticRules.size();
@@ -483,8 +485,9 @@
             final ZenModeConfig rt = new ZenModeConfig();
             rt.allowCalls = v1.allowCalls;
             rt.allowEvents = v1.allowEvents;
-            rt.allowFrom = v1.allowFrom;
+            rt.allowCallsFrom = v1.allowFrom;
             rt.allowMessages = v1.allowMessages;
+            rt.allowMessagesFrom = v1.allowFrom;
             rt.allowReminders = v1.allowReminders;
             // don't migrate current exit condition
             final int[] days = ZenModeConfig.XmlV1.tryParseDays(v1.sleepMode);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 423c732..a120c1f 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -277,8 +277,6 @@
     private static final boolean DEBUG_DEXOPT = false;
     private static final boolean DEBUG_ABI_SELECTION = false;
 
-    static final boolean RUNTIME_PERMISSIONS_ENABLED = true;
-
     private static final int RADIO_UID = Process.PHONE_UID;
     private static final int LOG_UID = Process.LOG_UID;
     private static final int NFC_UID = Process.NFC_UID;
@@ -2131,13 +2129,6 @@
                     + "; regranting permissions for internal storage");
             mSettings.mInternalSdkPlatform = mSdkVersion;
 
-            // For now runtime permissions are toggled via a system property.
-            if (!RUNTIME_PERMISSIONS_ENABLED) {
-                // Remove the runtime permissions state if the feature
-                // was disabled by flipping the system property.
-                mSettings.deleteRuntimePermissionsFiles();
-            }
-
             updatePermissionsLPw(null, null, UPDATE_PERMISSIONS_ALL
                     | (regrantPermissions
                             ? (UPDATE_PERMISSIONS_REPLACE_PKG|UPDATE_PERMISSIONS_REPLACE_ALL)
@@ -3149,13 +3140,9 @@
     }
 
     @Override
-    public boolean grantPermission(String packageName, String name, int userId) {
-        if (!RUNTIME_PERMISSIONS_ENABLED) {
-            return false;
-        }
-
+    public void grantPermission(String packageName, String name, int userId) {
         if (!sUserManager.exists(userId)) {
-            return false;
+            return;
         }
 
         mContext.enforceCallingOrSelfPermission(
@@ -3191,12 +3178,13 @@
             final int result = permissionsState.grantRuntimePermission(bp, userId);
             switch (result) {
                 case PermissionsState.PERMISSION_OPERATION_FAILURE: {
-                    return false;
+                    return;
                 }
 
                 case PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED: {
                     gidsChanged = true;
-                } break;
+                }
+                break;
             }
 
             // Not critical if that is lost - app has to request again.
@@ -3206,18 +3194,12 @@
         if (gidsChanged) {
             killSettingPackagesForUser(sb, userId, KILL_APP_REASON_GIDS_CHANGED);
         }
-
-        return true;
     }
 
     @Override
-    public boolean revokePermission(String packageName, String name, int userId) {
-        if (!RUNTIME_PERMISSIONS_ENABLED) {
-            return false;
-        }
-
+    public void revokePermission(String packageName, String name, int userId) {
         if (!sUserManager.exists(userId)) {
-            return false;
+            return;
         }
 
         mContext.enforceCallingOrSelfPermission(
@@ -3251,7 +3233,7 @@
 
             if (permissionsState.revokeRuntimePermission(bp, userId) ==
                     PermissionsState.PERMISSION_OPERATION_FAILURE) {
-                return false;
+                return;
             }
 
             // Critical, after this call all should never have the permission.
@@ -3259,8 +3241,6 @@
         }
 
         killSettingPackagesForUser(sb, userId, KILL_APP_REASON_PERMISSIONS_REVOKED);
-
-        return true;
     }
 
     @Override
@@ -7604,9 +7584,7 @@
                 } break;
 
                 case PermissionInfo.PROTECTION_DANGEROUS: {
-                    if (!RUNTIME_PERMISSIONS_ENABLED
-                            || pkg.applicationInfo.targetSdkVersion
-                                    <= Build.VERSION_CODES.LOLLIPOP_MR1) {
+                    if (pkg.applicationInfo.targetSdkVersion <= Build.VERSION_CODES.LOLLIPOP_MR1) {
                         // For legacy apps dangerous permissions are install time ones.
                         grant = GRANT_INSTALL;
                     } else if (ps.isSystem()) {
@@ -7745,10 +7723,8 @@
         ps.setPermissionsUpdatedForUserIds(currentUserIds);
 
         // Persist the runtime permissions state for users with changes.
-        if (RUNTIME_PERMISSIONS_ENABLED) {
-            for (int userId : changedRuntimePermissionUserIds) {
-                mSettings.writeRuntimePermissionsForUserLPr(userId, true);
-            }
+        for (int userId : changedRuntimePermissionUserIds) {
+            mSettings.writeRuntimePermissionsForUserLPr(userId, true);
         }
     }
 
@@ -11877,6 +11853,7 @@
         synchronized (mPackages) {
             if (deletedPs != null) {
                 if ((flags&PackageManager.DELETE_KEEP_DATA) == 0) {
+                    clearIntentFilterVerificationsLPw(deletedPs.name, UserHandle.USER_ALL);
                     if (outInfo != null) {
                         mSettings.mKeySetManagerService.removeAppKeySetDataLPw(packageName);
                         outInfo.removedAppId = mSettings.removePackageLPw(packageName);
@@ -11907,7 +11884,6 @@
                         }
                     }
                     clearPackagePreferredActivitiesLPw(deletedPs.name, UserHandle.USER_ALL);
-                    clearIntentFilterVerificationsLPw(deletedPs.name, UserHandle.USER_ALL);
                 }
                 // make sure to preserve per-user disabled state if this removal was just
                 // a downgrade of a system app to the factory package
@@ -12768,13 +12744,16 @@
     /** This method takes a specific user id as well as UserHandle.USER_ALL. */
     void clearIntentFilterVerificationsLPw(String packageName, int userId) {
         if (userId == UserHandle.USER_ALL) {
-            mSettings.removeIntentFilterVerificationLPw(packageName, sUserManager.getUserIds());
-            for (int oneUserId : sUserManager.getUserIds()) {
-                scheduleWritePackageRestrictionsLocked(oneUserId);
+            if (mSettings.removeIntentFilterVerificationLPw(packageName,
+                    sUserManager.getUserIds())) {
+                for (int oneUserId : sUserManager.getUserIds()) {
+                    scheduleWritePackageRestrictionsLocked(oneUserId);
+                }
             }
         } else {
-            mSettings.removeIntentFilterVerificationLPw(packageName, userId);
-            scheduleWritePackageRestrictionsLocked(userId);
+            if (mSettings.removeIntentFilterVerificationLPw(packageName, userId)) {
+                scheduleWritePackageRestrictionsLocked(userId);
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index d3bfdeb..fd70ce1 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -1067,19 +1067,22 @@
         return result;
     }
 
-    void removeIntentFilterVerificationLPw(String packageName, int userId) {
+    boolean removeIntentFilterVerificationLPw(String packageName, int userId) {
         PackageSetting ps = mPackages.get(packageName);
         if (ps == null) {
             Slog.w(PackageManagerService.TAG, "No package known for name: " + packageName);
-            return;
+            return false;
         }
         ps.clearDomainVerificationStatusForUser(userId);
+        return true;
     }
 
-    void removeIntentFilterVerificationLPw(String packageName, int[] userIds) {
+    boolean removeIntentFilterVerificationLPw(String packageName, int[] userIds) {
+        boolean result = false;
         for (int userId : userIds) {
-            removeIntentFilterVerificationLPw(packageName, userId);
+            result |= removeIntentFilterVerificationLPw(packageName, userId);
         }
+        return result;
     }
 
     boolean setDefaultBrowserPackageNameLPr(String packageName, int userId) {
@@ -4165,19 +4168,11 @@
         }
 
         public void writePermissionsForUserSyncLPr(int userId) {
-            if (!PackageManagerService.RUNTIME_PERMISSIONS_ENABLED) {
-                return;
-            }
-
             mHandler.removeMessages(userId);
             writePermissionsSync(userId);
         }
 
         public void writePermissionsForUserAsyncLPr(int userId) {
-            if (!PackageManagerService.RUNTIME_PERMISSIONS_ENABLED) {
-                return;
-            }
-
             final long currentTimeMillis = SystemClock.uptimeMillis();
 
             if (mWriteScheduled.get(userId)) {
diff --git a/services/core/java/com/android/server/policy/GlobalActions.java b/services/core/java/com/android/server/policy/GlobalActions.java
index b431b33..3cee927 100644
--- a/services/core/java/com/android/server/policy/GlobalActions.java
+++ b/services/core/java/com/android/server/policy/GlobalActions.java
@@ -1138,7 +1138,7 @@
 
         public GlobalActionsDialog(Context context, AlertParams params) {
             super(context, getDialogTheme(context));
-            mContext = context;
+            mContext = getContext();
             mAlert = new AlertController(mContext, this, getWindow());
             mAdapter = (MyAdapter) params.mAdapter;
             mWindowTouchSlop = ViewConfiguration.get(context).getScaledWindowTouchSlop();
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 51503ec..dbd3676 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -93,7 +93,7 @@
 import android.view.KeyCharacterMap.FallbackAction;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
-import android.view.PhoneWindow;
+import com.android.internal.policy.PhoneWindow;
 import android.view.Surface;
 import android.view.View;
 import android.view.ViewConfiguration;
diff --git a/services/core/java/com/android/server/power/Notifier.java b/services/core/java/com/android/server/power/Notifier.java
index c48367e..fd98010 100644
--- a/services/core/java/com/android/server/power/Notifier.java
+++ b/services/core/java/com/android/server/power/Notifier.java
@@ -539,9 +539,11 @@
     };
 
     private void playWirelessChargingStartedSound() {
+        final boolean enabled = Settings.Global.getInt(mContext.getContentResolver(),
+                Settings.Global.CHARGING_SOUNDS_ENABLED, 1) != 0;
         final String soundPath = Settings.Global.getString(mContext.getContentResolver(),
                 Settings.Global.WIRELESS_CHARGING_STARTED_SOUND);
-        if (soundPath != null) {
+        if (enabled && soundPath != null) {
             final Uri soundUri = Uri.parse("file://" + soundPath);
             if (soundUri != null) {
                 final Ringtone sfx = RingtoneManager.getRingtone(mContext, soundUri);
diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java
index 7d2fb43..726db4e 100644
--- a/services/core/java/com/android/server/trust/TrustManagerService.java
+++ b/services/core/java/com/android/server/trust/TrustManagerService.java
@@ -227,7 +227,7 @@
             if (!userInfo.supportsSwitchTo()) continue;
             if (!mActivityManager.isUserRunning(userInfo.id)) continue;
             if (!lockPatternUtils.isSecure(userInfo.id)) continue;
-            if (!mUserHasAuthenticatedSinceBoot.get(userInfo.id)) continue;
+            if (!getUserHasAuthenticated(userInfo.id)) continue;
             DevicePolicyManager dpm = lockPatternUtils.getDevicePolicyManager();
             int disabledFeatures = dpm.getKeyguardDisabledFeatures(null, userInfo.id);
             final boolean disableTrustAgents =
@@ -506,7 +506,7 @@
     // Agent dispatch and aggregation
 
     private boolean aggregateIsTrusted(int userId) {
-        if (!mUserHasAuthenticatedSinceBoot.get(userId)) {
+        if (!getUserHasAuthenticated(userId)) {
             return false;
         }
         for (int i = 0; i < mActiveAgents.size(); i++) {
@@ -521,7 +521,7 @@
     }
 
     private boolean aggregateIsTrustManaged(int userId) {
-        if (!mUserHasAuthenticatedSinceBoot.get(userId)) {
+        if (!getUserHasAuthenticated(userId)) {
             return false;
         }
         for (int i = 0; i < mActiveAgents.size(); i++) {
@@ -549,21 +549,44 @@
     }
 
     private void updateUserHasAuthenticated(int userId) {
-        if (!mUserHasAuthenticatedSinceBoot.get(userId)) {
-            mUserHasAuthenticatedSinceBoot.put(userId, true);
+        boolean changed = setUserHasAuthenticated(userId);
+        if (changed) {
             refreshAgentList(userId);
         }
     }
 
+    private boolean getUserHasAuthenticated(int userId) {
+        synchronized (mUserHasAuthenticatedSinceBoot) {
+            return mUserHasAuthenticatedSinceBoot.get(userId);
+        }
+    }
+
+    /**
+     * @return whether the value has changed
+     */
+    private boolean setUserHasAuthenticated(int userId) {
+        synchronized (mUserHasAuthenticatedSinceBoot) {
+            if (!mUserHasAuthenticatedSinceBoot.get(userId)) {
+                mUserHasAuthenticatedSinceBoot.put(userId, true);
+                return true;
+            }
+            return false;
+        }
+    }
+
+    private void clearUserHasAuthenticated(int userId) {
+        synchronized (mUserHasAuthenticatedSinceBoot) {
+            if (userId == UserHandle.USER_ALL) {
+                mUserHasAuthenticatedSinceBoot.clear();
+            } else {
+                mUserHasAuthenticatedSinceBoot.put(userId, false);
+            }
+        }
+    }
 
     private void requireCredentialEntry(int userId) {
-        if (userId == UserHandle.USER_ALL) {
-            mUserHasAuthenticatedSinceBoot.clear();
-            refreshAgentList(UserHandle.USER_ALL);
-        } else {
-            mUserHasAuthenticatedSinceBoot.put(userId, false);
-            refreshAgentList(userId);
-        }
+        clearUserHasAuthenticated(userId);
+        refreshAgentList(userId);
     }
 
     // Listeners
@@ -705,6 +728,18 @@
             }
         }
 
+        @Override
+        public boolean hasUserAuthenticatedSinceBoot(int userId) throws RemoteException {
+            mContext.enforceCallingOrSelfPermission(
+                    Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE, null);
+            long token = Binder.clearCallingIdentity();
+            try {
+                return getUserHasAuthenticated(userId);
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
         private void enforceReportPermission() {
             mContext.enforceCallingOrSelfPermission(
                     Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE, "reporting trust events");
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index c886c4c..6f01ca0 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -161,7 +161,7 @@
 
     private static final String TAG_STATUS_BAR = "statusbar";
 
-    private static final String ATTR_ENABLED = "enabled";
+    private static final String ATTR_DISABLED = "disabled";
 
     private static final String DO_NOT_ASK_CREDENTIALS_ON_BOOT_XML =
             "do-not-ask-credentials-on-boot";
@@ -313,7 +313,7 @@
         // This is the list of component allowed to start lock task mode.
         List<String> mLockTaskPackages = new ArrayList<>();
 
-        boolean mStatusBarEnabledState = true;
+        boolean mStatusBarDisabled = false;
 
         ComponentName mRestrictionsProvider;
 
@@ -1476,9 +1476,9 @@
                 out.endTag(null, TAG_LOCK_TASK_COMPONENTS);
             }
 
-            if (!policy.mStatusBarEnabledState) {
+            if (policy.mStatusBarDisabled) {
                 out.startTag(null, TAG_STATUS_BAR);
-                out.attribute(null, ATTR_ENABLED, Boolean.toString(policy.mStatusBarEnabledState));
+                out.attribute(null, ATTR_DISABLED, Boolean.toString(policy.mStatusBarDisabled));
                 out.endTag(null, TAG_STATUS_BAR);
             }
 
@@ -1615,8 +1615,8 @@
                 } else if (TAG_LOCK_TASK_COMPONENTS.equals(tag)) {
                     policy.mLockTaskPackages.add(parser.getAttributeValue(null, "name"));
                 } else if (TAG_STATUS_BAR.equals(tag)) {
-                    policy.mStatusBarEnabledState = Boolean.parseBoolean(
-                            parser.getAttributeValue(null, ATTR_ENABLED));
+                    policy.mStatusBarDisabled = Boolean.parseBoolean(
+                            parser.getAttributeValue(null, ATTR_DISABLED));
                 } else if (DO_NOT_ASK_CREDENTIALS_ON_BOOT_XML.equals(tag)) {
                     policy.doNotAskCredentialsOnBoot = true;
                 } else {
@@ -1678,8 +1678,8 @@
         updateMaximumTimeToLockLocked(policy);
         addDeviceInitializerToLockTaskPackagesLocked(userHandle);
         updateLockTaskPackagesLocked(policy.mLockTaskPackages, userHandle);
-        if (!policy.mStatusBarEnabledState) {
-            setStatusBarEnabledStateInternal(policy.mStatusBarEnabledState, userHandle);
+        if (policy.mStatusBarDisabled) {
+            setStatusBarDisabledInternal(policy.mStatusBarDisabled, userHandle);
         }
         updatePreferredSetupActivityLocked(userHandle);
     }
@@ -4275,7 +4275,7 @@
             DevicePolicyData policy = getUserData(userId);
             policy.mPermissionPolicy = DevicePolicyManager.PERMISSION_POLICY_PROMPT;
             policy.mDelegatedCertInstallerPackage = null;
-            policy.mStatusBarEnabledState = true;
+            policy.mStatusBarDisabled = false;
             saveSettingsLocked(userId);
 
             long ident = Binder.clearCallingIdentity();
@@ -6026,7 +6026,7 @@
     }
 
     @Override
-    public boolean setKeyguardEnabledState(ComponentName who, boolean enabled) {
+    public boolean setKeyguardDisabled(ComponentName who, boolean disabled) {
         Preconditions.checkNotNull(who, "ComponentName is null");
         synchronized (this) {
             getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
@@ -6037,10 +6037,10 @@
         long ident = Binder.clearCallingIdentity();
         try {
             // disallow disabling the keyguard if a password is currently set
-            if (!enabled && utils.isSecure(userId)) {
+            if (disabled && utils.isSecure(userId)) {
                 return false;
             }
-            utils.setLockScreenDisabled(!enabled, userId);
+            utils.setLockScreenDisabled(disabled, userId);
         } finally {
             Binder.restoreCallingIdentity(ident);
         }
@@ -6048,35 +6048,40 @@
     }
 
     @Override
-    public void setStatusBarEnabledState(ComponentName who, boolean enabled) {
+    public boolean setStatusBarDisabled(ComponentName who, boolean disabled) {
         int userId = UserHandle.getCallingUserId();
         synchronized (this) {
             getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
             DevicePolicyData policy = getUserData(userId);
-            if (policy.mStatusBarEnabledState != enabled) {
-                policy.mStatusBarEnabledState = enabled;
-                setStatusBarEnabledStateInternal(enabled, userId);
+            if (policy.mStatusBarDisabled != disabled) {
+                if (!setStatusBarDisabledInternal(disabled, userId)) {
+                    return false;
+                }
+                policy.mStatusBarDisabled = disabled;
                 saveSettingsLocked(userId);
             }
         }
+        return true;
     }
 
-    private void setStatusBarEnabledStateInternal(boolean enabled, int userId) {
+    private boolean setStatusBarDisabledInternal(boolean disabled, int userId) {
         long ident = Binder.clearCallingIdentity();
         try {
             IStatusBarService statusBarService = IStatusBarService.Stub.asInterface(
                     ServiceManager.checkService(Context.STATUS_BAR_SERVICE));
             if (statusBarService != null) {
-                int flags1 = enabled ? StatusBarManager.DISABLE_NONE : STATUS_BAR_DISABLE_MASK;
-                int flags2 = enabled ? StatusBarManager.DISABLE2_NONE : STATUS_BAR_DISABLE2_MASK;
+                int flags1 = disabled ? STATUS_BAR_DISABLE_MASK : StatusBarManager.DISABLE_NONE;
+                int flags2 = disabled ? STATUS_BAR_DISABLE2_MASK : StatusBarManager.DISABLE2_NONE;
                 statusBarService.disableForUser(flags1, mToken, mContext.getPackageName(), userId);
                 statusBarService.disable2ForUser(flags2, mToken, mContext.getPackageName(), userId);
+                return true;
             }
         } catch (RemoteException e) {
             Slog.e(LOG_TAG, "Failed to disable the status bar", e);
         } finally {
             Binder.restoreCallingIdentity(ident);
         }
+        return false;
     }
 
     /**
@@ -6313,7 +6318,7 @@
     public void setPermissionPolicy(ComponentName admin, int policy) throws RemoteException {
         int userId = UserHandle.getCallingUserId();
         synchronized (this) {
-            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
+            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
             DevicePolicyData userPolicy = getUserData(userId);
             if (userPolicy.mPermissionPolicy != policy) {
                 userPolicy.mPermissionPolicy = policy;
@@ -6336,7 +6341,7 @@
             String permission, boolean granted) throws RemoteException {
         UserHandle user = Binder.getCallingUserHandle();
         synchronized (this) {
-            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
+            getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
             long ident = Binder.clearCallingIdentity();
             try {
                 if (granted) {
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 2d265e2..925a609 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -28,6 +28,7 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
+import android.content.res.Resources.Theme;
 import android.os.Build;
 import android.os.Environment;
 import android.os.FactoryTest;
@@ -291,7 +292,7 @@
     private void createSystemContext() {
         ActivityThread activityThread = ActivityThread.systemMain();
         mSystemContext = activityThread.getSystemContext();
-        mSystemContext.setTheme(android.R.style.Theme_DeviceDefault_Light_DarkActionBar);
+        mSystemContext.setTheme(android.R.style.Theme_Material_DayNight_DarkActionBar);
     }
 
     /**
@@ -1026,6 +1027,12 @@
         w.getDefaultDisplay().getMetrics(metrics);
         context.getResources().updateConfiguration(config, metrics);
 
+        // The system context's theme may be configuration-dependent.
+        final Theme systemTheme = context.getTheme();
+        if (systemTheme.getChangingConfigurations() != 0) {
+            systemTheme.rebase();
+        }
+
         try {
             // TODO: use boot phase
             mPowerManagerService.systemReady(mActivityManagerService.getAppOpsService());
diff --git a/services/midi/java/com/android/server/midi/MidiService.java b/services/midi/java/com/android/server/midi/MidiService.java
index c1c5c56..176f54b1 100644
--- a/services/midi/java/com/android/server/midi/MidiService.java
+++ b/services/midi/java/com/android/server/midi/MidiService.java
@@ -294,8 +294,10 @@
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder("Device: ");
+            StringBuilder sb = new StringBuilder("Device Info: ");
             sb.append(mDeviceInfo);
+            sb.append(" Status: ");
+            sb.append(mDeviceStatus);
             sb.append(" UID: ");
             sb.append(mUid);
             return sb.toString();
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index 56b2fa5..2897c61 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -28,7 +28,6 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
-import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.database.ContentObserver;
 import android.hardware.soundtrigger.IRecognitionStatusCallback;
@@ -726,6 +725,24 @@
         }
 
         @Override
+        public void launchVoiceAssistFromKeyguard() {
+            enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
+            synchronized (this) {
+                if (mImpl == null) {
+                    Slog.w(TAG, "launchVoiceAssistFromKeyguard without running voice interaction"
+                            + "service");
+                    return;
+                }
+                final long caller = Binder.clearCallingIdentity();
+                try {
+                    mImpl.launchVoiceAssistFromKeyguard();
+                } finally {
+                    Binder.restoreCallingIdentity(caller);
+                }
+            }
+        }
+
+        @Override
         public boolean isSessionRunning() {
             enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
             synchronized (this) {
@@ -742,6 +759,14 @@
         }
 
         @Override
+        public boolean activeServiceSupportsLaunchFromKeyguard() throws RemoteException {
+            enforceCallingPermission(Manifest.permission.ACCESS_VOICE_INTERACTION_SERVICE);
+            synchronized (this) {
+                return mImpl != null && mImpl.mInfo.getSupportsLaunchFromKeyguard();
+            }
+        }
+
+        @Override
         public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
             if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
                     != PackageManager.PERMISSION_GRANTED) {
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index f439915..0a5b668 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -235,6 +235,18 @@
         }
     }
 
+    public void launchVoiceAssistFromKeyguard() {
+        if (mService == null) {
+            Slog.w(TAG, "Not bound to voice interaction service " + mComponent);
+            return;
+        }
+        try {
+            mService.launchVoiceAssistFromKeyguard();
+        } catch (RemoteException e) {
+            Slog.w(TAG, "RemoteException while calling launchVoiceAssistFromKeyguard", e);
+        }
+    }
+
     void shutdownLocked() {
         try {
             if (mService != null) {
@@ -256,6 +268,7 @@
     void notifySoundModelsChangedLocked() {
         if (mService == null) {
             Slog.w(TAG, "Not bound to voice interaction service " + mComponent);
+            return;
         }
         try {
             mService.soundModelsChanged();
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index fee6495..adab00b 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -1000,9 +1000,9 @@
         }
 
         boolean videoCallChanged = parcelableCall.isVideoCallProviderChanged() &&
-                !Objects.equals(mVideoCall, parcelableCall.getVideoCall());
+                !Objects.equals(mVideoCall, parcelableCall.getVideoCall(this));
         if (videoCallChanged) {
-            mVideoCall = parcelableCall.getVideoCall();
+            mVideoCall = parcelableCall.getVideoCall(this);
         }
 
         int state = parcelableCall.getState();
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 3060f40..4bc639b 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -16,6 +16,7 @@
 
 package android.telecom;
 
+import com.android.internal.os.SomeArgs;
 import com.android.internal.telecom.IVideoCallback;
 import com.android.internal.telecom.IVideoProvider;
 
@@ -471,9 +472,16 @@
                     case MSG_SET_ZOOM:
                         onSetZoom((Float) msg.obj);
                         break;
-                    case MSG_SEND_SESSION_MODIFY_REQUEST:
-                        onSendSessionModifyRequest((VideoProfile) msg.obj);
+                    case MSG_SEND_SESSION_MODIFY_REQUEST: {
+                        SomeArgs args = (SomeArgs) msg.obj;
+                        try {
+                            onSendSessionModifyRequest((VideoProfile) args.arg1,
+                                    (VideoProfile) args.arg2);
+                        } finally {
+                            args.recycle();
+                        }
                         break;
+                    }
                     case MSG_SEND_SESSION_MODIFY_RESPONSE:
                         onSendSessionModifyResponse((VideoProfile) msg.obj);
                         break;
@@ -527,9 +535,11 @@
                 mMessageHandler.obtainMessage(MSG_SET_ZOOM, value).sendToTarget();
             }
 
-            public void sendSessionModifyRequest(VideoProfile requestProfile) {
-                mMessageHandler.obtainMessage(
-                        MSG_SEND_SESSION_MODIFY_REQUEST, requestProfile).sendToTarget();
+            public void sendSessionModifyRequest(VideoProfile fromProfile, VideoProfile toProfile) {
+                SomeArgs args = SomeArgs.obtain();
+                args.arg1 = fromProfile;
+                args.arg2 = toProfile;
+                mMessageHandler.obtainMessage(MSG_SEND_SESSION_MODIFY_REQUEST, args).sendToTarget();
             }
 
             public void sendSessionModifyResponse(VideoProfile responseProfile) {
@@ -606,9 +616,11 @@
          * Some examples of session modification requests: upgrade connection from audio to video,
          * downgrade connection from video to audio, pause video.
          *
-         * @param requestProfile The requested connection video properties.
+         * @param fromProfile The video properties prior to the request.
+         * @param toProfile The video properties with the requested changes made.
          */
-        public abstract void onSendSessionModifyRequest(VideoProfile requestProfile);
+        public abstract void onSendSessionModifyRequest(VideoProfile fromProfile,
+                VideoProfile toProfile);
 
         /**te
          * Provides a response to a request to change the current connection session video
diff --git a/telecomm/java/android/telecom/DefaultDialerManager.java b/telecomm/java/android/telecom/DefaultDialerManager.java
index b5d566a..d3df151 100644
--- a/telecomm/java/android/telecom/DefaultDialerManager.java
+++ b/telecomm/java/android/telecom/DefaultDialerManager.java
@@ -14,11 +14,13 @@
 
 package android.telecom;
 
+import android.app.ActivityManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.net.Uri;
 import android.provider.Settings;
 import android.text.TextUtils;
 
@@ -35,15 +37,27 @@
     private static final String TAG = "DefaultDialerManager";
 
     /**
-     * Sets the specified package name as the default dialer application. The caller of this method
-     * needs to have permission to write to secure settings.
+     * Sets the specified package name as the default dialer application for the current user.
+     * The caller of this method needs to have permission to write to secure settings and
+     * manage users on the device.
      *
      * @hide
      * */
     public static void setDefaultDialerApplication(Context context, String packageName) {
+        setDefaultDialerApplication(context, packageName, ActivityManager.getCurrentUser());
+    }
+
+    /**
+     * Sets the specified package name as the default dialer application for the specified user.
+     * The caller of this method needs to have permission to write to secure settings and
+     * manage users on the device.
+     *
+     * @hide
+     * */
+    public static void setDefaultDialerApplication(Context context, String packageName, int user) {
         // Get old package name
-        String oldPackageName = Settings.Secure.getString(context.getContentResolver(),
-                Settings.Secure.DIALER_DEFAULT_APPLICATION);
+        String oldPackageName = Settings.Secure.getStringForUser(context.getContentResolver(),
+                Settings.Secure.DIALER_DEFAULT_APPLICATION, user);
 
         if (packageName != null && oldPackageName != null && packageName.equals(oldPackageName)) {
             // No change
@@ -55,26 +69,44 @@
 
         if (packageNames.contains(packageName)) {
             // Update the secure setting.
-            Settings.Secure.putString(context.getContentResolver(),
-                    Settings.Secure.DIALER_DEFAULT_APPLICATION, packageName);
+            Settings.Secure.putStringForUser(context.getContentResolver(),
+                    Settings.Secure.DIALER_DEFAULT_APPLICATION, packageName, user);
         }
     }
 
     /**
-     * Returns the installed dialer application that will be used to receive incoming calls, and is
-     * allowed to make emergency calls.
+     * Returns the installed dialer application for the current user that will be used to receive
+     * incoming calls, and is allowed to make emergency calls.
      *
      * The application will be returned in order of preference:
      * 1) User selected phone application (if still installed)
      * 2) Pre-installed system dialer (if not disabled)
      * 3) Null
      *
+     * The caller of this method needs to have permission to manage users on the device.
+     *
      * @hide
      * */
     public static String getDefaultDialerApplication(Context context) {
-        String defaultPackageName = Settings.Secure.getString(context.getContentResolver(),
-                Settings.Secure.DIALER_DEFAULT_APPLICATION);
+        return getDefaultDialerApplication(context, ActivityManager.getCurrentUser());
+    }
 
+    /**
+     * Returns the installed dialer application for the specified user that will be used to receive
+     * incoming calls, and is allowed to make emergency calls.
+     *
+     * The application will be returned in order of preference:
+     * 1) User selected phone application (if still installed)
+     * 2) Pre-installed system dialer (if not disabled)
+     * 3) Null
+     *
+     * The caller of this method needs to have permission to manage users on the device.
+     *
+     * @hide
+     * */
+    public static String getDefaultDialerApplication(Context context, int user) {
+        String defaultPackageName = Settings.Secure.getStringForUser(context.getContentResolver(),
+                Settings.Secure.DIALER_DEFAULT_APPLICATION, user);
 
         final List<String> packageNames = getInstalledDialerApplications(context);
 
@@ -120,14 +152,14 @@
 
         for (ResolveInfo resolveInfo : resolveInfoList) {
             final ActivityInfo activityInfo = resolveInfo.activityInfo;
-            if (activityInfo == null) {
-                continue;
+            if (activityInfo != null && !packageNames.contains(activityInfo.packageName)) {
+                packageNames.add(activityInfo.packageName);
             }
-            packageNames.add(activityInfo.packageName);
         }
 
-        // TODO: Filter for apps that don't handle DIAL intent with tel scheme
-        return packageNames;
+        final Intent dialIntentWithTelScheme = new Intent(Intent.ACTION_DIAL);
+        dialIntentWithTelScheme.setData(Uri.fromParts(PhoneAccount.SCHEME_TEL, "", null));
+        return filterByIntent(context, packageNames, dialIntentWithTelScheme);
     }
 
     /**
@@ -151,6 +183,36 @@
                 || packageName.equals(tm.getSystemDialerPackage());
     }
 
+    /**
+     * Filter a given list of package names for those packages that contain an activity that has
+     * an intent filter for a given intent.
+     *
+     * @param context A valid context
+     * @param packageNames List of package names to filter.
+     * @return The filtered list.
+     */
+    private static List<String> filterByIntent(Context context, List<String> packageNames,
+            Intent intent) {
+        if (packageNames == null || packageNames.isEmpty()) {
+            return new ArrayList<>();
+        }
+
+        final List<String> result = new ArrayList<>();
+        final List<ResolveInfo> resolveInfoList =
+                context.getPackageManager().queryIntentActivities(intent, 0);
+        final int length = resolveInfoList.size();
+        for (int i = 0; i < length; i++) {
+            final ActivityInfo info = resolveInfoList.get(i).activityInfo;
+            if (info != null && packageNames.contains(info.packageName)
+                    && !result.contains(info.packageName)) {
+                result.add(info.packageName);
+            }
+        }
+
+        return result;
+    }
+
+
     private static TelecomManager getTelecomManager(Context context) {
         return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
     }
diff --git a/telecomm/java/android/telecom/ParcelableCall.java b/telecomm/java/android/telecom/ParcelableCall.java
index 1a30910..bb65ce9a 100644
--- a/telecomm/java/android/telecom/ParcelableCall.java
+++ b/telecomm/java/android/telecom/ParcelableCall.java
@@ -178,10 +178,10 @@
      * Returns an object for remotely communicating through the video call provider's binder.
      * @return The video call.
      */
-    public InCallService.VideoCall getVideoCall() {
+    public InCallService.VideoCall getVideoCall(Call call) {
         if (mVideoCall == null && mVideoCallProvider != null) {
             try {
-                mVideoCall = new VideoCallImpl(mVideoCallProvider);
+                mVideoCall = new VideoCallImpl(mVideoCallProvider, call);
             } catch (RemoteException ignored) {
                 // Ignore RemoteException.
             }
diff --git a/telecomm/java/android/telecom/RemoteConnection.java b/telecomm/java/android/telecom/RemoteConnection.java
index 1493b20..9ca9f316 100644
--- a/telecomm/java/android/telecom/RemoteConnection.java
+++ b/telecomm/java/android/telecom/RemoteConnection.java
@@ -350,9 +350,9 @@
             }
         }
 
-        public void sendSessionModifyRequest(VideoProfile reqProfile) {
+        public void sendSessionModifyRequest(VideoProfile fromProfile, VideoProfile toProfile) {
             try {
-                mVideoProviderBinder.sendSessionModifyRequest(reqProfile);
+                mVideoProviderBinder.sendSessionModifyRequest(fromProfile, toProfile);
             } catch (RemoteException e) {
             }
         }
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 1431eb8..ebd3f12 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -1143,8 +1143,12 @@
     public void placeCall(Uri address, Bundle extras) {
         ITelecomService service = getTelecomService();
         if (service != null) {
+            if (address == null) {
+                Log.w(TAG, "Cannot place call to empty address.");
+            }
             try {
-                service.placeCall(address, extras, mContext.getOpPackageName());
+                service.placeCall(address, extras == null ? new Bundle() : extras,
+                        mContext.getOpPackageName());
             } catch (RemoteException e) {
                 Log.e(TAG, "Error calling ITelecomService#placeCall", e);
             }
diff --git a/telecomm/java/android/telecom/VideoCallImpl.java b/telecomm/java/android/telecom/VideoCallImpl.java
index 7a82c1b..331f57e 100644
--- a/telecomm/java/android/telecom/VideoCallImpl.java
+++ b/telecomm/java/android/telecom/VideoCallImpl.java
@@ -40,6 +40,8 @@
     private final IVideoProvider mVideoProvider;
     private final VideoCallListenerBinder mBinder;
     private VideoCall.Callback mCallback;
+    private int mVideoQuality = VideoProfile.QUALITY_UNKNOWN;
+    private Call mCall;
 
     private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
         @Override
@@ -161,6 +163,7 @@
                             (CameraCapabilities) msg.obj);
                     break;
                 case MSG_CHANGE_VIDEO_QUALITY:
+                    mVideoQuality = msg.arg1;
                     mCallback.onVideoQualityChanged(msg.arg1);
                     break;
                 default:
@@ -171,12 +174,13 @@
 
     private Handler mHandler;
 
-    VideoCallImpl(IVideoProvider videoProvider) throws RemoteException {
+    VideoCallImpl(IVideoProvider videoProvider, Call call) throws RemoteException {
         mVideoProvider = videoProvider;
         mVideoProvider.asBinder().linkToDeath(mDeathRecipient, 0);
 
         mBinder = new VideoCallListenerBinder();
         mVideoProvider.addVideoCallback(mBinder);
+        mCall = call;
     }
 
     public void destroy() {
@@ -251,10 +255,24 @@
         }
     }
 
-    /** {@inheritDoc} */
+    /**
+     * Sends a session modification request to the video provider.
+     * <p>
+     * The {@link InCallService} will create the {@code requestProfile} based on the current
+     * video state (i.e. {@link Call.Details#getVideoState()}).  It is, however, possible that the
+     * video state maintained by the {@link InCallService} could get out of sync with what is known
+     * by the {@link android.telecom.Connection.VideoProvider}.  To remove ambiguity, the
+     * {@link VideoCallImpl} passes along the pre-modify video profile to the {@code VideoProvider}
+     * to ensure it has full context of the requested change.
+     *
+     * @param requestProfile The requested video profile.
+     */
     public void sendSessionModifyRequest(VideoProfile requestProfile) {
         try {
-            mVideoProvider.sendSessionModifyRequest(requestProfile);
+            VideoProfile originalProfile = new VideoProfile(mCall.getDetails().getVideoState(),
+                    mVideoQuality);
+
+            mVideoProvider.sendSessionModifyRequest(originalProfile, requestProfile);
         } catch (RemoteException e) {
         }
     }
diff --git a/telecomm/java/com/android/internal/telecom/IVideoProvider.aidl b/telecomm/java/com/android/internal/telecom/IVideoProvider.aidl
index bff3865..d095744 100644
--- a/telecomm/java/com/android/internal/telecom/IVideoProvider.aidl
+++ b/telecomm/java/com/android/internal/telecom/IVideoProvider.aidl
@@ -39,7 +39,7 @@
 
     void setZoom(float value);
 
-    void sendSessionModifyRequest(in VideoProfile reqProfile);
+    void sendSessionModifyRequest(in VideoProfile fromProfile, in VideoProfile toProfile);
 
     void sendSessionModifyResponse(in VideoProfile responseProfile);
 
diff --git a/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl b/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl
index 1fd88e7..4ff0b4367 100644
--- a/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl
+++ b/telephony/java/com/android/ims/internal/IImsVideoCallProvider.aidl
@@ -52,7 +52,7 @@
 
     void setZoom(float value);
 
-    void sendSessionModifyRequest(in VideoProfile reqProfile);
+    void sendSessionModifyRequest(in VideoProfile fromProfile, in VideoProfile toProfile);
 
     void sendSessionModifyResponse(in VideoProfile responseProfile);
 
diff --git a/telephony/java/com/android/internal/telephony/TelephonyIntents.java b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
index 85a489b..f563839 100644
--- a/telephony/java/com/android/internal/telephony/TelephonyIntents.java
+++ b/telephony/java/com/android/internal/telephony/TelephonyIntents.java
@@ -317,6 +317,7 @@
     public static final String EXTRA_PLMN       = "plmn";
     public static final String EXTRA_SHOW_SPN   = "showSpn";
     public static final String EXTRA_SPN        = "spn";
+    public static final String EXTRA_DATA_SPN   = "spnData";
 
     /**
      * <p>Broadcast Action: It indicates one column of a subinfo record has been changed
diff --git a/tests/Assist/AndroidManifest.xml b/tests/Assist/AndroidManifest.xml
index 4eceed9..9d4c4ad 100644
--- a/tests/Assist/AndroidManifest.xml
+++ b/tests/Assist/AndroidManifest.xml
@@ -30,10 +30,20 @@
             <meta-data
                 android:name="com.android.systemui.action_assist_icon"
                 android:resource="@drawable/assistant" />
+            <meta-data
+                android:name="com.android.keyguard.layout"
+                android:resource="@layout/keyguard_preview" />
         </service>
         <service android:name="AssistInteractionSessionService"
                 android:permission="android.permission.BIND_VOICE_INTERACTION"
                 android:process=":session">
         </service>
+        <activity android:name=".AboveKeyguardActivity"
+                  android:label="Test Above Keyguard Activity"
+                  android:theme="@android:style/Theme.NoTitleBar"
+                  android:excludeFromRecents="true"
+                  android:launchMode="singleTask"
+                  android:exported="false" >
+        </activity>
     </application>
 </manifest>
diff --git a/tests/Assist/res/layout/keyguard_preview.xml b/tests/Assist/res/layout/keyguard_preview.xml
new file mode 100644
index 0000000..d56c52e
--- /dev/null
+++ b/tests/Assist/res/layout/keyguard_preview.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+             android:layout_width="match_parent"
+             android:layout_height="match_parent"
+             android:orientation="vertical"
+             android:background="#d3d3d3">
+
+    <View
+        android:id="@+id/background"
+        android:layout_width="match_parent"
+        android:layout_height="350dp"
+        android:layout_gravity="bottom"
+        android:elevation="30dp"
+        android:background="#e0e0e0"/>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="350dp"
+        android:orientation="vertical"
+        android:elevation="30dp"
+        android:layout_gravity="bottom">
+
+        <FrameLayout
+            android:id="@+id/card1"
+            android:layout_width="match_parent"
+            android:layout_height="150dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
+            android:layout_marginTop="16dp"
+            android:elevation="3dp"
+            android:background="@drawable/round_rect">
+        </FrameLayout>
+
+        <View
+            android:id="@+id/card2"
+            android:layout_width="match_parent"
+            android:layout_height="200dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
+            android:layout_marginTop="16dp"
+            android:elevation="3dp"
+            android:background="@drawable/round_rect"/>
+
+    </LinearLayout>
+</FrameLayout>
\ No newline at end of file
diff --git a/tests/Assist/res/xml/interaction_service.xml b/tests/Assist/res/xml/interaction_service.xml
index f56156e..a90c8242 100644
--- a/tests/Assist/res/xml/interaction_service.xml
+++ b/tests/Assist/res/xml/interaction_service.xml
@@ -18,4 +18,5 @@
 <voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
     android:sessionService="com.android.test.assist.AssistInteractionSessionService"
     android:recognitionService="com.android.test.assist.AssistRecognitionService"
-    android:supportsAssist="true"/>
+    android:supportsAssist="true"
+    android:supportsLaunchVoiceAssistFromKeyguard="true"/>
diff --git a/tests/Assist/src/com/android/test/assist/AboveKeyguardActivity.java b/tests/Assist/src/com/android/test/assist/AboveKeyguardActivity.java
new file mode 100644
index 0000000..3e37345
--- /dev/null
+++ b/tests/Assist/src/com/android/test/assist/AboveKeyguardActivity.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.test.assist;
+
+import android.annotation.Nullable;
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.WindowManager;
+
+import com.android.test.assist.R;
+
+/**
+ * An activity which can be shown above the keyguard.
+ */
+public class AboveKeyguardActivity extends Activity {
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
+        setContentView(R.layout.keyguard_preview);
+    }
+}
diff --git a/tests/Assist/src/com/android/test/assist/AssistInteractionService.java b/tests/Assist/src/com/android/test/assist/AssistInteractionService.java
index e6a6713..bf40747 100644
--- a/tests/Assist/src/com/android/test/assist/AssistInteractionService.java
+++ b/tests/Assist/src/com/android/test/assist/AssistInteractionService.java
@@ -16,8 +16,15 @@
 
 package com.android.test.assist;
 
+import android.content.Intent;
 import android.service.voice.VoiceInteractionService;
 
 public class AssistInteractionService extends VoiceInteractionService {
-
+    @Override
+    public void onLaunchVoiceAssistFromKeyguard() {
+        super.onLaunchVoiceAssistFromKeyguard();
+        Intent intent = new Intent(this, AboveKeyguardActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        startActivity(intent);
+    }
 }
diff --git a/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibility.java b/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibility.java
index dd823ae..b54f9be 100644
--- a/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibility.java
+++ b/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibility.java
@@ -30,6 +30,7 @@
 
 import junit.framework.Assert;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
@@ -102,7 +103,11 @@
             // otherwise raise an
             // exception with the first error encountered.
             assertNull(getStackTrace(err), err);
-            assertTrue("App crashed after launch.", processStillUp(packageName));
+            try {
+                assertTrue("App crashed after launch.", processStillUp(packageName));
+            } finally {
+                returnHome();
+            }
         } else {
             Log.d(TAG, "Missing argument, use " + PACKAGE_TO_LAUNCH +
                     " to specify the package to launch");
@@ -138,6 +143,19 @@
         }
     }
 
+    private void returnHome() {
+        Intent homeIntent = new Intent(Intent.ACTION_MAIN);
+        homeIntent.addCategory(Intent.CATEGORY_HOME);
+        homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        // Send the "home" intent and wait 2 seconds for us to get there
+        mContext.startActivity(homeIntent);
+        try {
+            Thread.sleep(mWorkspaceLaunchTimeout);
+        } catch (InterruptedException e) {
+            // ignore
+        }
+    }
+
     /**
      * Launches and activity and queries for errors.
      *
@@ -150,9 +168,6 @@
         // the recommended way to see if this is a tv or not.
         boolean isleanback = !mPackageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN)
             && !mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
-        Intent homeIntent = new Intent(Intent.ACTION_MAIN);
-        homeIntent.addCategory(Intent.CATEGORY_HOME);
-        homeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         Intent intent;
         if (isleanback) {
             Log.d(TAG, "Leanback and relax! " + packageName);
@@ -173,14 +188,6 @@
             // ignore
         }
 
-        // Send the "home" intent and wait 2 seconds for us to get there
-        mContext.startActivity(homeIntent);
-        try {
-            Thread.sleep(mWorkspaceLaunchTimeout);
-        } catch (InterruptedException e) {
-            // ignore
-        }
-
         // See if there are any errors. We wait until down here to give ANRs as
         // much time as
         // possible to occur.
@@ -198,6 +205,12 @@
         return null;
     }
 
+    private boolean ensureForegroundActivity(RunningAppProcessInfo info) {
+        Log.d(TAG, String.format("ensureForegroundActivity: proc=%s, pid=%d, state=%d",
+                info.processName, info.pid, info.processState));
+        return info.processState == ActivityManager.PROCESS_STATE_TOP;
+    }
+
     /**
      * Determine if a given package is still running.
      *
@@ -207,19 +220,32 @@
     private boolean processStillUp(String packageName) {
         String processName = getProcessName(packageName);
         List<RunningAppProcessInfo> runningApps = mActivityManager.getRunningAppProcesses();
+        List<RunningAppProcessInfo> relatedProcs = new ArrayList<>();
         for (RunningAppProcessInfo app : runningApps) {
             if (app.processName.equalsIgnoreCase(processName)) {
-                Log.d(TAG, "Found process " + app.processName);
+                if (!ensureForegroundActivity(app)) {
+                    Log.w(TAG, "Found process but it's not top activity.");
+                    return false;
+                }
                 return true;
             }
             for (String relatedPackage : app.pkgList) {
-                if (relatedPackage.equalsIgnoreCase(processName)) {
-                    Log.d(TAG, "Found process " + app.processName);
-                    return true;
+                if (relatedPackage.equalsIgnoreCase(packageName)) {
+                    relatedProcs.add(app);
                 }
             }
         }
-        Log.d(TAG, "Failed to find process " + processName + " with package name "
+        // now that we are here, we've found no RAPI's directly matching processName, but
+        // potentially a List of them with one of related packages being processName
+        if (!relatedProcs.isEmpty()) {
+            for (RunningAppProcessInfo app : relatedProcs) {
+                if (ensureForegroundActivity(app)) {
+                    return true;
+                }
+            }
+            Log.w(TAG, "Found related processes, but none has top activity.");
+        }
+        Log.w(TAG, "Failed to find process " + processName + " with package name "
                 + packageName);
         return false;
     }
diff --git a/tests/MemoryUsage/AndroidManifest.xml b/tests/MemoryUsage/AndroidManifest.xml
index 3932e5b..cd559c5 100644
--- a/tests/MemoryUsage/AndroidManifest.xml
+++ b/tests/MemoryUsage/AndroidManifest.xml
@@ -6,7 +6,9 @@
                      android:name="com.android.tests.memoryusage.MemoryUsageInstrumentation"
                      android:targetPackage="com.android.tests.memoryusage" />
 
+    <uses-permission android:name="android.permission.REAL_GET_TASKS" />
+
     <application android:label="Memory Usage Test">
         <uses-library android:name="android.test.runner" />
     </application>
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/tests/OneMedia/Android.mk b/tests/OneMedia/Android.mk
index b7d7f98..9fc6403 100644
--- a/tests/OneMedia/Android.mk
+++ b/tests/OneMedia/Android.mk
@@ -9,9 +9,6 @@
 LOCAL_PACKAGE_NAME := OneMedia
 LOCAL_CERTIFICATE := platform
 
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    android-support-media-protocols
-
 LOCAL_JAVA_LIBRARIES += org.apache.http.legacy
 
 LOCAL_PROGUARD_ENABLED := disabled
diff --git a/tests/OneMedia/AndroidManifest.xml b/tests/OneMedia/AndroidManifest.xml
index ef3fad5..c6824ec 100644
--- a/tests/OneMedia/AndroidManifest.xml
+++ b/tests/OneMedia/AndroidManifest.xml
@@ -27,15 +27,6 @@
             android:name="com.android.onemedia.OnePlayerService"
             android:exported="true"
             android:process="com.android.onemedia.service" />
-        <service
-            android:name=".provider.OneMediaRouteProvider"
-            android:permission="android.permission.BIND_MEDIA_ROUTE_SERVICE"
-            android:exported="true"
-            android:process="com.android.onemedia.provider">
-            <intent-filter>
-                <action android:name="android.media.routing.MediaRouteService" />
-            </intent-filter>
-          </service>
     </application>
 
 </manifest>
diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
index 141a209..2455c9c 100644
--- a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
+++ b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java
@@ -19,25 +19,17 @@
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.media.MediaMetadata;
-import android.media.routing.MediaRouteSelector;
-import android.media.routing.MediaRouter;
-import android.media.routing.MediaRouter.ConnectionRequest;
-import android.media.routing.MediaRouter.DestinationInfo;
-import android.media.routing.MediaRouter.RouteInfo;
 import android.media.session.MediaSession;
 import android.media.session.MediaSession.QueueItem;
 import android.media.session.MediaSessionManager;
 import android.media.session.PlaybackState;
 import android.os.Bundle;
-import android.support.media.protocols.MediaPlayerProtocol;
-import android.support.media.protocols.MediaPlayerProtocol.MediaStatus;
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.util.Log;
 import android.view.KeyEvent;
 
 import com.android.onemedia.playback.LocalRenderer;
-import com.android.onemedia.playback.OneMRPRenderer;
 import com.android.onemedia.playback.Renderer;
 import com.android.onemedia.playback.RequestUtils;
 
@@ -48,7 +40,6 @@
     private static final String TAG = "PlayerSession";
 
     protected MediaSession mSession;
-    protected MediaRouter mRouter;
     protected Context mContext;
     protected Renderer mRenderer;
     protected MediaSession.Callback mCallback;
@@ -84,22 +75,11 @@
                 .getSystemService(Context.MEDIA_SESSION_SERVICE);
         Log.d(TAG, "Creating session for package " + mContext.getBasePackageName());
 
-        mRouter = new MediaRouter(mContext);
-        mRouter.addSelector(new MediaRouteSelector.Builder()
-                .addRequiredProtocol(MediaPlayerProtocol.class)
-                .build());
-        mRouter.addSelector(new MediaRouteSelector.Builder()
-                .setRequiredFeatures(MediaRouter.ROUTE_FEATURE_LIVE_AUDIO)
-                .setOptionalFeatures(MediaRouter.ROUTE_FEATURE_LIVE_VIDEO)
-                .build());
-        mRouter.setRoutingCallback(new RoutingCallback(), null);
-
         mSession = new MediaSession(mContext, "OneMedia");
         mSession.setCallback(mCallback);
         mSession.setPlaybackState(mPlaybackState);
         mSession.setFlags(MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS
                 | MediaSession.FLAG_HANDLES_MEDIA_BUTTONS);
-        mSession.setMediaRouter(mRouter);
         mSession.setActive(true);
         updateMetadata();
     }
@@ -117,10 +97,6 @@
             mSession.release();
             mSession = null;
         }
-        if (mRouter != null) {
-            mRouter.release();
-            mRouter = null;
-        }
     }
 
     public void setListener(Listener listener) {
@@ -278,63 +254,4 @@
             mRenderer.onPause();
         }
     }
-
-    private class RoutingCallback extends MediaRouter.RoutingCallback {
-        @Override
-        public void onConnectionStateChanged(int state) {
-            if (state == MediaRouter.CONNECTION_STATE_CONNECTING) {
-                if (mRenderer != null) {
-                    mRenderer.onStop();
-                }
-                mRenderer = null;
-                updateState(PlaybackState.STATE_CONNECTING);
-                return;
-            }
-
-            MediaRouter.ConnectionInfo connection = mRouter.getConnection();
-            if (connection != null) {
-                MediaPlayerProtocol protocol =
-                        connection.getProtocolObject(MediaPlayerProtocol.class);
-                if (protocol != null) {
-                    Log.d(TAG, "Connected to route using media player protocol");
-
-                    protocol.setCallback(new PlayerCallback(), null);
-                    mRenderer = new OneMRPRenderer(protocol);
-                    updateState(PlaybackState.STATE_NONE);
-                    return;
-                }
-            }
-
-            // Use local route
-            mRenderer = new LocalRenderer(mContext, null);
-            mRenderer.registerListener(mRenderListener);
-            updateState(PlaybackState.STATE_NONE);
-        }
-    }
-
-    private class PlayerCallback extends MediaPlayerProtocol.Callback {
-        @Override
-        public void onStatusUpdated(MediaStatus status, Bundle extras) {
-            if (status != null) {
-                Log.d(TAG, "Received status update: " + status.toBundle());
-                switch (status.getPlayerState()) {
-                    case MediaStatus.PLAYER_STATE_BUFFERING:
-                        updateState(PlaybackState.STATE_BUFFERING);
-                        break;
-                    case MediaStatus.PLAYER_STATE_IDLE:
-                        updateState(PlaybackState.STATE_STOPPED);
-                        break;
-                    case MediaStatus.PLAYER_STATE_PAUSED:
-                        updateState(PlaybackState.STATE_PAUSED);
-                        break;
-                    case MediaStatus.PLAYER_STATE_PLAYING:
-                        updateState(PlaybackState.STATE_PLAYING);
-                        break;
-                    case MediaStatus.PLAYER_STATE_UNKNOWN:
-                        updateState(PlaybackState.STATE_NONE);
-                        break;
-                }
-            }
-        }
-    }
 }
diff --git a/tests/OneMedia/src/com/android/onemedia/playback/OneMRPRenderer.java b/tests/OneMedia/src/com/android/onemedia/playback/OneMRPRenderer.java
deleted file mode 100644
index 55eb92c..0000000
--- a/tests/OneMedia/src/com/android/onemedia/playback/OneMRPRenderer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.android.onemedia.playback;
-
-import android.os.Bundle;
-import android.support.media.protocols.MediaPlayerProtocol;
-import android.support.media.protocols.MediaPlayerProtocol.MediaInfo;
-
-/**
- * Renderer for communicating with the OneMRP route
- */
-public class OneMRPRenderer extends Renderer {
-    private final MediaPlayerProtocol mProtocol;
-
-    public OneMRPRenderer(MediaPlayerProtocol protocol) {
-        super(null, null);
-        mProtocol = protocol;
-    }
-
-    @Override
-    public void setContent(Bundle request) {
-        MediaInfo mediaInfo = new MediaInfo(request.getString(RequestUtils.EXTRA_KEY_SOURCE),
-                MediaInfo.STREAM_TYPE_BUFFERED, "audio/mp3");
-        mProtocol.load(mediaInfo, true, 0, null);
-    }
-
-    @Override
-    public boolean onStop() {
-        mProtocol.stop(null);
-        return true;
-    }
-
-    @Override
-    public boolean onPlay() {
-        mProtocol.play(null);
-        return true;
-    }
-
-    @Override
-    public boolean onPause() {
-        mProtocol.pause(null);
-        return true;
-    }
-
-    @Override
-    public long getSeekPosition() {
-        return -1;
-    }
-}
diff --git a/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java b/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java
deleted file mode 100644
index 5845e48..0000000
--- a/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2014 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.onemedia.provider;
-
-import android.media.routing.MediaRouteSelector;
-import android.media.routing.MediaRouteService;
-import android.media.routing.MediaRouter.ConnectionInfo;
-import android.media.routing.MediaRouter.ConnectionRequest;
-import android.media.routing.MediaRouter.DestinationInfo;
-import android.media.routing.MediaRouter.DiscoveryRequest;
-import android.media.routing.MediaRouter.RouteInfo;
-import android.media.session.PlaybackState;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Process;
-import android.support.media.protocols.MediaPlayerProtocol;
-import android.support.media.protocols.MediaPlayerProtocol.MediaInfo;
-import android.support.media.protocols.MediaPlayerProtocol.MediaStatus;
-import android.os.Looper;
-import android.os.ResultReceiver;
-import android.os.SystemClock;
-import android.util.Log;
-
-import com.android.onemedia.playback.LocalRenderer;
-import com.android.onemedia.playback.Renderer;
-import com.android.onemedia.playback.RequestUtils;
-
-import java.util.ArrayList;
-
-/**
- * Test of MediaRouteProvider. Show a dummy provider with a simple interface for
- * playing music.
- */
-public class OneMediaRouteProvider extends MediaRouteService {
-    private static final String TAG = "OneMRP";
-    private static final boolean DEBUG = true;
-
-    private static final String TEST_DESTINATION_ID = "testDestination";
-    private static final String TEST_ROUTE_ID = "testRoute";
-
-    private Renderer mRenderer;
-    private RenderListener mRenderListener;
-    private PlaybackState mPlaybackState;
-    private Handler mHandler;
-
-    private OneStub mStub;
-
-    @Override
-    public void onCreate() {
-        mHandler = new Handler();
-        mRenderer = new LocalRenderer(this, null);
-        mRenderListener = new RenderListener();
-        PlaybackState.Builder bob = new PlaybackState.Builder();
-        bob.setActions(PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_PLAY);
-        mPlaybackState = bob.build();
-
-        mRenderer.registerListener(mRenderListener);
-    }
-
-    @Override
-    public ClientSession onCreateClientSession(ClientInfo client) {
-        if (client.getUid() != Process.myUid()) {
-            // for testing purposes, only allow connections from this application
-            // since this provider is not fully featured
-            return null;
-        }
-        return new OneSession(client);
-    }
-
-    private final class OneSession extends ClientSession {
-        private final ClientInfo mClient;
-
-        public OneSession(ClientInfo client) {
-            mClient = client;
-        }
-
-        @Override
-        public boolean onStartDiscovery(DiscoveryRequest req, DiscoveryCallback callback) {
-            for (MediaRouteSelector selector : req.getSelectors()) {
-                if (isMatch(selector)) {
-                    DestinationInfo destination = new DestinationInfo.Builder(
-                            TEST_DESTINATION_ID, getServiceMetadata(), "OneMedia")
-                            .setDescription("Test route from OneMedia app.")
-                            .build();
-                    ArrayList<RouteInfo> routes = new ArrayList<RouteInfo>();
-                    routes.add(new RouteInfo.Builder(
-                            TEST_ROUTE_ID, destination, selector).build());
-                    callback.onDestinationFound(destination, routes);
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        @Override
-        public void onStopDiscovery() {
-        }
-
-        @Override
-        public boolean onConnect(ConnectionRequest req, ConnectionCallback callback) {
-            if (req.getRoute().getId().equals(TEST_ROUTE_ID)) {
-                mStub = new OneStub();
-                ConnectionInfo connection = new ConnectionInfo.Builder(req.getRoute())
-                        .setProtocolStub(MediaPlayerProtocol.class, mStub)
-                        .build();
-                callback.onConnected(connection);
-                return true;
-            }
-            return false;
-        }
-
-        @Override
-        public void onDisconnect() {
-            mStub = null;
-        }
-
-        private boolean isMatch(MediaRouteSelector selector) {
-            if (!selector.containsProtocol(MediaPlayerProtocol.class)) {
-                return false;
-            }
-            for (String protocol : selector.getRequiredProtocols()) {
-                if (!protocol.equals(MediaPlayerProtocol.class.getName())) {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    private final class OneStub extends MediaPlayerProtocol.Stub {
-        MediaInfo mMediaInfo;
-
-        public OneStub() {
-            super(mHandler);
-        }
-
-        @Override
-        public void onLoad(MediaInfo mediaInfo, boolean autoplay, long playPosition,
-                Bundle extras) {
-            if (DEBUG) {
-                Log.d(TAG, "Attempting to play " + mediaInfo.getContentId());
-            }
-            // look up the route and send a play command to it
-            mMediaInfo = mediaInfo;
-            Bundle bundle = new Bundle();
-            bundle.putString(RequestUtils.EXTRA_KEY_SOURCE, mediaInfo.getContentId());
-            mRenderer.setContent(bundle);
-        }
-
-        @Override
-        public void onPlay(Bundle extras) {
-            mRenderer.onPlay();
-        }
-
-        @Override
-        public void onPause(Bundle extras) {
-            mRenderer.onPause();
-        }
-    }
-
-    private class RenderListener implements Renderer.Listener {
-
-        @Override
-        public void onError(int type, int extra, Bundle extras, Throwable error) {
-            Log.d(TAG, "Sending onError with type " + type + " and extra " + extra);
-            sendStatusUpdate(PlaybackState.STATE_ERROR);
-        }
-
-        @Override
-        public void onStateChanged(int newState) {
-            long position = -1;
-            if (mRenderer != null) {
-                position = mRenderer.getSeekPosition();
-            }
-            int pbState;
-            float rate = 0;
-            String errorMsg = null;
-            switch (newState) {
-                case Renderer.STATE_ENDED:
-                case Renderer.STATE_STOPPED:
-                    pbState = PlaybackState.STATE_STOPPED;
-                    break;
-                case Renderer.STATE_INIT:
-                case Renderer.STATE_PREPARING:
-                    pbState = PlaybackState.STATE_BUFFERING;
-                    break;
-                case Renderer.STATE_ERROR:
-                    pbState = PlaybackState.STATE_ERROR;
-                    break;
-                case Renderer.STATE_PAUSED:
-                    pbState = PlaybackState.STATE_PAUSED;
-                    break;
-                case Renderer.STATE_PLAYING:
-                    pbState = PlaybackState.STATE_PLAYING;
-                    rate = 1;
-                    break;
-                default:
-                    pbState = PlaybackState.STATE_ERROR;
-                    errorMsg = "unknown state";
-                    break;
-            }
-            PlaybackState.Builder bob = new PlaybackState.Builder(mPlaybackState);
-            bob.setState(pbState, position, rate, SystemClock.elapsedRealtime());
-            bob.setErrorMessage(errorMsg);
-            mPlaybackState = bob.build();
-
-            sendStatusUpdate(mPlaybackState.getState());
-        }
-
-        @Override
-        public void onBufferingUpdate(int percent) {
-        }
-
-        @Override
-        public void onFocusLost() {
-            Log.d(TAG, "Focus lost, pausing");
-            // Don't update state here, we'll get a separate call to
-            // onStateChanged when it pauses
-            mRenderer.onPause();
-        }
-
-        @Override
-        public void onNextStarted() {
-        }
-
-        private void sendStatusUpdate(int state) {
-            if (mStub != null) {
-                MediaStatus status = new MediaStatus(1, mStub.mMediaInfo);
-                switch (state) {
-                    case PlaybackState.STATE_BUFFERING:
-                    case PlaybackState.STATE_FAST_FORWARDING:
-                    case PlaybackState.STATE_REWINDING:
-                    case PlaybackState.STATE_SKIPPING_TO_NEXT:
-                    case PlaybackState.STATE_SKIPPING_TO_PREVIOUS:
-                        status.setPlayerState(MediaStatus.PLAYER_STATE_BUFFERING);
-                        break;
-                    case PlaybackState.STATE_CONNECTING:
-                    case PlaybackState.STATE_STOPPED:
-                        status.setPlayerState(MediaStatus.PLAYER_STATE_IDLE);
-                        break;
-                    case PlaybackState.STATE_PAUSED:
-                        status.setPlayerState(MediaStatus.PLAYER_STATE_PAUSED);
-                        break;
-                    case PlaybackState.STATE_PLAYING:
-                        status.setPlayerState(MediaStatus.PLAYER_STATE_PLAYING);
-                        break;
-                    case PlaybackState.STATE_NONE:
-                    case PlaybackState.STATE_ERROR:
-                    default:
-                        status.setPlayerState(MediaStatus.PLAYER_STATE_UNKNOWN);
-                        break;
-                }
-                mStub.sendStatusUpdatedEvent(status, null);
-            }
-        }
-    }
-}
diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk
index dc3ad25..bbe6860 100644
--- a/tools/aapt/Android.mk
+++ b/tools/aapt/Android.mk
@@ -132,28 +132,4 @@
 include $(BUILD_HOST_NATIVE_TEST)
 
 
-# ==========================================================
-# Build the device executable: aapt
-# ==========================================================
-ifneq ($(SDK_ONLY),true)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := aapt
-LOCAL_CFLAGS += $(aaptCFlags)
-LOCAL_SRC_FILES := $(aaptSources) $(aaptMain)
-LOCAL_C_INCLUDES += $(aaptCIncludes)
-LOCAL_SHARED_LIBRARIES := \
-    libandroidfw \
-    libutils \
-    libcutils \
-    libpng \
-    liblog \
-    libz
-LOCAL_STATIC_LIBRARIES := \
-    libexpat_static
-
-include $(BUILD_EXECUTABLE)
-
-endif # Not SDK_ONLY
-
 endif # No TARGET_BUILD_APPS or TARGET_BUILD_PDK
diff --git a/tools/layoutlib/bridge/src/android/content/res/Resources_Theme_Delegate.java b/tools/layoutlib/bridge/src/android/content/res/Resources_Theme_Delegate.java
index 4bd83e9..41d94b7 100644
--- a/tools/layoutlib/bridge/src/android/content/res/Resources_Theme_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/content/res/Resources_Theme_Delegate.java
@@ -27,6 +27,7 @@
 
 import android.content.res.Resources.NotFoundException;
 import android.content.res.Resources.Theme;
+import android.content.res.Resources.ThemeKey;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 
@@ -110,22 +111,16 @@
     private static boolean setupResources(Theme thisTheme) {
         // Key is a space-separated list of theme ids applied that have been merged into the
         // BridgeContext's theme to make thisTheme.
-        String[] appliedStyles = thisTheme.getKey().split(" ");
+        final ThemeKey key = thisTheme.getKey();
+        final int[] resId = key.mResId;
+        final boolean[] force = key.mForce;
+
         boolean changed = false;
-        for (String s : appliedStyles) {
-            if (s.isEmpty()) {
-                continue;
-            }
-            // See the definition of force parameter in Theme.applyStyle().
-            boolean force = false;
-            if (s.charAt(s.length() - 1) == '!') {
-                force = true;
-                s = s.substring(0, s.length() - 1);
-            }
-            int styleId = Integer.parseInt(s, 16);
-            StyleResourceValue style = resolveStyle(styleId);
+        for (int i = 0, N = key.mCount; i < N; i++) {
+            StyleResourceValue style = resolveStyle(resId[i]);
             if (style != null) {
-                RenderSessionImpl.getCurrentContext().getRenderResources().applyStyle(style, force);
+                RenderSessionImpl.getCurrentContext().getRenderResources().applyStyle(
+                        style, force[i]);
                 changed = true;
             }
 
diff --git a/tools/layoutlib/bridge/src/android/view/BridgeInflater.java b/tools/layoutlib/bridge/src/android/view/BridgeInflater.java
index 9eea663..87762a6 100644
--- a/tools/layoutlib/bridge/src/android/view/BridgeInflater.java
+++ b/tools/layoutlib/bridge/src/android/view/BridgeInflater.java
@@ -16,19 +16,15 @@
 
 package android.view;
 
-import com.android.ide.common.rendering.api.LayoutlibCallback;
 import com.android.ide.common.rendering.api.LayoutLog;
+import com.android.ide.common.rendering.api.LayoutlibCallback;
 import com.android.ide.common.rendering.api.MergeCookie;
 import com.android.ide.common.rendering.api.ResourceReference;
 import com.android.ide.common.rendering.api.ResourceValue;
 import com.android.layoutlib.bridge.Bridge;
-import com.android.layoutlib.bridge.BridgeConstants;
 import com.android.layoutlib.bridge.android.BridgeContext;
 import com.android.layoutlib.bridge.android.BridgeXmlBlockParser;
-import com.android.layoutlib.bridge.android.support.RecyclerViewUtil;
-import com.android.layoutlib.bridge.android.support.RecyclerViewUtil.LayoutManagerType;
 import com.android.layoutlib.bridge.impl.ParserFactory;
-import com.android.layoutlib.bridge.impl.RenderSessionImpl;
 import com.android.resources.ResourceType;
 import com.android.util.Pair;
 
@@ -233,22 +229,6 @@
             if (viewKey != null) {
                 bc.addViewKey(view, viewKey);
             }
-            if (RenderSessionImpl.isInstanceOf(view, RecyclerViewUtil.CN_RECYCLER_VIEW)) {
-                String type = attrs.getAttributeValue(BridgeConstants.NS_RESOURCES,
-                                BridgeConstants.ATTR_LAYOUT_MANAGER_TYPE);
-                if (type != null) {
-                    LayoutManagerType layoutManagerType = LayoutManagerType.getByLogicalName(type);
-                    if (layoutManagerType == null) {
-                        layoutManagerType = LayoutManagerType.getByClassName(type);
-                    }
-                    if (layoutManagerType == null) {
-                        // add the classname itself.
-                        bc.addCookie(view, type);
-                    } else {
-                        bc.addCookie(view, layoutManagerType);
-                    }
-                }
-            }
         }
     }
 
diff --git a/tools/layoutlib/bridge/src/android/view/RectShadowPainter.java b/tools/layoutlib/bridge/src/android/view/RectShadowPainter.java
index ec3a8d6..30512aa 100644
--- a/tools/layoutlib/bridge/src/android/view/RectShadowPainter.java
+++ b/tools/layoutlib/bridge/src/android/view/RectShadowPainter.java
@@ -19,6 +19,7 @@
 import com.android.layoutlib.bridge.impl.ResourceHelper;
 
 import android.graphics.Canvas;
+import android.graphics.Canvas_Delegate;
 import android.graphics.LinearGradient;
 import android.graphics.Outline;
 import android.graphics.Paint;
@@ -125,6 +126,9 @@
 
     private static void sideShadow(Canvas canvas, Paint edgePaint,
             RectF edgeShadowRect, float dx, float dy, int rotations) {
+        if (isRectEmpty(edgeShadowRect)) {
+            return;
+        }
         int saved = canvas.save();
         canvas.translate(dx, dy);
         canvas.rotate(rotations * PERPENDICULAR_ANGLE);
@@ -153,4 +157,15 @@
         canvas.drawPath(path, paint);
         canvas.restoreToCount(saved);
     }
+
+    /**
+     * Differs from {@link RectF#isEmpty()} as this first converts the rect to int and then checks.
+     * <p/>
+     * This is required because {@link Canvas_Delegate#native_drawRect(long, float, float, float,
+     * float, long)} casts the co-ordinates to int and we want to ensure that it doesn't end up
+     * drawing empty rectangles, which results in IllegalArgumentException.
+     */
+    private static boolean isRectEmpty(RectF rect) {
+        return (int) rect.left >= (int) rect.right || (int) rect.top >= (int) rect.bottom;
+    }
 }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
index 094778d..eb5f597 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java
@@ -93,6 +93,8 @@
 import java.util.List;
 import java.util.Map;
 
+import static com.android.layoutlib.bridge.android.RenderParamsFlags.FLAG_KEY_APPLICATION_PACKAGE;
+
 /**
  * Custom implementation of Context/Activity to handle non compiled resources.
  */
@@ -306,7 +308,7 @@
         // check if this is a style resource
         if (value instanceof StyleResourceValue) {
             // get the id that will represent this style.
-            outValue.resourceId = getDynamicIdByStyle((StyleResourceValue)value);
+            outValue.resourceId = getDynamicIdByStyle((StyleResourceValue) value);
             return true;
         }
 
@@ -812,6 +814,14 @@
     }
 
 
+    @Override
+    public String getPackageName() {
+        if (mApplicationInfo.packageName == null) {
+            mApplicationInfo.packageName = mLayoutlibCallback.getFlag(FLAG_KEY_APPLICATION_PACKAGE);
+        }
+        return mApplicationInfo.packageName;
+    }
+
     // ------------- private new methods
 
     /**
@@ -1225,12 +1235,6 @@
     }
 
     @Override
-    public String getPackageName() {
-        // pass
-        return null;
-    }
-
-    @Override
     public String getBasePackageName() {
         // pass
         return null;
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeIInputMethodManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeIInputMethodManager.java
index c44a57c..8899e53 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeIInputMethodManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeIInputMethodManager.java
@@ -164,7 +164,8 @@
     }
 
     @Override
-    public void showInputMethodPickerFromClient(IInputMethodClient arg0) throws RemoteException {
+    public void showInputMethodPickerFromClient(IInputMethodClient arg0,
+            int arg1) throws RemoteException {
         // TODO Auto-generated method stub
 
     }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
index 2f45473..b98f96f 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/RenderParamsFlags.java
@@ -16,6 +16,7 @@
 
 package com.android.layoutlib.bridge.android;
 
+import com.android.ide.common.rendering.api.RenderParams;
 import com.android.ide.common.rendering.api.SessionParams.Key;
 
 /**
@@ -31,10 +32,21 @@
             new Key<String>("rootTag", String.class);
     public static final Key<Boolean> FLAG_KEY_DISABLE_BITMAP_CACHING =
             new Key<Boolean>("disableBitmapCaching", Boolean.class);
-    public static final Key<Boolean> FLAG_KEY_RECYCLER_VIEW_SUPPORT =
-            new Key<Boolean>("recyclerViewSupport", Boolean.class);
     public static final Key<Boolean> FLAG_KEY_RENDER_ALL_DRAWABLE_STATES =
             new Key<Boolean>("renderAllDrawableStates", Boolean.class);
+    /**
+     * To tell LayoutLib that the IDE supports RecyclerView.
+     * <p/>
+     * Default is false.
+     */
+    public static final Key<Boolean> FLAG_KEY_RECYCLER_VIEW_SUPPORT =
+            new Key<Boolean>("recyclerViewSupport", Boolean.class);
+    /**
+     * The application package name. Used via
+     * {@link com.android.ide.common.rendering.api.LayoutlibCallback#getFlag(Key)}
+     */
+    public static final Key<String> FLAG_KEY_APPLICATION_PACKAGE =
+            new Key<String>("applicationPackage", String.class);
 
     // Disallow instances.
     private RenderParamsFlags() {}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java
index 9273ac2..e4c7288 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/support/RecyclerViewUtil.java
@@ -27,11 +27,12 @@
 
 import android.content.Context;
 import android.view.View;
-import android.widget.LinearLayout;
 
 import java.lang.reflect.Method;
 
-import static com.android.layoutlib.bridge.util.ReflectionUtils.*;
+import static com.android.layoutlib.bridge.util.ReflectionUtils.ReflectionException;
+import static com.android.layoutlib.bridge.util.ReflectionUtils.getMethod;
+import static com.android.layoutlib.bridge.util.ReflectionUtils.invoke;
 
 /**
  * Utility class for working with android.support.v7.widget.RecyclerView
@@ -39,17 +40,15 @@
 @SuppressWarnings("SpellCheckingInspection")  // for "recycler".
 public class RecyclerViewUtil {
 
-    /**
-     * Used by {@link LayoutManagerType}.
-     * <p/>
-     * Not declared inside the enum, since it needs to be accessible in the constructor.
-     */
-    private static final Object CONTEXT = new Object();
-
-    public static final String CN_RECYCLER_VIEW = "android.support.v7.widget.RecyclerView";
+    private static final String RV_PKG_PREFIX = "android.support.v7.widget.";
+    public static final String CN_RECYCLER_VIEW = RV_PKG_PREFIX + "RecyclerView";
     private static final String CN_LAYOUT_MANAGER = CN_RECYCLER_VIEW + "$LayoutManager";
     private static final String CN_ADAPTER = CN_RECYCLER_VIEW + "$Adapter";
 
+    // LinearLayoutManager related constants.
+    private static final String CN_LINEAR_LAYOUT_MANAGER = RV_PKG_PREFIX + "LinearLayoutManager";
+    private static final Class<?>[] LLM_CONSTRUCTOR_SIGNATURE = new Class<?>[]{Context.class};
+
     /**
      * Tries to create an Adapter ({@code android.support.v7.widget.RecyclerView.Adapter} and a
      * LayoutManager {@code RecyclerView.LayoutManager} and assign these to the {@code RecyclerView}
@@ -71,37 +70,33 @@
 
     private static void setLayoutManager(@NonNull View recyclerView, @NonNull BridgeContext context,
             @NonNull LayoutlibCallback callback) throws ReflectionException {
-        Object cookie = context.getCookie(recyclerView);
-        assert cookie == null || cookie instanceof LayoutManagerType || cookie instanceof String;
-        if (!(cookie instanceof LayoutManagerType)) {
-            if (cookie != null) {
-                // TODO: When layoutlib API is updated, try to load the class with a null
-                // constructor or a constructor taking one argument - the context.
-                Bridge.getLog().warning(LayoutLog.TAG_UNSUPPORTED,
-                        "LayoutManager (" + cookie + ") not found, falling back to " +
-                                "LinearLayoutManager", null);
-            }
-            cookie = LayoutManagerType.getDefault();
+        if (getLayoutManager(recyclerView) == null) {
+            // Only set the layout manager if not already set by the recycler view.
+            Object layoutManager = createLayoutManager(context, callback);
+            setProperty(recyclerView, CN_LAYOUT_MANAGER, layoutManager, "setLayoutManager");
         }
-        Object layoutManager = createLayoutManager((LayoutManagerType) cookie, context, callback);
-        setProperty(recyclerView, CN_LAYOUT_MANAGER, layoutManager, "setLayoutManager");
     }
 
+    /** Creates a LinearLayoutManager using the provided context. */
     @Nullable
-    private static Object createLayoutManager(@Nullable LayoutManagerType type,
-            @NonNull Context context, @NonNull LayoutlibCallback callback)
+    private static Object createLayoutManager(@NonNull Context context,
+            @NonNull LayoutlibCallback callback)
             throws ReflectionException {
-        if (type == null) {
-            type = LayoutManagerType.getDefault();
-        }
         try {
-            return callback.loadView(type.getClassName(), type.getSignature(), type.getArgs(context));
+            return callback.loadView(CN_LINEAR_LAYOUT_MANAGER, LLM_CONSTRUCTOR_SIGNATURE,
+                    new Object[]{ context});
         } catch (Exception e) {
             throw new ReflectionException(e);
         }
     }
 
     @Nullable
+    private static Object getLayoutManager(View recyclerview) throws ReflectionException {
+        Method getLayoutManager = getMethod(recyclerview.getClass(), "getLayoutManager");
+        return getLayoutManager != null ? invoke(getLayoutManager, recyclerview) : null;
+    }
+
+    @Nullable
     private static Object createAdapter(@NonNull SessionParams params) throws ReflectionException {
         Boolean ideSupport = params.getFlag(RenderParamsFlags.FLAG_KEY_RECYCLER_VIEW_SUPPORT);
         if (ideSupport != Boolean.TRUE) {
@@ -145,74 +140,4 @@
         }
         throw new RuntimeException("invalid object/classname combination.");
     }
-
-    /** Supported LayoutManagers. */
-    public enum LayoutManagerType {
-        LINEAR_LAYOUT_MANGER("Linear",
-                "android.support.v7.widget.LinearLayoutManager",
-                new Class[]{Context.class}, new Object[]{CONTEXT}),
-        GRID_LAYOUT_MANAGER("Grid",
-                "android.support.v7.widget.GridLayoutManager",
-                new Class[]{Context.class, int.class}, new Object[]{CONTEXT, 2}),
-        STAGGERED_GRID_LAYOUT_MANAGER("StaggeredGrid",
-                "android.support.v7.widget.StaggeredGridLayoutManager",
-                new Class[]{int.class, int.class}, new Object[]{2, LinearLayout.VERTICAL});
-
-        private String mLogicalName;
-        private String mClassName;
-        private Class[] mSignature;
-        private Object[] mArgs;
-
-        LayoutManagerType(String logicalName, String className, Class[] signature, Object[] args) {
-            mLogicalName = logicalName;
-            mClassName = className;
-            mSignature = signature;
-            mArgs = args;
-        }
-
-        String getClassName() {
-            return mClassName;
-        }
-
-        Class[] getSignature() {
-            return mSignature;
-        }
-
-        @NonNull
-        Object[] getArgs(Context context) {
-            Object[] args = new Object[mArgs.length];
-            System.arraycopy(mArgs, 0, args, 0, mArgs.length);
-            for (int i = 0; i < args.length; i++) {
-                if (args[i] == CONTEXT) {
-                    args[i] = context;
-                }
-            }
-            return args;
-        }
-
-        @NonNull
-        public static LayoutManagerType getDefault() {
-            return LINEAR_LAYOUT_MANGER;
-        }
-
-        @Nullable
-        public static LayoutManagerType getByLogicalName(@NonNull String logicalName) {
-            for (LayoutManagerType type : values()) {
-                if (logicalName.equals(type.mLogicalName)) {
-                    return type;
-                }
-            }
-            return null;
-        }
-
-        @Nullable
-        public static LayoutManagerType getByClassName(@NonNull String className) {
-            for (LayoutManagerType type : values()) {
-                if (className.equals(type.mClassName)) {
-                    return type;
-                }
-            }
-            return null;
-        }
-    }
 }
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/Config.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/Config.java
index 9f9b968..dc89d0c 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/Config.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/Config.java
@@ -74,7 +74,7 @@
     }
 
     public static String getTime(int platformVersion) {
-        if (platformVersion == 0) {
+        if (isGreaterOrEqual(platformVersion, LOLLIPOP_MR1)) {
             return "5:10";
         }
         if (platformVersion < GINGERBREAD) {
@@ -117,7 +117,7 @@
     }
 
     public static String getWifiIconType(int platformVersion) {
-        return platformVersion == 0 ? "xml" : "png";
+        return isGreaterOrEqual(platformVersion, LOLLIPOP) ? "xml" : "png";
     }
 
     /**
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java
index 9450b6c..04aadff 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/NavigationBar.java
@@ -21,6 +21,10 @@
 
 import org.xmlpull.v1.XmlPullParserException;
 
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.util.AttributeSet;
+import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -29,6 +33,21 @@
     /** Navigation bar background color attribute name. */
     private static final String ATTR_COLOR = "navigationBarColor";
 
+    /**
+     * Constructor to be used when creating the {@link NavigationBar} as a regular control.
+     * This is currently used by the theme editor.
+     */
+    public NavigationBar(Context context, AttributeSet attrs)
+            throws XmlPullParserException {
+        this((BridgeContext) context,
+                Density.getEnum(((BridgeContext) context).getMetrics().densityDpi),
+                LinearLayout.HORIZONTAL, // In this mode, it doesn't need to be render vertically
+                ((BridgeContext) context).getConfiguration().getLayoutDirection() ==
+                        View.LAYOUT_DIRECTION_RTL,
+                (context.getApplicationInfo().flags & ApplicationInfo.FLAG_SUPPORTS_RTL) != 0,
+                context.getApplicationInfo().targetSdkVersion);
+    }
+
     public NavigationBar(BridgeContext context, Density density, int orientation, boolean isRtl,
             boolean rtlEnabled, int simulatedPlatformVersion) throws XmlPullParserException {
         super(context, orientation, "/bars/navigation_bar.xml", "navigation_bar.xml",
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/StatusBar.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/StatusBar.java
index e5f1f68..a0ed0e8 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/StatusBar.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/bars/StatusBar.java
@@ -25,7 +25,9 @@
 
 import org.xmlpull.v1.XmlPullParserException;
 
+import android.content.Context;
 import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
 import android.view.Gravity;
 import android.view.View;
 import android.widget.ImageView;
@@ -39,7 +41,20 @@
 
     private final int mSimulatedPlatformVersion;
     /** Status bar background color attribute name. */
-    private static final String ATTR_COLOR = "colorPrimaryDark";
+    private static final String ATTR_COLOR = "statusBarColor";
+
+    /**
+     * Constructor to be used when creating the {@link StatusBar} as a regular control. This
+     * is currently used by the theme editor.
+     */
+    public StatusBar(Context context, AttributeSet attrs) throws XmlPullParserException {
+        this((BridgeContext) context,
+                Density.getEnum(((BridgeContext) context).getMetrics().densityDpi),
+                LinearLayout.HORIZONTAL, // In this mode, it doesn't need to be render vertically
+                ((BridgeContext) context).getConfiguration().getLayoutDirection() ==
+                        View.LAYOUT_DIRECTION_RTL,
+                context.getApplicationInfo().targetSdkVersion);
+    }
 
     public StatusBar(BridgeContext context, Density density, int direction, boolean RtlEnabled,
             int simulatedPlatformVersion) throws XmlPullParserException {
@@ -50,6 +65,7 @@
 
         // FIXME: use FILL_H?
         setGravity(Gravity.START | Gravity.TOP | Gravity.RIGHT);
+
         int color = getThemeAttrColor(ATTR_COLOR, true);
         setBackgroundColor(color == 0 ? Config.getStatusBarColor(simulatedPlatformVersion) : color);
 
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderDrawable.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderDrawable.java
index 3dee1e2..26f9000 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderDrawable.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderDrawable.java
@@ -42,6 +42,10 @@
 import java.util.Collections;
 import java.util.List;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * Action to render a given Drawable provided through {@link DrawableParams#getDrawable()}.
  *
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
index d9572591..f6e5ef1 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
@@ -1075,7 +1075,7 @@
 
     private void findStatusBar(RenderResources resources, DisplayMetrics metrics) {
         boolean windowFullscreen = getBooleanThemeValue(resources,
-                "windowFullscreen", false, !isThemeAppCompat(resources));
+                "windowFullscreen", false, true);
 
         if (!windowFullscreen && !mWindowIsFloating) {
             // default value
@@ -1210,15 +1210,15 @@
           // between Theme.AppCompat.Light and Theme.AppCompat is Theme.Material (for v21).
             boolean isThemeAppCompat = false;
             for (int i = 0; i < 50; i++) {
+                if (defaultTheme == null) {
+                    break;
+                }
                 // for loop ensures that we don't run into cyclic theme inheritance.
                 if (defaultTheme.getName().startsWith("Theme.AppCompat")) {
                     isThemeAppCompat = true;
                     break;
                 }
                 defaultTheme = resources.getParent(defaultTheme);
-                if (defaultTheme == null) {
-                    break;
-                }
             }
             mIsThemeAppCompat = isThemeAppCompat;
         }
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/MyActivity.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/MyActivity.class
index d252462..8af93eb 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/MyActivity.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/MyActivity.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$id.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$id.class
index d109302..069f9f7 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$id.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$id.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$layout.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$layout.class
index 816ecc8..36e2688 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$layout.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$layout.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$menu.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$menu.class
index b034b75d..ca438ad 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$menu.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$menu.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$string.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$string.class
index f86b1d3..a98abf5 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$string.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$string.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$style.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$style.class
index 8bbae90..7d8cc84 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$style.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R$style.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R.class b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R.class
index 8af745d..7e6113b 100644
--- a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R.class
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/build/intermediates/classes/debug/com/android/layoutlib/test/myapplication/R.class
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/allwidgets.png b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/allwidgets.png
new file mode 100644
index 0000000..c9b76be
--- /dev/null
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/golden/allwidgets.png
Binary files differ
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/layout/allwidgets.xml b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/layout/allwidgets.xml
new file mode 100644
index 0000000..2da2cb9
--- /dev/null
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/layout/allwidgets.xml
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="HardcodedText,LabelFor,TextFields,ContentDescription,RtlHardcoded">
+
+    <FrameLayout
+        android:id="@id/frameLayout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginEnd="311dp">
+
+        <TextView
+            android:id="@id/textView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="left|top"
+            android:text="New Text" />
+    </FrameLayout>
+
+    <TextView
+        android:id="@id/textView2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_below="@id/frameLayout"
+        android:text="Large Text"
+        android:textAppearance="?android:attr/textAppearanceLarge" />
+
+    <TextView
+        android:id="@id/textView3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_toEndOf="@id/textView2"
+        android:text="Medium Text"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <TextView
+        android:id="@id/textView4"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/textView2"
+        android:layout_toEndOf="@id/textView2"
+        android:text="Small Text"
+        android:textAppearance="?android:attr/textAppearanceSmall" />
+
+    <Button
+        android:id="@id/button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/textView3"
+        android:layout_toEndOf="@id/textView4"
+        android:text="New Button" />
+
+    <Button
+        android:id="@id/button2"
+        style="?android:attr/buttonStyleSmall"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_toEndOf="@id/button"
+        android:text="New Button" />
+
+    <CheckBox
+        android:id="@id/checkBox"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignEnd="@id/button"
+        android:layout_below="@id/button"
+        android:text="New CheckBox" />
+
+    <Switch
+        android:id="@id/switch1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_below="@id/textView2"
+        android:text="New Switch" />
+
+    <ImageButton
+        android:id="@id/imageButton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/button"
+        android:layout_toEndOf="@id/switch1" />
+
+    <ImageView
+        android:id="@id/imageView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:src="@drawable/ic_launcher"
+        android:layout_below="@id/button"
+        android:layout_toEndOf="@id/imageButton" />
+
+    <GridLayout
+        android:id="@id/gridLayout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_below="@id/imageButton"
+        android:columnCount="2"
+        android:rowCount="2">
+
+        <ProgressBar
+            android:id="@id/progressBar"
+            style="?android:attr/progressBarStyleLarge"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_column="0"
+            android:layout_row="0" />
+
+        <ProgressBar
+            android:id="@id/progressBar2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_column="1"
+            android:layout_row="0" />
+
+        <ProgressBar
+            android:id="@id/progressBar3"
+            style="?android:attr/progressBarStyleSmall"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_column="0"
+            android:layout_row="1" />
+
+        <ProgressBar
+            android:id="@id/progressBar4"
+            style="?android:attr/progressBarStyleHorizontal"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_column="1"
+            android:layout_row="1" />
+    </GridLayout>
+
+    <SeekBar
+        android:id="@id/seekBar"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/gridLayout"
+        android:layout_toEndOf="@id/gridLayout" />
+
+    <RatingBar
+        android:id="@id/ratingBar"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/switch2"
+        android:layout_toEndOf="@id/gridLayout" />
+
+    <Switch
+        android:id="@id/switch2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/seekBar"
+        android:layout_toEndOf="@id/switch1"
+        android:checked="true" />
+
+    <EditText
+        android:id="@id/editText"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/ratingBar"
+        android:layout_alignParentStart="true"
+        android:text="plain text" />
+
+    <EditText
+        android:id="@id/editText2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentStart="true"
+        android:layout_below="@id/ratingBar"
+        android:ems="3"
+        android:inputType="textPersonName"
+        android:text="Name" />
+
+    <EditText
+        android:id="@id/editText3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:layout_toEndOf="@id/editText2"
+        android:ems="2"
+        android:inputType="textPassword"
+        android:text="password" />
+
+    <EditText
+        android:id="@id/editText4"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/editText3"
+        android:layout_toEndOf="@id/editText3"
+        android:ems="3"
+        android:inputType="numberPassword"
+        android:text="numeric password" />
+
+    <EditText
+        android:id="@id/editText5"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/editText3"
+        android:layout_toStartOf="@id/editText6"
+        android:ems="7"
+        android:inputType="textEmailAddress"
+        android:text="email@domain.com" />
+
+    <EditText
+        android:id="@id/editText6"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_below="@id/editText4"
+        android:ems="7"
+        android:inputType="phone"
+        android:text="+11235554344" />
+
+    <EditText
+        android:id="@id/editText7"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/editText"
+        android:layout_toEndOf="@id/editText4"
+        android:ems="10"
+        android:inputType="textPostalAddress"
+        android:text="1600 Amphitheatre" />
+
+    <EditText
+        android:id="@id/editText9"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/editText5"
+        android:layout_alignParentStart="true"
+        android:ems="3"
+        android:inputType="time"
+        android:text="12:12" />
+
+    <RadioGroup
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/editText5"
+        android:layout_toEndOf="@id/editText9"
+        android:orientation="horizontal">
+
+        <RadioButton
+            android:id="@id/radioButton"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="New RadioButton" />
+
+        <RadioButton
+            android:id="@id/radioButton2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="New RadioButton" />
+
+    </RadioGroup>
+
+    <CheckedTextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="CheckedTextView"
+        android:id="@id/checkedTextView"
+        android:layout_below="@id/button2"
+        android:layout_alignParentEnd="true"
+        android:layout_alignStart="@id/button2" />
+
+    <DialerFilter
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/checkBox"
+        android:layout_toStartOf="@id/quickContactBadge"
+        android:id="@id/dialerFilter"
+        android:layout_above="@id/ratingBar"
+        android:layout_toEndOf="@id/seekBar">
+
+        <EditText
+            android:id="@android:id/hint"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="Hint" />
+
+        <EditText
+            android:id="@android:id/primary"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_below="@android:id/hint"
+            android:text="Primary" />
+    </DialerFilter>
+
+    <QuickContactBadge
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/quickContactBadge"
+        android:layout_below="@id/checkedTextView"
+        android:layout_alignParentEnd="true" />
+
+    <android.inputmethodservice.ExtractEditText
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="ExtractEditText"
+        android:id="@id/extractEditText"
+        android:layout_below="@id/editText9"
+        android:layout_alignParentEnd="true"
+        android:layout_alignStart="@id/checkedTextView" />
+
+    <ZoomControls
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/zoomControls"
+        android:layout_below="@id/editText9"
+        android:layout_alignParentStart="true" />
+
+    <TextureView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/textureView"
+        android:layout_below="@id/zoomControls"
+        android:layout_alignParentStart="true"
+        android:layout_alignBottom="@id/extractEditText"
+        android:layout_toStartOf="@id/editText3" />
+
+    <ListView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/listView"
+        android:layout_below="@id/textureView"
+        android:layout_alignParentStart="true"
+        android:layout_alignEnd="@id/textureView" />
+
+    <GridView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/gridView"
+        android:layout_below="@id/extractEditText"
+        android:layout_alignParentEnd="true"
+        android:layout_alignStart="@id/extractEditText" />
+
+    <ScrollView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/scrollView"
+        android:layout_below="@id/zoomControls"
+        android:layout_toRightOf="@id/listView"
+        android:layout_toLeftOf="@id/extractEditText">
+
+    <TabHost
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@id/tabHost">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <TabWidget
+                android:id="@android:id/tabs"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+
+            <FrameLayout
+                android:id="@android:id/tabcontent"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <LinearLayout
+                    android:id="@id/linearLayout"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical"/>
+
+                <LinearLayout
+                    android:id="@id/linearLayout2"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical"/>
+
+            </FrameLayout>
+        </LinearLayout>
+    </TabHost>
+</ScrollView>
+
+    <SearchView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:id="@id/searchView"
+        android:layout_alignBottom="@id/zoomControls"
+        android:layout_toEndOf="@id/seekBar" />
+
+</RelativeLayout>
diff --git a/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/values/ids.xml b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/values/ids.xml
new file mode 100644
index 0000000..1dc2fa0
--- /dev/null
+++ b/tools/layoutlib/bridge/tests/res/testApp/MyApplication/src/main/res/values/ids.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <item type="id" name="button" />
+    <item type="id" name="button2" />
+    <item type="id" name="checkBox" />
+    <item type="id" name="checkedTextView" />
+    <item type="id" name="dialerFilter" />
+    <item type="id" name="editText" />
+    <item type="id" name="editText2" />
+    <item type="id" name="editText3" />
+    <item type="id" name="editText4" />
+    <item type="id" name="editText5" />
+    <item type="id" name="editText6" />
+    <item type="id" name="editText7" />
+    <item type="id" name="editText8" />
+    <item type="id" name="editText9" />
+    <item type="id" name="extractEditText" />
+    <item type="id" name="frameLayout" />
+    <item type="id" name="gridLayout" />
+    <item type="id" name="gridView" />
+    <item type="id" name="imageButton" />
+    <item type="id" name="imageView" />
+    <item type="id" name="linearLayout" />
+    <item type="id" name="linearLayout2" />
+    <item type="id" name="listView" />
+    <item type="id" name="progressBar" />
+    <item type="id" name="progressBar2" />
+    <item type="id" name="progressBar3" />
+    <item type="id" name="progressBar4" />
+    <item type="id" name="quickContactBadge" />
+    <item type="id" name="radioButton" />
+    <item type="id" name="radioButton2" />
+    <item type="id" name="ratingBar" />
+    <item type="id" name="scrollView" />
+    <item type="id" name="searchView" />
+    <item type="id" name="seekBar" />
+    <item type="id" name="spinner" />
+    <item type="id" name="switch1" />
+    <item type="id" name="switch2" />
+    <item type="id" name="tabHost" />
+    <item type="id" name="textView" />
+    <item type="id" name="textView2" />
+    <item type="id" name="textView3" />
+    <item type="id" name="textView4" />
+    <item type="id" name="textureView" />
+    <item type="id" name="zoomControls" />
+</resources>
\ No newline at end of file
diff --git a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
index ac23564..f2a039e 100644
--- a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
+++ b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/Main.java
@@ -261,7 +261,7 @@
                 new ResourceRepository(new FolderWrapper(TEST_RES_DIR + APP_TEST_RES), false) {
             @NonNull
             @Override
-            protected ResourceItem createResourceItem(String name) {
+            protected ResourceItem createResourceItem(@NonNull String name) {
                 return new ResourceItem(name);
             }
         };
@@ -275,14 +275,27 @@
                 ConfigGenerator.getEnumMap(attrs), getLayoutLog());
     }
 
-    /**
-     * Create a new rendering session and test that rendering /layout/activity.xml on nexus 5
-     * doesn't throw any exceptions.
-     */
+    /** Text activity.xml */
     @Test
-    public void testRendering() throws ClassNotFoundException {
+    public void testActivity() throws ClassNotFoundException {
+        renderAndVerify("activity.xml", "activity.png");
+
+    }
+
+    /** Test allwidgets.xml */
+    @Test
+    public void testAllWidgets() throws ClassNotFoundException {
+        renderAndVerify("allwidgets.xml", "allwidgets.png");
+    }
+
+    /**
+     * Create a new rendering session and test that rendering given layout on nexus 5
+     * doesn't throw any exceptions and matches the provided image.
+     */
+    private void renderAndVerify(String layoutFileName, String goldenFileName)
+            throws ClassNotFoundException {
         // Create the layout pull parser.
-        LayoutPullParser parser = new LayoutPullParser(APP_TEST_RES + "/layout/activity.xml");
+        LayoutPullParser parser = new LayoutPullParser(APP_TEST_RES + "/layout/" + layoutFileName);
         // Create LayoutLibCallback.
         LayoutLibTestCallback layoutLibCallback = new LayoutLibTestCallback(getLogger());
         layoutLibCallback.initResources();
@@ -301,7 +314,7 @@
                     session.getResult().getErrorMessage());
         }
         try {
-            String goldenImagePath = APP_TEST_DIR + "/golden/activity.png";
+            String goldenImagePath = APP_TEST_DIR + "/golden/" + goldenFileName;
             ImageUtils.requireSimilar(goldenImagePath, session.getImage());
         } catch (IOException e) {
             getLogger().error(e, e.getMessage());
@@ -309,7 +322,7 @@
     }
 
     /**
-     * Uses Theme.Material and Target sdk version as 21.
+     * Uses Theme.Material and Target sdk version as 22.
      */
     private SessionParams getSessionParams(LayoutPullParser layoutParser,
             ConfigGenerator configGenerator, LayoutLibTestCallback layoutLibCallback) {
@@ -327,7 +340,7 @@
                 resourceResolver,
                 layoutLibCallback,
                 0,
-                21, // TODO: Make it more configurable to run tests for various versions.
+                22, // TODO: Make it more configurable to run tests for various versions.
                 getLayoutLog());
     }
 
@@ -381,17 +394,17 @@
                 }
 
                 @Override
-                public void warning(String msgFormat, Object... args) {
+                public void warning(@NonNull String msgFormat, Object... args) {
                     failWithMsg(msgFormat, args);
                 }
 
                 @Override
-                public void info(String msgFormat, Object... args) {
+                public void info(@NonNull String msgFormat, Object... args) {
                     // pass.
                 }
 
                 @Override
-                public void verbose(String msgFormat, Object... args) {
+                public void verbose(@NonNull String msgFormat, Object... args) {
                     // pass.
                 }
             };
@@ -399,7 +412,7 @@
         return mLogger;
     }
 
-    private static void failWithMsg(String msgFormat, Object... args) {
-        fail(msgFormat == null || args == null ? "" : String.format(msgFormat, args));
+    private static void failWithMsg(@NonNull String msgFormat, Object... args) {
+        fail(args == null ? "" : String.format(msgFormat, args));
     }
 }
diff --git a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java
index a5c3202..1191df6 100644
--- a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java
+++ b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/ConfigGenerator.java
@@ -21,12 +21,11 @@
 import com.android.ide.common.resources.configuration.DensityQualifier;
 import com.android.ide.common.resources.configuration.FolderConfiguration;
 import com.android.ide.common.resources.configuration.KeyboardStateQualifier;
-import com.android.ide.common.resources.configuration.LanguageQualifier;
 import com.android.ide.common.resources.configuration.LayoutDirectionQualifier;
+import com.android.ide.common.resources.configuration.LocaleQualifier;
 import com.android.ide.common.resources.configuration.NavigationMethodQualifier;
 import com.android.ide.common.resources.configuration.NetworkCodeQualifier;
 import com.android.ide.common.resources.configuration.NightModeQualifier;
-import com.android.ide.common.resources.configuration.RegionQualifier;
 import com.android.ide.common.resources.configuration.ScreenDimensionQualifier;
 import com.android.ide.common.resources.configuration.ScreenOrientationQualifier;
 import com.android.ide.common.resources.configuration.ScreenRatioQualifier;
@@ -158,10 +157,9 @@
         config.setUiModeQualifier(new UiModeQualifier(UiMode.NORMAL));
         config.setNightModeQualifier(new NightModeQualifier(NightMode.NOTNIGHT));
         config.setCountryCodeQualifier(new CountryCodeQualifier());
-        config.setLanguageQualifier(new LanguageQualifier());
         config.setLayoutDirectionQualifier(new LayoutDirectionQualifier());
         config.setNetworkCodeQualifier(new NetworkCodeQualifier());
-        config.setRegionQualifier(new RegionQualifier());
+        config.setLocaleQualifier(new LocaleQualifier());
         config.setVersionQualifier(new VersionQualifier());
         return config;
     }
diff --git a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java
index 0a5e798..5b648ef 100644
--- a/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java
+++ b/tools/layoutlib/bridge/tests/src/com/android/layoutlib/bridge/intensive/setup/LayoutLibTestCallback.java
@@ -23,8 +23,8 @@
 import com.android.ide.common.rendering.api.LayoutlibCallback;
 import com.android.ide.common.rendering.api.ResourceReference;
 import com.android.ide.common.rendering.api.ResourceValue;
-import com.android.resources.ResourceType;
 import com.android.ide.common.resources.IntArrayWrapper;
+import com.android.resources.ResourceType;
 import com.android.util.Pair;
 import com.android.utils.ILogger;
 
@@ -36,6 +36,8 @@
 
 import com.google.android.collect.Maps;
 
+import static org.junit.Assert.fail;
+
 @SuppressWarnings("deprecation") // For Pair
 public class LayoutLibTestCallback extends LayoutlibCallback {
 
@@ -121,7 +123,7 @@
 
     @Override
     public ILayoutPullParser getParser(String layoutName) {
-        org.junit.Assert.fail("This method shouldn't be called by this version of LayoutLib.");
+        fail("This method shouldn't be called by this version of LayoutLib.");
         return null;
     }