1 /* 2 * Copyright 2011 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "GrShaderCaps.h" 9 #include "SkString.h" 10 #include "../private/GrGLSL.h" 11 12 bool GrGLSLSupportsNamedFragmentShaderOutputs(GrGLSLGeneration gen) { 13 switch (gen) { 14 case k110_GrGLSLGeneration: 15 return false; 16 case k130_GrGLSLGeneration: 17 case k140_GrGLSLGeneration: 18 case k150_GrGLSLGeneration: 19 case k330_GrGLSLGeneration: 20 case k400_GrGLSLGeneration: 21 case k420_GrGLSLGeneration: 22 case k310es_GrGLSLGeneration: 23 case k320es_GrGLSLGeneration: 24 return true; 25 } 26 return false; 27 } 28 29 void GrGLSLAppendDefaultFloatPrecisionDeclaration(GrSLPrecision p, 30 const GrShaderCaps& shaderCaps, 31 SkString* out) { 32 if (shaderCaps.usesPrecisionModifiers()) { 33 switch (p) { 34 case kHigh_GrSLPrecision: 35 out->append("precision highp float;\n"); 36 break; 37 case kMedium_GrSLPrecision: 38 out->append("precision mediump float;\n"); 39 break; 40 case kLow_GrSLPrecision: 41 out->append("precision lowp float;\n"); 42 break; 43 default: 44 SkFAIL("Unknown precision value."); 45 } 46 } 47 } 48