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

Side by Side Diff: include/gpu/GrContext.h

Issue 947443003: Move clip off of draw target (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: feedback inc Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « include/gpu/GrClipData.h ('k') | src/core/SkRect.cpp » ('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 GrContext_DEFINED 8 #ifndef GrContext_DEFINED
9 #define GrContext_DEFINED 9 #define GrContext_DEFINED
10 10
11 #include "GrClipData.h" 11 #include "GrClip.h"
12 #include "GrColor.h" 12 #include "GrColor.h"
13 #include "GrPaint.h" 13 #include "GrPaint.h"
14 #include "GrPathRendererChain.h" 14 #include "GrPathRendererChain.h"
15 #include "GrRenderTarget.h" 15 #include "GrRenderTarget.h"
16 #include "GrTexture.h" 16 #include "GrTexture.h"
17 #include "SkMatrix.h" 17 #include "SkMatrix.h"
18 #include "SkPathEffect.h" 18 #include "SkPathEffect.h"
19 #include "SkTypes.h" 19 #include "SkTypes.h"
20 20
21 class GrAARectRenderer; 21 class GrAARectRenderer;
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 * @return GrTexture object or NULL on failure. 360 * @return GrTexture object or NULL on failure.
361 */ 361 */
362 GrRenderTarget* wrapBackendRenderTarget(const GrBackendRenderTargetDesc& de sc); 362 GrRenderTarget* wrapBackendRenderTarget(const GrBackendRenderTargetDesc& de sc);
363 363
364 /////////////////////////////////////////////////////////////////////////// 364 ///////////////////////////////////////////////////////////////////////////
365 // Clip state 365 // Clip state
366 /** 366 /**
367 * Gets the current clip. 367 * Gets the current clip.
368 * @return the current clip. 368 * @return the current clip.
369 */ 369 */
370 const GrClipData* getClip() const { return fClip; } 370 const GrClip* getClip() const { return fClip; }
371 371
372 /** 372 /**
373 * Sets the clip. 373 * Sets the clip.
374 * @param clipData the clip to set. 374 * @param clipData the clip to set.
375 */ 375 */
376 void setClip(const GrClipData* clipData) { fClip = clipData; } 376 void setClip(const GrClip* clipData) { fClip = clipData; }
377 377
378 /////////////////////////////////////////////////////////////////////////// 378 ///////////////////////////////////////////////////////////////////////////
379 // Draws 379 // Draws
380 380
381 /** 381 /**
382 * Clear the entire or rect of the render target, ignoring any clips. 382 * Clear the entire or rect of the render target, ignoring any clips.
383 * @param rect the rect to clear or the whole thing if rect is NULL. 383 * @param rect the rect to clear or the whole thing if rect is NULL.
384 * @param color the color to clear to. 384 * @param color the color to clear to.
385 * @param canIgnoreRect allows partial clears to be converted to whole 385 * @param canIgnoreRect allows partial clears to be converted to whole
386 * clears on platforms for which that is cheap 386 * clears on platforms for which that is cheap
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 // This enum exists to require a caller of the constructor to acknowledg e that the clip will 673 // This enum exists to require a caller of the constructor to acknowledg e that the clip will
674 // initially be wide open. It also could be extended if there are other desirable initial 674 // initially be wide open. It also could be extended if there are other desirable initial
675 // clip states. 675 // clip states.
676 enum InitialClip { 676 enum InitialClip {
677 kWideOpen_InitialClip, 677 kWideOpen_InitialClip,
678 }; 678 };
679 679
680 AutoClip(GrContext* context, InitialClip SkDEBUGCODE(initialState)) 680 AutoClip(GrContext* context, InitialClip SkDEBUGCODE(initialState))
681 : fContext(context) { 681 : fContext(context) {
682 SkASSERT(kWideOpen_InitialClip == initialState); 682 SkASSERT(kWideOpen_InitialClip == initialState);
683 fNewClipData.fClipStack.reset(SkRef(&fNewClipStack)); 683 fNewClipData.setClipStack(&fNewClipStack);
684 684
685 fOldClip = context->getClip(); 685 fOldClip = context->getClip();
686 context->setClip(&fNewClipData); 686 context->setClip(&fNewClipData);
687 } 687 }
688 688
689 AutoClip(GrContext* context, const SkRect& newClipRect) 689 AutoClip(GrContext* context, const SkRect& newClipRect)
690 : fContext(context) 690 : fContext(context)
691 , fNewClipStack(newClipRect) { 691 , fNewClipStack(newClipRect) {
692 fNewClipData.fClipStack.reset(SkRef(&fNewClipStack)); 692 fNewClipData.setClipStack(&fNewClipStack);
693 693
694 fOldClip = fContext->getClip(); 694 fOldClip = fContext->getClip();
695 fContext->setClip(&fNewClipData); 695 fContext->setClip(&fNewClipData);
696 } 696 }
697 697
698 ~AutoClip() { 698 ~AutoClip() {
699 if (fContext) { 699 if (fContext) {
700 fContext->setClip(fOldClip); 700 fContext->setClip(fOldClip);
701 } 701 }
702 } 702 }
703 private: 703 private:
704 GrContext* fContext; 704 GrContext* fContext;
705 const GrClipData* fOldClip; 705 const GrClip* fOldClip;
706 706
707 SkClipStack fNewClipStack; 707 SkClipStack fNewClipStack;
708 GrClipData fNewClipData; 708 GrClip fNewClipData;
709 }; 709 };
710 710
711 class AutoWideOpenIdentityDraw { 711 class AutoWideOpenIdentityDraw {
712 public: 712 public:
713 AutoWideOpenIdentityDraw(GrContext* ctx) 713 AutoWideOpenIdentityDraw(GrContext* ctx)
714 : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) { 714 : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) {
715 } 715 }
716 716
717 private: 717 private:
718 AutoClip fAutoClip; 718 AutoClip fAutoClip;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 /** Prints cache stats to the string if GR_CACHE_STATS == 1. */ 754 /** Prints cache stats to the string if GR_CACHE_STATS == 1. */
755 void dumpCacheStats(SkString*) const; 755 void dumpCacheStats(SkString*) const;
756 void printCacheStats() const; 756 void printCacheStats() const;
757 757
758 /** Prints GPU stats to the string if GR_GPU_STATS == 1. */ 758 /** Prints GPU stats to the string if GR_GPU_STATS == 1. */
759 void dumpGpuStats(SkString*) const; 759 void dumpGpuStats(SkString*) const;
760 void printGpuStats() const; 760 void printGpuStats() const;
761 761
762 private: 762 private:
763 GrGpu* fGpu; 763 GrGpu* fGpu;
764 const GrClipData* fClip; // TODO: make this ref counted 764 const GrClip* fClip;
765 765
766 GrResourceCache* fResourceCache; 766 GrResourceCache* fResourceCache;
767 GrFontCache* fFontCache; 767 GrFontCache* fFontCache;
768 SkAutoTDelete<GrLayerCache> fLayerCache; 768 SkAutoTDelete<GrLayerCache> fLayerCache;
769 769
770 GrPathRendererChain* fPathRendererChain; 770 GrPathRendererChain* fPathRendererChain;
771 GrSoftwarePathRenderer* fSoftwarePathRenderer; 771 GrSoftwarePathRenderer* fSoftwarePathRenderer;
772 772
773 GrVertexBufferAllocPool* fDrawBufferVBAllocPool; 773 GrVertexBufferAllocPool* fDrawBufferVBAllocPool;
774 GrIndexBufferAllocPool* fDrawBufferIBAllocPool; 774 GrIndexBufferAllocPool* fDrawBufferIBAllocPool;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 /** 828 /**
829 * This callback allows the resource cache to callback into the GrContext 829 * This callback allows the resource cache to callback into the GrContext
830 * when the cache is still over budget after a purge. 830 * when the cache is still over budget after a purge.
831 */ 831 */
832 static void OverBudgetCB(void* data); 832 static void OverBudgetCB(void* data);
833 833
834 typedef SkRefCnt INHERITED; 834 typedef SkRefCnt INHERITED;
835 }; 835 };
836 836
837 #endif 837 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrClipData.h ('k') | src/core/SkRect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698