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

Unified Diff: src/gpu/GrInOrderDrawBuffer.cpp

Issue 683673002: clear stencil clip on draw target (Closed) Base URL: https://skia.googlesource.com/skia.git@aa_rect_takes_gpu
Patch Set: move scissor state to drawtarget Created 6 years, 2 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/GrInOrderDrawBuffer.cpp
diff --git a/src/gpu/GrInOrderDrawBuffer.cpp b/src/gpu/GrInOrderDrawBuffer.cpp
index 753a379ff80489d4221ccd3dbb2d6f5dee265a1c..cfb7f9339ebd890150a3cfb3b0aced9be00e548f 100644
--- a/src/gpu/GrInOrderDrawBuffer.cpp
+++ b/src/gpu/GrInOrderDrawBuffer.cpp
@@ -434,6 +434,19 @@ void GrInOrderDrawBuffer::clear(const SkIRect* rect, GrColor color,
this->recordTraceMarkersIfNecessary();
}
+void GrInOrderDrawBuffer::clearStencilClip(const SkIRect& rect,
+ bool insideClip,
+ GrRenderTarget* renderTarget) {
+ if (NULL == renderTarget) {
+ renderTarget = this->drawState()->getRenderTarget();
+ SkASSERT(renderTarget);
+ }
+ ClearStencilClip* clr = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, ClearStencilClip, (renderTarget));
+ clr->fRect = rect;
+ clr->fInsideClip = insideClip;
+ this->recordTraceMarkersIfNecessary();
+}
+
void GrInOrderDrawBuffer::discard(GrRenderTarget* renderTarget) {
if (!this->caps()->discardRenderTargetSupport()) {
return;
@@ -562,6 +575,10 @@ void GrInOrderDrawBuffer::Clear::execute(GrDrawTarget* gpu) {
}
}
+void GrInOrderDrawBuffer::ClearStencilClip::execute(GrDrawTarget* gpu) {
+ gpu->clearStencilClip(fRect, fInsideClip, this->renderTarget());
+}
+
void GrInOrderDrawBuffer::CopySurface::execute(GrDrawTarget* gpu) {
gpu->copySurface(this->dst(), this->src(), fSrcRect, fDstPoint);
}

Powered by Google App Engine
This is Rietveld 408576698