implement finish
Change-Id: If1ec99d0dbcf7aebf9d90d7779bf3ff34a8963f2
diff --git a/driver/rsdCore.cpp b/driver/rsdCore.cpp
index ed421ee..e38f92a 100644
--- a/driver/rsdCore.cpp
+++ b/driver/rsdCore.cpp
@@ -163,9 +163,9 @@
rsdScriptGroupSetOutput,
rsdScriptGroupExecute,
rsdScriptGroupDestroy
- }
+ },
-
+ NULL // finish
};
extern const RsdCpuReference::CpuSymbol * rsdLookupRuntimeStub(Context * pContext, char const* name);
diff --git a/rsContext.cpp b/rsContext.cpp
index 5cafd97..145759e 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -510,6 +510,7 @@
mDPI = 96;
mIsContextLite = false;
memset(&watchdog, 0, sizeof(watchdog));
+ memset(&mHal, 0, sizeof(mHal));
mForceCpu = false;
mContextType = RS_CONTEXT_TYPE_NORMAL;
mSynchronous = false;
@@ -721,6 +722,12 @@
}
#endif
+void Context::finish() {
+ if (mHal.funcs.finish) {
+ mHal.funcs.finish(this);
+ }
+}
+
void Context::assignName(ObjectBase *obj, const char *name, uint32_t len) {
rsAssert(!obj->getName());
obj->setName(name, len);
@@ -785,6 +792,7 @@
namespace renderscript {
void rsi_ContextFinish(Context *rsc) {
+ rsc->finish();
}
void rsi_ContextBindRootScript(Context *rsc, RsScript vs) {
diff --git a/rsContext.h b/rsContext.h
index 1dc7c62..ab56c27 100644
--- a/rsContext.h
+++ b/rsContext.h
@@ -151,6 +151,7 @@
void resume();
void setSurface(uint32_t w, uint32_t h, RsNativeWindow sur);
#endif
+ void finish();
void setPriority(int32_t p);
void destroyWorkerThreadResources();
diff --git a/rs_hal.h b/rs_hal.h
index 16bd890..9ae6fed 100644
--- a/rs_hal.h
+++ b/rs_hal.h
@@ -287,6 +287,7 @@
void (*destroy)(const Context *rsc, const ScriptGroup *sg);
} scriptgroup;
+ void (*finish)(const Context *rsc);
} RsdHalFunctions;