diff options
author | Ethan Nicholas <ethannicholas@google.com> | 2018-01-23 16:39:42 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-23 22:23:30 +0000 |
commit | 29b3434e48ca41672266ac40f5b9e8f8a0405cb5 (patch) | |
tree | 2524748fc90c30ae887e6a086e6bb76ffaa05e81 /src/gpu/glsl | |
parent | 8524c30a971cd22fe1e3e0fd3db5988fe23272b6 (diff) |
Revert "converted vertex shaders to device coords"
This reverts commit e7e81c15c144b8133f696d0744ed9f7e8d06e936.
Reason for revert: Chrome perf regressions
Bug: skia:
Change-Id: I17fadc97c4b8e80bfdccbf123554614a00c58473
Reviewed-on: https://skia-review.googlesource.com/99040
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/gpu/glsl')
-rw-r--r-- | src/gpu/glsl/GrGLSLProgramBuilder.cpp | 14 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLUniformHandler.h | 9 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp | 12 |
3 files changed, 14 insertions, 21 deletions
diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.cpp b/src/gpu/glsl/GrGLSLProgramBuilder.cpp index 04ebc6ad8e..118b904540 100644 --- a/src/gpu/glsl/GrGLSLProgramBuilder.cpp +++ b/src/gpu/glsl/GrGLSLProgramBuilder.cpp @@ -15,7 +15,6 @@ #include "glsl/GrGLSLGeometryProcessor.h" #include "glsl/GrGLSLVarying.h" #include "glsl/GrGLSLXferProcessor.h" -#include "SkSLCompiler.h" const int GrGLSLProgramBuilder::kVarsPerBlock = 8; @@ -75,16 +74,13 @@ void GrGLSLProgramBuilder::emitAndInstallPrimProc(const GrPrimitiveProcessor& pr this->nameExpression(outputCoverage, "outputCoverage"); SkASSERT(!fUniformHandles.fRTAdjustmentUni.isValid()); - GrShaderFlags rtAdjustVisibility; + GrShaderFlags rtAdjustVisibility = kVertex_GrShaderFlag; if (proc.willUseGeoShader()) { - rtAdjustVisibility = kGeometry_GrShaderFlag; - } else { - rtAdjustVisibility = kVertex_GrShaderFlag; + rtAdjustVisibility |= kGeometry_GrShaderFlag; } - fUniformHandles.fRTAdjustmentUni = this->uniformHandler()->addUniform( - rtAdjustVisibility, - kFloat4_GrSLType, - SkSL::Compiler::RTADJUST_NAME); + fUniformHandles.fRTAdjustmentUni = this->uniformHandler()->addUniform(rtAdjustVisibility, + kFloat4_GrSLType, + "rtAdjustment"); const char* rtAdjustName = this->uniformHandler()->getUniformCStr(fUniformHandles.fRTAdjustmentUni); diff --git a/src/gpu/glsl/GrGLSLUniformHandler.h b/src/gpu/glsl/GrGLSLUniformHandler.h index 662486eebe..e1511c2578 100644 --- a/src/gpu/glsl/GrGLSLUniformHandler.h +++ b/src/gpu/glsl/GrGLSLUniformHandler.h @@ -12,9 +12,6 @@ #include "GrShaderVar.h" #include "GrSwizzle.h" -// variable names beginning with this prefix will not be mangled -#define GR_NO_MANGLE_PREFIX "sk_" - class GrGLSLProgramBuilder; class GrGLSLUniformHandler { @@ -54,8 +51,7 @@ public: int arrayCount, const char** outName = nullptr) { SkASSERT(!GrSLTypeIsCombinedSamplerType(type)); - bool mangle = strncmp(name, GR_NO_MANGLE_PREFIX, strlen(GR_NO_MANGLE_PREFIX)); - return this->internalAddUniformArray(visibility, type, precision, name, mangle, arrayCount, + return this->internalAddUniformArray(visibility, type, precision, name, true, arrayCount, outName); } @@ -65,8 +61,7 @@ public: int arrayCount, const char** outName = nullptr) { SkASSERT(!GrSLTypeIsCombinedSamplerType(type)); - bool mangle = strncmp(name, GR_NO_MANGLE_PREFIX, strlen(GR_NO_MANGLE_PREFIX)); - return this->internalAddUniformArray(visibility, type, kDefault_GrSLPrecision, name, mangle, + return this->internalAddUniformArray(visibility, type, kDefault_GrSLPrecision, name, true, arrayCount, outName); } diff --git a/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp b/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp index dba57bb8a5..1cf85f7249 100644 --- a/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp +++ b/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp @@ -23,14 +23,16 @@ void GrGLSLVertexGeoBuilder::emitNormalizedSkPosition(SkString* out, const char* out->appendf("{float2 _posTmp = %s;", devPos); } out->appendf("_posTmp = floor(_posTmp) + half2(0.5, 0.5);" - "sk_Position = float4(_posTmp, 0, 1);}"); + "sk_Position = float4(_posTmp.x * %s.x + %s.y," + "_posTmp.y * %s.z + %s.w, 0, 1);}", + rtAdjustName, rtAdjustName, rtAdjustName, rtAdjustName); } else if (kFloat3_GrSLType == devPosType) { - out->appendf("sk_Position = float4(%s.x , %s.y, 0, %s.z);", - devPos, devPos, devPos); + out->appendf("sk_Position = float4(dot(%s.xz, %s.xy), dot(%s.yz, %s.zw), 0, %s.z);", + devPos, rtAdjustName, devPos, rtAdjustName, devPos); } else { SkASSERT(kFloat2_GrSLType == devPosType); - out->appendf("sk_Position = float4(%s.x , %s.y, 0, 1);", - devPos, devPos); + out->appendf("sk_Position = float4(%s.x * %s.x + %s.y, %s.y * %s.z + %s.w, 0, 1);", + devPos, rtAdjustName, rtAdjustName, devPos, rtAdjustName, rtAdjustName); } } |