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

Unified Diff: src/gpu/gl/GrGLShaderBuilder.cpp

Issue 14633007: Key shader on whether frag pos read is relative to top-left or bottom-left (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 7 months 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
« src/gpu/gl/GrGLProgramDesc.cpp ('K') | « src/gpu/gl/GrGLShaderBuilder.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/gl/GrGLShaderBuilder.cpp
diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
index 98d7e4c97e80e486b9e837211fdff8a2e2939e0e..d15c974b2497f3c2a77c69d4b321056c5df3d383 100644
--- a/src/gpu/gl/GrGLShaderBuilder.cpp
+++ b/src/gpu/gl/GrGLShaderBuilder.cpp
@@ -112,7 +112,8 @@ GrGLShaderBuilder::GrGLShaderBuilder(const GrGLContextInfo& ctxInfo,
, fSetupFragPosition(false)
, fRTHeightUniform(GrGLUniformManager::kInvalidUniformHandle)
, fDstCopyTopLeftUniform (GrGLUniformManager::kInvalidUniformHandle)
- , fDstCopyScaleUniform (GrGLUniformManager::kInvalidUniformHandle) {
+ , fDstCopyScaleUniform (GrGLUniformManager::kInvalidUniformHandle)
+ , fTopLeftFragPosRead(kTopLeftFragPosRead_FragPosKey == desc.fFragPos) {
fPositionVar = &fVSAttrs.push_back();
fPositionVar->set(kVec2f_GrSLType, GrGLShaderVar::kAttribute_TypeModifier, "aPosition");
@@ -351,6 +352,14 @@ GrGLShaderBuilder::DstReadKey GrGLShaderBuilder::KeyForDstRead(const GrTexture*
return static_cast<DstReadKey>(key);
}
robertphillips 2013/05/10 13:53:58 // Note: this method only be called if the fragmen
bsalomon 2013/05/13 15:16:49 done (in the header)
+GrGLShaderBuilder::FragPosKey GrGLShaderBuilder::KeyForFragmentPosition(const GrRenderTarget* dst,
+ const GrGLCaps&) {
+ return kTopLeft_GrSurfaceOrigin == dst->origin() ?
robertphillips 2013/05/10 13:53:58 rm space?
bsalomon 2013/05/13 15:16:49 Changed to if/else.
+ kTopLeftFragPosRead_FragPosKey :
+ kBottomLeftFragPosRead_FragPosKey;
+}
+
+
const GrGLenum* GrGLShaderBuilder::GetTexParamSwizzle(GrPixelConfig config, const GrGLCaps& caps) {
if (caps.textureSwizzleSupport() && GrPixelConfigIsAlphaOnly(config)) {
if (caps.textureRedSupport()) {
@@ -473,8 +482,16 @@ const char* GrGLShaderBuilder::fragmentPosition() {
return "";
}
}
-#if 1
- if (fCtxInfo.caps()->fragCoordConventionsSupport()) {
+ if (fTopLeftFragPosRead) {
+ if (!fSetupFragPosition) {
+ fFSInputs.push_back().set(kVec4f_GrSLType,
+ GrGLShaderVar::kIn_TypeModifier,
+ "gl_FragCoord",
+ GrGLShaderVar::kDefault_Precision);
+ fSetupFragPosition = true;
+ }
+ return "gl_FragCoord";
+ } else if (fCtxInfo.caps()->fragCoordConventionsSupport()) {
if (!fSetupFragPosition) {
SkAssertResult(this->enablePrivateFeature(kFragCoordConventions_GLSLPrivateFeature));
fFSInputs.push_back().set(kVec4f_GrSLType,
@@ -506,18 +523,6 @@ const char* GrGLShaderBuilder::fragmentPosition() {
GrAssert(GrGLUniformManager::kInvalidUniformHandle != fRTHeightUniform);
return kCoordName;
}
-#else
- // This is the path we'll need to use once we have support for TopLeft
- // render targets.
- if (!fSetupFragPosition) {
- fFSInputs.push_back().set(kVec4f_GrSLType,
- GrGLShaderVar::kIn_TypeModifier,
- "gl_FragCoord",
- GrGLShaderVar::kDefault_Precision);
- fSetupFragPosition = true;
- }
- return "gl_FragCoord";
-#endif
}
« src/gpu/gl/GrGLProgramDesc.cpp ('K') | « src/gpu/gl/GrGLShaderBuilder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698