summaryrefslogtreecommitdiff
path: root/libs/hwui/DeferredLayerUpdater.h
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2018-08-30 16:47:59 +0000
committerStan Iliev <stani@google.com>2018-08-30 18:42:08 +0000
commit867c43de0544217d26c3ee18f4d6603bb2ea97ce (patch)
treed780e25edaa90578c80309a105d6fe2e9eea71c8 /libs/hwui/DeferredLayerUpdater.h
parentc8e22a653297837da9a80b0ba65f6854c8986c96 (diff)
Revert "TextureView Vulkan support and optimized OpenGL draw"
This reverts commit c8e22a653297837da9a80b0ba65f6854c8986c96. Reason for revert: broke camera, b/113555199 Bug: 113555199 Change-Id: Iae9b462694d5de0cd99427afead63b567fb4d71d
Diffstat (limited to 'libs/hwui/DeferredLayerUpdater.h')
-rw-r--r--libs/hwui/DeferredLayerUpdater.h34
1 files changed, 22 insertions, 12 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.h b/libs/hwui/DeferredLayerUpdater.h
index 4c323b861002..fe3ee7a2b4c6 100644
--- a/libs/hwui/DeferredLayerUpdater.h
+++ b/libs/hwui/DeferredLayerUpdater.h
@@ -17,19 +17,18 @@
#pragma once
#include <SkColorFilter.h>
-#include <SkImage.h>
#include <SkMatrix.h>
#include <cutils/compiler.h>
-#include <map>
+#include <gui/GLConsumer.h>
#include <system/graphics.h>
#include <utils/StrongPointer.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
-#include "surfacetexture/SurfaceTexture.h"
#include "Layer.h"
#include "Rect.h"
+#include "renderthread/RenderThread.h"
namespace android {
namespace uirenderer {
@@ -42,7 +41,12 @@ class DeferredLayerUpdater : public VirtualLightRefBase {
public:
// Note that DeferredLayerUpdater assumes it is taking ownership of the layer
// and will not call incrementRef on it as a result.
- ANDROID_API explicit DeferredLayerUpdater(RenderState& renderState);
+ typedef std::function<Layer*(RenderState& renderState, uint32_t layerWidth,
+ uint32_t layerHeight, sk_sp<SkColorFilter> colorFilter, int alpha,
+ SkBlendMode mode, bool blend)>
+ CreateLayerFn;
+ ANDROID_API explicit DeferredLayerUpdater(RenderState& renderState, CreateLayerFn createLayerFn,
+ Layer::Api layerApi);
ANDROID_API ~DeferredLayerUpdater();
@@ -66,13 +70,13 @@ public:
return false;
}
- ANDROID_API void setSurfaceTexture(const sp<SurfaceTexture>& consumer) {
- if (consumer.get() != mSurfaceTexture.get()) {
- mSurfaceTexture = consumer;
+ ANDROID_API void setSurfaceTexture(const sp<GLConsumer>& texture) {
+ if (texture.get() != mSurfaceTexture.get()) {
+ mSurfaceTexture = texture;
- GLenum target = consumer->getCurrentTextureTarget();
+ GLenum target = texture->getCurrentTextureTarget();
LOG_ALWAYS_FATAL_IF(target != GL_TEXTURE_2D && target != GL_TEXTURE_EXTERNAL_OES,
- "set unsupported SurfaceTexture with target %x", target);
+ "set unsupported GLConsumer with target %x", target);
}
}
@@ -93,11 +97,12 @@ public:
void detachSurfaceTexture();
- void updateLayer(bool forceFilter, const SkMatrix& textureTransform,
- android_dataspace dataspace, const sk_sp<SkImage>& layerImage);
+ void updateLayer(bool forceFilter, const float* textureTransform, android_dataspace dataspace);
void destroyLayer();
+ Layer::Api getBackingLayerApi() { return mLayerApi; }
+
private:
RenderState& mRenderState;
@@ -108,12 +113,17 @@ private:
sk_sp<SkColorFilter> mColorFilter;
int mAlpha = 255;
SkBlendMode mMode = SkBlendMode::kSrcOver;
- sp<SurfaceTexture> mSurfaceTexture;
+ sp<GLConsumer> mSurfaceTexture;
SkMatrix* mTransform;
bool mGLContextAttached;
bool mUpdateTexImage;
Layer* mLayer;
+ Layer::Api mLayerApi;
+ CreateLayerFn mCreateLayerFn;
+
+ void doUpdateTexImage();
+ void doUpdateVkTexImage();
};
} /* namespace uirenderer */