aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2016-11-21 13:41:08 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-21 19:13:43 +0000
commit99938a8ef24e2dd5b39f78638742e9b50ab6d9bf (patch)
treee3842210db20a4574e9cec37ae7f049aaff27b65
parentd728f0c1a94fe926b59d8ebc9ae174019ccd3606 (diff)
Merge GrGLSLShaderVar and GrShaderVar
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5087 Change-Id: Ib8943a1da1ea495554feaf5b0992b94fbb9539ab Reviewed-on: https://skia-review.googlesource.com/5087 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
-rw-r--r--bench/GLInstancedArraysBench.cpp10
-rw-r--r--bench/GLVec4ScalarBench.cpp12
-rw-r--r--bench/GLVertexAttributesBench.cpp22
-rw-r--r--experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp46
-rw-r--r--gn/gpu.gni2
-rw-r--r--include/gpu/GrShaderVar.h218
-rw-r--r--src/effects/GrAlphaThresholdFragmentProcessor.cpp1
-rw-r--r--src/effects/SkBlurMaskFilter.cpp1
-rw-r--r--src/effects/SkLightingImageFilter.cpp51
-rw-r--r--src/effects/SkMagnifierImageFilter.cpp1
-rw-r--r--src/effects/SkMorphologyImageFilter.cpp1
-rw-r--r--src/effects/SkPerlinNoiseShader.cpp14
-rw-r--r--src/effects/gradients/SkGradientShader.cpp1
-rw-r--r--src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp10
-rw-r--r--src/gpu/GrOvalRenderer.cpp1
-rw-r--r--src/gpu/GrShaderVar.cpp44
-rw-r--r--src/gpu/batches/GrPLSPathRenderer.cpp6
-rw-r--r--src/gpu/effects/GrBezierEffect.cpp33
-rw-r--r--src/gpu/effects/GrBicubicEffect.cpp15
-rw-r--r--src/gpu/effects/GrConfigConversionEffect.cpp3
-rw-r--r--src/gpu/effects/GrConvexPolyEffect.cpp1
-rw-r--r--src/gpu/effects/GrConvolutionEffect.cpp3
-rw-r--r--src/gpu/effects/GrDitherEffect.cpp1
-rw-r--r--src/gpu/effects/GrGammaEffect.cpp4
-rw-r--r--src/gpu/effects/GrMatrixConvolutionEffect.cpp1
-rw-r--r--src/gpu/effects/GrOvalEffect.cpp2
-rw-r--r--src/gpu/effects/GrRRectEffect.cpp1
-rw-r--r--src/gpu/effects/GrTextureDomain.cpp1
-rw-r--r--src/gpu/gl/GrGLGpu.cpp59
-rw-r--r--src/gpu/gl/GrGLProgramDataManager.cpp16
-rw-r--r--src/gpu/gl/GrGLProgramDataManager.h12
-rw-r--r--src/gpu/gl/GrGLTexture.cpp1
-rw-r--r--src/gpu/gl/GrGLUniformHandler.cpp4
-rw-r--r--src/gpu/gl/GrGLUniformHandler.h4
-rw-r--r--src/gpu/glsl/GrGLSLBlend.cpp30
-rw-r--r--src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp16
-rw-r--r--src/gpu/glsl/GrGLSLFragmentShaderBuilder.h2
-rw-r--r--src/gpu/glsl/GrGLSLProgramBuilder.cpp1
-rw-r--r--src/gpu/glsl/GrGLSLProgramBuilder.h9
-rw-r--r--src/gpu/glsl/GrGLSLShaderBuilder.cpp16
-rw-r--r--src/gpu/glsl/GrGLSLShaderBuilder.h8
-rw-r--r--src/gpu/glsl/GrGLSLShaderVar.h242
-rw-r--r--src/gpu/glsl/GrGLSLUniformHandler.h7
-rw-r--r--src/gpu/glsl/GrGLSLVarying.cpp18
-rw-r--r--src/gpu/glsl/GrGLSLVarying.h4
-rw-r--r--src/gpu/glsl/GrGLSLXferProcessor.cpp1
-rw-r--r--src/gpu/instanced/InstanceProcessor.cpp3
-rw-r--r--src/gpu/vk/GrVkCopyManager.cpp1
-rw-r--r--src/gpu/vk/GrVkPipelineStateBuilder.cpp6
-rw-r--r--src/gpu/vk/GrVkPipelineStateBuilder.h4
-rw-r--r--src/gpu/vk/GrVkPipelineStateDataManager.cpp24
-rw-r--r--src/gpu/vk/GrVkUniformHandler.cpp4
-rw-r--r--src/gpu/vk/GrVkUniformHandler.h11
-rw-r--r--src/gpu/vk/GrVkVaryingHandler.cpp2
-rw-r--r--tests/EGLImageTest.cpp1
55 files changed, 495 insertions, 517 deletions
diff --git a/bench/GLInstancedArraysBench.cpp b/bench/GLInstancedArraysBench.cpp
index a97e6c8a17..ca20673988 100644
--- a/bench/GLInstancedArraysBench.cpp
+++ b/bench/GLInstancedArraysBench.cpp
@@ -11,12 +11,12 @@
#if SK_SUPPORT_GPU
#include "GLBench.h"
+#include "GrShaderVar.h"
#include "gl/GrGLContext.h"
#include "gl/GrGLInterface.h"
#include "gl/GrGLUtil.h"
#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLCaps.h"
-#include "glsl/GrGLSLShaderVar.h"
/*
* This is a native GL benchmark for instanced arrays vs vertex buffer objects. To benchmark this
@@ -111,9 +111,9 @@ GrGLuint GLCpuPosInstancedArraysBench::setupShader(const GrGLContext* ctx) {
const char* version = glslCaps->versionDeclString();
// setup vertex shader
- GrGLSLShaderVar aPosition("a_position", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar aColor("a_color", kVec3f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar oColor("o_color", kVec3f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar aPosition("a_position", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar aColor("a_color", kVec3f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar oColor("o_color", kVec3f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString vshaderTxt(version);
aPosition.appendDecl(glslCaps, &vshaderTxt);
@@ -131,7 +131,7 @@ GrGLuint GLCpuPosInstancedArraysBench::setupShader(const GrGLContext* ctx) {
"}\n");
// setup fragment shader
- GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString fshaderTxt(version);
GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, *glslCaps, &fshaderTxt);
oColor.setTypeModifier(GrShaderVar::kIn_TypeModifier);
diff --git a/bench/GLVec4ScalarBench.cpp b/bench/GLVec4ScalarBench.cpp
index 01eda889d6..0da0a0dc0e 100644
--- a/bench/GLVec4ScalarBench.cpp
+++ b/bench/GLVec4ScalarBench.cpp
@@ -11,12 +11,12 @@
#if SK_SUPPORT_GPU
#include "GLBench.h"
+#include "GrShaderVar.h"
#include "gl/GrGLContext.h"
#include "gl/GrGLInterface.h"
#include "gl/GrGLUtil.h"
#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLCaps.h"
-#include "glsl/GrGLSLShaderVar.h"
#include <stdio.h>
@@ -101,10 +101,10 @@ GrGLuint GLVec4ScalarBench::setupShader(const GrGLContext* ctx) {
// corner of the screen than the previous circle.
// set up vertex shader; this is a trivial vertex shader that passes through position and color
- GrGLSLShaderVar aPosition("a_position", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar oPosition("o_position", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier);
- GrGLSLShaderVar aColor("a_color", kVec3f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar oColor("o_color", kVec3f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar aPosition("a_position", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar oPosition("o_position", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar aColor("a_color", kVec3f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar oColor("o_color", kVec3f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString vshaderTxt(version);
aPosition.appendDecl(glslCaps, &vshaderTxt);
@@ -129,7 +129,7 @@ GrGLuint GLVec4ScalarBench::setupShader(const GrGLContext* ctx) {
// coded center and compare that to some hard-coded circle radius to compute a coverage.
// Then, this coverage is mixed with the coverage from the previous stage and passed to the
// next stage.
- GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString fshaderTxt(version);
GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, *glslCaps, &fshaderTxt);
oPosition.setTypeModifier(GrShaderVar::kIn_TypeModifier);
diff --git a/bench/GLVertexAttributesBench.cpp b/bench/GLVertexAttributesBench.cpp
index 1bd4ff3f30..c588f9b6b8 100644
--- a/bench/GLVertexAttributesBench.cpp
+++ b/bench/GLVertexAttributesBench.cpp
@@ -11,12 +11,12 @@
#if SK_SUPPORT_GPU
#include "GLBench.h"
+#include "GrShaderVar.h"
#include "gl/GrGLContext.h"
#include "gl/GrGLInterface.h"
#include "gl/GrGLUtil.h"
#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLCaps.h"
-#include "glsl/GrGLSLShaderVar.h"
#include <stdio.h>
/*
@@ -69,9 +69,9 @@ GrGLuint GLVertexAttributesBench::setupShader(const GrGLContext* ctx, uint32_t a
const char* version = glslCaps->versionDeclString();
// setup vertex shader
- GrGLSLShaderVar aPosition("a_position", kVec4f_GrSLType, GrShaderVar::kIn_TypeModifier);
- SkTArray<GrGLSLShaderVar> aVars;
- SkTArray<GrGLSLShaderVar> oVars;
+ GrShaderVar aPosition("a_position", kVec4f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ SkTArray<GrShaderVar> aVars;
+ SkTArray<GrShaderVar> oVars;
SkString vshaderTxt(version);
aPosition.appendDecl(glslCaps, &vshaderTxt);
@@ -80,9 +80,9 @@ GrGLuint GLVertexAttributesBench::setupShader(const GrGLContext* ctx, uint32_t a
for (uint32_t i = 0; i < attribs; i++) {
SkString aname;
aname.appendf("a_color_%d", i);
- aVars.push_back(GrGLSLShaderVar(aname.c_str(),
- kVec4f_GrSLType,
- GrShaderVar::kIn_TypeModifier));
+ aVars.push_back(GrShaderVar(aname.c_str(),
+ kVec4f_GrSLType,
+ GrShaderVar::kIn_TypeModifier));
aVars.back().appendDecl(glslCaps, &vshaderTxt);
vshaderTxt.append(";\n");
@@ -91,9 +91,9 @@ GrGLuint GLVertexAttributesBench::setupShader(const GrGLContext* ctx, uint32_t a
for (uint32_t i = 0; i < maxAttribs; i++) {
SkString oname;
oname.appendf("o_color_%d", i);
- oVars.push_back(GrGLSLShaderVar(oname.c_str(),
- kVec4f_GrSLType,
- GrShaderVar::kOut_TypeModifier));
+ oVars.push_back(GrShaderVar(oname.c_str(),
+ kVec4f_GrSLType,
+ GrShaderVar::kOut_TypeModifier));
oVars.back().appendDecl(glslCaps, &vshaderTxt);
vshaderTxt.append(";\n");
}
@@ -115,7 +115,7 @@ GrGLuint GLVertexAttributesBench::setupShader(const GrGLContext* ctx, uint32_t a
vshaderTxt.append("}\n");
// setup fragment shader
- GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString fshaderTxt(version);
GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, *glslCaps, &fshaderTxt);
diff --git a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
index da13732ba7..1dcd8de888 100644
--- a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
+++ b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
@@ -774,15 +774,15 @@ void GrGLPerlinNoise2::emitCode(EmitArgs& args) {
const char* dotLattice = "dot(((%s.ga + %s.rb * vec2(%s)) * vec2(2.0) - vec2(1.0)), %s);";
// Add noise function
- static const GrGLSLShaderVar gPerlinNoiseArgs[] = {
- GrGLSLShaderVar(chanCoord, kFloat_GrSLType),
- GrGLSLShaderVar(noiseVec, kVec2f_GrSLType)
+ static const GrShaderVar gPerlinNoiseArgs[] = {
+ GrShaderVar(chanCoord, kFloat_GrSLType),
+ GrShaderVar(noiseVec, kVec2f_GrSLType)
};
- static const GrGLSLShaderVar gPerlinNoiseStitchArgs[] = {
- GrGLSLShaderVar(chanCoord, kFloat_GrSLType),
- GrGLSLShaderVar(noiseVec, kVec2f_GrSLType),
- GrGLSLShaderVar(stitchData, kVec2f_GrSLType)
+ static const GrShaderVar gPerlinNoiseStitchArgs[] = {
+ GrShaderVar(chanCoord, kFloat_GrSLType),
+ GrShaderVar(noiseVec, kVec2f_GrSLType),
+ GrShaderVar(stitchData, kVec2f_GrSLType)
};
SkString noiseCode;
@@ -1157,8 +1157,8 @@ void GrGLImprovedPerlinNoise::emitCode(EmitArgs& args) {
const char* zUni = uniformHandler->getUniformCStr(fZUni);
// fade function
- static const GrGLSLShaderVar fadeArgs[] = {
- GrGLSLShaderVar("t", kVec3f_GrSLType)
+ static const GrShaderVar fadeArgs[] = {
+ GrShaderVar("t", kVec3f_GrSLType)
};
SkString fadeFuncName;
fsBuilder->emitFunction(kVec3f_GrSLType, "fade", SK_ARRAY_COUNT(fadeArgs),
@@ -1167,8 +1167,8 @@ void GrGLImprovedPerlinNoise::emitCode(EmitArgs& args) {
&fadeFuncName);
// perm function
- static const GrGLSLShaderVar permArgs[] = {
- GrGLSLShaderVar("x", kFloat_GrSLType)
+ static const GrShaderVar permArgs[] = {
+ GrShaderVar("x", kFloat_GrSLType)
};
SkString permFuncName;
SkString permCode("return ");
@@ -1181,9 +1181,9 @@ void GrGLImprovedPerlinNoise::emitCode(EmitArgs& args) {
permCode.c_str(), &permFuncName);
// grad function
- static const GrGLSLShaderVar gradArgs[] = {
- GrGLSLShaderVar("x", kFloat_GrSLType),
- GrGLSLShaderVar("p", kVec3f_GrSLType)
+ static const GrShaderVar gradArgs[] = {
+ GrShaderVar("x", kFloat_GrSLType),
+ GrShaderVar("p", kVec3f_GrSLType)
};
SkString gradFuncName;
SkString gradCode("return dot(");
@@ -1194,18 +1194,18 @@ void GrGLImprovedPerlinNoise::emitCode(EmitArgs& args) {
gradCode.c_str(), &gradFuncName);
// lerp function
- static const GrGLSLShaderVar lerpArgs[] = {
- GrGLSLShaderVar("a", kFloat_GrSLType),
- GrGLSLShaderVar("b", kFloat_GrSLType),
- GrGLSLShaderVar("w", kFloat_GrSLType)
+ static const GrShaderVar lerpArgs[] = {
+ GrShaderVar("a", kFloat_GrSLType),
+ GrShaderVar("b", kFloat_GrSLType),
+ GrShaderVar("w", kFloat_GrSLType)
};
SkString lerpFuncName;
fsBuilder->emitFunction(kFloat_GrSLType, "lerp", SK_ARRAY_COUNT(lerpArgs), lerpArgs,
"return a + w * (b - a);", &lerpFuncName);
// noise function
- static const GrGLSLShaderVar noiseArgs[] = {
- GrGLSLShaderVar("p", kVec3f_GrSLType),
+ static const GrShaderVar noiseArgs[] = {
+ GrShaderVar("p", kVec3f_GrSLType),
};
SkString noiseFuncName;
SkString noiseCode;
@@ -1241,9 +1241,9 @@ void GrGLImprovedPerlinNoise::emitCode(EmitArgs& args) {
noiseCode.c_str(), &noiseFuncName);
// noiseOctaves function
- static const GrGLSLShaderVar noiseOctavesArgs[] = {
- GrGLSLShaderVar("p", kVec3f_GrSLType),
- GrGLSLShaderVar("octaves", kFloat_GrSLType),
+ static const GrShaderVar noiseOctavesArgs[] = {
+ GrShaderVar("p", kVec3f_GrSLType),
+ GrShaderVar("octaves", kFloat_GrSLType),
};
SkString noiseOctavesFuncName;
SkString noiseOctavesCode;
diff --git a/gn/gpu.gni b/gn/gpu.gni
index 84b3624f02..fca4939302 100644
--- a/gn/gpu.gni
+++ b/gn/gpu.gni
@@ -185,6 +185,7 @@ skia_gpu_sources = [
"$_src/gpu/GrTraceMarker.h",
"$_src/gpu/GrTracing.h",
"$_src/gpu/GrTestUtils.cpp",
+ "$_src/gpu/GrShaderVar.cpp",
"$_src/gpu/GrSWMaskHelper.cpp",
"$_src/gpu/GrSWMaskHelper.h",
"$_src/gpu/GrSoftwarePathRenderer.cpp",
@@ -421,7 +422,6 @@ skia_gpu_sources = [
"$_src/gpu/glsl/GrGLSLProgramDataManager.h",
"$_src/gpu/glsl/GrGLSLShaderBuilder.cpp",
"$_src/gpu/glsl/GrGLSLShaderBuilder.h",
- "$_src/gpu/glsl/GrGLSLShaderVar.h",
"$_src/gpu/glsl/GrGLSLUniformHandler.h",
"$_src/gpu/glsl/GrGLSLUtil.cpp",
"$_src/gpu/glsl/GrGLSLUtil.h",
diff --git a/include/gpu/GrShaderVar.h b/include/gpu/GrShaderVar.h
index 60e951c2cf..81a7566a9d 100644
--- a/include/gpu/GrShaderVar.h
+++ b/include/gpu/GrShaderVar.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2014 Google Inc.
+ * Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
@@ -8,20 +8,18 @@
#ifndef GrShaderVar_DEFINED
#define GrShaderVar_DEFINED
-#include "GrTypesPriv.h"
#include "SkString.h"
+#include "GrTypesPriv.h"
+
+class GrGLSLCaps;
+#define USE_UNIFORM_FLOAT_ARRAYS true
+
+/**
+ * Represents a variable in a shader
+ */
class GrShaderVar {
public:
- /**
- * Early versions of GLSL have Varying and Attribute; those are later
- * deprecated, but we still need to know whether a Varying variable
- * should be treated as In or Out.
- *
- * TODO This really shouldn't live here, but until we have c++11, there is really no good way
- * to write extensible enums. In reality, only none, out, in, inout, and uniform really
- * make sense on this base class
- */
enum TypeModifier {
kNone_TypeModifier,
kOut_TypeModifier,
@@ -31,77 +29,178 @@ public:
};
/**
- * Defaults to a float with no precision specifier
+ * Values for array count that have special meaning. We allow 1-sized arrays.git
+ */
+ enum {
+ kNonArray = 0, // not an array
+ kUnsizedArray = -1, // an unsized array (declared with [])
+ };
+
+ /**
+ * Defaults to a non-arry float with no precision specifier, type modifier, or layout qualifier.
*/
GrShaderVar()
: fType(kFloat_GrSLType)
, fTypeModifier(kNone_TypeModifier)
, fCount(kNonArray)
- , fPrecision(kDefault_GrSLPrecision) {
+ , fPrecision(kDefault_GrSLPrecision)
+ , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
}
GrShaderVar(const SkString& name, GrSLType type, int arrayCount = kNonArray,
GrSLPrecision precision = kDefault_GrSLPrecision)
: fType(type)
, fTypeModifier(kNone_TypeModifier)
- , fName(name)
, fCount(arrayCount)
- , fPrecision(precision) {
+ , fPrecision(precision)
+ , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS)
+ , fName(name) {
SkASSERT(kVoid_GrSLType != type);
+ fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS;
}
GrShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray,
GrSLPrecision precision = kDefault_GrSLPrecision)
: fType(type)
, fTypeModifier(kNone_TypeModifier)
- , fName(name)
, fCount(arrayCount)
- , fPrecision(precision) {
+ , fPrecision(precision)
+ , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS)
+ , fName(name) {
+ SkASSERT(kVoid_GrSLType != type);
+ fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS;
+ }
+
+ GrShaderVar(const char* name, GrSLType type, TypeModifier typeModifier,
+ GrSLPrecision precision = kDefault_GrSLPrecision)
+ : fType(type)
+ , fTypeModifier(typeModifier)
+ , fCount(kNonArray)
+ , fPrecision(precision)
+ , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS)
+ , fName(name) {
SkASSERT(kVoid_GrSLType != type);
}
GrShaderVar(const char* name, GrSLType type, TypeModifier typeModifier,
- int arrayCount = kNonArray, GrSLPrecision precision = kDefault_GrSLPrecision)
+ int arrayCount, GrSLPrecision precision = kDefault_GrSLPrecision)
: fType(type)
, fTypeModifier(typeModifier)
- , fName(name)
, fCount(arrayCount)
- , fPrecision(precision) {
+ , fPrecision(precision)
+ , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS)
+ , fName(name) {
SkASSERT(kVoid_GrSLType != type);
}
+ GrShaderVar(const GrShaderVar& that)
+ : fType(that.fType)
+ , fTypeModifier(that.fTypeModifier)
+ , fCount(that.fCount)
+ , fPrecision(that.fPrecision)
+ , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS)
+ , fName(that.fName)
+ , fLayoutQualifier(that.fLayoutQualifier)
+ , fExtraModifiers(that.fExtraModifiers) {
+ SkASSERT(kVoid_GrSLType != that.getType());
+ }
+
/**
- * Values for array count that have special meaning. We allow 1-sized arrays.
+ * Sets as a non-array.
*/
- enum {
- kNonArray = 0, // not an array
- kUnsizedArray = -1, // an unsized array (declared with [])
- };
-
void set(GrSLType type,
const SkString& name,
TypeModifier typeModifier = kNone_TypeModifier,
GrSLPrecision precision = kDefault_GrSLPrecision,
- int count = kNonArray) {
+ const char* layoutQualifier = nullptr,
+ const char* extraModifiers = nullptr,
+ bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
SkASSERT(kVoid_GrSLType != type);
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
fType = type;
fTypeModifier = typeModifier;
fName = name;
- fCount = count;
+ fCount = kNonArray;
fPrecision = precision;
+ fLayoutQualifier = layoutQualifier;
+ if (extraModifiers) {
+ fExtraModifiers.printf("%s ", extraModifiers);
+ }
+ fUseUniformFloatArrays = useUniformFloatArrays;
}
+ /**
+ * Sets as a non-array.
+ */
void set(GrSLType type,
const char* name,
TypeModifier typeModifier = kNone_TypeModifier,
GrSLPrecision precision = kDefault_GrSLPrecision,
- int count = kNonArray) {
+ const char* layoutQualifier = nullptr,
+ const char* extraModifiers = nullptr,
+ bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
SkASSERT(kVoid_GrSLType != type);
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
+ fType = type;
+ fTypeModifier = typeModifier;
+ fName = name;
+ fCount = kNonArray;
+ fPrecision = precision;
+ fLayoutQualifier = layoutQualifier;
+ if (extraModifiers) {
+ fExtraModifiers.printf("%s ", extraModifiers);
+ }
+ fUseUniformFloatArrays = useUniformFloatArrays;
+ }
+
+ /**
+ * Set all var options
+ */
+ void set(GrSLType type,
+ const SkString& name,
+ int count,
+ TypeModifier typeModifier,
+ GrSLPrecision precision = kDefault_GrSLPrecision,
+ const char* layoutQualifier = nullptr,
+ const char* extraModifiers = nullptr,
+ bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
+ SkASSERT(kVoid_GrSLType != type);
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
+ fType = type;
+ fTypeModifier = typeModifier;
+ fName = name;
+ fCount = count;
+ fPrecision = precision;
+ fLayoutQualifier = layoutQualifier;
+ if (extraModifiers) {
+ fExtraModifiers.printf("%s ", extraModifiers);
+ }
+ fUseUniformFloatArrays = useUniformFloatArrays;
+ }
+
+ /**
+ * Set all var options
+ */
+ void set(GrSLType type,
+ const char* name,
+ int count,
+ TypeModifier typeModifier,
+ GrSLPrecision precision = kDefault_GrSLPrecision,
+ const char* layoutQualifier = nullptr,
+ const char* extraModifiers = nullptr,
+ bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
+ SkASSERT(kVoid_GrSLType != type);
+ SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
fType = type;
fTypeModifier = typeModifier;
fName = name;
fCount = count;
fPrecision = precision;
+ fLayoutQualifier = layoutQualifier;
+ if (extraModifiers) {
+ fExtraModifiers.printf("%s ", extraModifiers);
+ }
+ fUseUniformFloatArrays = useUniformFloatArrays;
}
/**
@@ -171,12 +270,67 @@ public:
*/
void setPrecision(GrSLPrecision p) { fPrecision = p; }
-protected:
+ /**
+ * Set the layout qualifier
+ */
+ void setLayoutQualifier(const char* layoutQualifier) {
+ fLayoutQualifier = layoutQualifier;
+ }
+
+ void addModifier(const char* modifier) {
+ if (modifier) {
+ fExtraModifiers.appendf("%s ", modifier);
+ }
+ }
+
+ /**
+ * Write a declaration of this variable to out.
+ */
+ void appendDecl(const GrGLSLCaps* glslCaps, SkString* out) const;
+
+ void appendArrayAccess(int index, SkString* out) const {
+ out->appendf("%s[%d]%s",
+ this->getName().c_str(),
+ index,
+ fUseUniformFloatArrays ? "" : ".x");
+ }
+
+ void appendArrayAccess(const char* indexName, SkString* out) const {
+ out->appendf("%s[%s]%s",
+ this->getName().c_str(),
+ indexName,
+ fUseUniformFloatArrays ? "" : ".x");
+ }
+
+private:
+ static const char* TypeModifierString(TypeModifier t) {
+ switch (t) {
+ case kNone_TypeModifier:
+ return "";
+ case kIn_TypeModifier:
+ return "in";
+ case kInOut_TypeModifier:
+ return "inout";
+ case kOut_TypeModifier:
+ return "out";
+ case kUniform_TypeModifier:
+ return "uniform";
+ }
+ SkFAIL("Unknown shader variable type modifier.");
+ return ""; // suppress warning
+ }
+
GrSLType fType;
TypeModifier fTypeModifier;
- SkString fName;
int fCount;
GrSLPrecision fPrecision;
+ /// Work around driver bugs on some hardware that don't correctly
+ /// support uniform float []
+ bool fUseUniformFloatArrays;
+
+ SkString fName;
+ SkString fLayoutQualifier;
+ SkString fExtraModifiers;
};
-#endif
+ #endif
diff --git a/src/effects/GrAlphaThresholdFragmentProcessor.cpp b/src/effects/GrAlphaThresholdFragmentProcessor.cpp
index 99ce113446..ed633b0294 100644
--- a/src/effects/GrAlphaThresholdFragmentProcessor.cpp
+++ b/src/effects/GrAlphaThresholdFragmentProcessor.cpp
@@ -12,6 +12,7 @@
#include "GrInvariantOutput.h"
#include "SkRefCnt.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLColorSpaceXformHelper.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp
index 237c5630e2..b237b14b2f 100644
--- a/src/effects/SkBlurMaskFilter.cpp
+++ b/src/effects/SkBlurMaskFilter.cpp
@@ -24,6 +24,7 @@
#include "GrInvariantOutput.h"
#include "GrStyle.h"
#include "effects/GrSimpleTextureEffect.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
index b71c7eb4b8..6b479e985d 100644
--- a/src/effects/SkLightingImageFilter.cpp
+++ b/src/effects/SkLightingImageFilter.cpp
@@ -27,6 +27,7 @@
#include "SkGrPriv.h"
#include "effects/GrSingleTextureEffect.h"
#include "effects/GrTextureDomain.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
@@ -1801,14 +1802,14 @@ void GrGLLightingEffect::emitCode(EmitArgs& args) {
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
SkString lightFunc;
this->emitLightFunc(uniformHandler, fragBuilder, &lightFunc);
- static const GrGLSLShaderVar gSobelArgs[] = {
- GrGLSLShaderVar("a", kFloat_GrSLType),
- GrGLSLShaderVar("b", kFloat_GrSLType),
- GrGLSLShaderVar("c", kFloat_GrSLType),
- GrGLSLShaderVar("d", kFloat_GrSLType),
- GrGLSLShaderVar("e", kFloat_GrSLType),
- GrGLSLShaderVar("f", kFloat_GrSLType),
- GrGLSLShaderVar("scale", kFloat_GrSLType),
+ static const GrShaderVar gSobelArgs[] = {
+ GrShaderVar("a", kFloat_GrSLType),
+ GrShaderVar("b", kFloat_GrSLType),
+ GrShaderVar("c", kFloat_GrSLType),
+ GrShaderVar("d", kFloat_GrSLType),
+ GrShaderVar("e", kFloat_GrSLType),
+ GrShaderVar("f", kFloat_GrSLType),
+ GrShaderVar("scale", kFloat_GrSLType),
};
SkString sobelFuncName;
SkString coords2D = fragBuilder->ensureCoords2D(args.fTransformedCoords[0]);
@@ -1819,10 +1820,10 @@ void GrGLLightingEffect::emitCode(EmitArgs& args) {
gSobelArgs,
"\treturn (-a + b - 2.0 * c + 2.0 * d -e + f) * scale;\n",
&sobelFuncName);
- static const GrGLSLShaderVar gPointToNormalArgs[] = {
- GrGLSLShaderVar("x", kFloat_GrSLType),
- GrGLSLShaderVar("y", kFloat_GrSLType),
- GrGLSLShaderVar("scale", kFloat_GrSLType),
+ static const GrShaderVar gPointToNormalArgs[] = {
+ GrShaderVar("x", kFloat_GrSLType),
+ GrShaderVar("y", kFloat_GrSLType),
+ GrShaderVar("scale", kFloat_GrSLType),
};
SkString pointToNormalName;
fragBuilder->emitFunction(kVec3f_GrSLType,
@@ -1832,9 +1833,9 @@ void GrGLLightingEffect::emitCode(EmitArgs& args) {
"\treturn normalize(vec3(-x * scale, -y * scale, 1));\n",
&pointToNormalName);
- static const GrGLSLShaderVar gInteriorNormalArgs[] = {
- GrGLSLShaderVar("m", kFloat_GrSLType, 9),
- GrGLSLShaderVar("surfaceScale", kFloat_GrSLType),
+ static const GrShaderVar gInteriorNormalArgs[] = {
+ GrShaderVar("m", kFloat_GrSLType, 9),
+ GrShaderVar("surfaceScale", kFloat_GrSLType),
};
SkString normalBody = emitNormalFunc(le.boundaryMode(),
pointToNormalName.c_str(),
@@ -1922,10 +1923,10 @@ void GrGLDiffuseLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHandl
kFloat_GrSLType, kDefault_GrSLPrecision,
"KD", &kd);
- static const GrGLSLShaderVar gLightArgs[] = {
- GrGLSLShaderVar("normal", kVec3f_GrSLType),
- GrGLSLShaderVar("surfaceToLight", kVec3f_GrSLType),
- GrGLSLShaderVar("lightColor", kVec3f_GrSLType)
+ static const GrShaderVar gLightArgs[] = {
+ GrShaderVar("normal", kVec3f_GrSLType),
+ GrShaderVar("surfaceToLight", kVec3f_GrSLType),
+ GrShaderVar("lightColor", kVec3f_GrSLType)
};
SkString lightBody;
lightBody.appendf("\tfloat colorScale = %s * dot(normal, surfaceToLight);\n", kd);
@@ -2017,10 +2018,10 @@ void GrGLSpecularLightingEffect::emitLightFunc(GrGLSLUniformHandler* uniformHand
"Shininess",
&shininess);
- static const GrGLSLShaderVar gLightArgs[] = {
- GrGLSLShaderVar("normal", kVec3f_GrSLType),
- GrGLSLShaderVar("surfaceToLight", kVec3f_GrSLType),
- GrGLSLShaderVar("lightColor", kVec3f_GrSLType)
+ static const GrShaderVar gLightArgs[] = {
+ GrShaderVar("normal", kVec3f_GrSLType),
+ GrShaderVar("surfaceToLight", kVec3f_GrSLType),
+ GrShaderVar("lightColor", kVec3f_GrSLType)
};
SkString lightBody;
lightBody.appendf("\tvec3 halfDir = vec3(normalize(surfaceToLight + vec3(0, 0, 1)));\n");
@@ -2156,8 +2157,8 @@ void GrGLSpotLight::emitLightColor(GrGLSLUniformHandler* uniformHandler,
fSUni = uniformHandler->addUniform(kFragment_GrShaderFlag,
kVec3f_GrSLType, kDefault_GrSLPrecision, "S", &s);
- static const GrGLSLShaderVar gLightColorArgs[] = {
- GrGLSLShaderVar("surfaceToLight", kVec3f_GrSLType)
+ static const GrShaderVar gLightColorArgs[] = {
+ GrShaderVar("surfaceToLight", kVec3f_GrSLType)
};
SkString lightColorBody;
lightColorBody.appendf("\tfloat cosAngle = -dot(surfaceToLight, %s);\n", s);
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp
index ccff378cee..5b5525c3b6 100644
--- a/src/effects/SkMagnifierImageFilter.cpp
+++ b/src/effects/SkMagnifierImageFilter.cpp
@@ -19,6 +19,7 @@
#include "GrContext.h"
#include "GrInvariantOutput.h"
#include "effects/GrSingleTextureEffect.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp
index d055043b1c..4ececb4dfb 100644
--- a/src/effects/SkMorphologyImageFilter.cpp
+++ b/src/effects/SkMorphologyImageFilter.cpp
@@ -26,6 +26,7 @@
#include "SkGr.h"
#include "SkGrPriv.h"
#include "effects/Gr1DKernelEffect.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp
index d0761d7e32..529a4fa13a 100644
--- a/src/effects/SkPerlinNoiseShader.cpp
+++ b/src/effects/SkPerlinNoiseShader.cpp
@@ -639,15 +639,15 @@ void GrGLPerlinNoise::emitCode(EmitArgs& args) {
const char* dotLattice = "dot(((%s.ga + %s.rb * vec2(%s)) * vec2(2.0) - vec2(1.0)), %s);";
// Add noise function
- static const GrGLSLShaderVar gPerlinNoiseArgs[] = {
- GrGLSLShaderVar(chanCoord, kFloat_GrSLType),
- GrGLSLShaderVar(noiseVec, kVec2f_GrSLType)
+ static const GrShaderVar gPerlinNoiseArgs[] = {
+ GrShaderVar(chanCoord, kFloat_GrSLType),
+ GrShaderVar(noiseVec, kVec2f_GrSLType)
};
- static const GrGLSLShaderVar gPerlinNoiseStitchArgs[] = {
- GrGLSLShaderVar(chanCoord, kFloat_GrSLType),
- GrGLSLShaderVar(noiseVec, kVec2f_GrSLType),
- GrGLSLShaderVar(stitchData, kVec2f_GrSLType)
+ static const GrShaderVar gPerlinNoiseStitchArgs[] = {
+ GrShaderVar(chanCoord, kFloat_GrSLType),
+ GrShaderVar(noiseVec, kVec2f_GrSLType),
+ GrShaderVar(stitchData, kVec2f_GrSLType)
};
SkString noiseCode;
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp
index 39f563648b..e034a1fc92 100644
--- a/src/effects/gradients/SkGradientShader.cpp
+++ b/src/effects/gradients/SkGradientShader.cpp
@@ -5,6 +5,7 @@
* found in the LICENSE file.
*/
+#include "glsl/GrGLSLCaps.h"
#include "Sk4fLinearGradient.h"
#include "SkColorSpace_XYZ.h"
#include "SkGradientShaderPriv.h"
diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
index 1275be7315..cf2a827cfe 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
+++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp
@@ -708,7 +708,7 @@ void FocalInside2PtConicalEffect::GLSLFocalInside2PtConicalProcessor::emitCode(E
// this is the distance along x-axis from the end center to focal point in
// transformed coordinates
- GrGLSLShaderVar focal = uniformHandler->getUniformVariable(fFocalUni);
+ GrShaderVar focal = uniformHandler->getUniformVariable(fFocalUni);
// if we have a vec3 from being in perspective, convert it to a vec2 first
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
@@ -958,11 +958,11 @@ void CircleInside2PtConicalEffect::GLSLCircleInside2PtConicalProcessor::emitCode
"Conical2FSParams");
SkString tName("t");
- GrGLSLShaderVar center = uniformHandler->getUniformVariable(fCenterUni);
+ GrShaderVar center = uniformHandler->getUniformVariable(fCenterUni);
// params.x = A
// params.y = B
// params.z = C
- GrGLSLShaderVar params = uniformHandler->getUniformVariable(fParamUni);
+ GrShaderVar params = uniformHandler->getUniformVariable(fParamUni);
// if we have a vec3 from being in perspective, convert it to a vec2 first
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
@@ -1194,11 +1194,11 @@ void CircleOutside2PtConicalEffect::GLSLCircleOutside2PtConicalProcessor::emitCo
"Conical2FSParams");
SkString tName("t");
- GrGLSLShaderVar center = uniformHandler->getUniformVariable(fCenterUni);
+ GrShaderVar center = uniformHandler->getUniformVariable(fCenterUni);
// params.x = A
// params.y = B
// params.z = C
- GrGLSLShaderVar params = uniformHandler->getUniformVariable(fParamUni);
+ GrShaderVar params = uniformHandler->getUniformVariable(fParamUni);
// if we have a vec3 from being in perspective, convert it to a vec2 first
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
index e7a89007ef..a0ed383458 100644
--- a/src/gpu/GrOvalRenderer.cpp
+++ b/src/gpu/GrOvalRenderer.cpp
@@ -17,6 +17,7 @@
#include "SkRRect.h"
#include "SkStrokeRec.h"
#include "batches/GrVertexBatch.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLGeometryProcessor.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/gpu/GrShaderVar.cpp b/src/gpu/GrShaderVar.cpp
new file mode 100644
index 0000000000..ef305cbfc9
--- /dev/null
+++ b/src/gpu/GrShaderVar.cpp
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#include "GrShaderVar.h"
+#include "glsl/GrGLSLCaps.h"
+
+void GrShaderVar::appendDecl(const GrGLSLCaps* glslCaps, SkString* out) const {
+ SkASSERT(kDefault_GrSLPrecision == fPrecision || GrSLTypeAcceptsPrecision(fType));
+ if (!fLayoutQualifier.isEmpty()) {
+ out->appendf("layout(%s) ", fLayoutQualifier.c_str());
+ }
+ out->append(fExtraModifiers);
+ if (this->getTypeModifier() != kNone_TypeModifier) {
+ out->append(TypeModifierString(this->getTypeModifier()));
+ out->append(" ");
+ }
+ GrSLType effectiveType = this->getType();
+ if (glslCaps->usesPrecisionModifiers() && GrSLTypeAcceptsPrecision(effectiveType)) {
+ // Desktop GLSL has added precision qualifiers but they don't do anything.
+ out->appendf("%s ", GrGLSLPrecisionString(fPrecision));
+ }
+ if (this->isArray()) {
+ if (this->isUnsizedArray()) {
+ out->appendf("%s %s[]",
+ GrGLSLTypeString(effectiveType),
+ this->getName().c_str());
+ } else {
+ SkASSERT(this->getArrayCount() > 0);
+ out->appendf("%s %s[%d]",
+ GrGLSLTypeString(effectiveType),
+ this->getName().c_str(),
+ this->getArrayCount());
+ }
+ } else {
+ out->appendf("%s %s",
+ GrGLSLTypeString(effectiveType),
+ this->getName().c_str());
+ }
+}
diff --git a/src/gpu/batches/GrPLSPathRenderer.cpp b/src/gpu/batches/GrPLSPathRenderer.cpp
index e73f7f5722..1aedccb5f9 100644
--- a/src/gpu/batches/GrPLSPathRenderer.cpp
+++ b/src/gpu/batches/GrPLSPathRenderer.cpp
@@ -521,9 +521,9 @@ public:
SkAssertResult(fsBuilder->enableFeature(
GrGLSLFragmentShaderBuilder::kPixelLocalStorage_GLSLFeature));
static const int QUAD_ARGS = 2;
- GrGLSLShaderVar inQuadArgs[QUAD_ARGS] = {
- GrGLSLShaderVar("dot", kFloat_GrSLType, 0, kHigh_GrSLPrecision),
- GrGLSLShaderVar("uv", kVec2f_GrSLType, 0, kHigh_GrSLPrecision)
+ GrShaderVar inQuadArgs[QUAD_ARGS] = {
+ GrShaderVar("dot", kFloat_GrSLType, 0, kHigh_GrSLPrecision),
+ GrShaderVar("uv", kVec2f_GrSLType, 0, kHigh_GrSLPrecision)
};
SkString inQuadName;
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp
index 7f39b927c9..cd7f763148 100644
--- a/src/gpu/effects/GrBezierEffect.cpp
+++ b/src/gpu/effects/GrBezierEffect.cpp
@@ -7,6 +7,7 @@
#include "GrBezierEffect.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLGeometryProcessor.h"
#include "glsl/GrGLSLProgramDataManager.h"
@@ -116,14 +117,14 @@ void GrGLConicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
precision = kMedium_GrSLPrecision;
}
- GrGLSLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, precision);
- GrGLSLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, precision);
- GrGLSLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, precision);
- GrGLSLShaderVar dfdx("dfdx", kFloat_GrSLType, 0, precision);
- GrGLSLShaderVar dfdy("dfdy", kFloat_GrSLType, 0, precision);
- GrGLSLShaderVar gF("gF", kVec2f_GrSLType, 0, precision);
- GrGLSLShaderVar gFM("gFM", kFloat_GrSLType, 0, precision);
- GrGLSLShaderVar func("func", kFloat_GrSLType, 0, precision);
+ GrShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, precision);
+ GrShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, precision);
+ GrShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, precision);
+ GrShaderVar dfdx("dfdx", kFloat_GrSLType, 0, precision);
+ GrShaderVar dfdy("dfdy", kFloat_GrSLType, 0, precision);
+ GrShaderVar gF("gF", kVec2f_GrSLType, 0, precision);
+ GrShaderVar gFM("gFM", kFloat_GrSLType, 0, precision);
+ GrShaderVar func("func", kFloat_GrSLType, 0, precision);
fragBuilder->declAppend(edgeAlpha);
fragBuilder->declAppend(dklmdx);
@@ -564,14 +565,14 @@ void GrGLCubicEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
args.fFPCoordTransformHandler);
- GrGLSLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar dfdx("dfdx", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar dfdy("dfdy", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar gF("gF", kVec2f_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar gFM("gFM", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
- GrGLSLShaderVar func("func", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar dklmdx("dklmdx", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar dklmdy("dklmdy", kVec3f_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar dfdx("dfdx", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar dfdy("dfdy", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar gF("gF", kVec2f_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar gFM("gFM", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar func("func", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
fragBuilder->declAppend(edgeAlpha);
fragBuilder->declAppend(dklmdx);
diff --git a/src/gpu/effects/GrBicubicEffect.cpp b/src/gpu/effects/GrBicubicEffect.cpp
index 4ea358ea10..ce7f344c17 100644
--- a/src/gpu/effects/GrBicubicEffect.cpp
+++ b/src/gpu/effects/GrBicubicEffect.cpp
@@ -7,6 +7,7 @@
#include "GrBicubicEffect.h"
#include "GrInvariantOutput.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLColorSpaceXformHelper.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
@@ -66,13 +67,13 @@ void GrGLBicubicEffect::emitCode(EmitArgs& args) {
SkString cubicBlendName;
- static const GrGLSLShaderVar gCubicBlendArgs[] = {
- GrGLSLShaderVar("coefficients", kMat44f_GrSLType),
- GrGLSLShaderVar("t", kFloat_GrSLType),
- GrGLSLShaderVar("c0", kVec4f_GrSLType),
- GrGLSLShaderVar("c1", kVec4f_GrSLType),
- GrGLSLShaderVar("c2", kVec4f_GrSLType),
- GrGLSLShaderVar("c3", kVec4f_GrSLType),
+ static const GrShaderVar gCubicBlendArgs[] = {
+ GrShaderVar("coefficients", kMat44f_GrSLType),
+ GrShaderVar("t", kFloat_GrSLType),
+ GrShaderVar("c0", kVec4f_GrSLType),
+ GrShaderVar("c1", kVec4f_GrSLType),
+ GrShaderVar("c2", kVec4f_GrSLType),
+ GrShaderVar("c3", kVec4f_GrSLType),
};
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
SkString coords2D = fragBuilder->ensureCoords2D(args.fTransformedCoords[0]);
diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp
index 545d30b907..6f67838270 100644
--- a/src/gpu/effects/GrConfigConversionEffect.cpp
+++ b/src/gpu/effects/GrConfigConversionEffect.cpp
@@ -11,6 +11,7 @@
#include "GrInvariantOutput.h"
#include "GrSimpleTextureEffect.h"
#include "SkMatrix.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
@@ -22,7 +23,7 @@ public:
GrConfigConversionEffect::PMConversion pmConversion = cce.pmConversion();
// Using highp for GLES here in order to avoid some precision issues on specific GPUs.
- GrGLSLShaderVar tmpVar("tmpColor", kVec4f_GrSLType, 0, kHigh_GrSLPrecision);
+ GrShaderVar tmpVar("tmpColor", kVec4f_GrSLType, 0, kHigh_GrSLPrecision);
SkString tmpDecl;
tmpVar.appendDecl(args.fGLSLCaps, &tmpDecl);
diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp
index 7ad2c08126..fc28ec7fe3 100644
--- a/src/gpu/effects/GrConvexPolyEffect.cpp
+++ b/src/gpu/effects/GrConvexPolyEffect.cpp
@@ -9,6 +9,7 @@
#include "GrInvariantOutput.h"
#include "SkPathPriv.h"
#include "effects/GrConstColorProcessor.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/gpu/effects/GrConvolutionEffect.cpp b/src/gpu/effects/GrConvolutionEffect.cpp
index 05e9deb1d7..fbca64668d 100644
--- a/src/gpu/effects/GrConvolutionEffect.cpp
+++ b/src/gpu/effects/GrConvolutionEffect.cpp
@@ -6,6 +6,7 @@
*/
#include "GrConvolutionEffect.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
@@ -58,7 +59,7 @@ void GrGLConvolutionEffect::emitCode(EmitArgs& args) {
fragBuilder->codeAppendf("%s = vec4(0, 0, 0, 0);", args.fOutputColor);
- const GrGLSLShaderVar& kernel = uniformHandler->getUniformVariable(fKernelUni);
+ const GrShaderVar& kernel = uniformHandler->getUniformVariable(fKernelUni);
const char* imgInc = uniformHandler->getUniformCStr(fImageIncrementUni);
fragBuilder->codeAppendf("vec2 coord = %s - %d.0 * %s;", coords2D.c_str(), ce.radius(), imgInc);
diff --git a/src/gpu/effects/GrDitherEffect.cpp b/src/gpu/effects/GrDitherEffect.cpp
index 1fddec6629..c00284b23d 100644
--- a/src/gpu/effects/GrDitherEffect.cpp
+++ b/src/gpu/effects/GrDitherEffect.cpp
@@ -9,6 +9,7 @@
#include "GrFragmentProcessor.h"
#include "GrInvariantOutput.h"
#include "SkRect.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
diff --git a/src/gpu/effects/GrGammaEffect.cpp b/src/gpu/effects/GrGammaEffect.cpp
index 63ffc32424..9e98b7ec9d 100644
--- a/src/gpu/effects/GrGammaEffect.cpp
+++ b/src/gpu/effects/GrGammaEffect.cpp
@@ -29,8 +29,8 @@ public:
}
SkString srgbFuncName;
- static const GrGLSLShaderVar gSrgbArgs[] = {
- GrGLSLShaderVar("x", kFloat_GrSLType),
+ static const GrShaderVar gSrgbArgs[] = {
+ GrShaderVar("x", kFloat_GrSLType),
};
switch (ge.mode()) {
case GrGammaEffect::Mode::kLinearToSRGB:
diff --git a/src/gpu/effects/GrMatrixConvolutionEffect.cpp b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
index afc24c9bf9..0194eab3f6 100644
--- a/src/gpu/effects/GrMatrixConvolutionEffect.cpp
+++ b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
@@ -5,6 +5,7 @@
* found in the LICENSE file.
*/
#include "GrMatrixConvolutionEffect.h"
+#include "glsl/GrGLSL.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/gpu/effects/GrOvalEffect.cpp b/src/gpu/effects/GrOvalEffect.cpp
index 97ea1e6d0a..425d767c2b 100644
--- a/src/gpu/effects/GrOvalEffect.cpp
+++ b/src/gpu/effects/GrOvalEffect.cpp
@@ -10,6 +10,8 @@
#include "GrFragmentProcessor.h"
#include "GrInvariantOutput.h"
#include "SkRect.h"
+#include "glsl/GrGLSL.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/gpu/effects/GrRRectEffect.cpp b/src/gpu/effects/GrRRectEffect.cpp
index 37bb3f8848..36570c9e9c 100644
--- a/src/gpu/effects/GrRRectEffect.cpp
+++ b/src/gpu/effects/GrRRectEffect.cpp
@@ -13,6 +13,7 @@
#include "GrOvalEffect.h"
#include "SkRRect.h"
#include "SkTLazy.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/gpu/effects/GrTextureDomain.cpp b/src/gpu/effects/GrTextureDomain.cpp
index e3129fd68e..6ee5758081 100644
--- a/src/gpu/effects/GrTextureDomain.cpp
+++ b/src/gpu/effects/GrTextureDomain.cpp
@@ -9,6 +9,7 @@
#include "GrInvariantOutput.h"
#include "GrSimpleTextureEffect.h"
#include "SkFloatingPoint.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
index 71b3be319f..9c25602187 100644
--- a/src/gpu/gl/GrGLGpu.cpp
+++ b/src/gpu/gl/GrGLGpu.cpp
@@ -334,13 +334,13 @@ bool GrGLGpu::createPLSSetupProgram() {
const GrGLSLCaps* glslCaps = this->glCaps().glslCaps();
const char* version = glslCaps->versionDeclString();
- GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
- GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar uTexture("u_texture", kTexture2DSampler_GrSLType,
- GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
+ GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar uPosXform("u_posXform", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar uTexture("u_texture", kTexture2DSampler_GrSLType,
+ GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString vshaderTxt(version);
if (glslCaps->noperspectiveInterpolationSupport()) {
@@ -3753,13 +3753,13 @@ bool GrGLGpu::createCopyProgram(GrTexture* srcTex) {
}
const char* version = glslCaps->versionDeclString();
- GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
- GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar uTexture("u_texture", samplerType, GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier);
- GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
+ GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar uPosXform("u_posXform", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar uTexture("u_texture", samplerType, GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString vshaderTxt(version);
if (glslCaps->noperspectiveInterpolationSupport()) {
@@ -3858,20 +3858,19 @@ bool GrGLGpu::createMipmapProgram(int progIdx) {
}
const char* version = glslCaps->versionDeclString();
- GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
- GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
- GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar uTexture("u_texture", kTexture2DSampler_GrSLType,
- GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
+ GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar uTexture("u_texture", kTexture2DSampler_GrSLType,
+ GrShaderVar::kUniform_TypeModifier);
// We need 1, 2, or 4 texture coordinates (depending on parity of each dimension):
- GrGLSLShaderVar vTexCoords[] = {
- GrGLSLShaderVar("v_texCoord0", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
- GrGLSLShaderVar("v_texCoord1", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
- GrGLSLShaderVar("v_texCoord2", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
- GrGLSLShaderVar("v_texCoord3", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
+ GrShaderVar vTexCoords[] = {
+ GrShaderVar("v_texCoord0", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
+ GrShaderVar("v_texCoord1", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
+ GrShaderVar("v_texCoord2", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
+ GrShaderVar("v_texCoord3", kVec2f_GrSLType, GrShaderVar::kOut_TypeModifier),
};
- GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType,
- GrShaderVar::kOut_TypeModifier);
+ GrShaderVar oFragColor("o_FragColor", kVec4f_GrSLType,GrShaderVar::kOut_TypeModifier);
SkString vshaderTxt(version);
if (glslCaps->noperspectiveInterpolationSupport()) {
@@ -4020,9 +4019,9 @@ bool GrGLGpu::createWireRectProgram() {
return false;
}
- GrGLSLShaderVar uColor("u_color", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar uRect("u_rect", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
- GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
+ GrShaderVar uColor("u_color", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar uRect("u_rect", kVec4f_GrSLType, GrShaderVar::kUniform_TypeModifier);
+ GrShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kIn_TypeModifier);
const char* version = this->glCaps().glslCaps()->versionDeclString();
// The rect uniform specifies the rectangle in NDC space as a vec4 (left,top,right,bottom). The
@@ -4042,7 +4041,7 @@ bool GrGLGpu::createWireRectProgram() {
"}"
);
- GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
+ GrShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, GrShaderVar::kOut_TypeModifier);
SkString fshaderTxt(version);
GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision,
diff --git a/src/gpu/gl/GrGLProgramDataManager.cpp b/src/gpu/gl/GrGLProgramDataManager.cpp
index 68d01669a8..3245bd7185 100644
--- a/src/gpu/gl/GrGLProgramDataManager.cpp
+++ b/src/gpu/gl/GrGLProgramDataManager.cpp
@@ -12,7 +12,7 @@
#define ASSERT_ARRAY_UPLOAD_IN_BOUNDS(UNI, COUNT) \
SkASSERT((COUNT) <= (UNI).fArrayCount || \
- (1 == (COUNT) && GrGLSLShaderVar::kNonArray == (UNI).fArrayCount))
+ (1 == (COUNT) && GrShaderVar::kNonArray == (UNI).fArrayCount))
GrGLProgramDataManager::GrGLProgramDataManager(GrGLGpu* gpu, GrGLuint programID,
const UniformInfoArray& uniforms,
@@ -24,7 +24,7 @@ GrGLProgramDataManager::GrGLProgramDataManager(GrGLGpu* gpu, GrGLuint programID,
for (int i = 0; i < count; i++) {
Uniform& uniform = fUniforms[i];
const UniformInfo& builderUniform = uniforms[i];
- SkASSERT(GrGLSLShaderVar::kNonArray == builderUniform.fVariable.getArrayCount() ||
+ SkASSERT(GrShaderVar::kNonArray == builderUniform.fVariable.getArrayCount() ||
builderUniform.fVariable.getArrayCount() > 0);
SkDEBUGCODE(
uniform.fArrayCount = builderUniform.fVariable.getArrayCount();
@@ -40,7 +40,7 @@ GrGLProgramDataManager::GrGLProgramDataManager(GrGLGpu* gpu, GrGLuint programID,
SkASSERT(fGpu->glCaps().shaderCaps()->pathRenderingSupport());
PathProcVarying& pathProcVarying = fPathProcVaryings[i];
const VaryingInfo& builderPathProcVarying = pathProcVaryings[i];
- SkASSERT(GrGLSLShaderVar::kNonArray == builderPathProcVarying.fVariable.getArrayCount() ||
+ SkASSERT(GrShaderVar::kNonArray == builderPathProcVarying.fVariable.getArrayCount() ||
builderPathProcVarying.fVariable.getArrayCount() > 0);
SkDEBUGCODE(
pathProcVarying.fArrayCount = builderPathProcVarying.fVariable.getArrayCount();
@@ -68,7 +68,7 @@ void GrGLProgramDataManager::setSamplers(const UniformInfoArray& samplers) const
void GrGLProgramDataManager::set1i(UniformHandle u, int32_t i) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kInt_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
SkDEBUGCODE(this->printUnused(uni));
if (kUnusedUniform != uni.fLocation) {
GR_GL_CALL(fGpu->glInterface(), Uniform1i(uni.fLocation, i));
@@ -90,7 +90,7 @@ void GrGLProgramDataManager::set1iv(UniformHandle u,
void GrGLProgramDataManager::set1f(UniformHandle u, float v0) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kFloat_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
SkDEBUGCODE(this->printUnused(uni);)
if (kUnusedUniform != uni.fLocation) {
GR_GL_CALL(fGpu->glInterface(), Uniform1f(uni.fLocation, v0));
@@ -116,7 +116,7 @@ void GrGLProgramDataManager::set1fv(UniformHandle u,
void GrGLProgramDataManager::set2f(UniformHandle u, float v0, float v1) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kVec2f_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
SkDEBUGCODE(this->printUnused(uni);)
if (kUnusedUniform != uni.fLocation) {
GR_GL_CALL(fGpu->glInterface(), Uniform2f(uni.fLocation, v0, v1));
@@ -139,7 +139,7 @@ void GrGLProgramDataManager::set2fv(UniformHandle u,
void GrGLProgramDataManager::set3f(UniformHandle u, float v0, float v1, float v2) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kVec3f_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
SkDEBUGCODE(this->printUnused(uni);)
if (kUnusedUniform != uni.fLocation) {
GR_GL_CALL(fGpu->glInterface(), Uniform3f(uni.fLocation, v0, v1, v2));
@@ -166,7 +166,7 @@ void GrGLProgramDataManager::set4f(UniformHandle u,
float v3) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kVec4f_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
SkDEBUGCODE(this->printUnused(uni);)
if (kUnusedUniform != uni.fLocation) {
GR_GL_CALL(fGpu->glInterface(), Uniform4f(uni.fLocation, v0, v1, v2, v3));
diff --git a/src/gpu/gl/GrGLProgramDataManager.h b/src/gpu/gl/GrGLProgramDataManager.h
index fa1456dcc7..0ef902c10b 100644
--- a/src/gpu/gl/GrGLProgramDataManager.h
+++ b/src/gpu/gl/GrGLProgramDataManager.h
@@ -8,11 +8,10 @@
#ifndef GrGLProgramDataManager_DEFINED
#define GrGLProgramDataManager_DEFINED
-#include "glsl/GrGLSLProgramDataManager.h"
-
#include "GrAllocator.h"
+#include "GrShaderVar.h"
#include "gl/GrGLTypes.h"
-#include "glsl/GrGLSLShaderVar.h"
+#include "glsl/GrGLSLProgramDataManager.h"
#include "SkTArray.h"
@@ -27,18 +26,17 @@ class GrGLProgram;
class GrGLProgramDataManager : public GrGLSLProgramDataManager {
public:
struct UniformInfo {
- GrGLSLShaderVar fVariable;
+ GrShaderVar fVariable;
uint32_t fVisibility;
GrGLint fLocation;
};
struct VaryingInfo {
- GrGLSLShaderVar fVariable;
+ GrShaderVar fVariable;
GrGLint fLocation;
};
-
- // This uses an allocator rather than array so that the GrGLSLShaderVars don't move in memory
+ // This uses an allocator rather than array so that the GrShaderVars don't move in memory
// after they are inserted. Users of GrGLShaderBuilder get refs to the vars and ptrs to their
// name strings. Otherwise, we'd have to hand out copies.
typedef GrTAllocator<UniformInfo> UniformInfoArray;
diff --git a/src/gpu/gl/GrGLTexture.cpp b/src/gpu/gl/GrGLTexture.cpp
index eb28e23cb2..4a4f00bc0b 100644
--- a/src/gpu/gl/GrGLTexture.cpp
+++ b/src/gpu/gl/GrGLTexture.cpp
@@ -7,6 +7,7 @@
#include "GrGLTexture.h"
#include "GrGLGpu.h"
+#include "glsl/GrGLSLCaps.h"
#include "SkTraceMemoryDump.h"
#define GPUGL static_cast<GrGLGpu*>(this->getGpu())
diff --git a/src/gpu/gl/GrGLUniformHandler.cpp b/src/gpu/gl/GrGLUniformHandler.cpp
index 37f241838f..2def001f43 100644
--- a/src/gpu/gl/GrGLUniformHandler.cpp
+++ b/src/gpu/gl/GrGLUniformHandler.cpp
@@ -30,7 +30,7 @@ GrGLSLUniformHandler::UniformHandle GrGLUniformHandler::internalAddUniformArray(
UniformInfo& uni = fUniforms.push_back();
uni.fVariable.setType(type);
- uni.fVariable.setTypeModifier(GrGLSLShaderVar::kUniform_TypeModifier);
+ uni.fVariable.setTypeModifier(GrShaderVar::kUniform_TypeModifier);
// TODO this is a bit hacky, lets think of a better way. Basically we need to be able to use
// the uniform view matrix name in the GP, and the GP is immutable so it has to tell the PB
// exactly what name it wants to use for the uniform view matrix. If we prefix anythings, then
@@ -70,7 +70,7 @@ GrGLSLUniformHandler::SamplerHandle GrGLUniformHandler::addSampler(uint32_t visi
UniformInfo& sampler = fSamplers.push_back();
SkASSERT(GrSLTypeIsCombinedSamplerType(type));
sampler.fVariable.setType(type);
- sampler.fVariable.setTypeModifier(GrGLSLShaderVar::kUniform_TypeModifier);
+ sampler.fVariable.setTypeModifier(GrShaderVar::kUniform_TypeModifier);
sampler.fVariable.setPrecision(precision);
sampler.fVariable.setName(mangleName);
sampler.fLocation = -1;
diff --git a/src/gpu/gl/GrGLUniformHandler.h b/src/gpu/gl/GrGLUniformHandler.h
index da5b96d0ca..d3aa2f8358 100644
--- a/src/gpu/gl/GrGLUniformHandler.h
+++ b/src/gpu/gl/GrGLUniformHandler.h
@@ -18,7 +18,7 @@ class GrGLUniformHandler : public GrGLSLUniformHandler {
public:
static const int kUniformsPerBlock = 8;
- const GrGLSLShaderVar& getUniformVariable(UniformHandle u) const override {
+ const GrShaderVar& getUniformVariable(UniformHandle u) const override {
return fUniforms[u.toIndex()].fVariable;
}
@@ -42,7 +42,7 @@ private:
SamplerHandle addSampler(uint32_t visibility, GrSwizzle, GrSLType, GrSLPrecision,
const char* name) override;
- const GrGLSLShaderVar& samplerVariable(SamplerHandle handle) const override {
+ const GrShaderVar& samplerVariable(SamplerHandle handle) const override {
return fSamplers[handle.toIndex()].fVariable;
}
diff --git a/src/gpu/glsl/GrGLSLBlend.cpp b/src/gpu/glsl/GrGLSLBlend.cpp
index da73b6644b..e9a9f50f84 100644
--- a/src/gpu/glsl/GrGLSLBlend.cpp
+++ b/src/gpu/glsl/GrGLSLBlend.cpp
@@ -124,8 +124,8 @@ static void soft_light_component_pos_dst_alpha(GrGLSLFragmentBuilder* fsBuilder,
static void add_lum_function(GrGLSLFragmentBuilder* fsBuilder, SkString* setLumFunction) {
// Emit a helper that gets the luminance of a color.
SkString getFunction;
- GrGLSLShaderVar getLumArgs[] = {
- GrGLSLShaderVar("color", kVec3f_GrSLType),
+ GrShaderVar getLumArgs[] = {
+ GrShaderVar("color", kVec3f_GrSLType),
};
SkString getLumBody("return dot(vec3(0.3, 0.59, 0.11), color);");
fsBuilder->emitFunction(kFloat_GrSLType,
@@ -135,10 +135,10 @@ static void add_lum_function(GrGLSLFragmentBuilder* fsBuilder, SkString* setLumF
&getFunction);
// Emit the set luminance function.
- GrGLSLShaderVar setLumArgs[] = {
- GrGLSLShaderVar("hueSat", kVec3f_GrSLType),
- GrGLSLShaderVar("alpha", kFloat_GrSLType),
- GrGLSLShaderVar("lumColor", kVec3f_GrSLType),
+ GrShaderVar setLumArgs[] = {
+ GrShaderVar("hueSat", kVec3f_GrSLType),
+ GrShaderVar("alpha", kFloat_GrSLType),
+ GrShaderVar("lumColor", kVec3f_GrSLType),
};
SkString setLumBody;
setLumBody.printf("float diff = %s(lumColor - hueSat);", getFunction.c_str());
@@ -169,7 +169,7 @@ static void add_lum_function(GrGLSLFragmentBuilder* fsBuilder, SkString* setLumF
static void add_sat_function(GrGLSLFragmentBuilder* fsBuilder, SkString* setSatFunction) {
// Emit a helper that gets the saturation of a color
SkString getFunction;
- GrGLSLShaderVar getSatArgs[] = { GrGLSLShaderVar("color", kVec3f_GrSLType) };
+ GrShaderVar getSatArgs[] = { GrShaderVar("color", kVec3f_GrSLType) };
SkString getSatBody;
getSatBody.printf("return max(max(color.r, color.g), color.b) - "
"min(min(color.r, color.g), color.b);");
@@ -184,11 +184,11 @@ static void add_sat_function(GrGLSLFragmentBuilder* fsBuilder, SkString* setSatF
// problems on PowerVR drivers. So instead it returns a vec3 where r, g ,b are the
// adjusted min, mid, and max inputs, respectively.
SkString helperFunction;
- GrGLSLShaderVar helperArgs[] = {
- GrGLSLShaderVar("minComp", kFloat_GrSLType),
- GrGLSLShaderVar("midComp", kFloat_GrSLType),
- GrGLSLShaderVar("maxComp", kFloat_GrSLType),
- GrGLSLShaderVar("sat", kFloat_GrSLType),
+ GrShaderVar helperArgs[] = {
+ GrShaderVar("minComp", kFloat_GrSLType),
+ GrShaderVar("midComp", kFloat_GrSLType),
+ GrShaderVar("maxComp", kFloat_GrSLType),
+ GrShaderVar("sat", kFloat_GrSLType),
};
static const char kHelperBody[] = "if (minComp < maxComp) {"
"vec3 result;"
@@ -205,9 +205,9 @@ static void add_sat_function(GrGLSLFragmentBuilder* fsBuilder, SkString* setSatF
kHelperBody,
&helperFunction);
- GrGLSLShaderVar setSatArgs[] = {
- GrGLSLShaderVar("hueLumColor", kVec3f_GrSLType),
- GrGLSLShaderVar("satColor", kVec3f_GrSLType),
+ GrShaderVar setSatArgs[] = {
+ GrShaderVar("hueLumColor", kVec3f_GrSLType),
+ GrShaderVar("satColor", kVec3f_GrSLType),
};
const char* helpFunc = helperFunction.c_str();
SkString setSatBody;
diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
index a9493b81dc..46b1947f21 100644
--- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
@@ -147,8 +147,8 @@ const char* GrGLSLFragmentShaderBuilder::fragmentPosition() {
extension);
}
fInputs.push_back().set(kVec4f_GrSLType,
- GrGLSLShaderVar::kIn_TypeModifier,
"gl_FragCoord",
+ GrShaderVar::kIn_TypeModifier,
kDefault_GrSLPrecision,
"origin_upper_left");
fSetupFragPosition = true;
@@ -226,9 +226,8 @@ void GrGLSLFragmentShaderBuilder::overrideSampleCoverage(const char* mask) {
if (this->addFeature(1 << kSampleMaskOverrideCoverage_GLSLPrivateFeature,
"GL_NV_sample_mask_override_coverage")) {
// Redeclare gl_SampleMask with layout(override_coverage) if we haven't already.
- fOutputs.push_back().set(kInt_GrSLType, GrShaderVar::kOut_TypeModifier,
- "gl_SampleMask", 1, kHigh_GrSLPrecision,
- "override_coverage");
+ fOutputs.push_back().set(kInt_GrSLType, "gl_SampleMask", 1, GrShaderVar::kOut_TypeModifier,
+ kHigh_GrSLPrecision, "override_coverage");
}
this->codeAppendf("gl_SampleMask[0] = %s;", mask);
fHasInitializedSampleMask = true;
@@ -283,9 +282,8 @@ void GrGLSLFragmentShaderBuilder::enableCustomOutput() {
if (!fHasCustomColorOutput) {
fHasCustomColorOutput = true;
fCustomColorOutputIndex = fOutputs.count();
- fOutputs.push_back().set(kVec4f_GrSLType,
- GrGLSLShaderVar::kOut_TypeModifier,
- DeclaredColorOutputName());
+ fOutputs.push_back().set(kVec4f_GrSLType, DeclaredColorOutputName(),
+ GrShaderVar::kOut_TypeModifier);
fProgramBuilder->finalizeFragmentOutputColor(fOutputs.back());
}
}
@@ -303,8 +301,8 @@ void GrGLSLFragmentShaderBuilder::enableSecondaryOutput() {
// output. The condition also co-incides with the condition in whici GLES SL 2.0
// requires the built-in gl_SecondaryFragColorEXT, where as 3.0 requires a custom output.
if (caps.mustDeclareFragmentShaderOutput()) {
- fOutputs.push_back().set(kVec4f_GrSLType, GrGLSLShaderVar::kOut_TypeModifier,
- DeclaredSecondaryColorOutputName());
+ fOutputs.push_back().set(kVec4f_GrSLType, DeclaredSecondaryColorOutputName(),
+ GrShaderVar::kOut_TypeModifier);
fProgramBuilder->finalizeFragmentSecondaryColor(fOutputs.back());
}
}
diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h
index bf8569c073..f7d2323074 100644
--- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h
+++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.h
@@ -8,8 +8,8 @@
#ifndef GrGLSLFragmentShaderBuilder_DEFINED
#define GrGLSLFragmentShaderBuilder_DEFINED
+#include "GrBlend.h"
#include "GrGLSLShaderBuilder.h"
-
#include "GrProcessor.h"
class GrRenderTarget;
diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.cpp b/src/gpu/glsl/GrGLSLProgramBuilder.cpp
index 7dea0be761..9da88ded18 100644
--- a/src/gpu/glsl/GrGLSLProgramBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLProgramBuilder.cpp
@@ -9,6 +9,7 @@
#include "GrPipeline.h"
#include "GrTexturePriv.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLGeometryProcessor.h"
#include "glsl/GrGLSLVarying.h"
diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.h b/src/gpu/glsl/GrGLSLProgramBuilder.h
index 727614455f..6c1eb3bf4b 100644
--- a/src/gpu/glsl/GrGLSLProgramBuilder.h
+++ b/src/gpu/glsl/GrGLSLProgramBuilder.h
@@ -20,8 +20,9 @@
#include "glsl/GrGLSLXferProcessor.h"
class GrGLSLCaps;
-class GrGLSLShaderVar;
+class GrShaderVar;
class GrGLSLVaryingHandler;
+class GrGLSLExpr4;
typedef SkSTArray<8, GrGLSLFragmentProcessor*, true> GrGLSLFragProcs;
@@ -43,7 +44,7 @@ public:
typedef GrGLSLUniformHandler::SamplerHandle SamplerHandle;
- const GrGLSLShaderVar& samplerVariable(SamplerHandle handle) const {
+ const GrShaderVar& samplerVariable(SamplerHandle handle) const {
return this->uniformHandler()->samplerVariable(handle);
}
@@ -79,8 +80,8 @@ public:
// Used for backend customization of the output color and secondary color variables from the
// fragment processor. Only used if the outputs are explicitly declared in the shaders
- virtual void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) {}
- virtual void finalizeFragmentSecondaryColor(GrGLSLShaderVar& outputColor) {}
+ virtual void finalizeFragmentOutputColor(GrShaderVar& outputColor) {}
+ virtual void finalizeFragmentSecondaryColor(GrShaderVar& outputColor) {}
// number of each input/output type in a single allocation block, used by many builders
static const int kVarsPerBlock;
diff --git a/src/gpu/glsl/GrGLSLShaderBuilder.cpp b/src/gpu/glsl/GrGLSLShaderBuilder.cpp
index 2e7977938a..3836d6dbe4 100644
--- a/src/gpu/glsl/GrGLSLShaderBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLShaderBuilder.cpp
@@ -5,11 +5,11 @@
* found in the LICENSE file.
*/
+#include "GrShaderVar.h"
#include "GrSwizzle.h"
#include "glsl/GrGLSLShaderBuilder.h"
#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLColorSpaceXformHelper.h"
-#include "glsl/GrGLSLShaderVar.h"
#include "glsl/GrGLSLProgramBuilder.h"
GrGLSLShaderBuilder::GrGLSLShaderBuilder(GrGLSLProgramBuilder* program)
@@ -29,7 +29,7 @@ GrGLSLShaderBuilder::GrGLSLShaderBuilder(GrGLSLProgramBuilder* program)
this->main() = "void main() {";
}
-void GrGLSLShaderBuilder::declAppend(const GrGLSLShaderVar& var) {
+void GrGLSLShaderBuilder::declAppend(const GrShaderVar& var) {
SkString tempDecl;
var.appendDecl(fProgramBuilder->glslCaps(), &tempDecl);
this->codeAppendf("%s;", tempDecl.c_str());
@@ -44,7 +44,7 @@ void GrGLSLShaderBuilder::appendPrecisionModifier(GrSLPrecision precision) {
void GrGLSLShaderBuilder::emitFunction(GrSLType returnType,
const char* name,
int argCnt,
- const GrGLSLShaderVar* args,
+ const GrShaderVar* args,
const char* body,
SkString* outName) {
this->functions().append(GrGLSLTypeString(returnType));
@@ -73,7 +73,7 @@ void GrGLSLShaderBuilder::appendTextureLookup(SkString* out,
const char* coordName,
GrSLType varyingType) const {
const GrGLSLCaps* glslCaps = fProgramBuilder->glslCaps();
- const GrGLSLShaderVar& sampler = fProgramBuilder->samplerVariable(samplerHandle);
+ const GrShaderVar& sampler = fProgramBuilder->samplerVariable(samplerHandle);
GrSLType samplerType = sampler.getType();
if (samplerType == kTexture2DRectSampler_GrSLType) {
if (varyingType == kVec2f_GrSLType) {
@@ -132,9 +132,9 @@ void GrGLSLShaderBuilder::appendColorGamutXform(SkString* out,
// Our color is (r, g, b, a), but we want to multiply (r, g, b, 1) by our matrix, then
// re-insert the original alpha. The supplied srcColor is likely to be of the form
// "texture(...)", and we don't want to evaluate that twice, so wrap everything in a function.
- static const GrGLSLShaderVar gColorGamutXformArgs[] = {
- GrGLSLShaderVar("color", kVec4f_GrSLType),
- GrGLSLShaderVar("xform", kMat44f_GrSLType),
+ static const GrShaderVar gColorGamutXformArgs[] = {
+ GrShaderVar("color", kVec4f_GrSLType),
+ GrShaderVar("xform", kMat44f_GrSLType),
};
SkString functionBody;
// Gamut xform, clamp to destination gamut
@@ -162,7 +162,7 @@ void GrGLSLShaderBuilder::appendColorGamutXform(const char* srcColor,
void GrGLSLShaderBuilder::appendTexelFetch(SkString* out,
SamplerHandle samplerHandle,
const char* coordExpr) const {
- const GrGLSLShaderVar& sampler = fProgramBuilder->samplerVariable(samplerHandle);
+ const GrShaderVar& sampler = fProgramBuilder->samplerVariable(samplerHandle);
SkASSERT(fProgramBuilder->glslCaps()->texelFetchSupport());
SkASSERT(GrSLTypeIsCombinedSamplerType(sampler.getType()));
diff --git a/src/gpu/glsl/GrGLSLShaderBuilder.h b/src/gpu/glsl/GrGLSLShaderBuilder.h
index 2ab0eecf91..17eb5a63cf 100644
--- a/src/gpu/glsl/GrGLSLShaderBuilder.h
+++ b/src/gpu/glsl/GrGLSLShaderBuilder.h
@@ -9,8 +9,8 @@
#define GrGLSLShaderBuilder_DEFINED
#include "GrAllocator.h"
+#include "GrShaderVar.h"
#include "glsl/GrGLSLUniformHandler.h"
-#include "glsl/GrGLSLShaderVar.h"
#include "SkTDArray.h"
#include <stdarg.h>
@@ -118,7 +118,7 @@ public:
/**
* Appends a variable declaration to one of the shaders
*/
- void declAppend(const GrGLSLShaderVar& var);
+ void declAppend(const GrShaderVar& var);
/**
* Appends a precision qualifier followed by a space, if relevant for the GLSL version.
@@ -129,7 +129,7 @@ public:
void emitFunction(GrSLType returnType,
const char* name,
int argCnt,
- const GrGLSLShaderVar* args,
+ const GrShaderVar* args,
const char* body,
SkString* outName);
@@ -161,7 +161,7 @@ public:
};
protected:
- typedef GrTAllocator<GrGLSLShaderVar> VarArray;
+ typedef GrTAllocator<GrShaderVar> VarArray;
void appendDecls(const VarArray& vars, SkString* out) const;
/**
diff --git a/src/gpu/glsl/GrGLSLShaderVar.h b/src/gpu/glsl/GrGLSLShaderVar.h
deleted file mode 100644
index 74afed8cda..0000000000
--- a/src/gpu/glsl/GrGLSLShaderVar.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrGLSLShaderVar_DEFINED
-#define GrGLSLShaderVar_DEFINED
-
-#include "GrShaderVar.h"
-#include "../glsl/GrGLSL.h"
-#include "../glsl/GrGLSLCaps.h"
-
-#define USE_UNIFORM_FLOAT_ARRAYS true
-
-/**
- * Represents a variable in a shader
- */
-class GrGLSLShaderVar : public GrShaderVar {
-public:
- /**
- * Defaults to a float with no precision specifier
- */
- GrGLSLShaderVar()
- : GrShaderVar()
- , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
- }
-
- GrGLSLShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray,
- GrSLPrecision precision = kDefault_GrSLPrecision)
- : GrShaderVar(name, type, arrayCount, precision)
- , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != type);
- fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS;
- }
-
- GrGLSLShaderVar(const char* name, GrSLType type, TypeModifier typeModifier,
- int arrayCount = kNonArray, GrSLPrecision precision = kDefault_GrSLPrecision)
- : GrShaderVar(name, type, typeModifier, arrayCount, precision)
- , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != type);
- }
-
- GrGLSLShaderVar(const GrShaderVar& var)
- : GrShaderVar(var)
- , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != var.getType());
- }
-
- GrGLSLShaderVar(const GrGLSLShaderVar& var)
- : GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(),
- var.getArrayCount(), var.getPrecision())
- , fUseUniformFloatArrays(var.fUseUniformFloatArrays)
- , fLayoutQualifier(var.fLayoutQualifier)
- , fExtraModifiers(var.fExtraModifiers) {
- SkASSERT(kVoid_GrSLType != var.getType());
- }
-
- /**
- * Values for array count that have special meaning. We allow 1-sized arrays.
- */
- enum {
- kNonArray = 0, // not an array
- kUnsizedArray = -1, // an unsized array (declared with [])
- };
-
- /**
- * Sets as a non-array.
- */
- void set(GrSLType type,
- TypeModifier typeModifier,
- const SkString& name,
- GrSLPrecision precision = kDefault_GrSLPrecision,
- const char* layoutQualifier = nullptr,
- const char* extraModifiers = nullptr,
- bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != type);
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
- INHERITED::set(type, name, typeModifier, precision);
- fLayoutQualifier = layoutQualifier;
- if (extraModifiers) {
- fExtraModifiers.printf("%s ", extraModifiers);
- }
- fUseUniformFloatArrays = useUniformFloatArrays;
- }
-
- /**
- * Sets as a non-array.
- */
- void set(GrSLType type,
- TypeModifier typeModifier,
- const char* name,
- GrSLPrecision precision = kDefault_GrSLPrecision,
- const char* layoutQualifier = nullptr,
- const char* extraModifiers = nullptr,
- bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != type);
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
- INHERITED::set(type, name, typeModifier, precision);
- fLayoutQualifier = layoutQualifier;
- if (extraModifiers) {
- fExtraModifiers.printf("%s ", extraModifiers);
- }
- fUseUniformFloatArrays = useUniformFloatArrays;
- }
-
- /**
- * Set all var options
- */
- void set(GrSLType type,
- TypeModifier typeModifier,
- const SkString& name,
- int count,
- GrSLPrecision precision = kDefault_GrSLPrecision,
- const char* layoutQualifier = nullptr,
- const char* extraModifiers = nullptr,
- bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != type);
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
- INHERITED::set(type, name, typeModifier, precision, count);
- fLayoutQualifier = layoutQualifier;
- if (extraModifiers) {
- fExtraModifiers.printf("%s ", extraModifiers);
- }
- fUseUniformFloatArrays = useUniformFloatArrays;
- }
-
- /**
- * Set all var options
- */
- void set(GrSLType type,
- TypeModifier typeModifier,
- const char* name,
- int count,
- GrSLPrecision precision = kDefault_GrSLPrecision,
- const char* layoutQualifier = nullptr,
- const char* extraModifiers = nullptr,
- bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
- SkASSERT(kVoid_GrSLType != type);
- SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeAcceptsPrecision(type));
- INHERITED::set(type, name, typeModifier, precision, count);
- fLayoutQualifier = layoutQualifier;
- if (extraModifiers) {
- fExtraModifiers.printf("%s ", extraModifiers);
- }
- fUseUniformFloatArrays = useUniformFloatArrays;
- }
-
- /**
- * Set the layout qualifier
- */
- void setLayoutQualifier(const char* layoutQualifier) {
- fLayoutQualifier = layoutQualifier;
- }
-
- void addModifier(const char* modifier) {
- if (modifier) {
- fExtraModifiers.appendf("%s ", modifier);
- }
- }
-
- /**
- * Write a declaration of this variable to out.
- */
- void appendDecl(const GrGLSLCaps* glslCaps, SkString* out) const {
- SkASSERT(kDefault_GrSLPrecision == fPrecision || GrSLTypeAcceptsPrecision(fType));
- if (!fLayoutQualifier.isEmpty()) {
- out->appendf("layout(%s) ", fLayoutQualifier.c_str());
- }
- out->append(fExtraModifiers);
- if (this->getTypeModifier() != kNone_TypeModifier) {
- out->append(TypeModifierString(glslCaps, this->getTypeModifier()));
- out->append(" ");
- }
- GrSLType effectiveType = this->getType();
- if (glslCaps->usesPrecisionModifiers() && GrSLTypeAcceptsPrecision(effectiveType)) {
- // Desktop GLSL has added precision qualifiers but they don't do anything.
- out->appendf("%s ", GrGLSLPrecisionString(fPrecision));
- }
- if (this->isArray()) {
- if (this->isUnsizedArray()) {
- out->appendf("%s %s[]",
- GrGLSLTypeString(effectiveType),
- this->getName().c_str());
- } else {
- SkASSERT(this->getArrayCount() > 0);
- out->appendf("%s %s[%d]",
- GrGLSLTypeString(effectiveType),
- this->getName().c_str(),
- this->getArrayCount());
- }
- } else {
- out->appendf("%s %s",
- GrGLSLTypeString(effectiveType),
- this->getName().c_str());
- }
- }
-
- void appendArrayAccess(int index, SkString* out) const {
- out->appendf("%s[%d]%s",
- this->getName().c_str(),
- index,
- fUseUniformFloatArrays ? "" : ".x");
- }
-
- void appendArrayAccess(const char* indexName, SkString* out) const {
- out->appendf("%s[%s]%s",
- this->getName().c_str(),
- indexName,
- fUseUniformFloatArrays ? "" : ".x");
- }
-
-private:
- static const char* TypeModifierString(const GrGLSLCaps* glslCaps, TypeModifier t) {
- switch (t) {
- case kNone_TypeModifier:
- return "";
- case kIn_TypeModifier:
- return "in";
- case kInOut_TypeModifier:
- return "inout";
- case kOut_TypeModifier:
- return "out";
- case kUniform_TypeModifier:
- return "uniform";
- }
- SkFAIL("Unknown shader variable type modifier.");
- return ""; // suppress warning
- }
-
- /// Work around driver bugs on some hardware that don't correctly
- /// support uniform float []
- bool fUseUniformFloatArrays;
-
- SkString fLayoutQualifier;
- SkString fExtraModifiers;
-
- typedef GrShaderVar INHERITED;
-};
-
-#endif
diff --git a/src/gpu/glsl/GrGLSLUniformHandler.h b/src/gpu/glsl/GrGLSLUniformHandler.h
index 657be6a804..d49fbd4820 100644
--- a/src/gpu/glsl/GrGLSLUniformHandler.h
+++ b/src/gpu/glsl/GrGLSLUniformHandler.h
@@ -9,7 +9,8 @@
#define GrGLSLUniformHandler_DEFINED
#include "GrGLSLProgramDataManager.h"
-#include "GrGLSLShaderVar.h"
+#include "GrShaderVar.h"
+#include "GrSwizzle.h"
class GrGLSLProgramBuilder;
@@ -46,7 +47,7 @@ public:
outName);
}
- virtual const GrGLSLShaderVar& getUniformVariable(UniformHandle u) const = 0;
+ virtual const GrShaderVar& getUniformVariable(UniformHandle u) const = 0;
/**
* Shortcut for getUniformVariable(u).c_str()
@@ -60,7 +61,7 @@ protected:
GrGLSLProgramBuilder* fProgramBuilder;
private:
- virtual const GrGLSLShaderVar& samplerVariable(SamplerHandle) const = 0;
+ virtual const GrShaderVar& samplerVariable(SamplerHandle) const = 0;
virtual GrSwizzle samplerSwizzle(SamplerHandle) const = 0;
virtual SamplerHandle addSampler(uint32_t visibility, GrSwizzle, GrSLType, GrSLPrecision,
diff --git a/src/gpu/glsl/GrGLSLVarying.cpp b/src/gpu/glsl/GrGLSLVarying.cpp
index 4d9b61fd86..a3d50533cc 100644
--- a/src/gpu/glsl/GrGLSLVarying.cpp
+++ b/src/gpu/glsl/GrGLSLVarying.cpp
@@ -6,7 +6,7 @@
*/
#include "glsl/GrGLSLVarying.h"
-
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLProgramBuilder.h"
void GrGLSLVaryingHandler::addPassThroughAttribute(const GrGeometryProcessor::Attribute* input,
@@ -81,7 +81,7 @@ void GrGLSLVaryingHandler::emitAttributes(const GrGeometryProcessor& gp) {
void GrGLSLVaryingHandler::addAttribute(const GrShaderVar& var) {
SkASSERT(GrShaderVar::kIn_TypeModifier == var.getTypeModifier());
for (int j = 0; j < fVertexInputs.count(); ++j) {
- const GrGLSLShaderVar& attr = fVertexInputs[j];
+ const GrShaderVar& attr = fVertexInputs[j];
// if attribute already added, don't add it again
if (attr.getName().equals(var.getName())) {
return;
@@ -111,23 +111,23 @@ void GrGLSLVaryingHandler::finalize() {
const VaryingInfo& v = this->fVaryings[i];
const char* modifier = v.fIsFlat ? "flat" : fDefaultInterpolationModifier;
if (v.fVisibility & kVertex_GrShaderFlag) {
- fVertexOutputs.push_back().set(v.fType, GrShaderVar::kOut_TypeModifier, v.fVsOut,
+ fVertexOutputs.push_back().set(v.fType, v.fVsOut, GrShaderVar::kOut_TypeModifier,
v.fPrecision, nullptr, modifier);
if (v.fVisibility & kGeometry_GrShaderFlag) {
- fGeomInputs.push_back().set(v.fType, GrShaderVar::kIn_TypeModifier, v.fVsOut,
- GrShaderVar::kUnsizedArray, v.fPrecision, nullptr,
+ fGeomInputs.push_back().set(v.fType, v.fVsOut, GrShaderVar::kUnsizedArray,
+ GrShaderVar::kIn_TypeModifier, v.fPrecision, nullptr,
modifier);
}
}
if (v.fVisibility & kFragment_GrShaderFlag) {
const char* fsIn = v.fVsOut.c_str();
if (v.fVisibility & kGeometry_GrShaderFlag) {
- fGeomOutputs.push_back().set(v.fType, GrGLSLShaderVar::kOut_TypeModifier,
- v.fGsOut, v.fPrecision, nullptr, modifier);
+ fGeomOutputs.push_back().set(v.fType, v.fGsOut, GrShaderVar::kOut_TypeModifier,
+ v.fPrecision, nullptr, modifier);
fsIn = v.fGsOut.c_str();
}
- fFragInputs.push_back().set(v.fType, GrShaderVar::kIn_TypeModifier, fsIn,
- v.fPrecision, nullptr, modifier);
+ fFragInputs.push_back().set(v.fType, fsIn, GrShaderVar::kIn_TypeModifier, v.fPrecision,
+ nullptr, modifier);
}
}
this->onFinalize();
diff --git a/src/gpu/glsl/GrGLSLVarying.h b/src/gpu/glsl/GrGLSLVarying.h
index 5867361ce4..e9378a8887 100644
--- a/src/gpu/glsl/GrGLSLVarying.h
+++ b/src/gpu/glsl/GrGLSLVarying.h
@@ -10,9 +10,9 @@
#include "GrAllocator.h"
#include "GrGeometryProcessor.h"
+#include "GrShaderVar.h"
#include "GrTypesPriv.h"
#include "glsl/GrGLSLProgramDataManager.h"
-#include "glsl/GrGLSLShaderVar.h"
class GrGLSLProgramBuilder;
@@ -152,7 +152,7 @@ protected:
};
typedef GrTAllocator<VaryingInfo> VaryingList;
- typedef GrTAllocator<GrGLSLShaderVar> VarArray;
+ typedef GrTAllocator<GrShaderVar> VarArray;
typedef GrGLSLProgramDataManager::VaryingHandle VaryingHandle;
VaryingList fVaryings;
diff --git a/src/gpu/glsl/GrGLSLXferProcessor.cpp b/src/gpu/glsl/GrGLSLXferProcessor.cpp
index 0f7a3db718..1f6db4ca20 100644
--- a/src/gpu/glsl/GrGLSLXferProcessor.cpp
+++ b/src/gpu/glsl/GrGLSLXferProcessor.cpp
@@ -8,6 +8,7 @@
#include "glsl/GrGLSLXferProcessor.h"
#include "GrXferProcessor.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramDataManager.h"
#include "glsl/GrGLSLUniformHandler.h"
diff --git a/src/gpu/instanced/InstanceProcessor.cpp b/src/gpu/instanced/InstanceProcessor.cpp
index bcf4864752..ed38e71c14 100644
--- a/src/gpu/instanced/InstanceProcessor.cpp
+++ b/src/gpu/instanced/InstanceProcessor.cpp
@@ -11,6 +11,7 @@
#include "GrRenderTargetPriv.h"
#include "GrResourceCache.h"
#include "GrResourceProvider.h"
+#include "glsl/GrGLSLCaps.h"
#include "glsl/GrGLSLGeometryProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
#include "glsl/GrGLSLProgramBuilder.h"
@@ -1367,7 +1368,7 @@ void GLSLInstanceProcessor::BackendMultisample::onEmitCode(GrGLSLVertexBuilder*,
}
if (kRect_ShapeFlag != (fBatchInfo.fShapeTypes | fBatchInfo.fInnerShapeTypes)) {
- GrGLSLShaderVar x("x", kVec2f_GrSLType, GrGLSLShaderVar::kNonArray, kHigh_GrSLPrecision);
+ GrShaderVar x("x", kVec2f_GrSLType, GrShaderVar::kNonArray, kHigh_GrSLPrecision);
f->emitFunction(kFloat_GrSLType, "square", 1, &x, "return dot(x, x);", &fSquareFun);
}
diff --git a/src/gpu/vk/GrVkCopyManager.cpp b/src/gpu/vk/GrVkCopyManager.cpp
index 6e96822a2e..5e5450355c 100644
--- a/src/gpu/vk/GrVkCopyManager.cpp
+++ b/src/gpu/vk/GrVkCopyManager.cpp
@@ -21,6 +21,7 @@
#include "GrVkTexture.h"
#include "GrVkUniformBuffer.h"
#include "GrVkVertexBuffer.h"
+#include "glsl/GrGLSLCaps.h"
#include "SkPoint.h"
#include "SkRect.h"
diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.cpp b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
index 5a783f027f..e68159ddf0 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
@@ -7,10 +7,12 @@
#include "vk/GrVkPipelineStateBuilder.h"
+#include "glsl/GrGLSLCaps.h"
#include "vk/GrVkDescriptorSetManager.h"
#include "vk/GrVkGpu.h"
#include "vk/GrVkRenderPass.h"
+
GrVkPipelineState* GrVkPipelineStateBuilder::CreatePipelineState(
GrVkGpu* gpu,
const GrPipeline& pipeline,
@@ -51,11 +53,11 @@ const GrGLSLCaps* GrVkPipelineStateBuilder::glslCaps() const {
return fGpu->vkCaps().glslCaps();
}
-void GrVkPipelineStateBuilder::finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) {
+void GrVkPipelineStateBuilder::finalizeFragmentOutputColor(GrShaderVar& outputColor) {
outputColor.setLayoutQualifier("location = 0, index = 0");
}
-void GrVkPipelineStateBuilder::finalizeFragmentSecondaryColor(GrGLSLShaderVar& outputColor) {
+void GrVkPipelineStateBuilder::finalizeFragmentSecondaryColor(GrShaderVar& outputColor) {
outputColor.setLayoutQualifier("location = 0, index = 1");
}
diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.h b/src/gpu/vk/GrVkPipelineStateBuilder.h
index cf9237a997..8e3ede9a90 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.h
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.h
@@ -42,8 +42,8 @@ public:
GrVkGpu* gpu() const { return fGpu; }
- void finalizeFragmentOutputColor(GrGLSLShaderVar& outputColor) override;
- void finalizeFragmentSecondaryColor(GrGLSLShaderVar& outputColor) override;
+ void finalizeFragmentOutputColor(GrShaderVar& outputColor) override;
+ void finalizeFragmentSecondaryColor(GrShaderVar& outputColor) override;
private:
GrVkPipelineStateBuilder(GrVkGpu*,
diff --git a/src/gpu/vk/GrVkPipelineStateDataManager.cpp b/src/gpu/vk/GrVkPipelineStateDataManager.cpp
index ef75bd3b9d..88176da265 100644
--- a/src/gpu/vk/GrVkPipelineStateDataManager.cpp
+++ b/src/gpu/vk/GrVkPipelineStateDataManager.cpp
@@ -26,7 +26,7 @@ GrVkPipelineStateDataManager::GrVkPipelineStateDataManager(const UniformInfoArra
for (int i = 0; i < count; i++) {
Uniform& uniform = fUniforms[i];
const GrVkUniformHandler::UniformInfo uniformInfo = uniforms[i];
- SkASSERT(GrGLSLShaderVar::kNonArray == uniformInfo.fVariable.getArrayCount() ||
+ SkASSERT(GrShaderVar::kNonArray == uniformInfo.fVariable.getArrayCount() ||
uniformInfo.fVariable.getArrayCount() > 0);
SkDEBUGCODE(
uniform.fArrayCount = uniformInfo.fVariable.getArrayCount();
@@ -57,7 +57,7 @@ void* GrVkPipelineStateDataManager::getBufferPtrAndMarkDirty(const Uniform& uni)
void GrVkPipelineStateDataManager::set1i(UniformHandle u, int32_t i) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kInt_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
void* buffer = this->getBufferPtrAndMarkDirty(uni);
memcpy(buffer, &i, sizeof(int32_t));
}
@@ -69,7 +69,7 @@ void GrVkPipelineStateDataManager::set1iv(UniformHandle u,
SkASSERT(uni.fType == kInt_GrSLType);
SkASSERT(arrayCount > 0);
SkASSERT(arrayCount <= uni.fArrayCount ||
- (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCount));
+ (1 == arrayCount && GrShaderVar::kNonArray == uni.fArrayCount));
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(int32_t) == 4);
@@ -83,7 +83,7 @@ void GrVkPipelineStateDataManager::set1iv(UniformHandle u,
void GrVkPipelineStateDataManager::set1f(UniformHandle u, float v0) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kFloat_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
memcpy(buffer, &v0, sizeof(float));
@@ -96,7 +96,7 @@ void GrVkPipelineStateDataManager::set1fv(UniformHandle u,
SkASSERT(uni.fType == kFloat_GrSLType);
SkASSERT(arrayCount > 0);
SkASSERT(arrayCount <= uni.fArrayCount ||
- (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCount));
+ (1 == arrayCount && GrShaderVar::kNonArray == uni.fArrayCount));
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
@@ -110,7 +110,7 @@ void GrVkPipelineStateDataManager::set1fv(UniformHandle u,
void GrVkPipelineStateDataManager::set2f(UniformHandle u, float v0, float v1) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kVec2f_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
float v[2] = { v0, v1 };
@@ -124,7 +124,7 @@ void GrVkPipelineStateDataManager::set2fv(UniformHandle u,
SkASSERT(uni.fType == kVec2f_GrSLType);
SkASSERT(arrayCount > 0);
SkASSERT(arrayCount <= uni.fArrayCount ||
- (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCount));
+ (1 == arrayCount && GrShaderVar::kNonArray == uni.fArrayCount));
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
@@ -138,7 +138,7 @@ void GrVkPipelineStateDataManager::set2fv(UniformHandle u,
void GrVkPipelineStateDataManager::set3f(UniformHandle u, float v0, float v1, float v2) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kVec3f_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
float v[3] = { v0, v1, v2 };
@@ -152,7 +152,7 @@ void GrVkPipelineStateDataManager::set3fv(UniformHandle u,
SkASSERT(uni.fType == kVec3f_GrSLType);
SkASSERT(arrayCount > 0);
SkASSERT(arrayCount <= uni.fArrayCount ||
- (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCount));
+ (1 == arrayCount && GrShaderVar::kNonArray == uni.fArrayCount));
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
@@ -170,7 +170,7 @@ void GrVkPipelineStateDataManager::set4f(UniformHandle u,
float v3) const {
const Uniform& uni = fUniforms[u.toIndex()];
SkASSERT(uni.fType == kVec4f_GrSLType);
- SkASSERT(GrGLSLShaderVar::kNonArray == uni.fArrayCount);
+ SkASSERT(GrShaderVar::kNonArray == uni.fArrayCount);
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
float v[4] = { v0, v1, v2, v3 };
@@ -184,7 +184,7 @@ void GrVkPipelineStateDataManager::set4fv(UniformHandle u,
SkASSERT(uni.fType == kVec4f_GrSLType);
SkASSERT(arrayCount > 0);
SkASSERT(arrayCount <= uni.fArrayCount ||
- (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCount));
+ (1 == arrayCount && GrShaderVar::kNonArray == uni.fArrayCount));
void* buffer = this->getBufferPtrAndMarkDirty(uni);
SkASSERT(sizeof(float) == 4);
@@ -230,7 +230,7 @@ template<int N> inline void GrVkPipelineStateDataManager::setMatrices(UniformHan
SkASSERT(uni.fType == kMat22f_GrSLType + (N - 2));
SkASSERT(arrayCount > 0);
SkASSERT(arrayCount <= uni.fArrayCount ||
- (1 == arrayCount && GrGLSLShaderVar::kNonArray == uni.fArrayCount));
+ (1 == arrayCount && GrShaderVar::kNonArray == uni.fArrayCount));
void* buffer;
if (GrVkUniformHandler::kVertexBinding == uni.fBinding) {
diff --git a/src/gpu/vk/GrVkUniformHandler.cpp b/src/gpu/vk/GrVkUniformHandler.cpp
index 1da411934d..85b6955177 100644
--- a/src/gpu/vk/GrVkUniformHandler.cpp
+++ b/src/gpu/vk/GrVkUniformHandler.cpp
@@ -155,7 +155,7 @@ GrGLSLUniformHandler::UniformHandle GrVkUniformHandler::internalAddUniformArray(
uni.fVariable.setPrecision(precision);
// When outputing the GLSL, only the outer uniform block will get the Uniform modifier. Thus
// we set the modifier to none for all uniforms declared inside the block.
- uni.fVariable.setTypeModifier(GrGLSLShaderVar::kNone_TypeModifier);
+ uni.fVariable.setTypeModifier(GrShaderVar::kNone_TypeModifier);
uint32_t* currentOffset = kVertex_GrShaderFlag == visibility ? &fCurrentVertexUBOOffset
: &fCurrentFragmentUBOOffset;
@@ -184,7 +184,7 @@ GrGLSLUniformHandler::SamplerHandle GrVkUniformHandler::addSampler(uint32_t visi
UniformInfo& info = fSamplers.push_back();
SkASSERT(GrSLTypeIsCombinedSamplerType(type));
info.fVariable.setType(type);
- info.fVariable.setTypeModifier(GrGLSLShaderVar::kUniform_TypeModifier);
+ info.fVariable.setTypeModifier(GrShaderVar::kUniform_TypeModifier);
info.fVariable.setPrecision(precision);
info.fVariable.setName(mangleName);
SkString layoutQualifier;
diff --git a/src/gpu/vk/GrVkUniformHandler.h b/src/gpu/vk/GrVkUniformHandler.h
index 89dc410c1f..e5d4a4cf10 100644
--- a/src/gpu/vk/GrVkUniformHandler.h
+++ b/src/gpu/vk/GrVkUniformHandler.h
@@ -8,10 +8,9 @@
#ifndef GrVkUniformHandler_DEFINED
#define GrVkUniformHandler_DEFINED
-#include "glsl/GrGLSLUniformHandler.h"
-
#include "GrAllocator.h"
-#include "glsl/GrGLSLShaderVar.h"
+#include "GrShaderVar.h"
+#include "glsl/GrGLSLUniformHandler.h"
class GrVkUniformHandler : public GrGLSLUniformHandler {
public:
@@ -28,13 +27,13 @@ public:
// fUBOffset is only valid if the GrSLType of the fVariable is not a sampler
struct UniformInfo {
- GrGLSLShaderVar fVariable;
+ GrShaderVar fVariable;
uint32_t fVisibility;
uint32_t fUBOffset;
};
typedef GrTAllocator<UniformInfo> UniformInfoArray;
- const GrGLSLShaderVar& getUniformVariable(UniformHandle u) const override {
+ const GrShaderVar& getUniformVariable(UniformHandle u) const override {
return fUniforms[u.toIndex()].fVariable;
}
@@ -67,7 +66,7 @@ private:
const char* name) override;
int numSamplers() const { return fSamplers.count(); }
- const GrGLSLShaderVar& samplerVariable(SamplerHandle handle) const override {
+ const GrShaderVar& samplerVariable(SamplerHandle handle) const override {
return fSamplers[handle.toIndex()].fVariable;
}
GrSwizzle samplerSwizzle(SamplerHandle handle) const override {
diff --git a/src/gpu/vk/GrVkVaryingHandler.cpp b/src/gpu/vk/GrVkVaryingHandler.cpp
index 099e0967e4..2b3e97571e 100644
--- a/src/gpu/vk/GrVkVaryingHandler.cpp
+++ b/src/gpu/vk/GrVkVaryingHandler.cpp
@@ -55,7 +55,7 @@ static inline int grsltype_to_location_size(GrSLType type) {
void finalize_helper(GrVkVaryingHandler::VarArray& vars) {
int locationIndex = 0;
for (int i = 0; i < vars.count(); ++i) {
- GrGLSLShaderVar& var = vars[i];
+ GrShaderVar& var = vars[i];
SkString location;
location.appendf("location = %d", locationIndex);
var.setLayoutQualifier(location.c_str());
diff --git a/tests/EGLImageTest.cpp b/tests/EGLImageTest.cpp
index 6301c51c82..8354a8d03a 100644
--- a/tests/EGLImageTest.cpp
+++ b/tests/EGLImageTest.cpp
@@ -12,6 +12,7 @@
#include "gl/GrGLGpu.h"
#include "gl/GrGLUtil.h"
#include "gl/GLTestContext.h"
+#include "glsl/GrGLSLCaps.h"
using sk_gpu_test::GLTestContext;