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

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

Issue 1103423004: Remove unneeded features from GrBufferAllocPool (Closed) Base URL: https://skia.googlesource.com/skia.git@remtarget
Patch Set: Created 5 years, 7 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 | « no previous file | src/gpu/GrBufferAllocPool.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 GrBufferAllocPool_DEFINED 8 #ifndef GrBufferAllocPool_DEFINED
9 #define GrBufferAllocPool_DEFINED 9 #define GrBufferAllocPool_DEFINED
10 10
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 enum BufferType { 69 enum BufferType {
70 kVertex_BufferType, 70 kVertex_BufferType,
71 kIndex_BufferType, 71 kIndex_BufferType,
72 }; 72 };
73 73
74 /** 74 /**
75 * Constructor 75 * Constructor
76 * 76 *
77 * @param gpu The GrGpu used to create the buffers. 77 * @param gpu The GrGpu used to create the buffers.
78 * @param bufferType The type of buffers to create. 78 * @param bufferType The type of buffers to create.
79 * @param frequentResetHint A hint that indicates that the pool
80 * should expect frequent unmap() calls
81 * (as opposed to many makeSpace / acquires
82 * between resets).
83 * @param bufferSize The minimum size of created buffers. 79 * @param bufferSize The minimum size of created buffers.
84 * This value will be clamped to some 80 * This value will be clamped to some
85 * reasonable minimum. 81 * reasonable minimum.
86 * @param preallocBufferCnt The pool will allocate this number of 82 * @param preallocBufferCnt The pool will allocate this number of
87 * buffers at bufferSize and keep them until it 83 * buffers at bufferSize and keep them until it
88 * is destroyed. 84 * is destroyed.
89 */ 85 */
90 GrBufferAllocPool(GrGpu* gpu, 86 GrBufferAllocPool(GrGpu* gpu,
91 BufferType bufferType, 87 BufferType bufferType,
92 bool frequentResetHint,
93 size_t bufferSize = 0, 88 size_t bufferSize = 0,
94 int preallocBufferCnt = 0); 89 int preallocBufferCnt = 0);
95 90
96 virtual ~GrBufferAllocPool(); 91 virtual ~GrBufferAllocPool();
97 92
98 /** 93 /**
99 * Gets the size of the preallocated buffers. 94 * Gets the size of the preallocated buffers.
100 * 95 *
101 * @return the size of preallocated buffers. 96 * @return the size of preallocated buffers.
102 */ 97 */
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 * @return the number of items that would fit in the current buffer. 134 * @return the number of items that would fit in the current buffer.
140 */ 135 */
141 int currentBufferItems(size_t itemSize) const; 136 int currentBufferItems(size_t itemSize) const;
142 137
143 GrGeometryBuffer* createBuffer(size_t size); 138 GrGeometryBuffer* createBuffer(size_t size);
144 139
145 private: 140 private:
146 141
147 // The GrGpu must be able to clear the ref of pools it creates as members 142 // The GrGpu must be able to clear the ref of pools it creates as members
148 friend class GrGpu; 143 friend class GrGpu;
149 void releaseGpuRef();
150 144
151 struct BufferBlock { 145 struct BufferBlock {
152 size_t fBytesFree; 146 size_t fBytesFree;
153 GrGeometryBuffer* fBuffer; 147 GrGeometryBuffer* fBuffer;
154 }; 148 };
155 149
156 bool createBlock(size_t requestSize); 150 bool createBlock(size_t requestSize);
157 void destroyBlock(); 151 void destroyBlock();
158 void flushCpuData(const BufferBlock& block, size_t flushSize); 152 void flushCpuData(const BufferBlock& block, size_t flushSize);
159 #ifdef SK_DEBUG 153 #ifdef SK_DEBUG
160 void validate(bool unusedBlockAllowed = false) const; 154 void validate(bool unusedBlockAllowed = false) const;
161 #endif 155 #endif
162 156
163 size_t fBytesInUse; 157 size_t fBytesInUse;
164 158
165 GrGpu* fGpu; 159 GrGpu* fGpu;
166 bool fGpuIsReffed;
167 bool fFrequentResetHint;
168 SkTDArray<GrGeometryBuffer*> fPreallocBuffers; 160 SkTDArray<GrGeometryBuffer*> fPreallocBuffers;
169 size_t fMinBlockSize; 161 size_t fMinBlockSize;
170 BufferType fBufferType; 162 BufferType fBufferType;
171 163
172 SkTArray<BufferBlock> fBlocks; 164 SkTArray<BufferBlock> fBlocks;
173 int fPreallocBuffersInUse; 165 int fPreallocBuffersInUse;
174 // We attempt to cycle through the preallocated buffers rather than 166 // We attempt to cycle through the preallocated buffers rather than
175 // always starting from the first. 167 // always starting from the first.
176 int fPreallocBufferStartIdx; 168 int fPreallocBufferStartIdx;
177 SkAutoMalloc fCpuData; 169 SkAutoMalloc fCpuData;
178 void* fBufferPtr; 170 void* fBufferPtr;
179 }; 171 };
180 172
181 class GrVertexBuffer; 173 class GrVertexBuffer;
182 174
183 /** 175 /**
184 * A GrBufferAllocPool of vertex buffers 176 * A GrBufferAllocPool of vertex buffers
185 */ 177 */
186 class GrVertexBufferAllocPool : public GrBufferAllocPool { 178 class GrVertexBufferAllocPool : public GrBufferAllocPool {
187 public: 179 public:
188 /** 180 /**
189 * Constructor 181 * Constructor
190 * 182 *
191 * @param gpu The GrGpu used to create the vertex buffers. 183 * @param gpu The GrGpu used to create the vertex buffers.
192 * @param frequentResetHint A hint that indicates that the pool
193 * should expect frequent unmap() calls
194 * (as opposed to many makeSpace / acquires
195 * between resets).
196 * @param bufferSize The minimum size of created VBs This value 184 * @param bufferSize The minimum size of created VBs This value
197 * will be clamped to some reasonable minimum. 185 * will be clamped to some reasonable minimum.
198 * @param preallocBufferCnt The pool will allocate this number of VBs at 186 * @param preallocBufferCnt The pool will allocate this number of VBs at
199 * bufferSize and keep them until it is 187 * bufferSize and keep them until it is
200 * destroyed. 188 * destroyed.
201 */ 189 */
202 GrVertexBufferAllocPool(GrGpu* gpu, 190 GrVertexBufferAllocPool(GrGpu* gpu, size_t bufferSize = 0, int preallocBuffe rCnt = 0);
203 bool frequentResetHint,
204 size_t bufferSize = 0,
205 int preallocBufferCnt = 0);
206 191
207 /** 192 /**
208 * Returns a block of memory to hold vertices. A buffer designated to hold 193 * Returns a block of memory to hold vertices. A buffer designated to hold
209 * the vertices given to the caller. The buffer may or may not be locked. 194 * the vertices given to the caller. The buffer may or may not be locked.
210 * The returned ptr remains valid until any of the following: 195 * The returned ptr remains valid until any of the following:
211 * *makeSpace is called again. 196 * *makeSpace is called again.
212 * *unmap is called. 197 * *unmap is called.
213 * *reset is called. 198 * *reset is called.
214 * *this object is destroyed. 199 * *this object is destroyed.
215 * 200 *
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 246
262 /** 247 /**
263 * A GrBufferAllocPool of index buffers 248 * A GrBufferAllocPool of index buffers
264 */ 249 */
265 class GrIndexBufferAllocPool : public GrBufferAllocPool { 250 class GrIndexBufferAllocPool : public GrBufferAllocPool {
266 public: 251 public:
267 /** 252 /**
268 * Constructor 253 * Constructor
269 * 254 *
270 * @param gpu The GrGpu used to create the index buffers. 255 * @param gpu The GrGpu used to create the index buffers.
271 * @param frequentResetHint A hint that indicates that the pool
272 * should expect frequent unmap() calls
273 * (as opposed to many makeSpace / acquires
274 * between resets).
275 * @param bufferSize The minimum size of created IBs This value 256 * @param bufferSize The minimum size of created IBs This value
276 * will be clamped to some reasonable minimum. 257 * will be clamped to some reasonable minimum.
277 * @param preallocBufferCnt The pool will allocate this number of VBs at 258 * @param preallocBufferCnt The pool will allocate this number of VBs at
278 * bufferSize and keep them until it is 259 * bufferSize and keep them until it is
279 * destroyed. 260 * destroyed.
280 */ 261 */
281 GrIndexBufferAllocPool(GrGpu* gpu, 262 GrIndexBufferAllocPool(GrGpu* gpu,
282 bool frequentResetHint,
283 size_t bufferSize = 0, 263 size_t bufferSize = 0,
284 int preallocBufferCnt = 0); 264 int preallocBufferCnt = 0);
285 265
286 /** 266 /**
287 * Returns a block of memory to hold indices. A buffer designated to hold 267 * Returns a block of memory to hold indices. A buffer designated to hold
288 * the indices is given to the caller. The buffer may or may not be locked. 268 * the indices is given to the caller. The buffer may or may not be locked.
289 * The returned ptr remains valid until any of the following: 269 * The returned ptr remains valid until any of the following:
290 * *makeSpace is called again. 270 * *makeSpace is called again.
291 * *unmap is called. 271 * *unmap is called.
292 * *reset is called. 272 * *reset is called.
(...skipping 28 matching lines...) Expand all
321 * @return number of indices that fit in one of the preallocated index 301 * @return number of indices that fit in one of the preallocated index
322 * buffers. 302 * buffers.
323 */ 303 */
324 int preallocatedBufferIndices() const; 304 int preallocatedBufferIndices() const;
325 305
326 private: 306 private:
327 typedef GrBufferAllocPool INHERITED; 307 typedef GrBufferAllocPool INHERITED;
328 }; 308 };
329 309
330 #endif 310 #endif
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrBufferAllocPool.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698