Merge "Add USAGE_SHARED to driver."
diff --git a/cpu_ref/rsCpuRuntimeMath.cpp b/cpu_ref/rsCpuRuntimeMath.cpp
index cf2c8a4..c8c24dc 100644
--- a/cpu_ref/rsCpuRuntimeMath.cpp
+++ b/cpu_ref/rsCpuRuntimeMath.cpp
@@ -83,20 +83,6 @@
 static int16_t SC_clz_i16(int16_t v) {return (int16_t)__builtin_clz(v);}
 static int8_t SC_clz_i8(int8_t v) {return (int8_t)__builtin_clz(v);}
 
-static uint32_t SC_max_u32(uint32_t v, uint32_t v2) {return rsMax(v, v2);}
-static uint16_t SC_max_u16(uint16_t v, uint16_t v2) {return rsMax(v, v2);}
-static uint8_t SC_max_u8(uint8_t v, uint8_t v2) {return rsMax(v, v2);}
-static int32_t SC_max_i32(int32_t v, int32_t v2) {return rsMax(v, v2);}
-static int16_t SC_max_i16(int16_t v, int16_t v2) {return rsMax(v, v2);}
-static int8_t SC_max_i8(int8_t v, int8_t v2) {return rsMax(v, v2);}
-
-static uint32_t SC_min_u32(uint32_t v, uint32_t v2) {return rsMin(v, v2);}
-static uint16_t SC_min_u16(uint16_t v, uint16_t v2) {return rsMin(v, v2);}
-static uint8_t SC_min_u8(uint8_t v, uint8_t v2) {return rsMin(v, v2);}
-static int32_t SC_min_i32(int32_t v, int32_t v2) {return rsMin(v, v2);}
-static int16_t SC_min_i16(int16_t v, int16_t v2) {return rsMin(v, v2);}
-static int8_t SC_min_i8(int8_t v, int8_t v2) {return rsMin(v, v2);}
-
 //////////////////////////////////////////////////////////////////////////////
 // Float util
 //////////////////////////////////////////////////////////////////////////////
@@ -394,7 +380,6 @@
     { "_Z4exp2f", (void *)&exp2f, true },
     { "_Z5exp10f", (void *)&SC_exp10, true },
     { "_Z5expm1f", (void *)&expm1f, true },
-    { "_Z4fabsf", (void *)&fabsf, true },
     { "_Z4fdimff", (void *)&fdimf, true },
     { "_Z5floorf", (void *)&floorf, true },
     { "_Z3fmafff", (void *)&fmaf, true },
@@ -441,18 +426,6 @@
     { "_Z3clzi", (void *)&SC_clz_i32, true },
     { "_Z3clzs", (void *)&SC_clz_i16, true },
     { "_Z3clzc", (void *)&SC_clz_i8, true },
-    { "_Z3maxjj", (void *)&SC_max_u32, true },
-    { "_Z3maxtt", (void *)&SC_max_u16, true },
-    { "_Z3maxhh", (void *)&SC_max_u8, true },
-    { "_Z3maxii", (void *)&SC_max_i32, true },
-    { "_Z3maxss", (void *)&SC_max_i16, true },
-    { "_Z3maxcc", (void *)&SC_max_i8, true },
-    { "_Z3minjj", (void *)&SC_min_u32, true },
-    { "_Z3mintt", (void *)&SC_min_u16, true },
-    { "_Z3minhh", (void *)&SC_min_u8, true },
-    { "_Z3minii", (void *)&SC_min_i32, true },
-    { "_Z3minss", (void *)&SC_min_i16, true },
-    { "_Z3mincc", (void *)&SC_min_i8, true },
 
     { "_Z5clampfff", (void *)&SC_clamp_f32, true },
     { "_Z3maxff", (void *)&SC_max_f32, true },
diff --git a/driver/rsdAllocation.cpp b/driver/rsdAllocation.cpp
index b41880a..090c376 100644
--- a/driver/rsdAllocation.cpp
+++ b/driver/rsdAllocation.cpp
@@ -25,7 +25,7 @@
 #include "hardware/gralloc.h"
 #include "ui/Rect.h"
 #include "ui/GraphicBufferMapper.h"
