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

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

Issue 23120004: Change Atlas recycling to track current flush count and recycle if Atlas not used in current flush. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/gpu/GrAtlas.cpp ('k') | src/gpu/GrInOrderDrawBuffer.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 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef GrDrawTarget_DEFINED 10 #ifndef GrDrawTarget_DEFINED
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 } 614 }
615 } 615 }
616 616
617 ~AutoGeometryAndStatePush() { fTarget->popGeometrySource(); } 617 ~AutoGeometryAndStatePush() { fTarget->popGeometrySource(); }
618 618
619 private: 619 private:
620 AutoStateRestore fState; 620 AutoStateRestore fState;
621 GrDrawTarget* fTarget; 621 GrDrawTarget* fTarget;
622 }; 622 };
623 623
624 ///////////////////////////////////////////////////////////////////////////
625 // Draw execution tracking (for font atlases and other resources)
626 class DrawToken {
627 public:
628 DrawToken(GrDrawTarget* drawTarget, uint32_t drawID) :
629 fDrawTarget(drawTarget), fDrawID(drawID) {}
630
631 bool isIssued() { return NULL != fDrawTarget && fDrawTarget->isIssued(fD rawID); }
632
633 private:
634 GrDrawTarget* fDrawTarget;
635 uint32_t fDrawID; // this may wrap, but we're doing direct compa rison
636 // so that should be okay
637 };
638
639 virtual DrawToken getCurrentDrawToken() { return DrawToken(this, 0); }
640
624 protected: 641 protected:
625 642
626 enum GeometrySrcType { 643 enum GeometrySrcType {
627 kNone_GeometrySrcType, //<! src has not been specified 644 kNone_GeometrySrcType, //<! src has not been specified
628 kReserved_GeometrySrcType, //<! src was set using reserve*Space 645 kReserved_GeometrySrcType, //<! src was set using reserve*Space
629 kArray_GeometrySrcType, //<! src was set using set*SourceToArray 646 kArray_GeometrySrcType, //<! src was set using set*SourceToArray
630 kBuffer_GeometrySrcType //<! src was set using set*SourceToBuffer 647 kBuffer_GeometrySrcType //<! src was set using set*SourceToBuffer
631 }; 648 };
632 649
633 struct GeometrySrcState { 650 struct GeometrySrcState {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 int startIndex, int vertexCount, 849 int startIndex, int vertexCount,
833 int indexCount) const; 850 int indexCount) const;
834 // called when setting a new vert/idx source to unref prev vb/ib 851 // called when setting a new vert/idx source to unref prev vb/ib
835 void releasePreviousVertexSource(); 852 void releasePreviousVertexSource();
836 void releasePreviousIndexSource(); 853 void releasePreviousIndexSource();
837 854
838 // Makes a copy of the dst if it is necessary for the draw. Returns false if a copy is required 855 // Makes a copy of the dst if it is necessary for the draw. Returns false if a copy is required
839 // but couldn't be made. Otherwise, returns true. 856 // but couldn't be made. Otherwise, returns true.
840 bool setupDstReadIfNecessary(DrawInfo* info); 857 bool setupDstReadIfNecessary(DrawInfo* info);
841 858
859 // Check to see if this set of draw commands has been sent out
860 virtual bool isIssued(uint32_t drawID) { return true; }
861
842 enum { 862 enum {
843 kPreallocGeoSrcStateStackCnt = 4, 863 kPreallocGeoSrcStateStackCnt = 4,
844 }; 864 };
845 SkSTArray<kPreallocGeoSrcStateStackCnt, GeometrySrcState, true> fGeoSrcState Stack; 865 SkSTArray<kPreallocGeoSrcStateStackCnt, GeometrySrcState, true> fGeoSrcState Stack;
846 const GrClipData* fClip; 866 const GrClipData* fClip;
847 GrDrawState* fDrawState; 867 GrDrawState* fDrawState;
848 GrDrawState fDefaultDraw State; 868 GrDrawState fDefaultDraw State;
849 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar get. 869 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar get.
850 GrContext* fContext; 870 GrContext* fContext;
851 871
852 typedef GrRefCnt INHERITED; 872 typedef GrRefCnt INHERITED;
853 }; 873 };
854 874
855 #endif 875 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrAtlas.cpp ('k') | src/gpu/GrInOrderDrawBuffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698