Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: src/gpu/GrStencilAndCoverTextContext.cpp

Issue 1001503002: Implement support for mixed sampled render targets (Closed) Base URL: https://skia.googlesource.com/skia.git@mix1
Patch Set: Handle numSamples cases in SkGpuDevice Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/gpu/GrStencilAndCoverTextContext.cpp
diff --git a/src/gpu/GrStencilAndCoverTextContext.cpp b/src/gpu/GrStencilAndCoverTextContext.cpp
index 1456aa22b5802d0e860dbcf1c17d18258e6499e1..7542647d6904d3d7d4f6bc0cb95e9c32b08cc364 100644
--- a/src/gpu/GrStencilAndCoverTextContext.cpp
+++ b/src/gpu/GrStencilAndCoverTextContext.cpp
@@ -69,6 +69,21 @@ bool GrStencilAndCoverTextContext::canDraw(const GrRenderTarget* rt,
return false;
}
+ if (skPaint.isAntiAlias() &&
+ GrRenderTarget::kStencil_SampleConfig == rt->sampleConfig()) {
+ if (!paint.getXPFactory()->canTweakAlphaForCoverage()) {
+ return false;
+ }
+ // No Xfer processors that might do blending inside the shader.
+ // Coverage modulation for mixed samples is done *after* shading, so blending
+ // must occur in the ROP.
+ // TODO: Update Xfer processors to better support mixed samples.
+ if (paint.getXPFactory()->willNeedDstCopy(*fContext->getGpu()->caps(),
+ GrProcOptInfo(), GrProcOptInfo())) {
+ return false;
+ }
+ }
+
// No color bitmap fonts.
SkScalerContext::Rec rec;
SkScalerContext::MakeRec(skPaint, &fDeviceProperties, NULL, &rec);
@@ -374,6 +389,8 @@ void GrStencilAndCoverTextContext::init(GrRenderTarget* rt,
fStateRestore.set(&fPipelineBuilder);
fPipelineBuilder.setFromPaint(fPaint, fRenderTarget, fClip);
+ SkASSERT(fRenderTarget->isMultisampled(GrRenderTarget::kStencil_BufferBit));
+ fPipelineBuilder.setState(GrPipelineBuilder::kHWAntialias_StateBit, fPaint.isAntiAlias());
GR_STATIC_CONST_SAME_STENCIL(kStencilPass,
kZero_StencilOp,

Powered by Google App Engine
This is Rietveld 408576698