Loading libs/hwui/Layer.cpp +11 −5 Original line number Diff line number Diff line Loading @@ -29,15 +29,15 @@ namespace android { namespace uirenderer { Layer::Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight) Layer::Layer(Type layerType, RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight) : caches(Caches::getInstance()) , renderState(renderState) , texture(caches) { , texture(caches) , type(layerType) { mesh = NULL; meshElementCount = 0; cacheable = true; dirty = false; textureLayer = false; renderTarget = GL_TEXTURE_2D; texture.width = layerWidth; texture.height = layerHeight; Loading @@ -55,11 +55,17 @@ Layer::Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t caches.resourceCache.incrementRefcount(this); rendererLightPosDirty = true; wasBuildLayered = false; if (!isTextureLayer()) { // track only non-texture layer lifecycles in renderstate, // because texture layers are destroyed via finalizer renderState.registerLayer(this); } } Layer::~Layer() { if (!isTextureLayer()) { renderState.unregisterLayer(this); } SkSafeUnref(colorFilter); removeFbo(); deleteTexture(); Loading libs/hwui/Layer.h +9 −9 Original line number Diff line number Diff line Loading @@ -54,7 +54,12 @@ class DeferStateStruct; */ class Layer { public: Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight); enum Type { kType_Texture, kType_DisplayList, }; Layer(Type type, RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight); ~Layer(); static uint32_t computeIdealWidth(uint32_t layerWidth); Loading Loading @@ -219,11 +224,7 @@ public: } inline bool isTextureLayer() const { return textureLayer; } inline void setTextureLayer(bool textureLayer) { this->textureLayer = textureLayer; return type == kType_Texture; } inline SkColorFilter* getColorFilter() const { Loading Loading @@ -343,10 +344,9 @@ private: bool cacheable; /** * When set to true, this layer must be treated as a texture * layer. * Denotes whether the layer is a DisplayList, or Texture layer. */ bool textureLayer; const Type type; /** * When set to true, this layer is dirty and should be cleared Loading libs/hwui/LayerCache.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ Layer* LayerCache::get(RenderState& renderState, const uint32_t width, const uin } else { LAYER_LOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight); layer = new Layer(renderState, entry.mWidth, entry.mHeight); layer = new Layer(Layer::kType_DisplayList, renderState, entry.mWidth, entry.mHeight); layer->setBlend(true); layer->setEmpty(true); layer->setFbo(0); Loading libs/hwui/LayerRenderer.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -272,9 +272,8 @@ bool LayerRenderer::resizeLayer(Layer* layer, uint32_t width, uint32_t height) { Layer* LayerRenderer::createTextureLayer(RenderState& renderState) { LAYER_RENDERER_LOGD("Creating new texture layer"); Layer* layer = new Layer(renderState, 0, 0); Layer* layer = new Layer(Layer::kType_Texture, renderState, 0, 0); layer->setCacheable(false); layer->setTextureLayer(true); layer->setEmpty(true); layer->setFbo(0); layer->setAlpha(255, SkXfermode::kSrcOver_Mode); Loading Loading
libs/hwui/Layer.cpp +11 −5 Original line number Diff line number Diff line Loading @@ -29,15 +29,15 @@ namespace android { namespace uirenderer { Layer::Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight) Layer::Layer(Type layerType, RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight) : caches(Caches::getInstance()) , renderState(renderState) , texture(caches) { , texture(caches) , type(layerType) { mesh = NULL; meshElementCount = 0; cacheable = true; dirty = false; textureLayer = false; renderTarget = GL_TEXTURE_2D; texture.width = layerWidth; texture.height = layerHeight; Loading @@ -55,11 +55,17 @@ Layer::Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t caches.resourceCache.incrementRefcount(this); rendererLightPosDirty = true; wasBuildLayered = false; if (!isTextureLayer()) { // track only non-texture layer lifecycles in renderstate, // because texture layers are destroyed via finalizer renderState.registerLayer(this); } } Layer::~Layer() { if (!isTextureLayer()) { renderState.unregisterLayer(this); } SkSafeUnref(colorFilter); removeFbo(); deleteTexture(); Loading
libs/hwui/Layer.h +9 −9 Original line number Diff line number Diff line Loading @@ -54,7 +54,12 @@ class DeferStateStruct; */ class Layer { public: Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight); enum Type { kType_Texture, kType_DisplayList, }; Layer(Type type, RenderState& renderState, const uint32_t layerWidth, const uint32_t layerHeight); ~Layer(); static uint32_t computeIdealWidth(uint32_t layerWidth); Loading Loading @@ -219,11 +224,7 @@ public: } inline bool isTextureLayer() const { return textureLayer; } inline void setTextureLayer(bool textureLayer) { this->textureLayer = textureLayer; return type == kType_Texture; } inline SkColorFilter* getColorFilter() const { Loading Loading @@ -343,10 +344,9 @@ private: bool cacheable; /** * When set to true, this layer must be treated as a texture * layer. * Denotes whether the layer is a DisplayList, or Texture layer. */ bool textureLayer; const Type type; /** * When set to true, this layer is dirty and should be cleared Loading
libs/hwui/LayerCache.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -112,7 +112,7 @@ Layer* LayerCache::get(RenderState& renderState, const uint32_t width, const uin } else { LAYER_LOGD("Creating new layer %dx%d", entry.mWidth, entry.mHeight); layer = new Layer(renderState, entry.mWidth, entry.mHeight); layer = new Layer(Layer::kType_DisplayList, renderState, entry.mWidth, entry.mHeight); layer->setBlend(true); layer->setEmpty(true); layer->setFbo(0); Loading
libs/hwui/LayerRenderer.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -272,9 +272,8 @@ bool LayerRenderer::resizeLayer(Layer* layer, uint32_t width, uint32_t height) { Layer* LayerRenderer::createTextureLayer(RenderState& renderState) { LAYER_RENDERER_LOGD("Creating new texture layer"); Layer* layer = new Layer(renderState, 0, 0); Layer* layer = new Layer(Layer::kType_Texture, renderState, 0, 0); layer->setCacheable(false); layer->setTextureLayer(true); layer->setEmpty(true); layer->setFbo(0); layer->setAlpha(255, SkXfermode::kSrcOver_Mode); Loading