Move call to compiler from jni to core library code.

This commit is contained in:
Jason Sams
2009-06-05 17:35:09 -07:00
parent bb8505e7fd
commit 39ddc950c9
4 changed files with 42 additions and 22 deletions

View File

@@ -35,8 +35,6 @@
#include "../RenderScript.h"
#include "../RenderScriptEnv.h"
#include "acc/acc.h"
//#define LOG_API LOGE
#define LOG_API(...)
@@ -567,8 +565,6 @@ nScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef,
jint remaining;
jbyte* script_base = 0;
jbyte* script_ptr;
ACCscript* script = 0;
void* scriptEntry = 0;
if (!scriptRef) {
_exception = 1;
//_env->ThrowNew(IAEClass, "script == null");
@@ -594,22 +590,9 @@ nScriptCSetScript(JNIEnv *_env, jobject _this, jbyteArray scriptRef,
_env->GetPrimitiveArrayCritical(scriptRef, (jboolean *)0);
script_ptr = script_base + offset;
{
script = accCreateScript();
const char* scriptSource[] = {(const char*) script_ptr};
int scriptLength[] = {length} ;
accScriptSource(script, 1, scriptSource, scriptLength);
accCompileScript(script);
accGetScriptLabel(script, "main", (ACCvoid**) &scriptEntry);
}
if (scriptEntry) {
rsScriptCSetScript((void*) script, (void *)scriptEntry);
script = 0;
}
rsScriptCSetText((const char *)script_ptr, length);
exit:
if (script) {
accDeleteScript(script);
}
if (script_base) {
_env->ReleasePrimitiveArrayCritical(scriptRef, script_base,
_exception ? JNI_ABORT: 0);

View File

@@ -286,10 +286,14 @@ ScriptCSetOrtho {
}
ScriptCSetScript {
param void * accScript
param void * codePtr
}
ScriptCSetText {
param const char * text
param uint32_t length
}
ScriptCCreate {
ret RsScript
}

View File

@@ -28,6 +28,8 @@ ScriptC::ScriptC()
{
mAccScript = NULL;
mScript = NULL;
mScriptText = NULL;
mScriptTextLength = 0;
}
ScriptC::~ScriptC()
@@ -418,6 +420,21 @@ void ScriptCState::clear()
mScript = NULL;
mIsRoot = false;
mIsOrtho = true;
mScriptText = NULL;
mScriptTextLength = 0;
}
void ScriptCState::runCompiler()
{
mAccScript = accCreateScript();
LOGE("Compiler 1");
const char* scriptSource[] = {mScriptText};
int scriptLength[] = {mScriptTextLength} ;
accScriptSource(mAccScript, 1, scriptSource, scriptLength);
accCompileScript(mAccScript);
accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mScript);
LOGE("Compiler 1");
}
namespace android {
@@ -475,10 +492,20 @@ void rsi_ScriptCSetOrtho(Context * rsc, bool isOrtho)
ss->mIsOrtho = isOrtho;
}
void rsi_ScriptCSetText(Context *rsc, const char *text, uint32_t len)
{
ScriptCState *ss = &rsc->mScriptC;
ss->mScriptText = text;
ss->mScriptTextLength = len;
}
RsScript rsi_ScriptCCreate(Context * rsc)
{
ScriptCState *ss = &rsc->mScriptC;
ss->runCompiler();
ScriptC *s = new ScriptC();
s->mAccScript = ss->mAccScript;
ss->mAccScript = NULL;
@@ -491,7 +518,8 @@ RsScript rsi_ScriptCCreate(Context * rsc)
s->mClearStencil = ss->mClearStencil;
s->mIsRoot = ss->mIsRoot;
s->mIsOrtho = ss->mIsOrtho;
s->mScriptText = ss->mScriptText;
s->mScriptTextLength = ss->mScriptTextLength;
return s;
}

View File

@@ -39,6 +39,8 @@ public:
virtual bool run(Context *, uint32_t launchID);
const char * mScriptText;
uint32_t mScriptTextLength;
ACCscript* mAccScript;
rsc_RunScript mScript;
@@ -57,7 +59,9 @@ public:
ScriptCState();
~ScriptCState();
ACCscript* mAccScript;
ACCscript* mAccScript;
const char * mScriptText;
uint32_t mScriptTextLength;
rsc_RunScript mScript;
float mClearColor[4];
float mClearDepth;
@@ -68,6 +72,7 @@ public:
Vector<const Type *> mConstantBufferTypes;
void clear();
void runCompiler();
};