Index: src/gpu/GrBatchTarget.cpp |
diff --git a/src/gpu/GrBatchTarget.cpp b/src/gpu/GrBatchTarget.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..874158e647a4562dd16ea5845be6d1925de4080c |
--- /dev/null |
+++ b/src/gpu/GrBatchTarget.cpp |
@@ -0,0 +1,68 @@ |
+/* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#include "GrBatchTarget.h" |
+ |
+#if 0 |
+#include "GrBatchAtlas.h" |
+#include "GrPipeline.h" |
+ |
+GrBatchTarget::GrBatchTarget(GrFoo* foo, GrGpu* gpu, GrRenderTarget* dst) |
+ : fGpu1(gpu) |
+ , fFoo1(foo) |
+ , fRT(dst) |
+ , fVertexPool(gpu) |
+ , fIndexPool(gpu) |
+ , fFlushBuffer(kFlushBufferInitialSizeInBytes) |
+ , fIter(fFlushBuffer) |
+ , fNumberOfDraws(0) |
+// , fCurrentToken1(0) |
+ , fLastFlushedToken(0) |
+ , fInlineUpdatesIndex(0) { |
+} |
+ |
+void GrBatchTarget::flushNext(int n) { |
+ for (; n > 0; n--) { |
+ fLastFlushedToken++; |
+ SkDEBUGCODE(bool verify =) fIter.next(); |
+ SkASSERT(verify); |
+ |
+ BufferedFlush* bf = fIter.get(); |
+ |
+ // Flush all texture uploads |
+ int uploadCount = fInlineUploads.count(); |
+ while (fInlineUpdatesIndex < uploadCount && |
+ fInlineUploads[fInlineUpdatesIndex]->lastUploadToken() <= fLastFlushedToken) { |
+ fInlineUploads[fInlineUpdatesIndex++]->upload(TextureUploader(fGpu1)); |
+ } |
+ |
+ GrProgramDesc desc; |
+ const GrPipeline* pipeline = bf->fPipeline; |
+ const GrPrimitiveProcessor* primProc = bf->fPrimitiveProcessor.get(); |
+ fGpu1->buildProgramDesc(&desc, *primProc, *pipeline, bf->fBatchTracker); |
+ |
+ GrGpu::DrawArgs args(primProc, pipeline, &desc, &bf->fBatchTracker); |
+ |
+ int drawCount = bf->fVertexDraws.count(); |
+ const SkSTArray<1, GrVertices, true>& vertexDraws = bf->fVertexDraws; |
+ for (int i = 0; i < drawCount; i++) { |
+ fGpu1->draw(args, vertexDraws[i]); |
+ } |
+ } |
+} |
+ |
+void* GrBatchTarget::makeVertSpace(size_t vertexSize, int vertexCount, |
+ const GrVertexBuffer** buffer, int* startVertex) { |
+ return fVertexPool.makeSpace(vertexSize, vertexCount, buffer, startVertex); |
+} |
+ |
+uint16_t* GrBatchTarget::makeIndexSpace(int indexCount, |
+ const GrIndexBuffer** buffer, int* startIndex) { |
+ return reinterpret_cast<uint16_t*>(fIndexPool.makeSpace(indexCount, buffer, startIndex)); |
+} |
+ |
+#endif |