| Index: src/gpu/gl/GrGLCaps.cpp
|
| diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
|
| index 0591f188a56b8ee028fa2ce89a6efba70025d49b..c6a42cfc5432f610aa542a14704a26e0b696ff79 100644
|
| --- a/src/gpu/gl/GrGLCaps.cpp
|
| +++ b/src/gpu/gl/GrGLCaps.cpp
|
| @@ -310,21 +310,6 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
|
| ctxInfo.hasExtension("GL_OES_standard_derivatives");
|
| }
|
|
|
| - // We need dual source blending and the ability to disable multisample in order to support mixed
|
| - // samples in every corner case.
|
| - if (fMultisampleDisableSupport && glslCaps->fDualSourceBlendingSupport) {
|
| - // We understand "mixed samples" to mean the collective capability of 3 different extensions
|
| - glslCaps->fMixedSamplesSupport =
|
| - ctxInfo.hasExtension("GL_NV_framebuffer_mixed_samples") &&
|
| - ctxInfo.hasExtension("GL_NV_sample_mask_override_coverage") &&
|
| - ctxInfo.hasExtension("GL_EXT_raster_multisample");
|
| - }
|
| - // Workaround NVIDIA bug related to glInvalidateFramebuffer and mixed samples.
|
| - if (kNVIDIA_GrGLDriver == ctxInfo.driver() && fShaderCaps->mixedSamplesSupport()) {
|
| - fDiscardRenderTargetSupport = false;
|
| - fInvalidateFBType = kNone_InvalidateFBType;
|
| - }
|
| -
|
| if (kGL_GrGLStandard == standard) {
|
| glslCaps->fProgrammableSampleLocationsSupport =
|
| ctxInfo.version() >= GR_GL_VER(4, 3) &&
|
| @@ -340,8 +325,18 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
|
| * GrCaps fields
|
| **************************************************************************/
|
|
|
| - // fPathRenderingSupport and fMixedSampleSupport must be set before calling initFSAASupport.
|
| - // Both of these are set in the GrShaderCaps.
|
| + // We need dual source blending and the ability to disable multisample in order to support mixed
|
| + // samples in every corner case.
|
| + if (fMultisampleDisableSupport && glslCaps->dualSourceBlendingSupport()) {
|
| + fMixedSamplesSupport = ctxInfo.hasExtension("GL_NV_framebuffer_mixed_samples");
|
| + // Workaround NVIDIA bug related to glInvalidateFramebuffer and mixed samples.
|
| + if (fMixedSamplesSupport && kNVIDIA_GrGLDriver == ctxInfo.driver()) {
|
| + fDiscardRenderTargetSupport = false;
|
| + fInvalidateFBType = kNone_InvalidateFBType;
|
| + }
|
| + }
|
| +
|
| + // fPathRenderingSupport and fMixedSamplesSupport must be set before calling initFSAASupport.
|
| this->initFSAASupport(ctxInfo, gli);
|
| this->initBlendEqationSupport(ctxInfo);
|
| this->initStencilFormats(ctxInfo);
|
| @@ -983,7 +978,7 @@ void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa
|
| fMSFBOType = kES_EXT_MsToTexture_MSFBOType;
|
| } else if (ctxInfo.hasExtension("GL_IMG_multisampled_render_to_texture")) {
|
| fMSFBOType = kES_IMG_MsToTexture_MSFBOType;
|
| - } else if (fShaderCaps->mixedSamplesSupport() && fShaderCaps->pathRenderingSupport()) {
|
| + } else if (fMixedSamplesSupport && fShaderCaps->pathRenderingSupport()) {
|
| fMSFBOType = kMixedSamples_MSFBOType;
|
| } else if (ctxInfo.version() >= GR_GL_VER(3,0)) {
|
| fMSFBOType = GrGLCaps::kES_3_0_MSFBOType;
|
| @@ -995,7 +990,7 @@ void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa
|
| fMSFBOType = kES_Apple_MSFBOType;
|
| }
|
| } else {
|
| - if (fShaderCaps->mixedSamplesSupport() && fShaderCaps->pathRenderingSupport()) {
|
| + if (fMixedSamplesSupport && fShaderCaps->pathRenderingSupport()) {
|
| fMSFBOType = kMixedSamples_MSFBOType;
|
| } else if ((ctxInfo.version() >= GR_GL_VER(3,0)) ||
|
| ctxInfo.hasExtension("GL_ARB_framebuffer_object")) {
|
|
|