summaryrefslogtreecommitdiffstats
path: root/libs/rs/rsProgram.cpp
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-11-25 13:22:07 -0800
committerJason Sams <rjsams@android.com>2009-11-25 13:22:07 -0800
commitbb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9 (patch)
tree55de9e729267eb463e07599b6b809fb4635c9472 /libs/rs/rsProgram.cpp
parent3fdee335fe95ab94ef1ee619ad37f9369447fde5 (diff)
downloadframeworks_base-bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9.zip
frameworks_base-bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9.tar.gz
frameworks_base-bb51c40d89c7dbdee7d7507fdfe0a64e8f4f87a9.tar.bz2
Begin gl2 support. Renderscript still uses GL1.1 by default. However, 2.0 can be enabled and will render most tests correctly.
Diffstat (limited to 'libs/rs/rsProgram.cpp')
-rw-r--r--libs/rs/rsProgram.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/libs/rs/rsProgram.cpp b/libs/rs/rsProgram.cpp
index ed5918b..8e9ba08 100644
--- a/libs/rs/rsProgram.cpp
+++ b/libs/rs/rsProgram.cpp
@@ -17,6 +17,9 @@
#include "rsContext.h"
#include "rsProgram.h"
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
using namespace android;
using namespace android::renderscript;
@@ -25,6 +28,10 @@ Program::Program(Context *rsc, Element *in, Element *out) : ObjectBase(rsc)
{
mAllocFile = __FILE__;
mAllocLine = __LINE__;
+ mDirty = true;
+ mShaderID = 0;
+ mAttribCount = 0;
+ mUniformCount = 0;
mElementIn.set(in);
mElementOut.set(out);
@@ -51,4 +58,41 @@ void Program::bindAllocation(Allocation *alloc)
mDirty = true;
}
+void Program::createShader()
+{
+}
+
+bool Program::loadShader(uint32_t type)
+{
+ mShaderID = glCreateShader(type);
+ rsAssert(mShaderID);
+
+ LOGV("Loading shader type %x", type);
+ LOGE(mShader.string());
+
+ if (mShaderID) {
+ const char * ss = mShader.string();
+ glShaderSource(mShaderID, 1, &ss, NULL);
+ glCompileShader(mShaderID);
+ GLint compiled = 0;
+ glGetShaderiv(mShaderID, GL_COMPILE_STATUS, &compiled);
+ if (!compiled) {
+ GLint infoLen = 0;
+ glGetShaderiv(mShaderID, GL_INFO_LOG_LENGTH, &infoLen);
+ if (infoLen) {
+ char* buf = (char*) malloc(infoLen);
+ if (buf) {
+ glGetShaderInfoLog(mShaderID, infoLen, NULL, buf);
+ LOGE("Could not compile shader \n%s\n", buf);
+ free(buf);
+ }
+ glDeleteShader(mShaderID);
+ mShaderID = 0;
+ return false;
+ }
+ }
+ }
+ LOGV("--Shader load result %x ", glGetError());
+ return true;
+}