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 GrGLCaps_DEFINED | 9 #ifndef GrGLCaps_DEFINED |
10 #define GrGLCaps_DEFINED | 10 #define GrGLCaps_DEFINED |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 * Instead the texture is multisampled when bound to the FBO and then re
solved automatically | 60 * Instead the texture is multisampled when bound to the FBO and then re
solved automatically |
61 * when read. It also defines an alternate value for GL_MAX_SAMPLES (whi
ch we call | 61 * when read. It also defines an alternate value for GL_MAX_SAMPLES (whi
ch we call |
62 * GR_GL_MAX_SAMPLES_IMG). | 62 * GR_GL_MAX_SAMPLES_IMG). |
63 */ | 63 */ |
64 kES_IMG_MsToTexture_MSFBOType, | 64 kES_IMG_MsToTexture_MSFBOType, |
65 /** | 65 /** |
66 * GL_EXT_multisampled_render_to_texture. Same as the IMG one above but
uses the standard | 66 * GL_EXT_multisampled_render_to_texture. Same as the IMG one above but
uses the standard |
67 * GL_MAX_SAMPLES value. | 67 * GL_MAX_SAMPLES value. |
68 */ | 68 */ |
69 kES_EXT_MsToTexture_MSFBOType, | 69 kES_EXT_MsToTexture_MSFBOType, |
| 70 /** |
| 71 * GL_NV_framebuffer_mixed_samples. |
| 72 */ |
| 73 kMixedSamples_MSFBOType, |
70 | 74 |
71 kLast_MSFBOType = kES_EXT_MsToTexture_MSFBOType | 75 kLast_MSFBOType = kMixedSamples_MSFBOType |
72 }; | 76 }; |
73 | 77 |
74 enum InvalidateFBType { | 78 enum InvalidateFBType { |
75 kNone_InvalidateFBType, | 79 kNone_InvalidateFBType, |
76 kDiscard_InvalidateFBType, //<! glDiscardFramebuffer() | 80 kDiscard_InvalidateFBType, //<! glDiscardFramebuffer() |
77 kInvalidate_InvalidateFBType, //<! glInvalidateFramebuffer() | 81 kInvalidate_InvalidateFBType, //<! glInvalidateFramebuffer() |
78 | 82 |
79 kLast_InvalidateFBType = kInvalidate_InvalidateFBType | 83 kLast_InvalidateFBType = kInvalidate_InvalidateFBType |
80 }; | 84 }; |
81 | 85 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 * Reports the type of MSAA FBO support. | 138 * Reports the type of MSAA FBO support. |
135 */ | 139 */ |
136 MSFBOType msFBOType() const { return fMSFBOType; } | 140 MSFBOType msFBOType() const { return fMSFBOType; } |
137 | 141 |
138 /** | 142 /** |
139 * Does the supported MSAA FBO extension have MSAA renderbuffers? | 143 * Does the supported MSAA FBO extension have MSAA renderbuffers? |
140 */ | 144 */ |
141 bool usesMSAARenderBuffers() const { | 145 bool usesMSAARenderBuffers() const { |
142 return kNone_MSFBOType != fMSFBOType && | 146 return kNone_MSFBOType != fMSFBOType && |
143 kES_IMG_MsToTexture_MSFBOType != fMSFBOType && | 147 kES_IMG_MsToTexture_MSFBOType != fMSFBOType && |
144 kES_EXT_MsToTexture_MSFBOType != fMSFBOType; | 148 kES_EXT_MsToTexture_MSFBOType != fMSFBOType && |
| 149 kMixedSamples_MSFBOType != fMSFBOType; |
145 } | 150 } |
146 | 151 |
147 /** | 152 /** |
148 * Is the MSAA FBO extension one where the texture is multisampled when boun
d to an FBO and | 153 * Is the MSAA FBO extension one where the texture is multisampled when boun
d to an FBO and |
149 * then implicitly resolved when read. | 154 * then implicitly resolved when read. |
150 */ | 155 */ |
151 bool usesImplicitMSAAResolve() const { | 156 bool usesImplicitMSAAResolve() const { |
152 return kES_IMG_MsToTexture_MSFBOType == fMSFBOType || | 157 return kES_IMG_MsToTexture_MSFBOType == fMSFBOType || |
153 kES_EXT_MsToTexture_MSFBOType == fMSFBOType; | 158 kES_EXT_MsToTexture_MSFBOType == fMSFBOType; |
154 } | 159 } |
155 | 160 |
156 bool fbMixedSamplesSupport() const { return fFBMixedSamplesSupport; } | |
157 | |
158 InvalidateFBType invalidateFBType() const { return fInvalidateFBType; } | 161 InvalidateFBType invalidateFBType() const { return fInvalidateFBType; } |
159 | 162 |
160 /// What type of buffer mapping is supported? | 163 /// What type of buffer mapping is supported? |
161 MapBufferType mapBufferType() const { return fMapBufferType; } | 164 MapBufferType mapBufferType() const { return fMapBufferType; } |
162 | 165 |
163 /** | 166 /** |
164 * Gets an array of legal stencil formats. These formats are not guaranteed | 167 * Gets an array of legal stencil formats. These formats are not guaranteed |
165 * to be supported by the driver but are legal GLenum names given the GL | 168 * to be supported by the driver but are legal GLenum names given the GL |
166 * version and extensions supported. | 169 * version and extensions supported. |
167 */ | 170 */ |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 /// Is GL_ARB_fragment_coord_conventions supported? | 221 /// Is GL_ARB_fragment_coord_conventions supported? |
219 bool fragCoordConventionsSupport() const { return fFragCoordsConventionSuppo
rt; } | 222 bool fragCoordConventionsSupport() const { return fFragCoordsConventionSuppo
rt; } |
220 | 223 |
221 /// Is there support for Vertex Array Objects? | 224 /// Is there support for Vertex Array Objects? |
222 bool vertexArrayObjectSupport() const { return fVertexArrayObjectSupport; } | 225 bool vertexArrayObjectSupport() const { return fVertexArrayObjectSupport; } |
223 | 226 |
224 /// Is there support for ES2 compatability? | 227 /// Is there support for ES2 compatability? |
225 bool ES2CompatibilitySupport() const { return fES2CompatibilitySupport; } | 228 bool ES2CompatibilitySupport() const { return fES2CompatibilitySupport; } |
226 | 229 |
227 /// Can we call glDisable(GL_MULTISAMPLE)? | 230 /// Can we call glDisable(GL_MULTISAMPLE)? |
228 bool multisampleDisableSupport() const { return fMultisampleDisableSupport;
} | 231 bool multisampleDisableSupport() const { |
| 232 return fMultisampleDisableSupport; |
| 233 } |
229 | 234 |
230 /// Use indices or vertices in CPU arrays rather than VBOs for dynamic conte
nt. | 235 /// Use indices or vertices in CPU arrays rather than VBOs for dynamic conte
nt. |
231 bool useNonVBOVertexAndIndexDynamicData() const { | 236 bool useNonVBOVertexAndIndexDynamicData() const { |
232 return fUseNonVBOVertexAndIndexDynamicData; | 237 return fUseNonVBOVertexAndIndexDynamicData; |
233 } | 238 } |
234 | 239 |
235 /// Does ReadPixels support the provided format/type combo? | 240 /// Does ReadPixels support the provided format/type combo? |
236 bool readPixelsSupported(const GrGLInterface* intf, | 241 bool readPixelsSupported(const GrGLInterface* intf, |
237 GrGLenum format, | 242 GrGLenum format, |
238 GrGLenum type, | 243 GrGLenum type, |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 bool fTextureRedSupport : 1; | 347 bool fTextureRedSupport : 1; |
343 bool fImagingSupport : 1; | 348 bool fImagingSupport : 1; |
344 bool fTwoFormatLimit : 1; | 349 bool fTwoFormatLimit : 1; |
345 bool fFragCoordsConventionSupport : 1; | 350 bool fFragCoordsConventionSupport : 1; |
346 bool fVertexArrayObjectSupport : 1; | 351 bool fVertexArrayObjectSupport : 1; |
347 bool fES2CompatibilitySupport : 1; | 352 bool fES2CompatibilitySupport : 1; |
348 bool fMultisampleDisableSupport : 1; | 353 bool fMultisampleDisableSupport : 1; |
349 bool fUseNonVBOVertexAndIndexDynamicData : 1; | 354 bool fUseNonVBOVertexAndIndexDynamicData : 1; |
350 bool fIsCoreProfile : 1; | 355 bool fIsCoreProfile : 1; |
351 bool fFullClearIsFree : 1; | 356 bool fFullClearIsFree : 1; |
352 bool fFBMixedSamplesSupport : 1; | |
353 | 357 |
354 struct ReadPixelsSupportedFormat { | 358 struct ReadPixelsSupportedFormat { |
355 GrGLenum fFormat; | 359 GrGLenum fFormat; |
356 GrGLenum fType; | 360 GrGLenum fType; |
357 GrGLenum fFboFormat; | 361 GrGLenum fFboFormat; |
358 | 362 |
359 bool operator==(const ReadPixelsSupportedFormat& rhs) const { | 363 bool operator==(const ReadPixelsSupportedFormat& rhs) const { |
360 return fFormat == rhs.fFormat | 364 return fFormat == rhs.fFormat |
361 && fType == rhs.fType | 365 && fType == rhs.fType |
362 && fFboFormat == rhs.fFboFormat; | 366 && fFboFormat == rhs.fFboFormat; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 | 446 |
443 AdvBlendEqInteraction fAdvBlendEqInteraction; | 447 AdvBlendEqInteraction fAdvBlendEqInteraction; |
444 | 448 |
445 friend class GrGLCaps; // For initialization. | 449 friend class GrGLCaps; // For initialization. |
446 | 450 |
447 typedef GrShaderCaps INHERITED; | 451 typedef GrShaderCaps INHERITED; |
448 }; | 452 }; |
449 | 453 |
450 | 454 |
451 #endif | 455 #endif |
OLD | NEW |