Index: src/gpu/GrInOrderDrawBuffer.h |
diff --git a/src/gpu/GrInOrderDrawBuffer.h b/src/gpu/GrInOrderDrawBuffer.h |
deleted file mode 100644 |
index 908632ce6dafb94b2989181e6eb6ffdb849fe2cc..0000000000000000000000000000000000000000 |
--- a/src/gpu/GrInOrderDrawBuffer.h |
+++ /dev/null |
@@ -1,147 +0,0 @@ |
-/* |
- * Copyright 2011 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#ifndef GrInOrderDrawBuffer_DEFINED |
-#define GrInOrderDrawBuffer_DEFINED |
- |
-#include "GrDrawTarget.h" |
-#include "GrCommandBuilder.h" |
-#include "SkChunkAlloc.h" |
- |
-/** |
- * GrInOrderDrawBuffer is an implementation of GrDrawTarget that queues up draws for eventual |
- * playback into a GrGpu. In theory one draw buffer could playback into another. When index or |
- * vertex buffers are used as geometry sources it is the callers the draw buffer only holds |
- * references to the buffers. It is the callers responsibility to ensure that the data is still |
- * valid when the draw buffer is played back into a GrGpu. Similarly, it is the caller's |
- * responsibility to ensure that all referenced textures, buffers, and render-targets are associated |
- * in the GrGpu object that the buffer is played back into. The buffer requires VB and IB pools to |
- * store geometry. |
- */ |
-class GrInOrderDrawBuffer : public GrClipTarget { |
-public: |
- |
- /** |
- * Creates a GrInOrderDrawBuffer |
- * |
- * @param context the context object that owns this draw buffer. |
- */ |
- GrInOrderDrawBuffer(GrContext* context); |
- |
- ~GrInOrderDrawBuffer() override; |
- |
- void clearStencilClip(const SkIRect& rect, |
- bool insideClip, |
- GrRenderTarget* renderTarget) override; |
- |
- void discard(GrRenderTarget*) override; |
- |
-protected: |
- void appendIndicesAndTransforms(const void* indexValues, PathIndexType indexType, |
- const float* transformValues, PathTransformType transformType, |
- int count, char** indicesLocation, float** xformsLocation) { |
- int indexBytes = GrPathRange::PathIndexSizeInBytes(indexType); |
- *indicesLocation = (char*) fPathIndexBuffer.alloc(count * indexBytes, |
- SkChunkAlloc::kThrow_AllocFailType); |
- SkASSERT(SkIsAlign4((uintptr_t)*indicesLocation)); |
- memcpy(*indicesLocation, reinterpret_cast<const char*>(indexValues), count * indexBytes); |
- |
- const int xformBytes = GrPathRendering::PathTransformSize(transformType) * sizeof(float); |
- *xformsLocation = NULL; |
- |
- if (0 != xformBytes) { |
- *xformsLocation = (float*) fPathTransformBuffer.alloc(count * xformBytes, |
- SkChunkAlloc::kThrow_AllocFailType); |
- SkASSERT(SkIsAlign4((uintptr_t)*xformsLocation)); |
- memcpy(*xformsLocation, transformValues, count * xformBytes); |
- } |
- } |
- |
-private: |
- friend class GrInOrderCommandBuilder; |
- friend class GrTargetCommands; |
- |
- typedef GrTargetCommands::State State; |
- |
- State* allocState(const GrPrimitiveProcessor* primProc = NULL) { |
- void* allocation = fPipelineBuffer.alloc(sizeof(State), SkChunkAlloc::kThrow_AllocFailType); |
- return SkNEW_PLACEMENT_ARGS(allocation, State, (primProc)); |
- } |
- |
- void unallocState(State* state) { |
- state->unref(); |
- fPipelineBuffer.unalloc(state); |
- } |
- |
- void onReset() override; |
- void onFlush() override; |
- |
- // overrides from GrDrawTarget |
- void onDrawBatch(GrBatch*, const PipelineInfo&) override; |
- void onStencilPath(const GrPipelineBuilder&, |
- const GrPathProcessor*, |
- const GrPath*, |
- const GrScissorState&, |
- const GrStencilSettings&) override; |
- void onDrawPath(const GrPathProcessor*, |
- const GrPath*, |
- const GrStencilSettings&, |
- const PipelineInfo&) override; |
- void onDrawPaths(const GrPathProcessor*, |
- const GrPathRange*, |
- const void* indices, |
- PathIndexType, |
- const float transformValues[], |
- PathTransformType, |
- int count, |
- const GrStencilSettings&, |
- const PipelineInfo&) override; |
- void onClear(const SkIRect* rect, |
- GrColor color, |
- bool canIgnoreRect, |
- GrRenderTarget* renderTarget) override; |
- void onCopySurface(GrSurface* dst, |
- GrSurface* src, |
- const SkIRect& srcRect, |
- const SkIPoint& dstPoint) override; |
- |
- // Records any trace markers for a command |
- void recordTraceMarkersIfNecessary(GrTargetCommands::Cmd*); |
- SkString getCmdString(int index) const { |
- SkASSERT(index < fGpuCmdMarkers.count()); |
- return fGpuCmdMarkers[index].toString(); |
- } |
- bool isIssued(uint32_t drawID) override { return drawID != fDrawID; } |
- |
- State* SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(const GrPrimitiveProcessor*, |
- const GrDrawTarget::PipelineInfo&); |
- State* SK_WARN_UNUSED_RESULT setupPipelineAndShouldDraw(GrBatch*, |
- const GrDrawTarget::PipelineInfo&); |
- |
- // TODO: Use a single allocator for commands and records |
- enum { |
- kPathIdxBufferMinReserve = 2 * 64, // 64 uint16_t's |
- kPathXformBufferMinReserve = 2 * 64, // 64 two-float transforms |
- kPipelineBufferMinReserve = 32 * sizeof(State), |
- }; |
- |
- // every 100 flushes we should reset our fPipelineBuffer to prevent us from holding at a |
- // highwater mark |
- static const int kPipelineBufferHighWaterMark = 100; |
- |
- SkAutoTDelete<GrCommandBuilder> fCommands; |
- SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers; |
- SkChunkAlloc fPathIndexBuffer; |
- SkChunkAlloc fPathTransformBuffer; |
- SkChunkAlloc fPipelineBuffer; |
- uint32_t fDrawID; |
- SkAutoTUnref<State> fPrevState; |
- |
- typedef GrClipTarget INHERITED; |
-}; |
- |
-#endif |