-#include "gui/SurfaceTexture.h"
+#include "gui/GLConsumer.h"
 
 #include <GLES/gl.h>
 #include <GLES2/gl2.h>
@@ -302,6 +302,7 @@
             ptr = (uint8_t *)malloc(allocSize);
         }
         if (!ptr) {
+            alloc->mHal.drv = NULL;
             free(drv);
             return false;
         }
diff --git a/driver/rsdGL.cpp b/driver/rsdGL.cpp
index 80fa137..2b4b925 100644
--- a/driver/rsdGL.cpp
+++ b/driver/rsdGL.cpp
@@ -331,7 +331,7 @@
     // Create a BufferQueue with a fake consumer
     sp<BufferQueue> bq = new BufferQueue();
     bq->consumerConnect(new DummyConsumer());
-    sp<SurfaceTextureClient> stc(new SurfaceTextureClient(static_cast<sp<ISurfaceTexture> >(bq)));
+    sp<SurfaceTextureClient> stc(new SurfaceTextureClient(static_cast<sp<IGraphicBufferProducer> >(bq)));
 
     dc->gl.egl.surfaceDefault = eglCreateWindowSurface(dc->gl.egl.display, dc->gl.egl.config,
                                                        static_cast<ANativeWindow*>(stc.get()),
diff --git a/rsAllocation.cpp b/rsAllocation.cpp
index f4f6d95..db3b958 100644
--- a/rsAllocation.cpp
+++ b/rsAllocation.cpp
@@ -20,7 +20,7 @@
 #include "rs_hal.h"
 
 #include "system/window.h"
-#include "gui/SurfaceTexture.h"
+#include "gui/GLConsumer.h"
 
 using namespace android;
 using namespace android::renderscript;
@@ -470,7 +470,7 @@
     return id;
 }
 
-void Allocation::setSurfaceTexture(const Context *rsc, SurfaceTexture *st) {
+void Allocation::setSurfaceTexture(const Context *rsc, GLConsumer *st) {
     if(st != mHal.state.surfaceTexture) {
         if(mHal.state.surfaceTexture != NULL) {
             mHal.state.surfaceTexture->decStrong(NULL);
@@ -669,7 +669,7 @@
 
 void rsi_AllocationGetSurfaceTextureID2(Context *rsc, RsAllocation valloc, void *vst, size_t len) {
     Allocation *alloc = static_cast<Allocation *>(valloc);
-    alloc->setSurfaceTexture(rsc, static_cast<SurfaceTexture *>(vst));
+    alloc->setSurfaceTexture(rsc, static_cast<GLConsumer *>(vst));
 }
 
 void rsi_AllocationSetSurface(Context *rsc, RsAllocation valloc, RsNativeWindow sur) {
diff --git a/rsAllocation.h b/rsAllocation.h
index 5ee9afb..637bf4e 100644
--- a/rsAllocation.h
+++ b/rsAllocation.h
@@ -23,7 +23,7 @@
 
 // ---------------------------------------------------------------------------
 namespace android {
-class SurfaceTexture;
+class GLConsumer;
 
 namespace renderscript {
 
@@ -64,7 +64,7 @@
             void * userProvidedPtr;
             int32_t surfaceTextureID;
             ANativeWindow *wndSurface;
-            SurfaceTexture *surfaceTexture;
+            GLConsumer *surfaceTexture;
             RsDataType eType;
         };
         State state;
@@ -154,7 +154,7 @@
     }
 
     int32_t getSurfaceTextureID(const Context *rsc);
-    void setSurfaceTexture(const Context *rsc, SurfaceTexture *st);
+    void setSurfaceTexture(const Context *rsc, GLConsumer *st);
     void setSurface(const Context *rsc, RsNativeWindow sur);
     void ioSend(const Context *rsc);
     void ioReceive(const Context *rsc);