| Index: src/gpu/GrGpu.h
|
| diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h
|
| index d1b0802721e97e8005f3491238da1c295eeb429e..3eaa3fc035e27ebc821b16825f26d24443e02f8c 100644
|
| --- a/src/gpu/GrGpu.h
|
| +++ b/src/gpu/GrGpu.h
|
| @@ -129,11 +129,6 @@ public:
|
| */
|
| GrIndexBuffer* createIndexBuffer(size_t size, bool dynamic);
|
|
|
| - enum TransferType {
|
| - kCpuToGpu_TransferType,
|
| - kGpuToCpu_TransferType
|
| - };
|
| -
|
| /**
|
| * Creates a transfer buffer.
|
| *
|
| @@ -266,6 +261,25 @@ public:
|
| size_t rowBytes);
|
|
|
| /**
|
| + * Updates the pixels in a rectangle of a surface using a GrTransferBuffer
|
| + *
|
| + * @param surface The surface to write to.
|
| + * @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 GrTransferBuffer to read pixels from
|
| + * @param offset offset from the start of the buffer
|
| + * @param rowBytes number of bytes between consecutive rows. Zero
|
| + * means rows are tightly packed.
|
| + */
|
| + bool transferPixels(GrSurface* surface,
|
| + int left, int top, int width, int height,
|
| + GrPixelConfig config, GrTransferBuffer* buffer,
|
| + size_t offset, size_t rowBytes);
|
| +
|
| + /**
|
| * Clear the passed in render target. Ignores the draw state and clip.
|
| */
|
| void clear(const SkIRect& rect, GrColor color, GrRenderTarget* renderTarget);
|
| @@ -344,6 +358,7 @@ public:
|
| fShaderCompilations = 0;
|
| fTextureCreates = 0;
|
| fTextureUploads = 0;
|
| + fTransfersToTexture = 0;
|
| fStencilAttachmentCreates = 0;
|
| fNumDraws = 0;
|
| }
|
| @@ -356,6 +371,8 @@ public:
|
| void incTextureCreates() { fTextureCreates++; }
|
| int textureUploads() const { return fTextureUploads; }
|
| void incTextureUploads() { fTextureUploads++; }
|
| + int transfersToTexture() const { return fTransfersToTexture; }
|
| + void incTransfersToTexture() { fTransfersToTexture++; }
|
| void incStencilAttachmentCreates() { fStencilAttachmentCreates++; }
|
| void incNumDraws() { fNumDraws++; }
|
| void dump(SkString*);
|
| @@ -366,6 +383,7 @@ public:
|
| int fShaderCompilations;
|
| int fTextureCreates;
|
| int fTextureUploads;
|
| + int fTransfersToTexture;
|
| int fStencilAttachmentCreates;
|
| int fNumDraws;
|
| #else
|
| @@ -375,6 +393,7 @@ public:
|
| void incShaderCompilations() {}
|
| void incTextureCreates() {}
|
| void incTextureUploads() {}
|
| + void incTransfersToTexture() {}
|
| void incStencilAttachmentCreates() {}
|
| void incNumDraws() {}
|
| #endif
|
| @@ -508,6 +527,12 @@ private:
|
| GrPixelConfig config, const void* buffer,
|
| size_t rowBytes) = 0;
|
|
|
| + // overridden by backend-specific derived class to perform the surface write
|
| + virtual bool onTransferPixels(GrSurface*,
|
| + int left, int top, int width, int height,
|
| + GrPixelConfig config, GrTransferBuffer* buffer,
|
| + size_t offset, size_t rowBytes) = 0;
|
| +
|
| // overridden by backend-specific derived class to perform the resolve
|
| virtual void onResolveRenderTarget(GrRenderTarget* target) = 0;
|
|
|
|
|