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 #include "GrGLCaps.h" | 9 #include "GrGLCaps.h" |
10 | 10 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 fUseNonVBOVertexAndIndexDynamicData = false; | 46 fUseNonVBOVertexAndIndexDynamicData = false; |
47 fIsCoreProfile = false; | 47 fIsCoreProfile = false; |
48 fBindFragDataLocationSupport = false; | 48 fBindFragDataLocationSupport = false; |
49 fExternalTextureSupport = false; | 49 fExternalTextureSupport = false; |
50 fRectangleTextureSupport = false; | 50 fRectangleTextureSupport = false; |
51 fTextureSwizzleSupport = false; | 51 fTextureSwizzleSupport = false; |
52 fSRGBWriteControl = false; | 52 fSRGBWriteControl = false; |
53 fRGBA8888PixelsOpsAreSlow = false; | 53 fRGBA8888PixelsOpsAreSlow = false; |
54 fPartialFBOReadIsSlow = false; | 54 fPartialFBOReadIsSlow = false; |
55 fMipMapLevelAndLodControlSupport = false; | 55 fMipMapLevelAndLodControlSupport = false; |
| 56 fRGBAToBGRAReadbackConversionsAreSlow = false; |
56 | 57 |
57 fBlitFramebufferSupport = kNone_BlitFramebufferSupport; | 58 fBlitFramebufferSupport = kNone_BlitFramebufferSupport; |
58 | 59 |
59 fShaderCaps.reset(new GrGLSLCaps(contextOptions)); | 60 fShaderCaps.reset(new GrGLSLCaps(contextOptions)); |
60 | 61 |
61 this->init(contextOptions, ctxInfo, glInterface); | 62 this->init(contextOptions, ctxInfo, glInterface); |
62 } | 63 } |
63 | 64 |
64 void GrGLCaps::init(const GrContextOptions& contextOptions, | 65 void GrGLCaps::init(const GrContextOptions& contextOptions, |
65 const GrGLContextInfo& ctxInfo, | 66 const GrGLContextInfo& ctxInfo, |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 // We're assuming that on Windows Chromium we're using ANGLE. | 260 // We're assuming that on Windows Chromium we're using ANGLE. |
260 bool isANGLE = kANGLE_GrGLDriver == ctxInfo.driver() || | 261 bool isANGLE = kANGLE_GrGLDriver == ctxInfo.driver() || |
261 kChromium_GrGLDriver == ctxInfo.driver(); | 262 kChromium_GrGLDriver == ctxInfo.driver(); |
262 // Angle has slow read/write pixel paths for 32bit RGBA (but fast for BGRA).
| 263 // Angle has slow read/write pixel paths for 32bit RGBA (but fast for BGRA).
|
263 fRGBA8888PixelsOpsAreSlow = isANGLE; | 264 fRGBA8888PixelsOpsAreSlow = isANGLE; |
264 // On DX9 ANGLE reading a partial FBO is slow. TODO: Check whether this is s
till true and | 265 // On DX9 ANGLE reading a partial FBO is slow. TODO: Check whether this is s
till true and |
265 // check DX11 ANGLE. | 266 // check DX11 ANGLE. |
266 fPartialFBOReadIsSlow = isANGLE; | 267 fPartialFBOReadIsSlow = isANGLE; |
267 #endif | 268 #endif |
268 | 269 |
| 270 bool isMESA = kMesa_GrGLDriver == ctxInfo.driver(); |
| 271 bool isMAC = false; |
| 272 #ifdef SK_BUILD_FOR_MAC |
| 273 isMAC = true; |
| 274 #endif |
| 275 |
| 276 // Both mesa and mac have reduced performance if reading back an RGBA frameb
uffer as BGRA or |
| 277 // vis-versa. |
| 278 fRGBAToBGRAReadbackConversionsAreSlow = isMESA || isMAC; |
| 279 |
269 /************************************************************************** | 280 /************************************************************************** |
270 * GrShaderCaps fields | 281 * GrShaderCaps fields |
271 **************************************************************************/ | 282 **************************************************************************/ |
272 | 283 |
273 // This must be called after fCoreProfile is set on the GrGLCaps | 284 // This must be called after fCoreProfile is set on the GrGLCaps |
274 this->initGLSL(ctxInfo); | 285 this->initGLSL(ctxInfo); |
275 GrGLSLCaps* glslCaps = static_cast<GrGLSLCaps*>(fShaderCaps.get()); | 286 GrGLSLCaps* glslCaps = static_cast<GrGLSLCaps*>(fShaderCaps.get()); |
276 | 287 |
277 glslCaps->fPathRenderingSupport = this->hasPathRenderingSupport(ctxInfo, gli
); | 288 glslCaps->fPathRenderingSupport = this->hasPathRenderingSupport(ctxInfo, gli
); |
278 | 289 |
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1045 r.appendf("Base instance support: %s\n", (fBaseInstanceSupport ? "YES" : "NO
")); | 1056 r.appendf("Base instance support: %s\n", (fBaseInstanceSupport ? "YES" : "NO
")); |
1046 r.appendf("Use non-VBO for dynamic data: %s\n", | 1057 r.appendf("Use non-VBO for dynamic data: %s\n", |
1047 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); | 1058 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); |
1048 r.appendf("SRGB write contol: %s\n", (fSRGBWriteControl ? "YES" : "NO")); | 1059 r.appendf("SRGB write contol: %s\n", (fSRGBWriteControl ? "YES" : "NO")); |
1049 r.appendf("RGBA 8888 pixel ops are slow: %s\n", (fRGBA8888PixelsOpsAreSlow ?
"YES" : "NO")); | 1060 r.appendf("RGBA 8888 pixel ops are slow: %s\n", (fRGBA8888PixelsOpsAreSlow ?
"YES" : "NO")); |
1050 r.appendf("Partial FBO read is slow: %s\n", (fPartialFBOReadIsSlow ? "YES" :
"NO")); | 1061 r.appendf("Partial FBO read is slow: %s\n", (fPartialFBOReadIsSlow ? "YES" :
"NO")); |
1051 r.appendf("Bind uniform location support: %s\n", (fBindUniformLocationSuppor
t ? "YES" : "NO")); | 1062 r.appendf("Bind uniform location support: %s\n", (fBindUniformLocationSuppor
t ? "YES" : "NO")); |
1052 r.appendf("External texture support: %s\n", (fExternalTextureSupport ? "YES"
: "NO")); | 1063 r.appendf("External texture support: %s\n", (fExternalTextureSupport ? "YES"
: "NO")); |
1053 r.appendf("Rectangle texture support: %s\n", (fRectangleTextureSupport? "YES
" : "NO")); | 1064 r.appendf("Rectangle texture support: %s\n", (fRectangleTextureSupport? "YES
" : "NO")); |
1054 r.appendf("Texture swizzle support: %s\n", (fTextureSwizzleSupport ? "YES" :
"NO")); | 1065 r.appendf("Texture swizzle support: %s\n", (fTextureSwizzleSupport ? "YES" :
"NO")); |
| 1066 r.appendf("BGRA to RGBA readback conversions are slow: %s\n", |
| 1067 (fRGBAToBGRAReadbackConversionsAreSlow ? "YES" : "NO")); |
1055 | 1068 |
1056 r.append("Configs\n-------\n"); | 1069 r.append("Configs\n-------\n"); |
1057 for (int i = 0; i < kGrPixelConfigCnt; ++i) { | 1070 for (int i = 0; i < kGrPixelConfigCnt; ++i) { |
1058 r.appendf(" cfg: %d flags: 0x%04x, b_internal: 0x%08x s_internal: 0x%08
x, e_format: " | 1071 r.appendf(" cfg: %d flags: 0x%04x, b_internal: 0x%08x s_internal: 0x%08
x, e_format: " |
1059 "0x%08x, e_format_teximage: 0x%08x, e_type: 0x%08x, i_for_texi
mage: 0x%08x, " | 1072 "0x%08x, e_format_teximage: 0x%08x, e_type: 0x%08x, i_for_texi
mage: 0x%08x, " |
1060 "i_for_renderbuffer: 0x%08x\n", | 1073 "i_for_renderbuffer: 0x%08x\n", |
1061 i, | 1074 i, |
1062 fConfigTable[i].fFlags, | 1075 fConfigTable[i].fFlags, |
1063 fConfigTable[i].fFormats.fBaseInternalFormat, | 1076 fConfigTable[i].fFormats.fBaseInternalFormat, |
1064 fConfigTable[i].fFormats.fSizedInternalFormat, | 1077 fConfigTable[i].fFormats.fSizedInternalFormat, |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1802 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { | 1815 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { |
1803 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != | 1816 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != |
1804 fConfigTable[i].fFormats.fExternalFormat[j]); | 1817 fConfigTable[i].fFormats.fExternalFormat[j]); |
1805 } | 1818 } |
1806 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); | 1819 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); |
1807 } | 1820 } |
1808 #endif | 1821 #endif |
1809 } | 1822 } |
1810 | 1823 |
1811 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} | 1824 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} |
OLD | NEW |