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

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

Issue 699733002: removing setVertexArraySource from drawtarget (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: a bit more cleanup 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/GrContext.cpp ('k') | src/gpu/GrDrawTarget.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 GrDrawTarget_DEFINED 8 #ifndef GrDrawTarget_DEFINED
9 #define GrDrawTarget_DEFINED 9 #define GrDrawTarget_DEFINED
10 10
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 * out: a hint about the number of indices that can be 194 * out: a hint about the number of indices that can be
195 * allocated cheaply. Negative means no hint. 195 * allocated cheaply. Negative means no hint.
196 * Ignored if NULL. 196 * Ignored if NULL.
197 * 197 *
198 * @return true if target should be flushed based on the input values. 198 * @return true if target should be flushed based on the input values.
199 */ 199 */
200 virtual bool geometryHints(int* vertexCount, 200 virtual bool geometryHints(int* vertexCount,
201 int* indexCount) const; 201 int* indexCount) const;
202 202
203 /** 203 /**
204 * Sets source of vertex data for the next draw. Array must contain
205 * the vertex data when this is called.
206 *
207 * @param vertexArray cpu array containing vertex data.
208 * @param vertexCount the number of vertices in the array. Vertex size is
209 * queried from the current GrDrawState.
210 */
211 void setVertexSourceToArray(const void* vertexArray, int vertexCount);
212
213 /**
214 * Sets source of index data for the next indexed draw. Array must contain
215 * the indices when this is called.
216 *
217 * @param indexArray cpu array containing index data.
218 * @param indexCount the number of indices in the array.
219 */
220 void setIndexSourceToArray(const void* indexArray, int indexCount);
221
222 /**
223 * Sets source of vertex data for the next draw. Data does not have to be 204 * Sets source of vertex data for the next draw. Data does not have to be
224 * in the buffer until drawIndexed, drawNonIndexed, or drawIndexedInstances. 205 * in the buffer until drawIndexed, drawNonIndexed, or drawIndexedInstances.
225 * 206 *
226 * @param buffer vertex buffer containing vertex data. Must be 207 * @param buffer vertex buffer containing vertex data. Must be
227 * unlocked before draw call. Vertex size is queried 208 * unlocked before draw call. Vertex size is queried
228 * from current GrDrawState. 209 * from current GrDrawState.
229 */ 210 */
230 void setVertexSourceToBuffer(const GrVertexBuffer* buffer); 211 void setVertexSourceToBuffer(const GrVertexBuffer* buffer);
231 212
232 /** 213 /**
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 674
694 protected: 675 protected:
695 // Extend access to GrDrawState::convertToPEndeingExec to subclasses. 676 // Extend access to GrDrawState::convertToPEndeingExec to subclasses.
696 void convertDrawStateToPendingExec(GrDrawState* ds) { 677 void convertDrawStateToPendingExec(GrDrawState* ds) {
697 ds->convertToPendingExec(); 678 ds->convertToPendingExec();
698 } 679 }
699 680
700 enum GeometrySrcType { 681 enum GeometrySrcType {
701 kNone_GeometrySrcType, //<! src has not been specified 682 kNone_GeometrySrcType, //<! src has not been specified
702 kReserved_GeometrySrcType, //<! src was set using reserve*Space 683 kReserved_GeometrySrcType, //<! src was set using reserve*Space
703 kArray_GeometrySrcType, //<! src was set using set*SourceToArray
704 kBuffer_GeometrySrcType //<! src was set using set*SourceToBuffer 684 kBuffer_GeometrySrcType //<! src was set using set*SourceToBuffer
705 }; 685 };
706 686
707 struct GeometrySrcState { 687 struct GeometrySrcState {
708 GeometrySrcType fVertexSrc; 688 GeometrySrcType fVertexSrc;
709 union { 689 union {
710 // valid if src type is buffer 690 // valid if src type is buffer
711 const GrVertexBuffer* fVertexBuffer; 691 const GrVertexBuffer* fVertexBuffer;
712 // valid if src type is reserved or array 692 // valid if src type is reserved or array
713 int fVertexCount; 693 int fVertexCount;
714 }; 694 };
715 695
716 GeometrySrcType fIndexSrc; 696 GeometrySrcType fIndexSrc;
717 union { 697 union {
718 // valid if src type is buffer 698 // valid if src type is buffer
719 const GrIndexBuffer* fIndexBuffer; 699 const GrIndexBuffer* fIndexBuffer;
720 // valid if src type is reserved or array 700 // valid if src type is reserved or array
721 int fIndexCount; 701 int fIndexCount;
722 }; 702 };
723 703
724 size_t fVertexSize; 704 size_t fVertexSize;
725 }; 705 };
726 706
727 int indexCountInCurrentSource() const { 707 int indexCountInCurrentSource() const {
728 const GeometrySrcState& src = this->getGeomSrc(); 708 const GeometrySrcState& src = this->getGeomSrc();
729 switch (src.fIndexSrc) { 709 switch (src.fIndexSrc) {
730 case kNone_GeometrySrcType: 710 case kNone_GeometrySrcType:
731 return 0; 711 return 0;
732 case kReserved_GeometrySrcType: 712 case kReserved_GeometrySrcType:
733 case kArray_GeometrySrcType:
734 return src.fIndexCount; 713 return src.fIndexCount;
735 case kBuffer_GeometrySrcType: 714 case kBuffer_GeometrySrcType:
736 return static_cast<int>(src.fIndexBuffer->gpuMemorySize() / size of(uint16_t)); 715 return static_cast<int>(src.fIndexBuffer->gpuMemorySize() / size of(uint16_t));
737 default: 716 default:
738 SkFAIL("Unexpected Index Source."); 717 SkFAIL("Unexpected Index Source.");
739 return 0; 718 return 0;
740 } 719 }
741 } 720 }
742 721
743 // This method is called by copySurface The srcRect is guaranteed to be ent irely within the 722 // This method is called by copySurface The srcRect is guaranteed to be ent irely within the
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 // A subclass can optionally overload this function to be notified before 844 // A subclass can optionally overload this function to be notified before
866 // vertex and index space is reserved. 845 // vertex and index space is reserved.
867 virtual void willReserveVertexAndIndexSpace(int vertexCount, int indexCount) {} 846 virtual void willReserveVertexAndIndexSpace(int vertexCount, int indexCount) {}
868 847
869 // implemented by subclass to allocate space for reserved geom 848 // implemented by subclass to allocate space for reserved geom
870 virtual bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void** vertices) = 0; 849 virtual bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void** vertices) = 0;
871 virtual bool onReserveIndexSpace(int indexCount, void** indices) = 0; 850 virtual bool onReserveIndexSpace(int indexCount, void** indices) = 0;
872 // implemented by subclass to handle release of reserved geom space 851 // implemented by subclass to handle release of reserved geom space
873 virtual void releaseReservedVertexSpace() = 0; 852 virtual void releaseReservedVertexSpace() = 0;
874 virtual void releaseReservedIndexSpace() = 0; 853 virtual void releaseReservedIndexSpace() = 0;
875 // subclass must consume array contents when set
876 virtual void onSetVertexSourceToArray(const void* vertexArray, int vertexCou nt) = 0;
877 virtual void onSetIndexSourceToArray(const void* indexArray, int indexCount) = 0;
878 // subclass is notified that geom source will be set away from an array
879 virtual void releaseVertexArray() = 0;
880 virtual void releaseIndexArray() = 0;
881 // subclass overrides to be notified just before geo src state is pushed/pop ped. 854 // subclass overrides to be notified just before geo src state is pushed/pop ped.
882 virtual void geometrySourceWillPush() = 0; 855 virtual void geometrySourceWillPush() = 0;
883 virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) = 0; 856 virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) = 0;
884 // subclass called to perform drawing 857 // subclass called to perform drawing
885 virtual void onDraw(const DrawInfo&) = 0; 858 virtual void onDraw(const DrawInfo&) = 0;
886 // Implementation of drawRect. The geometry src and vertex attribs will alre ady 859 // Implementation of drawRect. The geometry src and vertex attribs will alre ady
887 // be saved before this is called and restored afterwards. A subclass may ov erride 860 // be saved before this is called and restored afterwards. A subclass may ov erride
888 // this to perform more optimal rect rendering. Its draws should be funneled through 861 // this to perform more optimal rect rendering. Its draws should be funneled through
889 // one of the public GrDrawTarget draw methods (e.g. drawNonIndexed, 862 // one of the public GrDrawTarget draw methods (e.g. drawNonIndexed,
890 // drawIndexedInstances, ...). The base class draws a two triangle fan using 863 // drawIndexedInstances, ...). The base class draws a two triangle fan using
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 protected: 949 protected:
977 GrClipMaskManager fClipMaskManager; 950 GrClipMaskManager fClipMaskManager;
978 951
979 private: 952 private:
980 GrClipMaskManager* getClipMaskManager() { return &fClipMaskManager; } 953 GrClipMaskManager* getClipMaskManager() { return &fClipMaskManager; }
981 954
982 typedef GrDrawTarget INHERITED; 955 typedef GrDrawTarget INHERITED;
983 }; 956 };
984 957
985 #endif 958 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrDrawTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698