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 |
11 | 11 |
12 #include "GrCaps.h" | 12 #include "GrCaps.h" |
13 #include "glsl/GrGLSL.h" | 13 #include "glsl/GrGLSL.h" |
14 #include "GrGLStencilAttachment.h" | 14 #include "GrGLStencilAttachment.h" |
15 #include "SkChecksum.h" | 15 #include "SkChecksum.h" |
16 #include "SkTHash.h" | 16 #include "SkTHash.h" |
17 #include "SkTArray.h" | 17 #include "SkTArray.h" |
18 | 18 |
19 class GrGLContextInfo; | 19 class GrGLContextInfo; |
20 class GrGLSLCaps; | 20 class GrGLSLCaps; |
21 | 21 |
22 /** | 22 /** |
23 * Stores some capabilities of a GL context. Most are determined by the GL | 23 * Stores some capabilities of a GL context. Most are determined by the GL |
24 * version and the extensions string. It also tracks formats that have passed | 24 * version and the extensions string. It also tracks formats that have passed |
25 * the FBO completeness test. | 25 * the FBO completeness test. |
26 */ | 26 */ |
27 class GrGLCaps : public GrCaps { | 27 class GrGLCaps : public GrCaps { |
28 public: | 28 public: |
29 | |
30 | |
31 typedef GrGLStencilAttachment::Format StencilFormat; | 29 typedef GrGLStencilAttachment::Format StencilFormat; |
32 | 30 |
33 /** | 31 /** |
34 * The type of MSAA for FBOs supported. Different extensions have different | 32 * The type of MSAA for FBOs supported. Different extensions have different |
35 * semantics of how / when a resolve is performed. | 33 * semantics of how / when a resolve is performed. |
36 */ | 34 */ |
37 enum MSFBOType { | 35 enum MSFBOType { |
38 /** | 36 /** |
39 * no support for MSAA FBOs | 37 * no support for MSAA FBOs |
40 */ | 38 */ |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 } | 245 } |
248 | 246 |
249 /// Does ReadPixels support the provided format/type combo? | 247 /// Does ReadPixels support the provided format/type combo? |
250 bool readPixelsSupported(const GrGLInterface* intf, | 248 bool readPixelsSupported(const GrGLInterface* intf, |
251 GrGLenum format, | 249 GrGLenum format, |
252 GrGLenum type, | 250 GrGLenum type, |
253 GrGLenum currFboFormat) const; | 251 GrGLenum currFboFormat) const; |
254 | 252 |
255 bool isCoreProfile() const { return fIsCoreProfile; } | 253 bool isCoreProfile() const { return fIsCoreProfile; } |
256 | 254 |
257 | |
258 bool fullClearIsFree() const { return fFullClearIsFree; } | 255 bool fullClearIsFree() const { return fFullClearIsFree; } |
259 | 256 |
260 bool bindFragDataLocationSupport() const { return fBindFragDataLocationSuppo
rt; } | 257 bool bindFragDataLocationSupport() const { return fBindFragDataLocationSuppo
rt; } |
261 | 258 |
262 /** | 259 /** |
| 260 * Is there support for enabling/disabling sRGB writes for sRGB-capable colo
r attachments? |
| 261 * If false this does not mean sRGB is not supported but rather that if it i
s supported |
| 262 * it cannot be turned off for configs that support it. |
| 263 */ |
| 264 bool srgbWriteControl() const { return fSRGBWriteControl; } |
| 265 |
| 266 /** |
263 * Returns a string containing the caps info. | 267 * Returns a string containing the caps info. |
264 */ | 268 */ |
265 SkString dump() const override; | 269 SkString dump() const override; |
266 | 270 |
267 /** | 271 /** |
268 * LATC can appear under one of three possible names. In order to know | 272 * LATC can appear under one of three possible names. In order to know |
269 * which GL internal format to use, we need to keep track of which name | 273 * which GL internal format to use, we need to keep track of which name |
270 * we found LATC under. The default is LATC. | 274 * we found LATC under. The default is LATC. |
271 */ | 275 */ |
272 enum LATCAlias { | 276 enum LATCAlias { |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 int u32Idx = config / 32; | 321 int u32Idx = config / 32; |
318 int bitIdx = config % 32; | 322 int bitIdx = config % 32; |
319 return SkToBool(fVerifiedColorConfigs[u32Idx] & (1 << bitIdx)); | 323 return SkToBool(fVerifiedColorConfigs[u32Idx] & (1 << bitIdx)); |
320 } | 324 } |
321 }; | 325 }; |
322 | 326 |
323 void initFSAASupport(const GrGLContextInfo&, const GrGLInterface*); | 327 void initFSAASupport(const GrGLContextInfo&, const GrGLInterface*); |
324 void initBlendEqationSupport(const GrGLContextInfo&); | 328 void initBlendEqationSupport(const GrGLContextInfo&); |
325 void initStencilFormats(const GrGLContextInfo&); | 329 void initStencilFormats(const GrGLContextInfo&); |
326 // This must be called after initFSAASupport(). | 330 // This must be called after initFSAASupport(). |
327 void initConfigRenderableTable(const GrGLContextInfo&); | 331 void initConfigRenderableTable(const GrGLContextInfo&, bool srgbSupport); |
328 void initConfigTexturableTable(const GrGLContextInfo&, const GrGLInterface*)
; | 332 void initConfigTexturableTable(const GrGLContextInfo&, const GrGLInterface*,
bool srgbSupport); |
329 | 333 |
330 bool doReadPixelsSupported(const GrGLInterface* intf, GrGLenum format, GrGLe
num type) const; | 334 bool doReadPixelsSupported(const GrGLInterface* intf, GrGLenum format, GrGLe
num type) const; |
331 | 335 |
332 void initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, | 336 void initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, |
333 const GrGLInterface* intf, | 337 const GrGLInterface* intf, |
334 GrGLSLCaps* glslCaps); | 338 GrGLSLCaps* glslCaps); |
335 | 339 |
336 // tracks configs that have been verified to pass the FBO completeness when | 340 // tracks configs that have been verified to pass the FBO completeness when |
337 // used as a color attachment | 341 // used as a color attachment |
338 VerifiedColorConfigs fVerifiedColorConfigs; | 342 VerifiedColorConfigs fVerifiedColorConfigs; |
(...skipping 29 matching lines...) Expand all Loading... |
368 bool fVertexArrayObjectSupport : 1; | 372 bool fVertexArrayObjectSupport : 1; |
369 bool fInstancedDrawingSupport : 1; | 373 bool fInstancedDrawingSupport : 1; |
370 bool fDirectStateAccessSupport : 1; | 374 bool fDirectStateAccessSupport : 1; |
371 bool fDebugSupport : 1; | 375 bool fDebugSupport : 1; |
372 bool fES2CompatibilitySupport : 1; | 376 bool fES2CompatibilitySupport : 1; |
373 bool fMultisampleDisableSupport : 1; | 377 bool fMultisampleDisableSupport : 1; |
374 bool fUseNonVBOVertexAndIndexDynamicData : 1; | 378 bool fUseNonVBOVertexAndIndexDynamicData : 1; |
375 bool fIsCoreProfile : 1; | 379 bool fIsCoreProfile : 1; |
376 bool fFullClearIsFree : 1; | 380 bool fFullClearIsFree : 1; |
377 bool fBindFragDataLocationSupport : 1; | 381 bool fBindFragDataLocationSupport : 1; |
| 382 bool fSRGBWriteControl : 1; |
378 | 383 |
379 struct ReadPixelsSupportedFormat { | 384 struct ReadPixelsSupportedFormat { |
380 GrGLenum fFormat; | 385 GrGLenum fFormat; |
381 GrGLenum fType; | 386 GrGLenum fType; |
382 GrGLenum fFboFormat; | 387 GrGLenum fFboFormat; |
383 | 388 |
384 bool operator==(const ReadPixelsSupportedFormat& rhs) const { | 389 bool operator==(const ReadPixelsSupportedFormat& rhs) const { |
385 return fFormat == rhs.fFormat | 390 return fFormat == rhs.fFormat |
386 && fType == rhs.fType | 391 && fType == rhs.fType |
387 && fFboFormat == rhs.fFboFormat; | 392 && fFboFormat == rhs.fFboFormat; |
388 } | 393 } |
389 }; | 394 }; |
390 mutable SkTHashMap<ReadPixelsSupportedFormat, bool> fReadPixelsSupportedCach
e; | 395 mutable SkTHashMap<ReadPixelsSupportedFormat, bool> fReadPixelsSupportedCach
e; |
391 | 396 |
392 typedef GrCaps INHERITED; | 397 typedef GrCaps INHERITED; |
393 }; | 398 }; |
394 | 399 |
395 #endif | 400 #endif |
OLD | NEW |