aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/glsl
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2018-01-23 16:39:42 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-23 22:23:30 +0000
commit29b3434e48ca41672266ac40f5b9e8f8a0405cb5 (patch)
tree2524748fc90c30ae887e6a086e6bb76ffaa05e81 /src/gpu/glsl
parent8524c30a971cd22fe1e3e0fd3db5988fe23272b6 (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.cpp14
-rw-r--r--src/gpu/glsl/GrGLSLUniformHandler.h9
-rw-r--r--src/gpu/glsl/GrGLSLVertexGeoBuilder.cpp12
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);
}
}