| 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 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 457 | 457 |
| 458 this->initConfigTexturableTable(ctxInfo, gli); | 458 this->initConfigTexturableTable(ctxInfo, gli); |
| 459 this->initConfigRenderableTable(ctxInfo); | 459 this->initConfigRenderableTable(ctxInfo); |
| 460 this->initShaderPrecisionTable(ctxInfo, gli, glslCaps); | 460 this->initShaderPrecisionTable(ctxInfo, gli, glslCaps); |
| 461 | 461 |
| 462 this->applyOptionsOverrides(contextOptions); | 462 this->applyOptionsOverrides(contextOptions); |
| 463 glslCaps->applyOptionsOverrides(contextOptions); | 463 glslCaps->applyOptionsOverrides(contextOptions); |
| 464 } | 464 } |
| 465 | 465 |
| 466 bool GrGLCaps::hasPathRenderingSupport(const GrGLContextInfo& ctxInfo, const GrG
LInterface* gli) { | 466 bool GrGLCaps::hasPathRenderingSupport(const GrGLContextInfo& ctxInfo, const GrG
LInterface* gli) { |
| 467 bool hasChromiumPathRendering = ctxInfo.hasExtension("GL_CHROMIUM_path_rende
ring"); | 467 if (!ctxInfo.hasExtension("GL_NV_path_rendering")) { |
| 468 | |
| 469 if (!(ctxInfo.hasExtension("GL_NV_path_rendering") || hasChromiumPathRenderi
ng)) { | |
| 470 return false; | 468 return false; |
| 471 } | 469 } |
| 472 | |
| 473 if (kGL_GrGLStandard == ctxInfo.standard()) { | 470 if (kGL_GrGLStandard == ctxInfo.standard()) { |
| 474 if (ctxInfo.version() < GR_GL_VER(4, 3) && | 471 if (ctxInfo.version() < GR_GL_VER(4, 3) && |
| 475 !ctxInfo.hasExtension("GL_ARB_program_interface_query")) { | 472 !ctxInfo.hasExtension("GL_ARB_program_interface_query")) { |
| 476 return false; | 473 return false; |
| 477 } | 474 } |
| 478 } else { | 475 } else { |
| 479 if (!hasChromiumPathRendering && | 476 if (ctxInfo.version() < GR_GL_VER(3, 1)) { |
| 480 ctxInfo.version() < GR_GL_VER(3, 1)) { | |
| 481 return false; | 477 return false; |
| 482 } | 478 } |
| 483 } | 479 } |
| 484 // We only support v1.3+ of GL_NV_path_rendering which allows us to | 480 // We only support v1.3+ of GL_NV_path_rendering which allows us to |
| 485 // set individual fragment inputs with ProgramPathFragmentInputGen. The API | 481 // set individual fragment inputs with ProgramPathFragmentInputGen. The API |
| 486 // additions are detected by checking the existence of the function. | 482 // additions are detected by checking the existence of the function. |
| 487 // We also use *Then* functions that not all drivers might have. Check | 483 // We also use *Then* functions that not all drivers might have. Check |
| 488 // them for consistency. | 484 // them for consistency. |
| 489 if (NULL == gli->fFunctions.fStencilThenCoverFillPath || | 485 if (NULL == gli->fFunctions.fStencilThenCoverFillPath || |
| 490 NULL == gli->fFunctions.fStencilThenCoverStrokePath || | 486 NULL == gli->fFunctions.fStencilThenCoverStrokePath || |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1198 for (int p = 0; p < kGrSLPrecisionCount; ++p) { | 1194 for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
| 1199 glslCaps->fFloatPrecisions[kGeometry_GrShaderType][p] = | 1195 glslCaps->fFloatPrecisions[kGeometry_GrShaderType][p] = |
| 1200 glslCaps->fFloatPrecisions[kVerte
x_GrShaderType][p]; | 1196 glslCaps->fFloatPrecisions[kVerte
x_GrShaderType][p]; |
| 1201 } | 1197 } |
| 1202 } | 1198 } |
| 1203 } | 1199 } |
| 1204 | 1200 |
| 1205 | 1201 |
| 1206 | 1202 |
| 1207 | 1203 |
| OLD | NEW |