Add texturing support for USAGE_SHARED.

bug 8567006

Change-Id: I63a44a18797e4b3487560c608b0663f40a524388
diff --git a/driver/rsdAllocation.cpp b/driver/rsdAllocation.cpp
index 246e67c..985fc3d 100644
--- a/driver/rsdAllocation.cpp
+++ b/driver/rsdAllocation.cpp
@@ -374,9 +374,10 @@
         // in getSurface
     } else if (alloc->mHal.state.userProvidedPtr != NULL) {
         // user-provided allocation
-        // limitations: no faces, no LOD, USAGE_SCRIPT only
-        if (alloc->mHal.state.usageFlags != (RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_SHARED)) {
-            ALOGE("Can't use user-allocated buffers if usage is not USAGE_SCRIPT and USAGE_SHARED");
+        // limitations: no faces, no LOD, USAGE_SCRIPT or SCRIPT+TEXTURE only
+        if (!(alloc->mHal.state.usageFlags == (RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_SHARED) ||
+              alloc->mHal.state.usageFlags == (RS_ALLOCATION_USAGE_SCRIPT | RS_ALLOCATION_USAGE_SHARED | RS_ALLOCATION_USAGE_GRAPHICS_TEXTURE))) {
+            ALOGE("Can't use user-allocated buffers if usage is not USAGE_SCRIPT | USAGE_SHARED or USAGE_SCRIPT | USAGE_SHARED | USAGE_GRAPHICS_TEXTURE");
             return false;
         }
         if (alloc->getType()->getDimLOD() || alloc->getType()->getDimFaces()) {
@@ -598,6 +599,10 @@
         UploadToBufferObject(rsc, alloc);
     }
 
+    if (alloc->mHal.state.usageFlags & RS_ALLOCATION_USAGE_SHARED) {
+        // NOP in CPU driver for now
+    }
+
     drv->uploadDeferred = false;
 }