| 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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 fTextureBarrierSupport = ctxInfo.hasExtension("GL_NV_texture_barrier"); | 110 fTextureBarrierSupport = ctxInfo.hasExtension("GL_NV_texture_barrier"); |
| 111 } | 111 } |
| 112 | 112 |
| 113 if (kGL_GrGLStandard == standard) { | 113 if (kGL_GrGLStandard == standard) { |
| 114 fSampleLocationsSupport = version >= GR_GL_VER(3,2) || | 114 fSampleLocationsSupport = version >= GR_GL_VER(3,2) || |
| 115 ctxInfo.hasExtension("GL_ARB_texture_multisamp
le"); | 115 ctxInfo.hasExtension("GL_ARB_texture_multisamp
le"); |
| 116 } else { | 116 } else { |
| 117 fSampleLocationsSupport = version >= GR_GL_VER(3,1); | 117 fSampleLocationsSupport = version >= GR_GL_VER(3,1); |
| 118 } | 118 } |
| 119 | 119 |
| 120 // ARB_texture_rg is part of OpenGL 3.0, but mesa doesn't support GL_RED | 120 // ARB_texture_rg is part of OpenGL 3.0, but mesa doesn't support GL_RED |
| 121 // and GL_RG on FBO textures. | 121 // and GL_RG on FBO textures. |
| 122 if (kMesa_GrGLDriver != ctxInfo.driver()) { | 122 if (kMesa_GrGLDriver != ctxInfo.driver()) { |
| 123 if (kGL_GrGLStandard == standard) { | 123 if (kGL_GrGLStandard == standard) { |
| 124 fTextureRedSupport = version >= GR_GL_VER(3,0) || | 124 fTextureRedSupport = version >= GR_GL_VER(3,0) || |
| 125 ctxInfo.hasExtension("GL_ARB_texture_rg"); | 125 ctxInfo.hasExtension("GL_ARB_texture_rg"); |
| 126 } else { | 126 } else { |
| 127 fTextureRedSupport = version >= GR_GL_VER(3,0) || | 127 fTextureRedSupport = version >= GR_GL_VER(3,0) || |
| 128 ctxInfo.hasExtension("GL_EXT_texture_rg"); | 128 ctxInfo.hasExtension("GL_EXT_texture_rg"); |
| 129 } | 129 } |
| 130 } | 130 } |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 } else if (kGLES_GrGLStandard == standard) { | 238 } else if (kGLES_GrGLStandard == standard) { |
| 239 if (version >= GR_GL_VER(3,0)) { | 239 if (version >= GR_GL_VER(3,0)) { |
| 240 fMipMapLevelAndLodControlSupport = true; | 240 fMipMapLevelAndLodControlSupport = true; |
| 241 } | 241 } |
| 242 } | 242 } |
| 243 | 243 |
| 244 #ifdef SK_BUILD_FOR_WIN | 244 #ifdef SK_BUILD_FOR_WIN |
| 245 // We're assuming that on Windows Chromium we're using ANGLE. | 245 // We're assuming that on Windows Chromium we're using ANGLE. |
| 246 bool isANGLE = kANGLE_GrGLDriver == ctxInfo.driver() || | 246 bool isANGLE = kANGLE_GrGLDriver == ctxInfo.driver() || |
| 247 kChromium_GrGLDriver == ctxInfo.driver(); | 247 kChromium_GrGLDriver == ctxInfo.driver(); |
| 248 // Angle has slow read/write pixel paths for 32bit RGBA (but fast for BGRA).
| 248 // Angle has slow read/write pixel paths for 32bit RGBA (but fast for BGRA). |
| 249 fRGBA8888PixelsOpsAreSlow = isANGLE; | 249 fRGBA8888PixelsOpsAreSlow = isANGLE; |
| 250 // On DX9 ANGLE reading a partial FBO is slow. TODO: Check whether this is s
till true and | 250 // On DX9 ANGLE reading a partial FBO is slow. TODO: Check whether this is s
till true and |
| 251 // check DX11 ANGLE. | 251 // check DX11 ANGLE. |
| 252 fPartialFBOReadIsSlow = isANGLE; | 252 fPartialFBOReadIsSlow = isANGLE; |
| 253 #endif | 253 #endif |
| 254 | 254 |
| 255 bool isMESA = kMesa_GrGLDriver == ctxInfo.driver(); | 255 bool isMESA = kMesa_GrGLDriver == ctxInfo.driver(); |
| 256 bool isMAC = false; | 256 bool isMAC = false; |
| 257 #ifdef SK_BUILD_FOR_MAC | 257 #ifdef SK_BUILD_FOR_MAC |
| 258 isMAC = true; | 258 isMAC = true; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 | 293 |
| 294 glslCaps->fShaderDerivativeSupport = ctxInfo.version() >= GR_GL_VER(3, 0
) || | 294 glslCaps->fShaderDerivativeSupport = ctxInfo.version() >= GR_GL_VER(3, 0
) || |
| 295 ctxInfo.hasExtension("GL_OES_standard_derivatives"); | 295 ctxInfo.hasExtension("GL_OES_standard_derivatives"); |
| 296 | 296 |
| 297 glslCaps->fIntegerSupport = ctxInfo.version() >= GR_GL_VER(3, 0) && | 297 glslCaps->fIntegerSupport = ctxInfo.version() >= GR_GL_VER(3, 0) && |
| 298 ctxInfo.glslGeneration() >= k330_GrGLSLGeneration; // We use this va
lue for GLSL ES 3.0. | 298 ctxInfo.glslGeneration() >= k330_GrGLSLGeneration; // We use this va
lue for GLSL ES 3.0. |
| 299 } | 299 } |
| 300 | 300 |
| 301 if (ctxInfo.hasExtension("GL_EXT_shader_pixel_local_storage")) { | 301 if (ctxInfo.hasExtension("GL_EXT_shader_pixel_local_storage")) { |
| 302 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 | 302 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 |
| 303 GR_GL_GetIntegerv(gli, GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT, | 303 GR_GL_GetIntegerv(gli, GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT, |
| 304 &glslCaps->fPixelLocalStorageSize); | 304 &glslCaps->fPixelLocalStorageSize); |
| 305 glslCaps->fPLSPathRenderingSupport = glslCaps->fFBFetchSupport; | 305 glslCaps->fPLSPathRenderingSupport = glslCaps->fFBFetchSupport; |
| 306 } | 306 } |
| 307 else { | 307 else { |
| 308 glslCaps->fPixelLocalStorageSize = 0; | 308 glslCaps->fPixelLocalStorageSize = 0; |
| 309 glslCaps->fPLSPathRenderingSupport = false; | 309 glslCaps->fPLSPathRenderingSupport = false; |
| 310 } | 310 } |
| 311 | 311 |
| 312 // Protect ourselves against tracking huge amounts of texture state. | 312 // Protect ourselves against tracking huge amounts of texture state. |
| 313 static const uint8_t kMaxSaneSamplers = 32; | 313 static const uint8_t kMaxSaneSamplers = 32; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 fMapBufferType = kMapBufferRange_MapBufferType; | 381 fMapBufferType = kMapBufferRange_MapBufferType; |
| 382 } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) { | 382 } else if (ctxInfo.hasExtension("GL_OES_mapbuffer")) { |
| 383 fMapBufferFlags = kCanMap_MapFlag; | 383 fMapBufferFlags = kCanMap_MapFlag; |
| 384 fMapBufferType = kMapBuffer_MapBufferType; | 384 fMapBufferType = kMapBuffer_MapBufferType; |
| 385 } | 385 } |
| 386 } | 386 } |
| 387 | 387 |
| 388 if (kGL_GrGLStandard == standard) { | 388 if (kGL_GrGLStandard == standard) { |
| 389 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_pixel_buf
fer_object")) { | 389 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_pixel_buf
fer_object")) { |
| 390 fTransferBufferType = kPBO_TransferBufferType; | 390 fTransferBufferType = kPBO_TransferBufferType; |
| 391 } | 391 } |
| 392 } else { | 392 } else { |
| 393 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_NV_pixel_buff
er_object")) { | 393 if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_NV_pixel_buff
er_object")) { |
| 394 fTransferBufferType = kPBO_TransferBufferType; | 394 fTransferBufferType = kPBO_TransferBufferType; |
| 395 } else if (ctxInfo.hasExtension("GL_CHROMIUM_pixel_transfer_buffer_objec
t")) { | 395 } else if (ctxInfo.hasExtension("GL_CHROMIUM_pixel_transfer_buffer_objec
t")) { |
| 396 fTransferBufferType = kChromium_TransferBufferType; | 396 fTransferBufferType = kChromium_TransferBufferType; |
| 397 } | 397 } |
| 398 } | 398 } |
| 399 | 399 |
| 400 // On many GPUs, map memory is very expensive, so we effectively disable it
here by setting the | 400 // On many GPUs, map memory is very expensive, so we effectively disable it
here by setting the |
| 401 // threshold to the maximum unless the client gives us a hint that map memor
y is cheap. | 401 // threshold to the maximum unless the client gives us a hint that map memor
y is cheap. |
| (...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1085 r.appendf("Draw indirect support: %s\n", (fDrawIndirectSupport ? "YES" : "NO
")); | 1085 r.appendf("Draw indirect support: %s\n", (fDrawIndirectSupport ? "YES" : "NO
")); |
| 1086 r.appendf("Multi draw indirect support: %s\n", (fMultiDrawIndirectSupport ?
"YES" : "NO")); | 1086 r.appendf("Multi draw indirect support: %s\n", (fMultiDrawIndirectSupport ?
"YES" : "NO")); |
| 1087 r.appendf("Base instance support: %s\n", (fBaseInstanceSupport ? "YES" : "NO
")); | 1087 r.appendf("Base instance support: %s\n", (fBaseInstanceSupport ? "YES" : "NO
")); |
| 1088 r.appendf("Use non-VBO for dynamic data: %s\n", | 1088 r.appendf("Use non-VBO for dynamic data: %s\n", |
| 1089 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); | 1089 (fUseNonVBOVertexAndIndexDynamicData ? "YES" : "NO")); |
| 1090 r.appendf("RGBA 8888 pixel ops are slow: %s\n", (fRGBA8888PixelsOpsAreSlow ?
"YES" : "NO")); | 1090 r.appendf("RGBA 8888 pixel ops are slow: %s\n", (fRGBA8888PixelsOpsAreSlow ?
"YES" : "NO")); |
| 1091 r.appendf("Partial FBO read is slow: %s\n", (fPartialFBOReadIsSlow ? "YES" :
"NO")); | 1091 r.appendf("Partial FBO read is slow: %s\n", (fPartialFBOReadIsSlow ? "YES" :
"NO")); |
| 1092 r.appendf("Bind uniform location support: %s\n", (fBindUniformLocationSuppor
t ? "YES" : "NO")); | 1092 r.appendf("Bind uniform location support: %s\n", (fBindUniformLocationSuppor
t ? "YES" : "NO")); |
| 1093 r.appendf("Rectangle texture support: %s\n", (fRectangleTextureSupport? "YES
" : "NO")); | 1093 r.appendf("Rectangle texture support: %s\n", (fRectangleTextureSupport? "YES
" : "NO")); |
| 1094 r.appendf("Texture swizzle support: %s\n", (fTextureSwizzleSupport ? "YES" :
"NO")); | 1094 r.appendf("Texture swizzle support: %s\n", (fTextureSwizzleSupport ? "YES" :
"NO")); |
| 1095 r.appendf("BGRA to RGBA readback conversions are slow: %s\n", | 1095 r.appendf("BGRA to RGBA readback conversions are slow: %s\n", |
| 1096 (fRGBAToBGRAReadbackConversionsAreSlow ? "YES" : "NO")); | 1096 (fRGBAToBGRAReadbackConversionsAreSlow ? "YES" : "NO")); |
| 1097 | 1097 |
| 1098 r.append("Configs\n-------\n"); | 1098 r.append("Configs\n-------\n"); |
| 1099 for (int i = 0; i < kGrPixelConfigCnt; ++i) { | 1099 for (int i = 0; i < kGrPixelConfigCnt; ++i) { |
| 1100 r.appendf(" cfg: %d flags: 0x%04x, b_internal: 0x%08x s_internal: 0x%08
x, e_format: " | 1100 r.appendf(" cfg: %d flags: 0x%04x, b_internal: 0x%08x s_internal: 0x%08
x, e_format: " |
| 1101 "0x%08x, e_format_teximage: 0x%08x, e_type: 0x%08x, i_for_texi
mage: 0x%08x, " | 1101 "0x%08x, e_format_teximage: 0x%08x, e_type: 0x%08x, i_for_texi
mage: 0x%08x, " |
| 1102 "i_for_renderbuffer: 0x%08x\n", | 1102 "i_for_renderbuffer: 0x%08x\n", |
| 1103 i, | 1103 i, |
| 1104 fConfigTable[i].fFlags, | 1104 fConfigTable[i].fFlags, |
| 1105 fConfigTable[i].fFormats.fBaseInternalFormat, | 1105 fConfigTable[i].fFormats.fBaseInternalFormat, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1134 case kGeometry_GrShaderType: | 1134 case kGeometry_GrShaderType: |
| 1135 return GR_GL_GEOMETRY_SHADER; | 1135 return GR_GL_GEOMETRY_SHADER; |
| 1136 case kFragment_GrShaderType: | 1136 case kFragment_GrShaderType: |
| 1137 return GR_GL_FRAGMENT_SHADER; | 1137 return GR_GL_FRAGMENT_SHADER; |
| 1138 } | 1138 } |
| 1139 SkFAIL("Unknown shader type."); | 1139 SkFAIL("Unknown shader type."); |
| 1140 return -1; | 1140 return -1; |
| 1141 } | 1141 } |
| 1142 | 1142 |
| 1143 void GrGLCaps::initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, | 1143 void GrGLCaps::initShaderPrecisionTable(const GrGLContextInfo& ctxInfo, |
| 1144 const GrGLInterface* intf, | 1144 const GrGLInterface* intf, |
| 1145 GrGLSLCaps* glslCaps) { | 1145 GrGLSLCaps* glslCaps) { |
| 1146 if (kGLES_GrGLStandard == ctxInfo.standard() || ctxInfo.version() >= GR_GL_V
ER(4, 1) || | 1146 if (kGLES_GrGLStandard == ctxInfo.standard() || ctxInfo.version() >= GR_GL_V
ER(4, 1) || |
| 1147 ctxInfo.hasExtension("GL_ARB_ES2_compatibility")) { | 1147 ctxInfo.hasExtension("GL_ARB_ES2_compatibility")) { |
| 1148 for (int s = 0; s < kGrShaderTypeCount; ++s) { | 1148 for (int s = 0; s < kGrShaderTypeCount; ++s) { |
| 1149 if (kGeometry_GrShaderType != s) { | 1149 if (kGeometry_GrShaderType != s) { |
| 1150 GrShaderType shaderType = static_cast<GrShaderType>(s); | 1150 GrShaderType shaderType = static_cast<GrShaderType>(s); |
| 1151 GrGLenum glShader = shader_type_to_gl_shader(shaderType); | 1151 GrGLenum glShader = shader_type_to_gl_shader(shaderType); |
| 1152 GrShaderCaps::PrecisionInfo* first = nullptr; | 1152 GrShaderCaps::PrecisionInfo* first = nullptr; |
| 1153 glslCaps->fShaderPrecisionVaries = false; | 1153 glslCaps->fShaderPrecisionVaries = false; |
| 1154 for (int p = 0; p < kGrSLPrecisionCount; ++p) { | 1154 for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
| 1155 GrSLPrecision precision = static_cast<GrSLPrecision>(p); | 1155 GrSLPrecision precision = static_cast<GrSLPrecision>(p); |
| 1156 GrGLenum glPrecision = precision_to_gl_float_type(precision)
; | 1156 GrGLenum glPrecision = precision_to_gl_float_type(precision)
; |
| 1157 GrGLint range[2]; | 1157 GrGLint range[2]; |
| 1158 GrGLint bits; | 1158 GrGLint bits; |
| 1159 GR_GL_GetShaderPrecisionFormat(intf, glShader, glPrecision,
range, &bits); | 1159 GR_GL_GetShaderPrecisionFormat(intf, glShader, glPrecision,
range, &bits); |
| 1160 if (bits) { | 1160 if (bits) { |
| 1161 glslCaps->fFloatPrecisions[s][p].fLogRangeLow = range[0]
; | 1161 glslCaps->fFloatPrecisions[s][p].fLogRangeLow = range[0]
; |
| 1162 glslCaps->fFloatPrecisions[s][p].fLogRangeHigh = range[1
]; | 1162 glslCaps->fFloatPrecisions[s][p].fLogRangeHigh = range[1
]; |
| 1163 glslCaps->fFloatPrecisions[s][p].fBits = bits; | 1163 glslCaps->fFloatPrecisions[s][p].fBits = bits; |
| 1164 if (!first) { | 1164 if (!first) { |
| 1165 first = &glslCaps->fFloatPrecisions[s][p]; | 1165 first = &glslCaps->fFloatPrecisions[s][p]; |
| 1166 } | 1166 } |
| 1167 else if (!glslCaps->fShaderPrecisionVaries) { | 1167 else if (!glslCaps->fShaderPrecisionVaries) { |
| 1168 glslCaps->fShaderPrecisionVaries = | 1168 glslCaps->fShaderPrecisionVaries = |
| 1169 (*first != glslCaps->fFloat
Precisions[s][p]); | 1169 (*first != glslCaps->fFloat
Precisions[s][p]); |
| 1170 } | 1170 } |
| 1171 } | 1171 } |
| 1172 } | 1172 } |
| 1173 } | 1173 } |
| 1174 } | 1174 } |
| 1175 } | 1175 } |
| 1176 else { | 1176 else { |
| 1177 // We're on a desktop GL that doesn't have precision info. Assume they'r
e all 32bit float. | 1177 // We're on a desktop GL that doesn't have precision info. Assume they'r
e all 32bit float. |
| 1178 glslCaps->fShaderPrecisionVaries = false; | 1178 glslCaps->fShaderPrecisionVaries = false; |
| 1179 for (int s = 0; s < kGrShaderTypeCount; ++s) { | 1179 for (int s = 0; s < kGrShaderTypeCount; ++s) { |
| 1180 if (kGeometry_GrShaderType != s) { | 1180 if (kGeometry_GrShaderType != s) { |
| 1181 for (int p = 0; p < kGrSLPrecisionCount; ++p) { | 1181 for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
| 1182 glslCaps->fFloatPrecisions[s][p].fLogRangeLow = 127; | 1182 glslCaps->fFloatPrecisions[s][p].fLogRangeLow = 127; |
| 1183 glslCaps->fFloatPrecisions[s][p].fLogRangeHigh = 127; | 1183 glslCaps->fFloatPrecisions[s][p].fLogRangeHigh = 127; |
| 1184 glslCaps->fFloatPrecisions[s][p].fBits = 23; | 1184 glslCaps->fFloatPrecisions[s][p].fBits = 23; |
| 1185 } | 1185 } |
| 1186 } | 1186 } |
| 1187 } | 1187 } |
| 1188 } | 1188 } |
| 1189 // GetShaderPrecisionFormat doesn't accept GL_GEOMETRY_SHADER as a shader ty
pe. Assume they're | 1189 // GetShaderPrecisionFormat doesn't accept GL_GEOMETRY_SHADER as a shader ty
pe. Assume they're |
| 1190 // the same as the vertex shader. Only fragment shaders were ever allowed to
omit support for | 1190 // the same as the vertex shader. Only fragment shaders were ever allowed to
omit support for |
| 1191 // highp. GS was added after GetShaderPrecisionFormat was added to the list
of features that | 1191 // highp. GS was added after GetShaderPrecisionFormat was added to the list
of features that |
| 1192 // are recommended against. | 1192 // are recommended against. |
| 1193 if (glslCaps->fGeometryShaderSupport) { | 1193 if (glslCaps->fGeometryShaderSupport) { |
| 1194 for (int p = 0; p < kGrSLPrecisionCount; ++p) { | 1194 for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
| 1195 glslCaps->fFloatPrecisions[kGeometry_GrShaderType][p] = | 1195 glslCaps->fFloatPrecisions[kGeometry_GrShaderType][p] = |
| 1196 glslCaps->fFloatPrecisions[kVerte
x_GrShaderType][p]; | 1196 glslCaps->fFloatPrecisions[kVerte
x_GrShaderType][p]; |
| 1197 } | 1197 } |
| 1198 } | 1198 } |
| 1199 } | 1199 } |
| 1200 | 1200 |
| 1201 bool GrGLCaps::bgraIsInternalFormat() const { | 1201 bool GrGLCaps::bgraIsInternalFormat() const { |
| 1202 return fConfigTable[kBGRA_8888_GrPixelConfig].fFormats.fBaseInternalFormat =
= GR_GL_BGRA; | 1202 return fConfigTable[kBGRA_8888_GrPixelConfig].fFormats.fBaseInternalFormat =
= GR_GL_BGRA; |
| 1203 } | 1203 } |
| 1204 | 1204 |
| 1205 bool GrGLCaps::getTexImageFormats(GrPixelConfig surfaceConfig, GrPixelConfig ext
ernalConfig, | 1205 bool GrGLCaps::getTexImageFormats(GrPixelConfig surfaceConfig, GrPixelConfig ext
ernalConfig, |
| (...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1826 // unsupported. (If we have no sRGB support at all, this will get overwr
itten below). | 1826 // unsupported. (If we have no sRGB support at all, this will get overwr
itten below). |
| 1827 fConfigTable[kSBGRA_8888_GrPixelConfig].fFlags = 0; | 1827 fConfigTable[kSBGRA_8888_GrPixelConfig].fFlags = 0; |
| 1828 } | 1828 } |
| 1829 | 1829 |
| 1830 // If BGRA is supported as an internal format it must always be specified to
glTex[Sub]Image | 1830 // If BGRA is supported as an internal format it must always be specified to
glTex[Sub]Image |
| 1831 // as a base format. | 1831 // as a base format. |
| 1832 // GL_EXT_texture_format_BGRA8888: | 1832 // GL_EXT_texture_format_BGRA8888: |
| 1833 // This extension GL_BGRA as an unsized internal format. However, it is
written against ES | 1833 // This extension GL_BGRA as an unsized internal format. However, it is
written against ES |
| 1834 // 2.0 and therefore doesn't define a value for GL_BGRA8 as ES 2.0 uses
unsized internal | 1834 // 2.0 and therefore doesn't define a value for GL_BGRA8 as ES 2.0 uses
unsized internal |
| 1835 // formats. | 1835 // formats. |
| 1836 // GL_APPLE_texture_format_BGRA8888: | 1836 // GL_APPLE_texture_format_BGRA8888: |
| 1837 // ES 2.0: the extension makes BGRA an external format but not an intern
al format. | 1837 // ES 2.0: the extension makes BGRA an external format but not an intern
al format. |
| 1838 // ES 3.0: the extension explicitly states GL_BGRA8 is not a valid inter
nal format for | 1838 // ES 3.0: the extension explicitly states GL_BGRA8 is not a valid inter
nal format for |
| 1839 // glTexImage (just for glTexStorage). | 1839 // glTexImage (just for glTexStorage). |
| 1840 if (useSizedTexFormats && this->bgraIsInternalFormat()) { | 1840 if (useSizedTexFormats && this->bgraIsInternalFormat()) { |
| 1841 fConfigTable[kBGRA_8888_GrPixelConfig].fFormats.fInternalFormatTexImage
= GR_GL_BGRA; | 1841 fConfigTable[kBGRA_8888_GrPixelConfig].fFormats.fInternalFormatTexImage
= GR_GL_BGRA; |
| 1842 } | 1842 } |
| 1843 | 1843 |
| 1844 // If we don't have texture swizzle support then the shader generator must i
nsert the | 1844 // If we don't have texture swizzle support then the shader generator must i
nsert the |
| 1845 // swizzle into shader code. | 1845 // swizzle into shader code. |
| 1846 if (!this->textureSwizzleSupport()) { | 1846 if (!this->textureSwizzleSupport()) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1873 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { | 1873 for (int j = 0; j < kExternalFormatUsageCnt; ++j) { |
| 1874 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != | 1874 SkASSERT(defaultEntry.fFormats.fExternalFormat[j] != |
| 1875 fConfigTable[i].fFormats.fExternalFormat[j]); | 1875 fConfigTable[i].fFormats.fExternalFormat[j]); |
| 1876 } | 1876 } |
| 1877 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); | 1877 SkASSERT(defaultEntry.fFormats.fExternalType != fConfigTable[i].fFormats
.fExternalType); |
| 1878 } | 1878 } |
| 1879 #endif | 1879 #endif |
| 1880 } | 1880 } |
| 1881 | 1881 |
| 1882 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} | 1882 void GrGLCaps::onApplyOptionsOverrides(const GrContextOptions& options) {} |
| OLD | NEW |