Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(295)

Unified Diff: src/gpu/effects/GrCustomCoordsTextureEffect.cpp

Issue 761563002: First step to moving vertex attributes to the geometryProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: adding test to ignore Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/effects/GrCustomCoordsTextureEffect.h ('k') | src/gpu/effects/GrDashingEffect.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/effects/GrCustomCoordsTextureEffect.cpp
diff --git a/src/gpu/effects/GrCustomCoordsTextureEffect.cpp b/src/gpu/effects/GrCustomCoordsTextureEffect.cpp
index f61a37bb6fbed860aa0fc97657007d61890ffd3d..45c30088898f708ab2c2244c0648bdef9b84d33d 100644
--- a/src/gpu/effects/GrCustomCoordsTextureEffect.cpp
+++ b/src/gpu/effects/GrCustomCoordsTextureEffect.cpp
@@ -21,33 +21,44 @@ public:
: INHERITED (factory) {}
virtual void emitCode(const EmitArgs& args) SK_OVERRIDE {
- const GrCustomCoordsTextureEffect& customCoordsTextureEffect =
+ const GrCustomCoordsTextureEffect& cte =
args.fGP.cast<GrCustomCoordsTextureEffect>();
- SkASSERT(1 == customCoordsTextureEffect.getVertexAttribs().count());
+
+ GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
GrGLVertToFrag v(kVec2f_GrSLType);
args.fPB->addVarying("TextureCoords", &v);
+ vsBuilder->codeAppendf("%s = %s;", v.vsOut(), cte.inTextureCoords()->fName);
- GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
- const GrShaderVar& inTextureCoords = customCoordsTextureEffect.inTextureCoords();
- vsBuilder->codeAppendf("%s = %s;", v.vsOut(), inTextureCoords.c_str());
+ if (cte.inColor()) {
+ args.fPB->addPassThroughAttribute(cte.inColor(), args.fOutputColor);
+ }
+
+ // setup output coords
+ vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), cte.inPosition()->fName);
+ vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), cte.inPosition()->fName);
// setup position varying
vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(),
- vsBuilder->uViewM(), vsBuilder->inPosition());
+ vsBuilder->uViewM(), cte.inPosition()->fName);
GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
- fsBuilder->codeAppendf("%s = ", args.fOutput);
- fsBuilder->appendTextureLookupAndModulate(args.fInput,
- args.fSamplers[0],
- v.fsIn(),
- kVec2f_GrSLType);
+ fsBuilder->codeAppendf("%s = ", args.fOutputCoverage);
+ fsBuilder->appendTextureLookup(args.fSamplers[0], v.fsIn(), kVec2f_GrSLType);
fsBuilder->codeAppend(";");
}
virtual void setData(const GrGLProgramDataManager&,
const GrProcessor&) SK_OVERRIDE {}
+ static inline void GenKey(const GrProcessor& proc, const GrGLCaps&,
+ GrProcessorKeyBuilder* b) {
+ const GrCustomCoordsTextureEffect& gp = proc.cast<GrCustomCoordsTextureEffect>();
+
+ b->add32(SkToBool(gp.inColor()));
+ }
+
+
private:
typedef GrGLGeometryProcessor INHERITED;
};
@@ -55,16 +66,22 @@ private:
///////////////////////////////////////////////////////////////////////////////
GrCustomCoordsTextureEffect::GrCustomCoordsTextureEffect(GrTexture* texture,
- const GrTextureParams& params)
- : fTextureAccess(texture, params)
- , fInTextureCoords(this->addVertexAttrib(GrShaderVar("inTextureCoords",
- kVec2f_GrSLType,
- GrShaderVar::kAttribute_TypeModifier))) {
+ const GrTextureParams& params,
+ bool hasColor)
+ : fTextureAccess(texture, params), fInColor(NULL) {
+ fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVertexAttribType));
+ if (hasColor) {
+ fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVertexAttribType));
+ this->setHasVertexColor();
+ }
+ fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords",
+ kVec2f_GrVertexAttribType));
this->addTextureAccess(&fTextureAccess);
}
bool GrCustomCoordsTextureEffect::onIsEqual(const GrGeometryProcessor& other) const {
- return true;
+ const GrCustomCoordsTextureEffect& gp = other.cast<GrCustomCoordsTextureEffect>();
+ return SkToBool(this->inColor()) == SkToBool(gp.inColor());
}
void GrCustomCoordsTextureEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const {
@@ -103,5 +120,5 @@ GrGeometryProcessor* GrCustomCoordsTextureEffect::TestCreate(SkRandom* random,
GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBilerp_FilterMode :
GrTextureParams::kNone_FilterMode);
- return GrCustomCoordsTextureEffect::Create(textures[texIdx], params);
+ return GrCustomCoordsTextureEffect::Create(textures[texIdx], params, random->nextBool());
}
« no previous file with comments | « src/gpu/effects/GrCustomCoordsTextureEffect.h ('k') | src/gpu/effects/GrDashingEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698