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;
}