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

Side by Side Diff: src/gpu/GrDrawTarget.h

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, 1 month 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 unified diff | Download patch
« no previous file with comments | « src/gpu/GrClipMaskManager.cpp ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2010 Google Inc. 2 * Copyright 2010 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 #ifndef GrDrawTarget_DEFINED 8 #ifndef GrDrawTarget_DEFINED
9 #define GrDrawTarget_DEFINED 9 #define GrDrawTarget_DEFINED
10 10
11 #include "GrClipData.h" 11 #include "GrClipData.h"
12 #include "GrClipMaskManager.h"
12 #include "GrContext.h" 13 #include "GrContext.h"
13 #include "GrDrawState.h" 14 #include "GrDrawState.h"
14 #include "GrIndexBuffer.h" 15 #include "GrIndexBuffer.h"
15 #include "GrPathRendering.h" 16 #include "GrPathRendering.h"
16 #include "GrTraceMarker.h" 17 #include "GrTraceMarker.h"
17 18
18 #include "SkClipStack.h" 19 #include "SkClipStack.h"
19 #include "SkMatrix.h" 20 #include "SkMatrix.h"
20 #include "SkPath.h" 21 #include "SkPath.h"
21 #include "SkStrokeRec.h" 22 #include "SkStrokeRec.h"
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 * clip and all other draw state (blend mode, stages, etc). Clears the 413 * clip and all other draw state (blend mode, stages, etc). Clears the
413 * whole thing if rect is NULL, otherwise just the rect. If canIgnoreRect 414 * whole thing if rect is NULL, otherwise just the rect. If canIgnoreRect
414 * is set then the entire render target can be optionally cleared. 415 * is set then the entire render target can be optionally cleared.
415 */ 416 */
416 virtual void clear(const SkIRect* rect, 417 virtual void clear(const SkIRect* rect,
417 GrColor color, 418 GrColor color,
418 bool canIgnoreRect, 419 bool canIgnoreRect,
419 GrRenderTarget* renderTarget = NULL) = 0; 420 GrRenderTarget* renderTarget = NULL) = 0;
420 421
421 /** 422 /**
423 * Similar to the above. DrawTarget subclass sets clip bit in the stencil b uffer. The subclass
424 * is free to clear the remaining bits to zero if masked clears are more
425 * expensive than clearing all bits.
426 */
427
428 virtual void clearStencilClip(const SkIRect& rect, bool insideClip, GrRender Target* = NULL) = 0;
bsalomon 2014/10/28 15:08:01 Does this need to be on GrDT or can it just be on
429
430 /**
422 * Discards the contents render target. NULL indicates that the current rend er target should 431 * Discards the contents render target. NULL indicates that the current rend er target should
423 * be discarded. 432 * be discarded.
424 **/ 433 **/
425 virtual void discard(GrRenderTarget* = NULL) = 0; 434 virtual void discard(GrRenderTarget* = NULL) = 0;
426 435
427 /** 436 /**
428 * Called at start and end of gpu trace marking 437 * Called at start and end of gpu trace marking
429 * GR_CREATE_GPU_TRACE_MARKER(marker_str, target) will automatically call th ese at the start 438 * GR_CREATE_GPU_TRACE_MARKER(marker_str, target) will automatically call th ese at the start
430 * and end of a code block respectively 439 * and end of a code block respectively
431 */ 440 */
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 bool isIssued() { return fDrawTarget && fDrawTarget->isIssued(fDrawID); } 694 bool isIssued() { return fDrawTarget && fDrawTarget->isIssued(fDrawID); }
686 695
687 private: 696 private:
688 GrDrawTarget* fDrawTarget; 697 GrDrawTarget* fDrawTarget;
689 uint32_t fDrawID; // this may wrap, but we're doing direct compa rison 698 uint32_t fDrawID; // this may wrap, but we're doing direct compa rison
690 // so that should be okay 699 // so that should be okay
691 }; 700 };
692 701
693 virtual DrawToken getCurrentDrawToken() { return DrawToken(this, 0); } 702 virtual DrawToken getCurrentDrawToken() { return DrawToken(this, 0); }
694 703
695 // The state of the scissor is controlled by the clip manager, no one else s hould set
696 // Scissor state
697 struct ScissorState {
698 ScissorState() : fEnabled(false) {}
699 void set(const SkIRect& rect) { fRect = rect; fEnabled = true; }
700 bool fEnabled;
701 SkIRect fRect;
702 };
703
704 protected: 704 protected:
705 // Extend access to GrDrawState::convertToPEndeingExec to subclasses. 705 // Extend access to GrDrawState::convertToPEndeingExec to subclasses.
706 void convertDrawStateToPendingExec(GrDrawState* ds) { 706 void convertDrawStateToPendingExec(GrDrawState* ds) {
707 ds->convertToPendingExec(); 707 ds->convertToPendingExec();
708 } 708 }
709 709
710 enum GeometrySrcType { 710 enum GeometrySrcType {
711 kNone_GeometrySrcType, //<! src has not been specified 711 kNone_GeometrySrcType, //<! src has not been specified
712 kReserved_GeometrySrcType, //<! src was set using reserve*Space 712 kReserved_GeometrySrcType, //<! src was set using reserve*Space
713 kArray_GeometrySrcType, //<! src was set using set*SourceToArray 713 kArray_GeometrySrcType, //<! src was set using set*SourceToArray
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 GrContext* fContext; 943 GrContext* fContext;
944 // To keep track that we always have at least as many debug marker adds as r emoves 944 // To keep track that we always have at least as many debug marker adds as r emoves
945 int fGpuTraceMar kerCount; 945 int fGpuTraceMar kerCount;
946 GrTraceMarkerSet fActiveTrace Markers; 946 GrTraceMarkerSet fActiveTrace Markers;
947 GrTraceMarkerSet fStoredTrace Markers; 947 GrTraceMarkerSet fStoredTrace Markers;
948 948
949 typedef SkRefCnt INHERITED; 949 typedef SkRefCnt INHERITED;
950 }; 950 };
951 951
952 #endif 952 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrClipMaskManager.cpp ('k') | src/gpu/GrGpu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698