static SkBenchmark* gF0(void* p) { return SkNEW_ARGS(RegionContainBench, (p, sect_proc, "sect")); }
static BenchRegistry gR0(gF0);
-
preallocBufferCnt) {
}
-void* GrVertexBufferAllocPool::makeSpace(size_t vertexSize,
+void* GrVertexBufferAllocPool::makeSpace(GrVertexLayout layout,
int vertexCount,
const GrVertexBuffer** buffer,
int* startVertex) {
GrAssert(NULL != buffer);
GrAssert(NULL != startVertex);
+ size_t vSize = GrDrawState::VertexSize(layout);
size_t offset = 0; // assign to suppress warning
const GrGeometryBuffer* geomBuffer = NULL; // assign to suppress warning
- void* ptr = INHERITED::makeSpace(vertexSize * vertexCount,
- vertexSize,
+ void* ptr = INHERITED::makeSpace(vSize * vertexCount,
+ vSize,
&geomBuffer,
&offset);
*buffer = (const GrVertexBuffer*) geomBuffer;
- GrAssert(0 == offset % vertexSize);
- *startVertex = offset / vertexSize;
+ GrAssert(0 == offset % vSize);
+ *startVertex = offset / vSize;
return ptr;
}
-bool GrVertexBufferAllocPool::appendVertices(size_t vertexSize,
+bool GrVertexBufferAllocPool::appendVertices(GrVertexLayout layout,
int vertexCount,
const void* vertices,
const GrVertexBuffer** buffer,
int* startVertex) {
- void* space = makeSpace(vertexSize, vertexCount, buffer, startVertex);
+ void* space = makeSpace(layout, vertexCount, buffer, startVertex);
if (NULL != space) {
memcpy(space,
vertices,
- vertexSize * vertexCount);
+ GrDrawState::VertexSize(layout) * vertexCount);
return true;
} else {
return false;
}
}
-int GrVertexBufferAllocPool::preallocatedBufferVertices(size_t vertexSize) const {
- return INHERITED::preallocatedBufferSize() / vertexSize;
+int GrVertexBufferAllocPool::preallocatedBufferVertices(GrVertexLayout layout) const {
+ return INHERITED::preallocatedBufferSize() /
+ GrDrawState::VertexSize(layout);
}
-int GrVertexBufferAllocPool::currentBufferVertices(size_t vertexSize) const {
- return currentBufferItems(vertexSize);
+int GrVertexBufferAllocPool::currentBufferVertices(GrVertexLayout layout) const {
+ return currentBufferItems(GrDrawState::VertexSize(layout));
}
////////////////////////////////////////////////////////////////////////////////
* the buffer at the offset indicated by startVertex. Until that time they
* may be in temporary storage and/or the buffer may be locked.
*
- * @param vertexSize specifies size of a vertex to allocate space for
+ * @param layout specifies type of vertices to allocate space for
* @param vertexCount number of vertices to allocate space for
* @param buffer returns the vertex buffer that will hold the
* vertices.
* In units of the size of a vertex from layout param.
* @return pointer to first vertex.
*/
- void* makeSpace(size_t vertexSize,
+ void* makeSpace(GrVertexLayout layout,
int vertexCount,
const GrVertexBuffer** buffer,
int* startVertex);
/**
* Shortcut to make space and then write verts into the made space.
*/
- bool appendVertices(size_t vertexSize,
+ bool appendVertices(GrVertexLayout layout,
int vertexCount,
const void* vertices,
const GrVertexBuffer** buffer,
* would fit in the next available preallocated buffer. If any makeSpace
* would force a new VB to be created the return value will be zero.
*
- * @param the size of a vertex to compute space for.
+ * @param the format of vertices to compute space for.
* @return the number of vertices that would fit in the current buffer.
*/
- int currentBufferVertices(size_t vertexSize) const;
+ int currentBufferVertices(GrVertexLayout layout) const;
/**
* Gets the number of vertices that can fit in a preallocated vertex buffer.
* Zero if no preallocated buffers.
*
- * @param the size of a vertex to compute space for.
+ * @param the format of vertices to compute space for.
*
* @return number of vertices that fit in one of the preallocated vertex
* buffers.
*/
- int preallocatedBufferVertices(size_t vertexSize) const;
+ int preallocatedBufferVertices(GrVertexLayout layout) const;
private:
typedef GrBufferAllocPool INHERITED;
this->releasePreviousVertexSource();
geoSrc.fVertexSrc = kNone_GeometrySrcType;
- acquired = this->onReserveVertexSpace(GrDrawState::VertexSize(vertexLayout),
+ acquired = this->onReserveVertexSpace(vertexLayout,
vertexCount,
vertices);
}
int indexCount,
void** vertices,
void** indices) {
- this->willReserveVertexAndIndexSpace(GrDrawState::VertexSize(vertexLayout), vertexCount, indexCount);
+ this->willReserveVertexAndIndexSpace(vertexLayout, vertexCount, indexCount);
if (vertexCount) {
if (!this->reserveVertexSpace(vertexLayout, vertexCount, vertices)) {
if (indexCount) {
return true;
}
-bool GrDrawTarget::geometryHints(size_t vertexSize,
+bool GrDrawTarget::geometryHints(GrVertexLayout vertexLayout,
int32_t* vertexCount,
int32_t* indexCount) const {
if (NULL != vertexCount) {
* Also may hint whether the draw target should be flushed first. This is
* useful for deferred targets.
*
- * @param vertexSize size of vertices caller would like to reserve
+ * @param vertexLayout layout of vertices caller would like to reserve
* @param vertexCount in: hint about how many vertices the caller would
* like to allocate.
* out: a hint about the number of vertices that can be
*
* @return true if target should be flushed based on the input values.
*/
- virtual bool geometryHints(size_t vertexSize,
+ virtual bool geometryHints(GrVertexLayout vertexLayout,
int* vertexCount,
int* indexCount) const;
private:
// A subclass can optionally overload this function to be notified before
// vertex and index space is reserved.
- virtual void willReserveVertexAndIndexSpace(size_t vertexSize, int vertexCount, int indexCount) {}
+ virtual void willReserveVertexAndIndexSpace(GrVertexLayout,int vertexCount, int indexCount) {}
// implemented by subclass to allocate space for reserved geom
- virtual bool onReserveVertexSpace(size_t vertexSize, int vertexCount, void** vertices) = 0;
+ virtual bool onReserveVertexSpace(GrVertexLayout, int vertexCount, void** vertices) = 0;
virtual bool onReserveIndexSpace(int indexCount, void** indices) = 0;
// implemented by subclass to handle release of reserved geom space
virtual void releaseReservedVertexSpace() = 0;
}
}
-bool GrGpu::onReserveVertexSpace(size_t vertexSize,
+bool GrGpu::onReserveVertexSpace(GrVertexLayout vertexLayout,
int vertexCount,
void** vertices) {
GeometryPoolState& geomPoolState = fGeomPoolStateStack.back();
this->prepareVertexPool();
- *vertices = fVertexPool->makeSpace(vertexSize,
+ *vertices = fVertexPool->makeSpace(vertexLayout,
vertexCount,
&geomPoolState.fPoolVertexBuffer,
&geomPoolState.fPoolStartVertex);
#if GR_DEBUG
bool success =
#endif
- fVertexPool->appendVertices(GrDrawState::VertexSize(this->getVertexLayout()),
+ fVertexPool->appendVertices(this->getVertexLayout(),
vertexCount,
vertexArray,
&geomPoolState.fPoolVertexBuffer,
private:
// GrDrawTarget overrides
- virtual bool onReserveVertexSpace(size_t vSize, int vertexCount, void** vertices) SK_OVERRIDE;
+ virtual bool onReserveVertexSpace(GrVertexLayout, int vertexCount, void** vertices) SK_OVERRIDE;
virtual bool onReserveIndexSpace(int indexCount, void** indices) SK_OVERRIDE;
virtual void releaseReservedVertexSpace() SK_OVERRIDE;
virtual void releaseReservedIndexSpace() SK_OVERRIDE;
}
void GrInOrderDrawBuffer::willReserveVertexAndIndexSpace(
- size_t vertexSize,
+ GrVertexLayout vertexLayout,
int vertexCount,
int indexCount) {
if (NULL != fAutoFlushTarget) {
!unreleasedVertexSpace &&
!unreleasedIndexSpace &&
!targetHasReservedGeom &&
- this->geometryHints(vertexSize, &vcount, &icount)) {
+ this->geometryHints(vertexLayout, &vcount, &icount)) {
this->flushTo(fAutoFlushTarget);
}
}
}
-bool GrInOrderDrawBuffer::geometryHints(size_t vertexSize,
+bool GrInOrderDrawBuffer::geometryHints(GrVertexLayout vertexLayout,
int* vertexCount,
int* indexCount) const {
// we will recommend a flush if the data could fit in a single
*indexCount = currIndices;
}
if (NULL != vertexCount) {
- int32_t currVertices = fVertexPool.currentBufferVertices(vertexSize);
+ int32_t currVertices = fVertexPool.currentBufferVertices(vertexLayout);
if (*vertexCount > currVertices &&
(!fVertexPool.preallocatedBuffersRemaining() &&
- *vertexCount <= fVertexPool.preallocatedBufferVertices(vertexSize))) {
+ *vertexCount <= fVertexPool.preallocatedBufferVertices(vertexLayout))) {
flush = true;
}
return flush;
}
-bool GrInOrderDrawBuffer::onReserveVertexSpace(size_t vertexSize,
+bool GrInOrderDrawBuffer::onReserveVertexSpace(GrVertexLayout vertexLayout,
int vertexCount,
void** vertices) {
GeometryPoolState& poolState = fGeoPoolStateStack.back();
GrAssert(NULL != vertices);
GrAssert(0 == poolState.fUsedPoolVertexBytes);
- *vertices = fVertexPool.makeSpace(vertexSize,
+ *vertices = fVertexPool.makeSpace(vertexLayout,
vertexCount,
&poolState.fPoolVertexBuffer,
&poolState.fPoolStartVertex);
#if GR_DEBUG
bool success =
#endif
- fVertexPool.appendVertices(GrDrawState::VertexSize(this->getVertexLayout()),
+ fVertexPool.appendVertices(this->getVertexLayout(),
vertexCount,
vertexArray,
&poolState.fPoolVertexBuffer,
int indicesPerInstance)
SK_OVERRIDE;
- virtual bool geometryHints(size_t vertexSize,
+ virtual bool geometryHints(GrVertexLayout vertexLayout,
int* vertexCount,
int* indexCount) const SK_OVERRIDE;
// overrides from GrDrawTarget
virtual void onDraw(const DrawInfo&) SK_OVERRIDE;
virtual void onStencilPath(const GrPath*, const SkStrokeRec& stroke, SkPath::FillType) SK_OVERRIDE;
- virtual bool onReserveVertexSpace(size_t vertexSize,
+ virtual bool onReserveVertexSpace(GrVertexLayout layout,
int vertexCount,
void** vertices) SK_OVERRIDE;
virtual bool onReserveIndexSpace(int indexCount,
virtual void releaseIndexArray() SK_OVERRIDE;
virtual void geometrySourceWillPush() SK_OVERRIDE;
virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) SK_OVERRIDE;
- virtual void willReserveVertexAndIndexSpace(size_t vertexSize,
+ virtual void willReserveVertexAndIndexSpace(GrVertexLayout vertexLayout,
int vertexCount,
int indexCount) SK_OVERRIDE;
// a number of verts to reserve and whether to perform a flush.
fMaxVertices = kMinRequestedVerts;
bool flush = (NULL != fDrawTarget) &&
- fDrawTarget->geometryHints(GrDrawState::VertexSize(fVertexLayout),
+ fDrawTarget->geometryHints(fVertexLayout,
&fMaxVertices,
NULL);
if (flush) {
fDrawTarget = fContext->getTextTarget(fPaint);
fMaxVertices = kDefaultRequestedVerts;
// ignore return, no point in flushing again.
- fDrawTarget->geometryHints(GrDrawState::VertexSize(fVertexLayout),
+ fDrawTarget->geometryHints(fVertexLayout,
&fMaxVertices,
NULL);
}
#include "TestClassDef.h"
-DEFINE_TESTCLASS("MD5", MD5TestClass, TestMD5)
\ No newline at end of file
+DEFINE_TESTCLASS("MD5", MD5TestClass, TestMD5)
}
#include "TestClassDef.h"
-DEFINE_TESTCLASS("SHA1", SHA1TestClass, TestSHA1)
\ No newline at end of file
+DEFINE_TESTCLASS("SHA1", SHA1TestClass, TestSHA1)
(SkColorGetG(p0->getColor()) == SkColorGetG(p1->getColor())) &&
(SkColorGetB(p0->getColor()) == SkColorGetB(p1->getColor()))) {
commands[i]->setVisible(false);
- SkColor newColor = SkColorSetA(p1->getColor(),
+ SkColor newColor = SkColorSetA(p1->getColor(),
SkColorGetA(p0->getColor()));
p1->setColor(newColor);
commands[i+2]->setVisible(false);