diff options
author | 2016-01-15 11:36:18 -0800 | |
---|---|---|
committer | 2016-01-15 11:36:18 -0800 | |
commit | eed519e6a2d0e61b0733a388de9320af897ed197 (patch) | |
tree | 919a42adc1c681b637ea23ec89a59ee16b09f5b6 /src/gpu/gl | |
parent | 03108de163354fa574679ad153b58ce57126b2ba (diff) |
Differentiate maxColorSamples and maxStencilSamples in GrCaps
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1592803002
Review URL: https://codereview.chromium.org/1592803002
Diffstat (limited to 'src/gpu/gl')
-rw-r--r-- | src/gpu/gl/GrGLCaps.cpp | 19 | ||||
-rw-r--r-- | src/gpu/gl/GrGLGpu.cpp | 2 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp index ddc52cc378..30181f692a 100644 --- a/src/gpu/gl/GrGLCaps.cpp +++ b/src/gpu/gl/GrGLCaps.cpp @@ -283,17 +283,19 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, // 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") || + if (fMultisampleDisableSupport && + glslCaps->dualSourceBlendingSupport() && + fShaderCaps->pathRenderingSupport()) { + fUsesMixedSamples = ctxInfo.hasExtension("GL_NV_framebuffer_mixed_samples") || ctxInfo.hasExtension("GL_CHROMIUM_framebuffer_mixed_samples"); // Workaround NVIDIA bug related to glInvalidateFramebuffer and mixed samples. - if (fMixedSamplesSupport && kNVIDIA_GrGLDriver == ctxInfo.driver()) { + if (fUsesMixedSamples && kNVIDIA_GrGLDriver == ctxInfo.driver()) { fDiscardRenderTargetSupport = false; fInvalidateFBType = kNone_InvalidateFBType; } } - // fPathRenderingSupport and fMixedSamplesSupport must be set before calling initFSAASupport. + // fUsesMixedSamples must be set before calling initFSAASupport. this->initFSAASupport(ctxInfo, gli); this->initBlendEqationSupport(ctxInfo); this->initStencilFormats(ctxInfo); @@ -402,10 +404,11 @@ void GrGLCaps::init(const GrContextOptions& contextOptions, // initFSAASupport() must have been called before this point if (GrGLCaps::kES_IMG_MsToTexture_MSFBOType == fMSFBOType) { - GR_GL_GetIntegerv(gli, GR_GL_MAX_SAMPLES_IMG, &fMaxSampleCount); + GR_GL_GetIntegerv(gli, GR_GL_MAX_SAMPLES_IMG, &fMaxColorSampleCount); } else if (GrGLCaps::kNone_MSFBOType != fMSFBOType) { - GR_GL_GetIntegerv(gli, GR_GL_MAX_SAMPLES, &fMaxSampleCount); + GR_GL_GetIntegerv(gli, GR_GL_MAX_SAMPLES, &fMaxColorSampleCount); } + fMaxStencilSampleCount = fMaxColorSampleCount; if (kPowerVR54x_GrGLRenderer == ctxInfo.renderer() || kPowerVRRogue_GrGLRenderer == ctxInfo.renderer() || @@ -684,7 +687,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 (fMixedSamplesSupport && fShaderCaps->pathRenderingSupport()) { + } else if (fUsesMixedSamples) { fMSFBOType = kMixedSamples_MSFBOType; } else if (ctxInfo.version() >= GR_GL_VER(3,0)) { fMSFBOType = GrGLCaps::kES_3_0_MSFBOType; @@ -696,7 +699,7 @@ void GrGLCaps::initFSAASupport(const GrGLContextInfo& ctxInfo, const GrGLInterfa fMSFBOType = kES_Apple_MSFBOType; } } else { - if (fMixedSamplesSupport && fShaderCaps->pathRenderingSupport()) { + if (fUsesMixedSamples) { fMSFBOType = kMixedSamples_MSFBOType; } else if ((ctxInfo.version() >= GR_GL_VER(3,0)) || ctxInfo.hasExtension("GL_ARB_framebuffer_object")) { diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp index 248a5dfbd2..185cdc26f3 100644 --- a/src/gpu/gl/GrGLGpu.cpp +++ b/src/gpu/gl/GrGLGpu.cpp @@ -341,7 +341,7 @@ void GrGLGpu::onResetContext(uint32_t resetBits) { // "opacity", which can then be blended into the color buffer to accomplish antialiasing. // Enable coverage modulation suitable for premultiplied alpha colors. // This state has no effect when not rendering to a mixed sampled target. - if (this->caps()->mixedSamplesSupport()) { + if (this->caps()->usesMixedSamples()) { GL_CALL(CoverageModulation(GR_GL_RGBA)); } } |