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 |