Loading core/jni/android_view_GLES20Canvas.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -829,7 +829,6 @@ static void android_view_GLES20Canvas_clearLayerTexture(JNIEnv* env, jobject cla static void android_view_GLES20Canvas_setTextureLayerTransform(JNIEnv* env, jobject clazz, Layer* layer, SkMatrix* matrix) { layer->getTransform().load(*matrix); } Loading libs/hwui/Layer.h +3 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,9 @@ struct Layer { } inline void allocateTexture(GLenum format, GLenum storage) { #if DEBUG_LAYERS ALOGD(" Allocate layer: %dx%d", getWidth(), getHeight()); #endif glTexImage2D(renderTarget, 0, format, getWidth(), getHeight(), 0, format, storage, NULL); } Loading libs/hwui/OpenGLRenderer.cpp +16 −10 Original line number Diff line number Diff line Loading @@ -895,12 +895,6 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) { void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) { float alpha = layer->getAlpha() / 255.0f; mat4& transform = layer->getTransform(); if (!transform.isIdentity()) { save(0); mSnapshot->transform->multiply(transform); } setupDraw(); if (layer->getRenderTarget() == GL_TEXTURE_2D) { setupDrawWithTexture(); Loading Loading @@ -937,10 +931,6 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) { glDrawArrays(GL_TRIANGLE_STRIP, 0, gMeshCount); finishDrawTexture(); if (!transform.isIdentity()) { restore(); } } void OpenGLRenderer::composeLayerRect(Layer* layer, const Rect& rect, bool swap) { Loading Loading @@ -2792,12 +2782,24 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain return DrawGlInfo::kStatusDone; } mat4* transform = NULL; if (layer->isTextureLayer()) { transform = &layer->getTransform(); if (!transform->isIdentity()) { save(0); mSnapshot->transform->multiply(*transform); } } Rect transformed; Rect clip; const bool rejected = quickRejectNoScissor(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight(), transformed, clip); if (rejected) { if (transform && !transform->isIdentity()) { restore(); } return DrawGlInfo::kStatusDone; } Loading Loading @@ -2858,6 +2860,10 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain } } if (transform && !transform->isIdentity()) { restore(); } return DrawGlInfo::kStatusDrew; } Loading Loading
core/jni/android_view_GLES20Canvas.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -829,7 +829,6 @@ static void android_view_GLES20Canvas_clearLayerTexture(JNIEnv* env, jobject cla static void android_view_GLES20Canvas_setTextureLayerTransform(JNIEnv* env, jobject clazz, Layer* layer, SkMatrix* matrix) { layer->getTransform().load(*matrix); } Loading
libs/hwui/Layer.h +3 −0 Original line number Diff line number Diff line Loading @@ -209,6 +209,9 @@ struct Layer { } inline void allocateTexture(GLenum format, GLenum storage) { #if DEBUG_LAYERS ALOGD(" Allocate layer: %dx%d", getWidth(), getHeight()); #endif glTexImage2D(renderTarget, 0, format, getWidth(), getHeight(), 0, format, storage, NULL); } Loading
libs/hwui/OpenGLRenderer.cpp +16 −10 Original line number Diff line number Diff line Loading @@ -895,12 +895,6 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) { void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) { float alpha = layer->getAlpha() / 255.0f; mat4& transform = layer->getTransform(); if (!transform.isIdentity()) { save(0); mSnapshot->transform->multiply(transform); } setupDraw(); if (layer->getRenderTarget() == GL_TEXTURE_2D) { setupDrawWithTexture(); Loading Loading @@ -937,10 +931,6 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) { glDrawArrays(GL_TRIANGLE_STRIP, 0, gMeshCount); finishDrawTexture(); if (!transform.isIdentity()) { restore(); } } void OpenGLRenderer::composeLayerRect(Layer* layer, const Rect& rect, bool swap) { Loading Loading @@ -2792,12 +2782,24 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain return DrawGlInfo::kStatusDone; } mat4* transform = NULL; if (layer->isTextureLayer()) { transform = &layer->getTransform(); if (!transform->isIdentity()) { save(0); mSnapshot->transform->multiply(*transform); } } Rect transformed; Rect clip; const bool rejected = quickRejectNoScissor(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight(), transformed, clip); if (rejected) { if (transform && !transform->isIdentity()) { restore(); } return DrawGlInfo::kStatusDone; } Loading Loading @@ -2858,6 +2860,10 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain } } if (transform && !transform->isIdentity()) { restore(); } return DrawGlInfo::kStatusDrew; } Loading