| Index: src/gpu/gl/GrGLShaderVar.h
|
| diff --git a/src/gpu/gl/GrGLShaderVar.h b/src/gpu/gl/GrGLShaderVar.h
|
| deleted file mode 100644
|
| index 704763d754a399f588e3ea9d8d9a24e644d1d031..0000000000000000000000000000000000000000
|
| --- a/src/gpu/gl/GrGLShaderVar.h
|
| +++ /dev/null
|
| @@ -1,256 +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 GrGLShaderVar_DEFINED
|
| -#define GrGLShaderVar_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 GrGLShaderVar : public GrShaderVar {
|
| -public:
|
| - /**
|
| - * See GL_ARB_fragment_coord_conventions.
|
| - */
|
| - enum Origin {
|
| - kDefault_Origin, // when set to kDefault the origin field is ignored.
|
| - kUpperLeft_Origin, // only used to declare vec4 in gl_FragCoord.
|
| - };
|
| -
|
| - /**
|
| - * Defaults to a float with no precision specifier
|
| - */
|
| - GrGLShaderVar()
|
| - : GrShaderVar()
|
| - , fOrigin(kDefault_Origin)
|
| - , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
|
| - }
|
| -
|
| - GrGLShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray,
|
| - GrSLPrecision precision = kDefault_GrSLPrecision)
|
| - : GrShaderVar(name, type, arrayCount, precision)
|
| - , fOrigin(kDefault_Origin)
|
| - , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != type);
|
| - fOrigin = kDefault_Origin;
|
| - fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS;
|
| - }
|
| -
|
| - GrGLShaderVar(const char* name, GrSLType type, TypeModifier typeModifier,
|
| - int arrayCount = kNonArray, GrSLPrecision precision = kDefault_GrSLPrecision)
|
| - : GrShaderVar(name, type, typeModifier, arrayCount, precision)
|
| - , fOrigin(kDefault_Origin)
|
| - , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != type);
|
| - }
|
| -
|
| - GrGLShaderVar(const GrShaderVar& var)
|
| - : GrShaderVar(var)
|
| - , fOrigin(kDefault_Origin)
|
| - , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != var.getType());
|
| - }
|
| -
|
| - GrGLShaderVar(const GrGLShaderVar& var)
|
| - : GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(),
|
| - var.getArrayCount(), var.getPrecision())
|
| - , fOrigin(var.fOrigin)
|
| - , fUseUniformFloatArrays(var.fUseUniformFloatArrays) {
|
| - 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,
|
| - Origin origin = kDefault_Origin,
|
| - bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != type);
|
| - SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type));
|
| - INHERITED::set(type, name, typeModifier, precision);
|
| - fOrigin = origin;
|
| - fUseUniformFloatArrays = useUniformFloatArrays;
|
| - }
|
| -
|
| - /**
|
| - * Sets as a non-array.
|
| - */
|
| - void set(GrSLType type,
|
| - TypeModifier typeModifier,
|
| - const char* name,
|
| - GrSLPrecision precision = kDefault_GrSLPrecision,
|
| - Origin origin = kDefault_Origin,
|
| - bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != type);
|
| - SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type));
|
| - INHERITED::set(type, name, typeModifier, precision);
|
| - fOrigin = origin;
|
| - fUseUniformFloatArrays = useUniformFloatArrays;
|
| - }
|
| -
|
| - /**
|
| - * Set all var options
|
| - */
|
| - void set(GrSLType type,
|
| - TypeModifier typeModifier,
|
| - const SkString& name,
|
| - int count,
|
| - GrSLPrecision precision = kDefault_GrSLPrecision,
|
| - Origin origin = kDefault_Origin,
|
| - bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != type);
|
| - SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type));
|
| - INHERITED::set(type, name, typeModifier, precision, count);
|
| - fOrigin = origin;
|
| - fUseUniformFloatArrays = useUniformFloatArrays;
|
| - }
|
| -
|
| - /**
|
| - * Set all var options
|
| - */
|
| - void set(GrSLType type,
|
| - TypeModifier typeModifier,
|
| - const char* name,
|
| - int count,
|
| - GrSLPrecision precision = kDefault_GrSLPrecision,
|
| - Origin origin = kDefault_Origin,
|
| - bool useUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS) {
|
| - SkASSERT(kVoid_GrSLType != type);
|
| - SkASSERT(kDefault_GrSLPrecision == precision || GrSLTypeIsFloatType(type));
|
| - INHERITED::set(type, name, typeModifier, precision, count);
|
| - fOrigin = origin;
|
| - fUseUniformFloatArrays = useUniformFloatArrays;
|
| - }
|
| -
|
| - /**
|
| - * Get the origin of the var
|
| - */
|
| - Origin getOrigin() const { return fOrigin; }
|
| -
|
| - /**
|
| - * Set the origin of the var
|
| - */
|
| - void setOrigin(Origin origin) { fOrigin = origin; }
|
| -
|
| - /**
|
| - * Write a declaration of this variable to out.
|
| - */
|
| - void appendDecl(const GrGLSLCaps* glslCaps, SkString* out) const {
|
| - SkASSERT(kDefault_GrSLPrecision == fPrecision || GrSLTypeIsFloatType(fType));
|
| - if (kUpperLeft_Origin == fOrigin) {
|
| - // this is the only place where we specify a layout modifier. If we use other layout
|
| - // modifiers in the future then they should be placed in a list.
|
| - out->append("layout(origin_upper_left) ");
|
| - }
|
| - if (this->getTypeModifier() != kNone_TypeModifier) {
|
| - out->append(TypeModifierString(glslCaps, this->getTypeModifier()));
|
| - out->append(" ");
|
| - }
|
| - out->append(PrecisionString(glslCaps, fPrecision));
|
| - GrSLType effectiveType = this->getType();
|
| - 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");
|
| - }
|
| -
|
| - static const char* PrecisionString(const GrGLSLCaps* glslCaps, GrSLPrecision p) {
|
| - // Desktop GLSL has added precision qualifiers but they don't do anything.
|
| - if (glslCaps->usesPrecisionModifiers()) {
|
| - switch (p) {
|
| - case kLow_GrSLPrecision:
|
| - return "lowp ";
|
| - case kMedium_GrSLPrecision:
|
| - return "mediump ";
|
| - case kHigh_GrSLPrecision:
|
| - return "highp ";
|
| - default:
|
| - SkFAIL("Unexpected precision type.");
|
| - }
|
| - }
|
| - return "";
|
| - }
|
| -
|
| -private:
|
| - static const char* TypeModifierString(const GrGLSLCaps* glslCaps, TypeModifier t) {
|
| - GrGLSLGeneration gen = glslCaps->generation();
|
| - 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";
|
| - case kAttribute_TypeModifier:
|
| - return k110_GrGLSLGeneration == gen ? "attribute" : "in";
|
| - case kVaryingIn_TypeModifier:
|
| - return k110_GrGLSLGeneration == gen ? "varying" : "in";
|
| - case kVaryingOut_TypeModifier:
|
| - return k110_GrGLSLGeneration == gen ? "varying" : "out";
|
| - default:
|
| - SkFAIL("Unknown shader variable type modifier.");
|
| - return ""; // suppress warning
|
| - }
|
| - }
|
| -
|
| - Origin fOrigin;
|
| - /// Work around driver bugs on some hardware that don't correctly
|
| - /// support uniform float []
|
| - bool fUseUniformFloatArrays;
|
| -
|
| - typedef GrShaderVar INHERITED;
|
| -};
|
| -
|
| -#endif
|
|
|