From 49313f6b4391d0f74ab1964c295634e8830680f6 Mon Sep 17 00:00:00 2001 From: "bsalomon@google.com" Date: Wed, 14 Sep 2011 13:54:05 +0000 Subject: GrTArray->SkTArray & docs Review URL: http://codereview.appspot.com/5005045/ git-svn-id: http://skia.googlecode.com/svn/trunk@2265 2bbb7eff-a529-9590-31e7-b0007b416f81 --- gpu/include/GrAllocator.h | 6 +- gpu/include/GrClip.h | 6 +- gpu/include/GrTArray.h | 335 ----------------------------------- gpu/include/GrTemplates.h | 32 ---- gpu/src/GrAAHairLinePathRenderer.cpp | 8 +- gpu/src/GrBufferAllocPool.h | 5 +- gpu/src/GrDrawTarget.h | 4 +- gpu/src/GrGpu.h | 4 +- gpu/src/GrGpuGL.h | 2 +- gpu/src/GrInOrderDrawBuffer.h | 12 +- gpu/src/GrPathRenderer.h | 3 +- gpu/src/GrPathRendererChain.h | 6 +- 12 files changed, 29 insertions(+), 394 deletions(-) delete mode 100644 gpu/include/GrTArray.h (limited to 'gpu') diff --git a/gpu/include/GrAllocator.h b/gpu/include/GrAllocator.h index ae46938e1b..7652be3be5 100755 --- a/gpu/include/GrAllocator.h +++ b/gpu/include/GrAllocator.h @@ -12,7 +12,7 @@ #define GrAllocator_DEFINED #include "GrConfig.h" -#include "GrTArray.h" +#include "SkTArray.h" class GrAllocator { public: @@ -128,7 +128,7 @@ public: private: static const int NUM_INIT_BLOCK_PTRS = 8; - GrTArray fBlocks; + SkTArray fBlocks; size_t fBlockSize; char fBlockInitialStorage[NUM_INIT_BLOCK_PTRS*sizeof(void*)]; size_t fItemSize; @@ -163,7 +163,7 @@ public: * and the size of subsequent blocks. */ template - GrTAllocator(GrAlignedSTStorage* initialBlock) + GrTAllocator(SkAlignedSTStorage* initialBlock) : fAllocator(sizeof(T), N, initialBlock->get()) {} /** diff --git a/gpu/include/GrClip.h b/gpu/include/GrClip.h index 4abd8dae0e..9e235bfe91 100644 --- a/gpu/include/GrClip.h +++ b/gpu/include/GrClip.h @@ -14,9 +14,9 @@ #include "GrClipIterator.h" #include "GrRect.h" #include "GrPath.h" -#include "GrTArray.h" #include "GrTemplates.h" +#include "SkTArray.h" class GrClip { public: @@ -135,8 +135,8 @@ private: enum { kPreAllocElements = 4, }; - GrAlignedSTStorage fListStorage; - GrTArray fList; + SkAlignedSTStorage fListStorage; + SkTArray fList; }; #endif diff --git a/gpu/include/GrTArray.h b/gpu/include/GrTArray.h deleted file mode 100644 index 5477d25775..0000000000 --- a/gpu/include/GrTArray.h +++ /dev/null @@ -1,335 +0,0 @@ - -/* - * Copyright 2010 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - - - -#ifndef GrTArray_DEFINED -#define GrTArray_DEFINED - -#include -#include "GrTypes.h" -#include "GrTemplates.h" - -// DATA_TYPE indicates that T has a trivial cons, destructor -// and can be shallow-copied -template class GrTArray { -public: - GrTArray() { - fCount = 0; - fReserveCount = MIN_ALLOC_COUNT; - fAllocCount = 0; - fMemArray = NULL; - fPreAllocMemArray = NULL; - } - - explicit GrTArray(int reserveCount) { - GrAssert(reserveCount >= 0); - fCount = 0; - fReserveCount = reserveCount > MIN_ALLOC_COUNT ? reserveCount : - MIN_ALLOC_COUNT; - fAllocCount = fReserveCount; - fMemArray = GrMalloc(sizeof(T) * fReserveCount); - fPreAllocMemArray = NULL; - } - - template - GrTArray(GrAlignedSTStorage* storage) { - GrAssert(N > 0); - fCount = 0; - fReserveCount = N; - fAllocCount = N; - fMemArray = storage->get(); - fPreAllocMemArray = storage->get(); - } - - GrTArray(void* preAllocStorage, int preAllocCount) { - GrAssert(preAllocCount >= 0); - // we allow NULL,0 args and revert to the default cons. behavior - // this makes it possible for a owner-object to use same constructor - // to get either prealloc or nonprealloc behavior based using same line - GrAssert((NULL == preAllocStorage) == !preAllocCount); - - fCount = 0; - fReserveCount = preAllocCount > 0 ? preAllocCount : - MIN_ALLOC_COUNT; - fAllocCount = preAllocCount; - fMemArray = preAllocStorage; - fPreAllocMemArray = preAllocStorage; - } - - explicit GrTArray(const GrTArray& array) { - fCount = array.count(); - fReserveCount = MIN_ALLOC_COUNT; - fAllocCount = GrMax(fReserveCount, fCount); - fMemArray = GrMalloc(sizeof(T) * fAllocCount); - fPreAllocMemArray = NULL; - - if (DATA_TYPE) { - memcpy(fMemArray, array.fMemArray, sizeof(T) * fCount); - } else { - for (int i = 0; i < fCount; ++i) { - new (fItemArray + i) T(array[i]); - } - } - } - - GrTArray(const T* array, int count) { - GrAssert(count >= 0); - fCount = count; - fReserveCount = MIN_ALLOC_COUNT; - fAllocCount = GrMax(fReserveCount, fCount); - fMemArray = GrMalloc(sizeof(T) * fAllocCount); - fPreAllocMemArray = NULL; - if (DATA_TYPE) { - memcpy(fMemArray, array, sizeof(T) * fCount); - } else { - for (int i = 0; i < fCount; ++i) { - new (fItemArray + i) T(array[i]); - } - } - } - - GrTArray(const GrTArray& array, - void* preAllocStorage, int preAllocCount) { - - GrAssert(preAllocCount >= 0); - - // for same reason as non-copying cons we allow NULL, 0 for prealloc - GrAssert((NULL == preAllocStorage) == !preAllocCount); - - fCount = array.count(); - fReserveCount = preAllocCount > 0 ? preAllocCount : - MIN_ALLOC_COUNT; - fPreAllocMemArray = preAllocStorage; - - if (fReserveCount >= fCount && preAllocCount) { - fAllocCount = fReserveCount; - fMemArray = preAllocStorage; - } else { - fAllocCount = GrMax(fCount, fReserveCount); - fMemArray = GrMalloc(fAllocCount * sizeof(T)); - } - - if (DATA_TYPE) { - memcpy(fMemArray, array.fMemArray, sizeof(T) * fCount); - } else { - for (int i = 0; i < fCount; ++i) { - new (fItemArray + i) T(array[i]); - } - } - } - - GrTArray(const T* array, int count, - void* preAllocStorage, int preAllocCount) { - - GrAssert(count >= 0); - GrAssert(preAllocCount >= 0); - - // for same reason as non-copying cons we allow NULL, 0 for prealloc - GrAssert((NULL == preAllocStorage) == !preAllocCount); - - fCount = count; - fReserveCount = (preAllocCount > 0) ? preAllocCount : - MIN_ALLOC_COUNT; - fPreAllocMemArray = preAllocStorage; - - if (fReserveCount >= fCount && preAllocCount) { - fAllocCount = fReserveCount; - fMemArray = preAllocStorage; - } else { - fAllocCount = GrMax(fCount, fReserveCount); - fMemArray = GrMalloc(fAllocCount * sizeof(T)); - } - - if (DATA_TYPE) { - memcpy(fMemArray, array, sizeof(T) * fCount); - } else { - for (int i = 0; i < fCount; ++i) { - new (fItemArray + i) T(array[i]); - } - } - } - - GrTArray& operator =(const GrTArray& array) { - for (int i = 0; i < fCount; ++i) { - fItemArray[i].~T(); - } - fCount = 0; - checkRealloc((int)array.count()); - fCount = array.count(); - if (DATA_TYPE) { - memcpy(fMemArray, array.fMemArray, sizeof(T) * fCount); - } else { - for (int i = 0; i < fCount; ++i) { - new (fItemArray + i) T(array[i]); - } - } - return *this; - } - - ~GrTArray() { - for (int i = 0; i < fCount; ++i) { - fItemArray[i].~T(); - } - if (fMemArray != fPreAllocMemArray) { - GrFree(fMemArray); - } - } - - void reset() { this->pop_back_n(fCount); } - - int count() const { return fCount; } - - bool empty() const { return !fCount; } - - /** - * Adds 1 new default-constructed T value and returns in by reference. Note - * the reference only remains valid until the next call that adds or removes - * elements. - */ - T& push_back() { - checkRealloc(1); - new ((char*)fMemArray+sizeof(T)*fCount) T; - ++fCount; - return fItemArray[fCount-1]; - } - - /** - * Allocates n more default T values, and returns the address of the start - * of that new range. Note: this address is only valid until the next API - * call made on the array that might add or remove elements. - */ - T* push_back_n(int n) { - GrAssert(n >= 0); - checkRealloc(n); - for (int i = 0; i < n; ++i) { - new (fItemArray + fCount + i) T; - } - fCount += n; - return fItemArray + fCount - n; - } - - void pop_back() { - GrAssert(fCount > 0); - --fCount; - fItemArray[fCount].~T(); - checkRealloc(0); - } - - void pop_back_n(int n) { - GrAssert(n >= 0); - GrAssert(fCount >= n); - fCount -= n; - for (int i = 0; i < n; ++i) { - fItemArray[i].~T(); - } - checkRealloc(0); - } - - // pushes or pops from the back to resize - void resize_back(int newCount) { - GrAssert(newCount >= 0); - - if (newCount > fCount) { - push_back_n(newCount - fCount); - } else if (newCount < fCount) { - pop_back_n(fCount - newCount); - } - } - - T& operator[] (int i) { - GrAssert(i < fCount); - GrAssert(i >= 0); - return fItemArray[i]; - } - - const T& operator[] (int i) const { - GrAssert(i < fCount); - GrAssert(i >= 0); - return fItemArray[i]; - } - - T& front() { GrAssert(fCount > 0); return fItemArray[0];} - - const T& front() const { GrAssert(fCount > 0); return fItemArray[0];} - - T& back() { GrAssert(fCount); return fItemArray[fCount - 1];} - - const T& back() const { GrAssert(fCount > 0); return fItemArray[fCount - 1];} - - T& fromBack(int i) { - GrAssert(i >= 0); - GrAssert(i < fCount); - return fItemArray[fCount - i - 1]; - } - - const T& fromBack(int i) const { - GrAssert(i >= 0); - GrAssert(i < fCount); - return fItemArray[fCount - i - 1]; - } - -private: - - static const int MIN_ALLOC_COUNT = 8; - - inline void checkRealloc(int delta) { - GrAssert(fCount >= 0); - GrAssert(fAllocCount >= 0); - - GrAssert(-delta <= fCount); - - int newCount = fCount + delta; - int fNewAllocCount = fAllocCount; - - if (newCount > fAllocCount) { - fNewAllocCount = GrMax(newCount + ((newCount + 1) >> 1), - fReserveCount); - } else if (newCount < fAllocCount / 3) { - fNewAllocCount = GrMax(fAllocCount / 2, fReserveCount); - } - - if (fNewAllocCount != fAllocCount) { - - fAllocCount = fNewAllocCount; - char* fNewMemArray; - - if (fAllocCount == fReserveCount && NULL != fPreAllocMemArray) { - fNewMemArray = (char*) fPreAllocMemArray; - } else { - fNewMemArray = (char*) GrMalloc(fAllocCount*sizeof(T)); - } - - if (DATA_TYPE) { - memcpy(fNewMemArray, fMemArray, fCount * sizeof(T)); - } else { - for (int i = 0; i < fCount; ++i) { - new (fNewMemArray + sizeof(T) * i) T(fItemArray[i]); - fItemArray[i].~T(); - } - } - - if (fMemArray != fPreAllocMemArray) { - GrFree(fMemArray); - } - fMemArray = fNewMemArray; - } - } - - int fReserveCount; - int fCount; - int fAllocCount; - void* fPreAllocMemArray; - union { - T* fItemArray; - void* fMemArray; - }; -}; - -#endif - diff --git a/gpu/include/GrTemplates.h b/gpu/include/GrTemplates.h index 9ffa51b4fb..63e43eed01 100644 --- a/gpu/include/GrTemplates.h +++ b/gpu/include/GrTemplates.h @@ -24,38 +24,6 @@ template Dst GrTCast(Src src) { return data.dst; } -/** - * Reserves memory that is aligned on double and pointer boundaries. - * Hopefully this is sufficient for all practical purposes. - */ -template class GrAlignedSStorage : GrNoncopyable { -public: - void* get() { return fData; } -private: - union { - void* fPtr; - double fDouble; - char fData[N]; - }; -}; - -/** - * Reserves memory that is aligned on double and pointer boundaries. - * Hopefully this is sufficient for all practical purposes. Otherwise, - * we have to do some arcane trickery to determine alignment of non-POD - * types. Lifetime of the memory is the lifetime of the object. - */ -template class GrAlignedSTStorage : GrNoncopyable { -public: - /** - * Returns void* because this object does not initialize the - * memory. Use placement new for types that require a cons. - */ - void* get() { return fStorage.get(); } -private: - GrAlignedSStorage fStorage; -}; - /** * saves value of T* in and restores in destructor * e.g.: diff --git a/gpu/src/GrAAHairLinePathRenderer.cpp b/gpu/src/GrAAHairLinePathRenderer.cpp index f60e7cfc30..d57aa3ac29 100644 --- a/gpu/src/GrAAHairLinePathRenderer.cpp +++ b/gpu/src/GrAAHairLinePathRenderer.cpp @@ -137,8 +137,8 @@ void GrAAHairLinePathRenderer::resetGeom() { namespace { -typedef GrTArray PtArray; -typedef GrTArray IntArray; +typedef SkTArray PtArray; +typedef SkTArray IntArray; /** * We convert cubics to quadratics (for now). @@ -633,8 +633,8 @@ bool GrAAHairLinePathRenderer::createGeom(GrDrawTarget::StageBitfield stages) { GrMatrix viewM = fTarget->getViewMatrix(); - GrAlignedSTStorage<128, GrPoint> lineStorage; - GrAlignedSTStorage<128, GrPoint> quadStorage; + SkAlignedSTStorage<128, GrPoint> lineStorage; + SkAlignedSTStorage<128, GrPoint> quadStorage; PtArray lines(&lineStorage); PtArray quads(&quadStorage); IntArray qSubdivs; diff --git a/gpu/src/GrBufferAllocPool.h b/gpu/src/GrBufferAllocPool.h index f9d9e19658..acf0289582 100644 --- a/gpu/src/GrBufferAllocPool.h +++ b/gpu/src/GrBufferAllocPool.h @@ -13,7 +13,8 @@ #include "GrNoncopyable.h" #include "GrTDArray.h" -#include "GrTArray.h" + +#include "SkTArray.h" class GrGeometryBuffer; class GrGpu; @@ -173,7 +174,7 @@ private: size_t fMinBlockSize; BufferType fBufferType; - GrTArray fBlocks; + SkTArray fBlocks; int fPreallocBuffersInUse; int fFirstPreallocBuffer; SkAutoMalloc fCpuData; diff --git a/gpu/src/GrDrawTarget.h b/gpu/src/GrDrawTarget.h index 42723f6da3..1d61a18fd6 100644 --- a/gpu/src/GrDrawTarget.h +++ b/gpu/src/GrDrawTarget.h @@ -1315,10 +1315,10 @@ private: enum { kPreallocGeoSrcStateStackCnt = 4, }; - GrAlignedSTStorage fGeoSrcStateStackStorage; - GrTArray fGeoSrcStateStack; + SkTArray fGeoSrcStateStack; }; diff --git a/gpu/src/GrGpu.h b/gpu/src/GrGpu.h index 88b50b1f02..e970554bcf 100644 --- a/gpu/src/GrGpu.h +++ b/gpu/src/GrGpu.h @@ -509,9 +509,9 @@ private: enum { kPreallocGeomPoolStateStackCnt = 4, }; - GrAlignedSTStorage fGeoSrcStateStackStorage; - GrTArray fGeomPoolStateStack; + SkTArray fGeomPoolStateStack; mutable GrIndexBuffer* fQuadIndexBuffer; // mutable so it can be // created on-demand diff --git a/gpu/src/GrGpuGL.h b/gpu/src/GrGpuGL.h index 47aca3c4ca..b1accf60e2 100644 --- a/gpu/src/GrGpuGL.h +++ b/gpu/src/GrGpuGL.h @@ -194,7 +194,7 @@ private: friend class GrGLRenderTarget; - GrTArray fStencilFormats; + SkTArray fStencilFormats; // we want to clear stencil buffers when they are created. We want to clear // the entire buffer even if it is larger than the color attachment. We // attach it to this fbo with no color attachment to do the initial clear. diff --git a/gpu/src/GrInOrderDrawBuffer.h b/gpu/src/GrInOrderDrawBuffer.h index dbf6144845..f0b5c9ef4d 100644 --- a/gpu/src/GrInOrderDrawBuffer.h +++ b/gpu/src/GrInOrderDrawBuffer.h @@ -172,7 +172,7 @@ private: size_t fUsedPoolVertexBytes; size_t fUsedPoolIndexBytes; }; - GrTArray fGeoPoolStateStack; + SkTArray fGeoPoolStateStack; enum { @@ -183,11 +183,11 @@ private: kGeoPoolStatePreAllocCnt = 4, }; - GrAlignedSTStorage fDrawStorage; - GrAlignedSTStorage fStateStorage; - GrAlignedSTStorage fClipStorage; - GrAlignedSTStorage fClearStorage; - GrAlignedSTStorage fDrawStorage; + SkAlignedSTStorage fStateStorage; + SkAlignedSTStorage fClipStorage; + SkAlignedSTStorage fClearStorage; + SkAlignedSTStorage fGeoStackStorage; typedef GrDrawTarget INHERITED; diff --git a/gpu/src/GrPathRenderer.h b/gpu/src/GrPathRenderer.h index 815da47de1..b8e7a4c4bd 100644 --- a/gpu/src/GrPathRenderer.h +++ b/gpu/src/GrPathRenderer.h @@ -11,9 +11,10 @@ #define GrPathRenderer_DEFINED #include "GrDrawTarget.h" -#include "GrTArray.h" #include "GrPathRendererChain.h" +#include "SkTArray.h" + class SkPath; struct GrPoint; diff --git a/gpu/src/GrPathRendererChain.h b/gpu/src/GrPathRendererChain.h index 0f4305b063..24abda403b 100644 --- a/gpu/src/GrPathRendererChain.h +++ b/gpu/src/GrPathRendererChain.h @@ -11,7 +11,7 @@ #define GrPathRendererChain_DEFINED #include "GrRefCnt.h" -#include "GrTArray.h" +#include "SkTArray.h" class GrContext; class GrDrawTarget; @@ -55,8 +55,8 @@ private: bool fInit; GrContext* fOwner; UsageFlags fFlags; - GrAlignedSTStorage fStorage; - GrTArray fChain; + SkAlignedSTStorage fStorage; + SkTArray fChain; }; GR_MAKE_BITFIELD_OPS(GrPathRendererChain::UsageFlags) -- cgit v1.2.3