| 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 834 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 845 } | 845 } |
| 846 } | 846 } |
| 847 | 847 |
| 848 void GrGLCaps::initBlendEqationSupport(const GrGLContextInfo& ctxInfo) { | 848 void GrGLCaps::initBlendEqationSupport(const GrGLContextInfo& ctxInfo) { |
| 849 GrGLSLCaps* glslCaps = static_cast<GrGLSLCaps*>(fShaderCaps.get()); | 849 GrGLSLCaps* glslCaps = static_cast<GrGLSLCaps*>(fShaderCaps.get()); |
| 850 | 850 |
| 851 // Disabling advanced blend on various platforms with major known issues. We
also block Chrome | 851 // Disabling advanced blend on various platforms with major known issues. We
also block Chrome |
| 852 // for now until its own blacklists can be updated. | 852 // for now until its own blacklists can be updated. |
| 853 if (kAdreno4xx_GrGLRenderer == ctxInfo.renderer() || | 853 if (kAdreno4xx_GrGLRenderer == ctxInfo.renderer() || |
| 854 kIntel_GrGLDriver == ctxInfo.driver() || | 854 kIntel_GrGLDriver == ctxInfo.driver() || |
| 855 kChromium_GrGLDriver == ctxInfo.driver() || | 855 kChromium_GrGLDriver == ctxInfo.driver()) { |
| 856 kARM_GrGLVendor == ctxInfo.vendor()) { | |
| 857 return; | 856 return; |
| 858 } | 857 } |
| 859 | 858 |
| 860 if (ctxInfo.hasExtension("GL_NV_blend_equation_advanced_coherent")) { | 859 if (ctxInfo.hasExtension("GL_NV_blend_equation_advanced_coherent")) { |
| 861 fBlendEquationSupport = kAdvancedCoherent_BlendEquationSupport; | 860 fBlendEquationSupport = kAdvancedCoherent_BlendEquationSupport; |
| 862 glslCaps->fAdvBlendEqInteraction = GrGLSLCaps::kAutomatic_AdvBlendEqInte
raction; | 861 glslCaps->fAdvBlendEqInteraction = GrGLSLCaps::kAutomatic_AdvBlendEqInte
raction; |
| 863 } else if (ctxInfo.hasExtension("GL_KHR_blend_equation_advanced_coherent"))
{ | 862 } else if (ctxInfo.hasExtension("GL_KHR_blend_equation_advanced_coherent"))
{ |
| 864 fBlendEquationSupport = kAdvancedCoherent_BlendEquationSupport; | 863 fBlendEquationSupport = kAdvancedCoherent_BlendEquationSupport; |
| 865 glslCaps->fAdvBlendEqInteraction = GrGLSLCaps::kGeneralEnable_AdvBlendEq
Interaction; | 864 glslCaps->fAdvBlendEqInteraction = GrGLSLCaps::kGeneralEnable_AdvBlendEq
Interaction; |
| 866 } else if (kNVIDIA_GrGLDriver == ctxInfo.driver() && | 865 } else if (kNVIDIA_GrGLDriver == ctxInfo.driver() && |
| (...skipping 12 matching lines...) Expand all Loading... |
| 879 return; // No advanced blend support. | 878 return; // No advanced blend support. |
| 880 } | 879 } |
| 881 | 880 |
| 882 SkASSERT(this->advancedBlendEquationSupport()); | 881 SkASSERT(this->advancedBlendEquationSupport()); |
| 883 | 882 |
| 884 if (kNVIDIA_GrGLDriver == ctxInfo.driver()) { | 883 if (kNVIDIA_GrGLDriver == ctxInfo.driver()) { |
| 885 // Blacklist color-dodge and color-burn on NVIDIA until the fix is relea
sed. | 884 // Blacklist color-dodge and color-burn on NVIDIA until the fix is relea
sed. |
| 886 fAdvBlendEqBlacklist |= (1 << kColorDodge_GrBlendEquation) | | 885 fAdvBlendEqBlacklist |= (1 << kColorDodge_GrBlendEquation) | |
| 887 (1 << kColorBurn_GrBlendEquation); | 886 (1 << kColorBurn_GrBlendEquation); |
| 888 } | 887 } |
| 888 if (kARM_GrGLVendor == ctxInfo.vendor()) { |
| 889 // Blacklist color-burn on ARM until the fix is released. |
| 890 fAdvBlendEqBlacklist |= (1 << kColorBurn_GrBlendEquation); |
| 891 } |
| 889 } | 892 } |
| 890 | 893 |
| 891 namespace { | 894 namespace { |
| 892 const GrGLuint kUnknownBitCount = GrGLStencilAttachment::kUnknownBitCount; | 895 const GrGLuint kUnknownBitCount = GrGLStencilAttachment::kUnknownBitCount; |
| 893 } | 896 } |
| 894 | 897 |
| 895 void GrGLCaps::initStencilFormats(const GrGLContextInfo& ctxInfo) { | 898 void GrGLCaps::initStencilFormats(const GrGLContextInfo& ctxInfo) { |
| 896 | 899 |
| 897 // Build up list of legal stencil formats (though perhaps not supported on | 900 // Build up list of legal stencil formats (though perhaps not supported on |
| 898 // the particular gpu/driver) from most preferred to least. | 901 // the particular gpu/driver) from most preferred to least. |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1158 for (int p = 0; p < kGrSLPrecisionCount; ++p) { | 1161 for (int p = 0; p < kGrSLPrecisionCount; ++p) { |
| 1159 glslCaps->fFloatPrecisions[kGeometry_GrShaderType][p] = | 1162 glslCaps->fFloatPrecisions[kGeometry_GrShaderType][p] = |
| 1160 glslCaps->fFloatPrecisions[kVerte
x_GrShaderType][p]; | 1163 glslCaps->fFloatPrecisions[kVerte
x_GrShaderType][p]; |
| 1161 } | 1164 } |
| 1162 } | 1165 } |
| 1163 } | 1166 } |
| 1164 | 1167 |
| 1165 | 1168 |
| 1166 | 1169 |
| 1167 | 1170 |
| OLD | NEW |