| Index: src/gpu/GrBatchTarget.h
|
| diff --git a/src/gpu/GrBatchTarget.h b/src/gpu/GrBatchTarget.h
|
| deleted file mode 100644
|
| index 8a78904b10e86797d3a4bfeed7a4d71920f05d27..0000000000000000000000000000000000000000
|
| --- a/src/gpu/GrBatchTarget.h
|
| +++ /dev/null
|
| @@ -1,168 +0,0 @@
|
| -/*
|
| - * Copyright 2015 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#ifndef GrBatchBuffer_DEFINED
|
| -#define GrBatchBuffer_DEFINED
|
| -
|
| -#include "GrBatchAtlas.h"
|
| -#include "GrBufferAllocPool.h"
|
| -#include "GrContext.h"
|
| -#include "GrPendingProgramElement.h"
|
| -#include "GrPipeline.h"
|
| -#include "GrTRecorder.h"
|
| -#include "GrVertices.h"
|
| -
|
| -/*
|
| - * GrBatch instances use this object to allocate space for their geometry and to issue the draws
|
| - * that render their batch.
|
| - */
|
| -class GrBatchTarget : public SkNoncopyable {
|
| -public:
|
| - typedef GrBatchAtlas::BatchToken BatchToken;
|
| - GrBatchTarget(GrGpu* gpu);
|
| -
|
| - void initDraw(const GrPrimitiveProcessor* primProc, const GrPipeline* pipeline) {
|
| - GrNEW_APPEND_TO_RECORDER(fFlushBuffer, BufferedFlush, (primProc, pipeline));
|
| - fNumberOfDraws++;
|
| - fCurrentToken++;
|
| - }
|
| -
|
| - class TextureUploader {
|
| - public:
|
| - TextureUploader(GrGpu* gpu) : fGpu(gpu) { SkASSERT(gpu); }
|
| -
|
| - /**
|
| - * Updates the pixels in a rectangle of a texture.
|
| - *
|
| - * @param left left edge of the rectangle to write (inclusive)
|
| - * @param top top edge of the rectangle to write (inclusive)
|
| - * @param width width of rectangle to write in pixels.
|
| - * @param height height of rectangle to write in pixels.
|
| - * @param config the pixel config of the source buffer
|
| - * @param buffer memory to read pixels from
|
| - * @param rowBytes number of bytes between consecutive rows. Zero
|
| - * means rows are tightly packed.
|
| - */
|
| - bool writeTexturePixels(GrTexture* texture,
|
| - int left, int top, int width, int height,
|
| - GrPixelConfig config, const void* buffer,
|
| - size_t rowBytes) {
|
| - return fGpu->writePixels(texture, left, top, width, height, config, buffer, rowBytes);
|
| - }
|
| -
|
| - private:
|
| - GrGpu* fGpu;
|
| - };
|
| -
|
| - class Uploader : public SkRefCnt {
|
| - public:
|
| - Uploader(BatchToken lastUploadToken) : fLastUploadToken(lastUploadToken) {}
|
| - BatchToken lastUploadToken() const { return fLastUploadToken; }
|
| - virtual void upload(TextureUploader)=0;
|
| -
|
| - private:
|
| - BatchToken fLastUploadToken;
|
| - };
|
| -
|
| - void upload(Uploader* upload) {
|
| - if (this->asapToken() == upload->lastUploadToken()) {
|
| - fAsapUploads.push_back().reset(SkRef(upload));
|
| - } else {
|
| - fInlineUploads.push_back().reset(SkRef(upload));
|
| - }
|
| - }
|
| -
|
| - void draw(const GrVertices& vertices) {
|
| - fFlushBuffer.back().fVertexDraws.push_back(vertices);
|
| - }
|
| -
|
| - bool isIssued(BatchToken token) const { return fLastFlushedToken >= token; }
|
| - BatchToken currentToken() const { return fCurrentToken; }
|
| - BatchToken asapToken() const { return fLastFlushedToken + 1; }
|
| -
|
| - // TODO much of this complexity goes away when batch is everywhere
|
| - void resetNumberOfDraws() { fNumberOfDraws = 0; }
|
| - int numberOfDraws() const { return fNumberOfDraws; }
|
| - void preFlush() {
|
| - this->unmapVertexAndIndexBuffers();
|
| - int updateCount = fAsapUploads.count();
|
| - for (int i = 0; i < updateCount; i++) {
|
| - fAsapUploads[i]->upload(TextureUploader(fGpu));
|
| - }
|
| - fInlineUpdatesIndex = 0;
|
| - fIter = FlushBuffer::Iter(fFlushBuffer);
|
| - }
|
| - void flushNext(int n);
|
| - void postFlush() {
|
| - SkASSERT(!fIter.next());
|
| - fFlushBuffer.reset();
|
| - fAsapUploads.reset();
|
| - fInlineUploads.reset();
|
| - }
|
| -
|
| - const GrCaps& caps() const { return *fGpu->caps(); }
|
| -
|
| - GrResourceProvider* resourceProvider() const { return fGpu->getContext()->resourceProvider(); }
|
| -
|
| - void* makeVertSpace(size_t vertexSize, int vertexCount,
|
| - const GrVertexBuffer** buffer, int* startVertex);
|
| - uint16_t* makeIndexSpace(int indexCount,
|
| - const GrIndexBuffer** buffer, int* startIndex);
|
| -
|
| - // A helper for draws which overallocate and then return data to the pool
|
| - void putBackIndices(size_t indices) { fIndexPool.putBack(indices * sizeof(uint16_t)); }
|
| -
|
| - void putBackVertices(size_t vertices, size_t vertexStride) {
|
| - fVertexPool.putBack(vertices * vertexStride);
|
| - }
|
| -
|
| - void reset() {
|
| - fVertexPool.reset();
|
| - fIndexPool.reset();
|
| - }
|
| -
|
| -private:
|
| - void unmapVertexAndIndexBuffers() {
|
| - fVertexPool.unmap();
|
| - fIndexPool.unmap();
|
| - }
|
| -
|
| - GrGpu* fGpu;
|
| - GrVertexBufferAllocPool fVertexPool;
|
| - GrIndexBufferAllocPool fIndexPool;
|
| -
|
| - typedef void* TBufferAlign; // This wouldn't be enough align if a command used long double.
|
| -
|
| - struct BufferedFlush {
|
| - BufferedFlush(const GrPrimitiveProcessor* primProc, const GrPipeline* pipeline)
|
| - : fPrimitiveProcessor(primProc)
|
| - , fPipeline(pipeline) {}
|
| - typedef GrPendingProgramElement<const GrPrimitiveProcessor> ProgramPrimitiveProcessor;
|
| - ProgramPrimitiveProcessor fPrimitiveProcessor;
|
| - const GrPipeline* fPipeline;
|
| - GrBatchTracker fBatchTracker;
|
| - SkSTArray<1, GrVertices, true> fVertexDraws;
|
| - };
|
| -
|
| - enum {
|
| - kFlushBufferInitialSizeInBytes = 8 * sizeof(BufferedFlush),
|
| - };
|
| -
|
| - typedef GrTRecorder<BufferedFlush, TBufferAlign> FlushBuffer;
|
| -
|
| - FlushBuffer fFlushBuffer;
|
| - // TODO this is temporary
|
| - FlushBuffer::Iter fIter;
|
| - int fNumberOfDraws;
|
| - BatchToken fCurrentToken;
|
| - BatchToken fLastFlushedToken; // The next token to be flushed
|
| - SkTArray<SkAutoTUnref<Uploader>, true> fAsapUploads;
|
| - SkTArray<SkAutoTUnref<Uploader>, true> fInlineUploads;
|
| - int fInlineUpdatesIndex;
|
| -};
|
| -
|
| -#endif
|
|
|