diff options
author | Robert Phillips <robertphillips@google.com> | 2018-01-24 14:52:02 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-24 14:52:11 +0000 |
commit | fe8da17f5333a0134a01b9fe4d7f67e3df949c61 (patch) | |
tree | bcffa405e17967214abcc9efcf75ede8d9cff689 /src/gpu/glsl | |
parent | 3a08c65b9612dd845623f0e880fd68b3be75fceb (diff) |
Revert "Revert "converted vertex shaders to device coords""
This reverts commit 29b3434e48ca41672266ac40f5b9e8f8a0405cb5.
Reason for revert: The Chrome perf regression is suspect & the Nexus 5 is broken w/o this CL.
Original change's description:
> 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>
TBR=csmartdalton@google.com,ethannicholas@google.com
Change-Id: Iff3c9fce65beeca16028ae59d4d08b1413b90530
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/99241
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@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, 21 insertions, 14 deletions
diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.cpp b/src/gpu/glsl/GrGLSLProgramBuilder.cpp index 118b904540..04ebc6ad8e 100644 --- a/src/gpu/glsl/GrGLSLProgramBuilder.cpp +++ b/src/gpu/glsl/GrGLSLProgramBuilder.cpp @@ -15,6 +15,7 @@ #include "glsl/GrGLSLGeometryProcessor.h" #include "glsl/GrGLSLVarying.h" #include "glsl/GrGLSLXferProcessor.h" +#include "SkSLCompiler.h" const int GrGLSLProgramBuilder::kVarsPerBlock = 8; @@ -74,13 +75,16 @@ void GrGLSLProgramBuilder::emitAndInstallPrimProc(const GrPrimitiveProcessor& pr this->nameExpression(outputCoverage, "outputCoverage"); SkASSERT(!fUniformHandles.fRTAdjustmentUni.isValid()); - GrShaderFlags rtAdjustVisibility = kVertex_GrShaderFlag; + GrShaderFlags rtAdjustVisibility; if (proc.willUseGeoShader()) { - rtAdjustVisibility |= kGeometry_GrShaderFlag; + rtAdjustVisibility = kGeometry_GrShaderFlag; + } else { + rtAdjustVisibility = kVertex_GrShaderFlag; } - fUniformHandles.fRTAdjustmentUni = this->uniformHandler()->addUniform(rtAdjustVisibility, - kFloat4_GrSLType, - "rtAdjustment"); + fUniformHandles.fRTAdjustmentUni = this->uniformHandler()->addUniform( + rtAdjustVisibility, + kFloat4_GrSLType, + SkSL::Compiler::RTADJUST_NAME); const char* rtAdjustName = this->uniformHandler()->getUniformCStr(fUniformHandles.fRTAdjustmentUni); diff --git a/src/gpu/glsl/GrGLSLUniformHandler.h b/src/gpu/glsl/GrGLSLUniformHandler.h index e1511c2578..662486eebe 100644 --- a/src/gpu/glsl/GrGLSLUniformHandler.h +++ b/src/gpu/glsl/GrGLSLUniformHandler.h @@ -12,6 +12,9 @@ #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 { @@ -51,7 +54,8 @@ public: int arrayCount, const char** outName = nullptr) { SkASSERT(!GrSLTypeIsCombinedSamplerType(type)); - return this->internalAddUniformArray(visibility, type, precision, name, true, arrayCount, + bool mangle = strncmp(name, GR_NO_MANGLE_PREFIX, strlen(GR_NO_MANGLE_PREFIX)); + return this->internalAddUniformArray(visibility, type, precision, name, mangle, arrayCount, outName); } @@ -61,7 +65,8 @@ public: int arrayCount, const char** outName = nullptr) { SkASSERT(!GrSLTypeIsCombinedSamplerType(type)); - return this->internalAddUniformArray(visibility, type, kDefault_GrSLPrecision, name, true, + bool mangle = strncmp(name, GR_NO_MANGLE_PREFIX, strlen(GR_NO_MANGLE_PREFIX)); + return this->internalAddUniformArray(visibility, type, kDefault_GrSLPrecision, name, mangle, arrayCount, outName); } diff --git a/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp b/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp index 1cf85f7249..dba57bb8a5 100644 --- a/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp +++ b/src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp @@ -23,16 +23,14 @@ 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.x * %s.x + %s.y," - "_posTmp.y * %s.z + %s.w, 0, 1);}", - rtAdjustName, rtAdjustName, rtAdjustName, rtAdjustName); + "sk_Position = float4(_posTmp, 0, 1);}"); } else if (kFloat3_GrSLType == devPosType) { - out->appendf("sk_Position = float4(dot(%s.xz, %s.xy), dot(%s.yz, %s.zw), 0, %s.z);", - devPos, rtAdjustName, devPos, rtAdjustName, devPos); + out->appendf("sk_Position = float4(%s.x , %s.y, 0, %s.z);", + devPos, devPos, devPos); } else { SkASSERT(kFloat2_GrSLType == devPosType); - 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); + out->appendf("sk_Position = float4(%s.x , %s.y, 0, 1);", + devPos, devPos); } } |