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

Side by Side Diff: src/gpu/glsl/GrGLSLCaps.h

Issue 1688233003: Add arb_texture_rectangle support properly in GLES3 shaders Base URL: https://skia.googlesource.com/skia.git@command-buffer-es3
Patch Set: Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « src/gpu/glsl/GrGLSL.h ('k') | src/gpu/glsl/GrGLSLCaps.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
14 #include "GrSwizzle.h" 13 #include "GrSwizzle.h"
15 14
15 // Limited set of GLSL versions we build shaders for. Caller should round
16 // down the GLSL version to one of these enums.
17 enum GrGLSLGeneration {
18 /**
19 * Desktop GLSL 1.10 and ES2 shading language (based on desktop GLSL 1.20)
20 */
21 k110_GrGLSLGeneration,
22 /**
23 * Desktop GLSL 1.30
24 */
25 k130_GrGLSLGeneration,
26 /**
27 * Desktop GLSL 1.40
28 */
29 k140_GrGLSLGeneration,
30 /**
31 * Desktop GLSL 1.50
32 */
33 k150_GrGLSLGeneration,
34 /**
35 * Desktop GLSL 3.30, and ES GLSL 3.00
36 */
37 k330_GrGLSLGeneration,
38 /**
39 * ES GLSL 3.10 only TODO Make GLSLCap objects to make this more granular
40 */
41 k310es_GrGLSLGeneration,
42 };
43
16 class GrGLSLCaps : public GrShaderCaps { 44 class GrGLSLCaps : public GrShaderCaps {
17 public: 45 public:
18
19
20 /** 46 /**
21 * Indicates how GLSL must interact with advanced blend equations. The KHR ex tension requires 47 * Indicates how GLSL must interact with advanced blend equations. The KHR ex tension requires
22 * special layout qualifiers in the fragment shader. 48 * special layout qualifiers in the fragment shader.
23 */ 49 */
24 enum AdvBlendEqInteraction { 50 enum AdvBlendEqInteraction {
25 kNotSupported_AdvBlendEqInteraction, //<! No _blend_equation_advance d extension 51 kNotSupported_AdvBlendEqInteraction, //<! No _blend_equation_advance d extension
26 kAutomatic_AdvBlendEqInteraction, //<! No interaction required 52 kAutomatic_AdvBlendEqInteraction, //<! No interaction required
27 kGeneralEnable_AdvBlendEqInteraction, //<! layout(blend_support_all_e quations) out 53 kGeneralEnable_AdvBlendEqInteraction, //<! layout(blend_support_all_e quations) out
28 kSpecificEnables_AdvBlendEqInteraction, //<! Specific layout qualifiers per equation 54 kSpecificEnables_AdvBlendEqInteraction, //<! Specific layout qualifiers per equation
29 55
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 // extension is required. However, the return value of this function does no t say whether dual 124 // extension is required. However, the return value of this function does no t say whether dual
99 // source blending is supported. 125 // source blending is supported.
100 const char* secondaryOutputExtensionString() const { 126 const char* secondaryOutputExtensionString() const {
101 return fSecondaryOutputExtensionString; 127 return fSecondaryOutputExtensionString;
102 } 128 }
103 129
104 const char* externalTextureExtensionString() const { 130 const char* externalTextureExtensionString() const {
105 return fExternalTextureExtensionString; 131 return fExternalTextureExtensionString;
106 } 132 }
107 133
134 const char* rectangleTextureExtensionString() const {
135 return fRectangleTextureExtensionString;
136 }
137 bool rectangleTextureUseUnifiedTextureFunctionName() const {
138 return fRectangleTextureUseUnifiedTextureFunctionName;
139 }
108 /** 140 /**
109 * Given a texture's config, this determines what swizzle must be appended t o accesses to the 141 * Given a texture's config, this determines what swizzle must be appended t o accesses to the
110 * texture in generated shader code. Swizzling may be implemented in texture parameters or a 142 * texture in generated shader code. Swizzling may be implemented in texture parameters or a
111 * sampler rather than in the shader. In this case the returned swizzle will always be "rgba". 143 * sampler rather than in the shader. In this case the returned swizzle will always be "rgba".
112 */ 144 */
113 const GrSwizzle& configTextureSwizzle(GrPixelConfig config) const { 145 const GrSwizzle& configTextureSwizzle(GrPixelConfig config) const {
114 return fConfigTextureSwizzle[config]; 146 return fConfigTextureSwizzle[config];
115 } 147 }
116 148
117 /** Swizzle that should occur on the fragment shader outputs for a given con fig. */ 149 /** Swizzle that should occur on the fragment shader outputs for a given con fig. */
(...skipping 17 matching lines...) Expand all
135 bool fFBFetchSupport : 1; 167 bool fFBFetchSupport : 1;
136 bool fFBFetchNeedsCustomOutput : 1; 168 bool fFBFetchNeedsCustomOutput : 1;
137 bool fBindlessTextureSupport : 1; 169 bool fBindlessTextureSupport : 1;
138 bool fUsesPrecisionModifiers : 1; 170 bool fUsesPrecisionModifiers : 1;
139 bool fCanUseAnyFunctionInShader : 1; 171 bool fCanUseAnyFunctionInShader : 1;
140 172
141 // Used for specific driver bug work arounds 173 // Used for specific driver bug work arounds
142 bool fCanUseMinAndAbsTogether : 1; 174 bool fCanUseMinAndAbsTogether : 1;
143 bool fMustForceNegatedAtanParamToFloat : 1; 175 bool fMustForceNegatedAtanParamToFloat : 1;
144 176
177 bool fRectangleTextureUseUnifiedTextureFunctionName : 1;
178
145 const char* fVersionDeclString; 179 const char* fVersionDeclString;
146 180
147 const char* fShaderDerivativeExtensionString; 181 const char* fShaderDerivativeExtensionString;
148 const char* fFragCoordConventionsExtensionString; 182 const char* fFragCoordConventionsExtensionString;
149 const char* fSecondaryOutputExtensionString; 183 const char* fSecondaryOutputExtensionString;
150 const char* fExternalTextureExtensionString; 184 const char* fExternalTextureExtensionString;
185 const char* fRectangleTextureExtensionString;
151 186
152 const char* fFBFetchColorName; 187 const char* fFBFetchColorName;
153 const char* fFBFetchExtensionString; 188 const char* fFBFetchExtensionString;
154 189
155 AdvBlendEqInteraction fAdvBlendEqInteraction; 190 AdvBlendEqInteraction fAdvBlendEqInteraction;
156 191
157 GrSwizzle fConfigTextureSwizzle[kGrPixelConfigCnt]; 192 GrSwizzle fConfigTextureSwizzle[kGrPixelConfigCnt];
158 GrSwizzle fConfigOutputSwizzle[kGrPixelConfigCnt]; 193 GrSwizzle fConfigOutputSwizzle[kGrPixelConfigCnt];
159 194
160 friend class GrGLCaps; // For initialization. 195 friend class GrGLCaps; // For initialization.
161 friend class GrVkCaps; 196 friend class GrVkCaps;
162 197
163 typedef GrShaderCaps INHERITED; 198 typedef GrShaderCaps INHERITED;
164 }; 199 };
165 200
166 #endif 201 #endif
OLDNEW
« no previous file with comments | « src/gpu/glsl/GrGLSL.h ('k') | src/gpu/glsl/GrGLSLCaps.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698