summaryrefslogtreecommitdiff
path: root/libs/hwui/Readback.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/Readback.h')
-rw-r--r--libs/hwui/Readback.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/libs/hwui/Readback.h b/libs/hwui/Readback.h
index ad3a8b690617..d9e10cedc0e8 100644
--- a/libs/hwui/Readback.h
+++ b/libs/hwui/Readback.h
@@ -16,16 +16,21 @@
#pragma once
+#include "Matrix.h"
#include "Rect.h"
#include "renderthread/RenderThread.h"
#include <SkBitmap.h>
namespace android {
+class Bitmap;
class GraphicBuffer;
class Surface;
namespace uirenderer {
+class DeferredLayerUpdater;
+class Layer;
+
// Keep in sync with PixelCopy.java codes
enum class CopyResult {
Success = 0,
@@ -38,15 +43,22 @@ enum class CopyResult {
class Readback {
public:
+ explicit Readback(renderthread::RenderThread& thread) : mRenderThread(thread) {}
/**
* Copies the surface's most recently queued buffer into the provided bitmap.
*/
- virtual CopyResult copySurfaceInto(Surface& surface, const Rect& srcRect, SkBitmap* bitmap) = 0;
- virtual CopyResult copyGraphicBufferInto(GraphicBuffer* graphicBuffer, SkBitmap* bitmap) = 0;
+ CopyResult copySurfaceInto(Surface& surface, const Rect& srcRect, SkBitmap* bitmap);
-protected:
- explicit Readback(renderthread::RenderThread& thread) : mRenderThread(thread) {}
- virtual ~Readback() {}
+ CopyResult copyHWBitmapInto(Bitmap* hwBitmap, SkBitmap* bitmap);
+
+ CopyResult copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap);
+
+private:
+ CopyResult copyImageInto(const sk_sp<SkImage>& image, sk_sp<SkColorFilter>& colorSpaceFilter,
+ Matrix4& texTransform, const Rect& srcRect, SkBitmap* bitmap);
+
+ bool copyLayerInto(Layer* layer, const SkRect* srcRect, const SkRect* dstRect,
+ SkBitmap* bitmap);
renderthread::RenderThread& mRenderThread;
};