Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Unified Diff: src/gpu/gl/GrGLShaderVar.h

Issue 1417123002: Move GrGLShaderVar to GrGLSL (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix gyp Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/gl/GrGLSLBlend.cpp ('k') | src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « src/gpu/gl/GrGLSLBlend.cpp ('k') | src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698