summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorAlex Sakhartchouk <alexst@google.com>2010-09-03 12:58:28 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-09-03 12:58:28 -0700
commit355383e424882b590139590296562d644dd97a95 (patch)
tree25362d240b63e68a881f0beb6314323ea53300d5 /libs
parent78e42751f33177d9fe1c9d3a4e996c0b48390737 (diff)
parentcaaac0f8271ddc34c1163cb45b4026c014b3ec12 (diff)
downloadframeworks_base-355383e424882b590139590296562d644dd97a95.zip
frameworks_base-355383e424882b590139590296562d644dd97a95.tar.gz
frameworks_base-355383e424882b590139590296562d644dd97a95.tar.bz2
Merge "Fixing fragment shader bounding code"
Diffstat (limited to 'libs')
-rw-r--r--libs/rs/rsProgramFragment.cpp26
-rw-r--r--libs/rs/rsProgramFragment.h1
2 files changed, 12 insertions, 15 deletions
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index ec9c569..83321d3 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -62,15 +62,6 @@ ProgramFragment::ProgramFragment(Context *rsc, const uint32_t * params,
mTextureEnableMask |= 2;
}
- mUniformCount = 0;
- mUniformNames[mUniformCount++].setTo("uni_Tex0");
- mUniformNames[mUniformCount++].setTo("uni_Tex1");
-
- mConstantColorUniformIndex = -1;
- //if (!mVaryingColor) {
- mConstantColorUniformIndex = mUniformCount;
- mUniformNames[mUniformCount++].setTo("uni_Color");
- //}
init(rsc);
}
@@ -89,10 +80,6 @@ ProgramFragment::ProgramFragment(Context *rsc, const char * shaderText,
LOGE("Custom FP");
- mUniformCount = 2;
- mUniformNames[0].setTo("uni_Tex0");
- mUniformNames[1].setTo("uni_Tex1");
-
mTextureEnableMask = (1 << mTextureCount) -1;
init(rsc);
@@ -156,7 +143,7 @@ void ProgramFragment::setupGL2(const Context *rsc, ProgramFragmentState *state,
rsc->checkError("ProgramFragment::setupGL2 tex env");
}
- glUniform1i(sc->fragUniformSlot(ct), ct);
+ glUniform1i(sc->fragUniformSlot(mTextureUniformIndexStart + ct), ct);
rsc->checkError("ProgramFragment::setupGL2 uniforms");
}
@@ -177,12 +164,12 @@ void ProgramFragment::createShader()
mShader.append("uniform vec4 uni_Color;\n");
if (mUserShader.length() > 1) {
+ appendUserConstants();
for (uint32_t ct=0; ct < mTextureCount; ct++) {
char buf[256];
sprintf(buf, "uniform sampler2D uni_Tex%i;\n", ct);
mShader.append(buf);
}
- appendUserConstants();
mShader.append(mUserShader);
} else {
uint32_t mask = mTextureEnableMask;
@@ -275,11 +262,20 @@ void ProgramFragment::createShader()
void ProgramFragment::init(Context *rsc)
{
+ mUniformCount = 0;
+ //if (!mVaryingColor) {
+ mConstantColorUniformIndex = mUniformCount;
+ mUniformNames[mUniformCount++].setTo("uni_Color");
+ //}
+
if (mUserShader.size() > 0) {
for (uint32_t ct=0; ct < mConstantCount; ct++) {
initAddUserElement(mConstantTypes[ct]->getElement(), mUniformNames, &mUniformCount, "UNI_");
}
}
+ mTextureUniformIndexStart = mUniformCount;
+ mUniformNames[mUniformCount++].setTo("uni_Tex0");
+ mUniformNames[mUniformCount++].setTo("uni_Tex1");
createShader();
}
diff --git a/libs/rs/rsProgramFragment.h b/libs/rs/rsProgramFragment.h
index 7c1598e..f08bb25 100644
--- a/libs/rs/rsProgramFragment.h
+++ b/libs/rs/rsProgramFragment.h
@@ -57,6 +57,7 @@ protected:
float mConstantColor[4];
int32_t mConstantColorUniformIndex;
+ int32_t mTextureUniformIndexStart;
};
class ProgramFragmentState