summaryrefslogtreecommitdiff
path: root/rsScriptC_LibGL.cpp
diff options
context:
space:
mode:
authorAlex Sakhartchouk <alexst@google.com>2011-04-01 14:19:01 -0700
committerAlex Sakhartchouk <alexst@google.com>2011-04-01 14:19:01 -0700
commit7d9c5ffccb7a5e682860f752403e5a03aed587be (patch)
tree34071eadb0ec94088dd73d1ebca75d01d48d51e3 /rsScriptC_LibGL.cpp
parent8d43eafdd2684b7bcb2554e65676dc914b7eabd7 (diff)
downloadrs-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.cpp40
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 }
};