diff options
| author | 2015-02-27 18:53:54 +0000 | |
|---|---|---|
| committer | 2015-02-27 18:53:55 +0000 | |
| commit | cb147e53e4367ab60384d3452ae7c9974cf0d8f8 (patch) | |
| tree | 486d2eb8f1d664a61d9cd681b22eddb088585655 /libs/hwui/OpenGLRenderer.cpp | |
| parent | 238cba35934e11c062c5f5da1768fcb474a8715d (diff) | |
| parent | 26bf34200e40a0fa8c66366559aa016380cd8c6f (diff) | |
Merge "Glop TextureLayer support"
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 23 | 
1 files changed, 18 insertions, 5 deletions
| diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 3913ee532c3c..83715ba8e05f 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -846,8 +846,21 @@ void OpenGLRenderer::composeLayer(const Snapshot& removed, const Snapshot& resto  }  void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) { -    float alpha = getLayerAlpha(layer); +    if (USE_GLOPS) { +        bool snap = !layer->getForceFilter() +                && layer->getWidth() == (uint32_t) rect.getWidth() +                && layer->getHeight() == (uint32_t) rect.getHeight(); +        Glop glop; +        GlopBuilder aBuilder(mRenderState, mCaches, &glop); +        aBuilder.setMeshTexturedUvQuad(nullptr, Rect(0, 1, 1, 0)) // TODO: simplify with VBO +                .setFillTextureLayer(*layer, getLayerAlpha(layer)) +                .setTransform(currentSnapshot()->getOrthoMatrix(), *currentTransform(), false) +                .setModelViewMapUnitToRectOptionalSnap(snap, rect) +                .setRoundRectClipState(currentSnapshot()->roundRectClipState) +                .build(); +    } +    float alpha = getLayerAlpha(layer);      setupDraw();      if (layer->getRenderTarget() == GL_TEXTURE_2D) {          setupDrawWithTexture(); @@ -866,10 +879,10 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) {      } else {          setupDrawExternalTexture(layer->getTextureId());      } -    if (currentTransform()->isPureTranslate() && -            !layer->getForceFilter() && -            layer->getWidth() == (uint32_t) rect.getWidth() && -            layer->getHeight() == (uint32_t) rect.getHeight()) { +    if (currentTransform()->isPureTranslate() +            && !layer->getForceFilter() +            && layer->getWidth() == (uint32_t) rect.getWidth() +            && layer->getHeight() == (uint32_t) rect.getHeight()) {          const float x = (int) floorf(rect.left + currentTransform()->getTranslateX() + 0.5f);          const float y = (int) floorf(rect.top + currentTransform()->getTranslateY() + 0.5f); |