Revert "Revert "Revert "TextureView Vulkan support and optimized OpenGL draw"""
This reverts commit 85f9096b5272c9a39e592e2e97cbbe6cb0e767ab.
Reason for revert: lensblur broken.
Change-Id: I83ac163159fc537bc15936a0f8597a7512ca9d6e
diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h
index f39aa4b..97785a4 100644
--- a/libs/hwui/renderstate/RenderState.h
+++ b/libs/hwui/renderstate/RenderState.h
@@ -16,6 +16,8 @@
#ifndef RENDERSTATE_H
#define RENDERSTATE_H
+#include "Caches.h"
+#include "renderstate/PixelBufferState.h"
#include "utils/Macros.h"
#include <GLES2/gl2.h>
@@ -32,6 +34,7 @@
namespace android {
namespace uirenderer {
+class Caches;
class Layer;
class DeferredLayerUpdater;
@@ -41,16 +44,22 @@
class RenderThread;
}
+// TODO: Replace Cache's GL state tracking with this. For now it's more a thin
// wrapper of Caches for users to migrate to.
class RenderState {
PREVENT_COPY_AND_ASSIGN(RenderState);
friend class renderthread::RenderThread;
+ friend class Caches;
friend class renderthread::CacheManager;
public:
- void onContextCreated();
- void onContextDestroyed();
+ void onGLContextCreated();
+ void onGLContextDestroyed();
+ void onVkContextCreated();
+ void onVkContextDestroyed();
+
+ void flush(Caches::FlushMode flushMode);
void onBitmapDestroyed(uint32_t pixelRefId);
void setViewport(GLsizei width, GLsizei height);
@@ -61,6 +70,8 @@
GLuint createFramebuffer();
void deleteFramebuffer(GLuint fbo);
+ void invokeFunctor(Functor* functor, DrawGlInfo::Mode mode, DrawGlInfo* info);
+
void debugOverdraw(bool enable, bool clear);
void registerLayer(Layer* layer) { mActiveLayers.insert(layer); }
@@ -90,15 +101,16 @@
void dump();
- renderthread::RenderThread& getRenderThread();
-
private:
+ void interruptForFunctorInvoke();
+ void resumeFromFunctorInvoke();
void destroyLayersInUpdater();
explicit RenderState(renderthread::RenderThread& thread);
~RenderState();
renderthread::RenderThread& mRenderThread;
+ Caches* mCaches = nullptr;
std::set<Layer*> mActiveLayers;
std::set<DeferredLayerUpdater*> mActiveLayerUpdaters;