diff options
author | John Reck <jreck@google.com> | 2018-08-30 16:47:59 +0000 |
---|---|---|
committer | Stan Iliev <stani@google.com> | 2018-08-30 18:42:08 +0000 |
commit | 867c43de0544217d26c3ee18f4d6603bb2ea97ce (patch) | |
tree | d780e25edaa90578c80309a105d6fe2e9eea71c8 /libs/hwui/DeferredLayerUpdater.h | |
parent | c8e22a653297837da9a80b0ba65f6854c8986c96 (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.h | 34 |
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 */ |