Revert "TextureView Vulkan support and optimized OpenGL draw"
This reverts commit c8e22a653297837da9a80b0ba65f6854c8986c96.
Reason for revert: broke camera, b/113555199
Bug: 113555199
Change-Id: Iae9b462694d5de0cd99427afead63b567fb4d71d
diff --git a/libs/hwui/DeferredLayerUpdater.h b/libs/hwui/DeferredLayerUpdater.h
index 4c323b8..fe3ee7a 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 @@
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 @@
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 @@
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 @@
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 */