diff options
author | Alex Sakhartchouk <alexst@google.com> | 2011-04-01 14:19:01 -0700 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2011-04-01 14:19:01 -0700 |
commit | 7d9c5ffccb7a5e682860f752403e5a03aed587be (patch) | |
tree | 34071eadb0ec94088dd73d1ebca75d01d48d51e3 /rsScriptC_LibGL.cpp | |
parent | 8d43eafdd2684b7bcb2554e65676dc914b7eabd7 (diff) | |
download | rs-7d9c5ffccb7a5e682860f752403e5a03aed587be.tar.gz |
First draft of fbo in renderscript.
Updating samples and benchmark
Change-Id: I469bf8b842fca72b59475c8fa024c12cf0e14954
Diffstat (limited to 'rsScriptC_LibGL.cpp')
-rw-r--r-- | rsScriptC_LibGL.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/rsScriptC_LibGL.cpp b/rsScriptC_LibGL.cpp index 4047049a..1ed0f31b 100644 --- a/rsScriptC_LibGL.cpp +++ b/rsScriptC_LibGL.cpp @@ -86,6 +86,33 @@ static void SC_bindProgramRaster(RsProgramRaster pv) { rsi_ContextBindProgramRaster(rsc, pv); } +static void SC_bindFrameBufferObjectColorTarget(RsAllocation va, uint32_t slot) { + CHECK_OBJ(va); + GET_TLS(); + rsc->mFBOCache.bindColorTarget(rsc, static_cast<Allocation *>(va), slot); +} + +static void SC_bindFrameBufferObjectDepthTarget(RsAllocation va) { + CHECK_OBJ(va); + GET_TLS(); + rsc->mFBOCache.bindDepthTarget(rsc, static_cast<Allocation *>(va)); +} + +static void SC_clearFrameBufferObjectColorTarget(uint32_t slot) { + GET_TLS(); + rsc->mFBOCache.bindColorTarget(rsc, NULL, slot); +} + +static void SC_clearFrameBufferObjectDepthTarget() { + GET_TLS(); + rsc->mFBOCache.bindDepthTarget(rsc, NULL); +} + +static void SC_clearFrameBufferObjectTargets() { + GET_TLS(); + rsc->mFBOCache.resetAll(rsc); +} + ////////////////////////////////////////////////////////////////////////////// // VP ////////////////////////////////////////////////////////////////////////////// @@ -275,6 +302,10 @@ static void SC_color(float r, float g, float b, float a) { pf->setConstantColor(rsc, r, g, b, a); } +static void SC_finish() { + glFinish(); +} + static void SC_allocationSyncAll(RsAllocation va) { CHECK_OBJ(va); GET_TLS(); @@ -291,6 +322,7 @@ static void SC_allocationSyncAll2(RsAllocation va, RsAllocationUsageType source) static void SC_ClearColor(float r, float g, float b, float a) { GET_TLS(); + rsc->mFBOCache.setupGL2(rsc); rsc->setupProgramStore(); glClearColor(r, g, b, a); @@ -299,6 +331,7 @@ static void SC_ClearColor(float r, float g, float b, float a) { static void SC_ClearDepth(float v) { GET_TLS(); + rsc->mFBOCache.setupGL2(rsc); rsc->setupProgramStore(); glClearDepthf(v); @@ -444,8 +477,15 @@ static ScriptCState::SymbolTable_t gSyms[] = { { "_Z11rsgBindFont7rs_font", (void *)&SC_BindFont, false }, { "_Z12rsgFontColorffff", (void *)&SC_FontColor, false }, + { "_Z18rsgBindColorTarget13rs_allocationj", (void *)&SC_bindFrameBufferObjectColorTarget, false }, + { "_Z18rsgBindDepthTarget13rs_allocation", (void *)&SC_bindFrameBufferObjectDepthTarget, false }, + { "_Z19rsgClearColorTargetj", (void *)&SC_clearFrameBufferObjectColorTarget, false }, + { "_Z19rsgClearDepthTargetv", (void *)&SC_clearFrameBufferObjectDepthTarget, false }, + { "_Z24rsgClearAllRenderTargetsv", (void *)&SC_clearFrameBufferObjectTargets, false }, + // misc { "_Z5colorffff", (void *)&SC_color, false }, + { "_Z9rsgFinishv", (void *)&SC_finish, false }, { NULL, NULL, false } }; |