| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 | 8 |
| 9 #ifndef GrGLSLCaps_DEFINED | 9 #ifndef GrGLSLCaps_DEFINED |
| 10 #define GrGLSLCaps_DEFINED | 10 #define GrGLSLCaps_DEFINED |
| 11 | 11 |
| 12 #include "GrCaps.h" | 12 #include "GrCaps.h" |
| 13 #include "GrGLSL.h" | 13 #include "GrGLSL.h" |
| 14 #include "GrSwizzle.h" | 14 #include "GrSwizzle.h" |
| 15 | 15 |
| 16 class GrGLSLCaps : public GrShaderCaps { | 16 class GrGLSLCaps : public GrShaderCaps { |
| 17 public: | 17 public: |
| 18 | 18 |
| 19 | 19 |
| 20 /** | 20 /** |
| 21 * Indicates how GLSL must interact with advanced blend equations. The KHR ex
tension requires | 21 * Indicates how GLSL must interact with advanced blend equations. The KHR ex
tension requires |
| 22 * special layout qualifiers in the fragment shader. | 22 * special layout qualifiers in the fragment shader. |
| 23 */ | 23 */ |
| 24 enum AdvBlendEqInteraction { | 24 enum AdvBlendEqInteraction { |
| 25 kNotSupported_AdvBlendEqInteraction, //<! No _blend_equation_advance
d extension | 25 kNotSupported_AdvBlendEqInteraction, //<! No _blend_equation_advance
d extension |
| 26 kAutomatic_AdvBlendEqInteraction, //<! No interaction required | 26 kAutomatic_AdvBlendEqInteraction, //<! No interaction required |
| 27 kGeneralEnable_AdvBlendEqInteraction, //<! layout(blend_support_all_e
quations) out | 27 kGeneralEnable_AdvBlendEqInteraction, //<! layout(blend_support_all_e
quations) out |
| 28 kSpecificEnables_AdvBlendEqInteraction, //<! Specific layout qualifiers
per equation | 28 kSpecificEnables_AdvBlendEqInteraction, //<! Specific layout qualifiers
per equation |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 | 70 |
| 71 AdvBlendEqInteraction advBlendEqInteraction() const { return fAdvBlendEqInte
raction; } | 71 AdvBlendEqInteraction advBlendEqInteraction() const { return fAdvBlendEqInte
raction; } |
| 72 | 72 |
| 73 bool mustEnableAdvBlendEqs() const { | 73 bool mustEnableAdvBlendEqs() const { |
| 74 return fAdvBlendEqInteraction >= kGeneralEnable_AdvBlendEqInteraction; | 74 return fAdvBlendEqInteraction >= kGeneralEnable_AdvBlendEqInteraction; |
| 75 } | 75 } |
| 76 | 76 |
| 77 bool mustEnableSpecificAdvBlendEqs() const { | 77 bool mustEnableSpecificAdvBlendEqs() const { |
| 78 return fAdvBlendEqInteraction == kSpecificEnables_AdvBlendEqInteraction; | 78 return fAdvBlendEqInteraction == kSpecificEnables_AdvBlendEqInteraction; |
| 79 } | 79 } |
| 80 | 80 |
| 81 bool mustDeclareFragmentShaderOutput() const { | 81 bool mustDeclareFragmentShaderOutput() const { |
| 82 return fGLSLGeneration > k110_GrGLSLGeneration; | 82 return fGLSLGeneration > k110_GrGLSLGeneration; |
| 83 } | 83 } |
| 84 | 84 |
| 85 bool usesPrecisionModifiers() const { return fUsesPrecisionModifiers; } | 85 bool usesPrecisionModifiers() const { return fUsesPrecisionModifiers; } |
| 86 | 86 |
| 87 // Returns whether we can use the glsl funciton any() in our shader code. | 87 // Returns whether we can use the glsl funciton any() in our shader code. |
| 88 bool canUseAnyFunctionInShader() const { return fCanUseAnyFunctionInShader;
} | 88 bool canUseAnyFunctionInShader() const { return fCanUseAnyFunctionInShader;
} |
| 89 | 89 |
| 90 bool canUseMinAndAbsTogether() const { return fCanUseMinAndAbsTogether; } | 90 bool canUseMinAndAbsTogether() const { return fCanUseMinAndAbsTogether; } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 | 166 |
| 167 /** | 167 /** |
| 168 * Returns a string containing the caps info. | 168 * Returns a string containing the caps info. |
| 169 */ | 169 */ |
| 170 SkString dump() const override; | 170 SkString dump() const override; |
| 171 | 171 |
| 172 private: | 172 private: |
| 173 void onApplyOptionsOverrides(const GrContextOptions& options) override; | 173 void onApplyOptionsOverrides(const GrContextOptions& options) override; |
| 174 | 174 |
| 175 GrGLSLGeneration fGLSLGeneration; | 175 GrGLSLGeneration fGLSLGeneration; |
| 176 | 176 |
| 177 bool fDropsTileOnZeroDivide : 1; | 177 bool fDropsTileOnZeroDivide : 1; |
| 178 bool fFBFetchSupport : 1; | 178 bool fFBFetchSupport : 1; |
| 179 bool fFBFetchNeedsCustomOutput : 1; | 179 bool fFBFetchNeedsCustomOutput : 1; |
| 180 bool fBindlessTextureSupport : 1; | 180 bool fBindlessTextureSupport : 1; |
| 181 bool fUsesPrecisionModifiers : 1; | 181 bool fUsesPrecisionModifiers : 1; |
| 182 bool fCanUseAnyFunctionInShader : 1; | 182 bool fCanUseAnyFunctionInShader : 1; |
| 183 bool fFlatInterpolationSupport : 1; | 183 bool fFlatInterpolationSupport : 1; |
| 184 bool fNoPerspectiveInterpolationSupport : 1; | 184 bool fNoPerspectiveInterpolationSupport : 1; |
| 185 bool fMultisampleInterpolationSupport : 1; | 185 bool fMultisampleInterpolationSupport : 1; |
| 186 bool fSampleVariablesSupport : 1; | 186 bool fSampleVariablesSupport : 1; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 216 GrSwizzle fConfigTextureSwizzle[kGrPixelConfigCnt]; | 216 GrSwizzle fConfigTextureSwizzle[kGrPixelConfigCnt]; |
| 217 GrSwizzle fConfigOutputSwizzle[kGrPixelConfigCnt]; | 217 GrSwizzle fConfigOutputSwizzle[kGrPixelConfigCnt]; |
| 218 | 218 |
| 219 friend class GrGLCaps; // For initialization. | 219 friend class GrGLCaps; // For initialization. |
| 220 friend class GrVkCaps; | 220 friend class GrVkCaps; |
| 221 | 221 |
| 222 typedef GrShaderCaps INHERITED; | 222 typedef GrShaderCaps INHERITED; |
| 223 }; | 223 }; |
| 224 | 224 |
| 225 #endif | 225 #endif |
| OLD | NEW |