Add 64bit large object support
Add HAL hooks for filling in LO fields.
Change-Id: Ib9bdee714a062de519d2a9708c1016404a1b11a4
Conflicts:
driver/rsdBcc.cpp
driver/rsdCore.cpp
rsAllocation.h
rs_hal.h
diff --git a/rsScriptC_Lib.cpp b/rsScriptC_Lib.cpp
index 9435a4a..26d8fb0 100644
--- a/rsScriptC_Lib.cpp
+++ b/rsScriptC_Lib.cpp
@@ -134,26 +134,36 @@
//
//////////////////////////////////////////////////////////////////////////////
-void rsrSetObject(const Context *rsc, ObjectBase **dst, ObjectBase * src) {
- //ALOGE("rsiSetObject %p,%p %p", vdst, *vdst, vsrc);
+static void SetObjectRef(const Context *rsc, const ObjectBase *dst, const ObjectBase *src) {
+ //ALOGE("setObjectRef %p,%p %p", rsc, dst, src);
if (src) {
CHECK_OBJ(src);
src->incSysRef();
}
- if (dst[0]) {
- CHECK_OBJ(dst[0]);
- dst[0]->decSysRef();
+ if (dst) {
+ CHECK_OBJ(dst);
+ dst->decSysRef();
}
- *dst = src;
}
-void rsrClearObject(const Context *rsc, ObjectBase **dst) {
- //ALOGE("rsiClearObject %p,%p", vdst, *vdst);
- if (dst[0]) {
- CHECK_OBJ(dst[0]);
- dst[0]->decSysRef();
+void rsrSetObject(const Context *rsc, void *dst, ObjectBase *src) {
+ ObjectBase **odst = (ObjectBase **)dst;
+ //ALOGE("rsrSetObject (base) %p,%p %p", dst, *odst, src);
+ SetObjectRef(rsc, odst[0], src);
+ if (src != NULL) {
+ src->callUpdateCacheObject(rsc, dst);
}
- *dst = NULL;
+}
+
+
+void rsrClearObject(const Context *rsc, void *dst) {
+ ObjectBase **odst = (ObjectBase **)dst;
+ //ALOGE("rsrClearObject %p,%p", odst, *odst);
+ if (odst[0]) {
+ CHECK_OBJ(odst[0]);
+ odst[0]->decSysRef();
+ }
+ *odst = NULL;
}
bool rsrIsObject(const Context *rsc, const ObjectBase *src) {